Skip to content

Commit 302c379

Browse files
authored
chore: CSS tidy up (#10480)
* move files * move types * rename Selector -> ComplexSelector * ditto * rename block -> relative_selector * tidy * tidy * unused file * tweak --------- Co-authored-by: Rich Harris <[email protected]>
1 parent cc273f7 commit 302c379

File tree

9 files changed

+188
-162
lines changed

9 files changed

+188
-162
lines changed

packages/svelte/src/compiler/phases/2-analyze/css/Selector.js renamed to packages/svelte/src/compiler/css/Selector.js

Lines changed: 154 additions & 128 deletions
Large diffs are not rendered by default.

packages/svelte/src/compiler/phases/2-analyze/css/Stylesheet.js renamed to packages/svelte/src/compiler/css/Stylesheet.js

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import MagicString from 'magic-string';
22
import { walk } from 'zimmerframe';
3-
import Selector from './Selector.js';
4-
import hash from '../utils/hash.js';
3+
import { ComplexSelector } from './Selector.js';
4+
import { hash } from './utils.js';
55
// import compiler_warnings from '../compiler_warnings.js';
66
// import { extract_ignores_above_position } from '../utils/extract_svelte_ignore.js';
7-
import { push_array } from '../utils/push_array.js';
8-
import { create_attribute } from '../../nodes.js';
7+
import { create_attribute } from '../phases/nodes.js'; // TODO move this
98

109
const regex_css_browser_prefix = /^-((webkit)|(moz)|(o)|(ms))-/;
1110
const regex_name_boundary = /^[\s,;}]$/;
@@ -49,7 +48,7 @@ function escape_comment_close(node, code) {
4948
}
5049

5150
class Rule {
52-
/** @type {import('./Selector.js').default[]} */
51+
/** @type {ComplexSelector[]} */
5352
selectors;
5453

5554
/** @type {import('#compiler').Css.Rule} */
@@ -69,7 +68,7 @@ class Rule {
6968
constructor(node, stylesheet, parent) {
7069
this.node = node;
7170
this.parent = parent;
72-
this.selectors = node.prelude.children.map((node) => new Selector(node, stylesheet));
71+
this.selectors = node.prelude.children.map((node) => new ComplexSelector(node, stylesheet));
7372

7473
this.declarations = /** @type {import('#compiler').Css.Declaration[]} */ (
7574
node.block.children
@@ -116,14 +115,14 @@ class Rule {
116115
this.declarations.forEach((declaration) => declaration.transform(code, keyframes));
117116
}
118117

119-
/** @param {import('../../types.js').ComponentAnalysis} analysis */
118+
/** @param {import('../phases/types.js').ComponentAnalysis} analysis */
120119
validate(analysis) {
121120
this.selectors.forEach((selector) => {
122121
selector.validate(analysis);
123122
});
124123
}
125124

126-
/** @param {(selector: import('./Selector.js').default) => void} handler */
125+
/** @param {(selector: ComplexSelector) => void} handler */
127126
warn_on_unused_selector(handler) {
128127
this.selectors.forEach((selector) => {
129128
if (!selector.used) handler(selector);
@@ -310,14 +309,14 @@ class Atrule {
310309
});
311310
}
312311

313-
/** @param {import('../../types.js').ComponentAnalysis} analysis */
312+
/** @param {import('../phases/types.js').ComponentAnalysis} analysis */
314313
validate(analysis) {
315314
this.children.forEach((child) => {
316315
child.validate(analysis);
317316
});
318317
}
319318

320-
/** @param {(selector: import('./Selector.js').default) => void} handler */
319+
/** @param {(selector: ComplexSelector) => void} handler */
321320
warn_on_unused_selector(handler) {
322321
if (this.node.name !== 'media') return;
323322
this.children.forEach((child) => {
@@ -511,14 +510,14 @@ export class Stylesheet {
511510
};
512511
}
513512

514-
/** @param {import('../../types.js').ComponentAnalysis} analysis */
513+
/** @param {import('../phases/types.js').ComponentAnalysis} analysis */
515514
validate(analysis) {
516515
this.children.forEach((child) => {
517516
child.validate(analysis);
518517
});
519518
}
520519

521-
/** @param {import('../../types.js').ComponentAnalysis} analysis */
520+
/** @param {import('../phases/types.js').ComponentAnalysis} analysis */
522521
warn_on_unused_selectors(analysis) {
523522
// const ignores = !this.ast
524523
// ? []

packages/svelte/src/compiler/types/css.d.ts renamed to packages/svelte/src/compiler/css/types.d.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Style } from './template';
1+
import type { Style } from '../types/template';
22

33
export interface BaseNode {
44
start: number;
@@ -20,10 +20,10 @@ export interface Rule extends BaseNode {
2020

2121
export interface SelectorList extends BaseNode {
2222
type: 'SelectorList';
23-
children: Selector[];
23+
children: ComplexSelector[];
2424
}
2525

26-
export interface Selector extends BaseNode {
26+
export interface ComplexSelector extends BaseNode {
2727
type: 'Selector';
2828
children: Array<SimpleSelector | Combinator>;
2929
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
const regex_return_characters = /\r/g;
2+
3+
/**
4+
* @param {string} str
5+
* @returns {string}
6+
*/
7+
export function hash(str) {
8+
str = str.replace(regex_return_characters, '');
9+
let hash = 5381;
10+
let i = str.length;
11+
12+
while (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);
13+
return (hash >>> 0).toString(36);
14+
}
15+
116
const UNKNOWN = {};
217

318
/**

packages/svelte/src/compiler/phases/1-parse/read/style.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ function read_rule(parser) {
149149
* @returns {import('#compiler').Css.SelectorList}
150150
*/
151151
function read_selector_list(parser, inside_pseudo_class = false) {
152-
/** @type {import('#compiler').Css.Selector[]} */
152+
/** @type {import('#compiler').Css.ComplexSelector[]} */
153153
const children = [];
154154

155155
allow_comment_or_whitespace(parser);
@@ -182,7 +182,7 @@ function read_selector_list(parser, inside_pseudo_class = false) {
182182
/**
183183
* @param {import('../index.js').Parser} parser
184184
* @param {boolean} [inside_pseudo_class]
185-
* @returns {import('#compiler').Css.Selector}
185+
* @returns {import('#compiler').Css.ComplexSelector}
186186
*/
187187
function read_selector(parser, inside_pseudo_class = false) {
188188
const list_start = parser.index;

packages/svelte/src/compiler/phases/2-analyze/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import * as b from '../../utils/builders.js';
1313
import { ReservedKeywords, Runes, SVGElements } from '../constants.js';
1414
import { Scope, ScopeRoot, create_scopes, get_rune, set_scope } from '../scope.js';
1515
import { merge } from '../visitors.js';
16-
import { Stylesheet } from './css/Stylesheet.js';
16+
import { Stylesheet } from '../../css/Stylesheet.js';
1717
import { validation_legacy, validation_runes, validation_runes_js } from './validation.js';
1818
import { warn } from '../../warnings.js';
1919
import check_graph_for_cycles from './utils/check_graph_for_cycles.js';

packages/svelte/src/compiler/phases/2-analyze/utils/hash.js

Lines changed: 0 additions & 14 deletions
This file was deleted.

packages/svelte/src/compiler/phases/types.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type {
77
SvelteOptions
88
} from '#compiler';
99
import type { Identifier, LabeledStatement, Program } from 'estree';
10-
import { Stylesheet } from './2-analyze/css/Stylesheet.js';
10+
import { Stylesheet } from '../css/Stylesheet.js';
1111
import type { Scope, ScopeRoot } from './scope.js';
1212

1313
export interface Js {

packages/svelte/src/compiler/types/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import type { Location } from 'locate-character';
1010
import type { SourceMap } from 'magic-string';
1111
import type { Context } from 'zimmerframe';
1212
import type { Scope } from '../phases/scope.js';
13-
import * as Css from './css.js';
13+
import * as Css from '../css/types.js';
1414
import type { EachBlock, Namespace, SvelteNode } from './template.js';
1515

1616
/** The return value of `compile` from `svelte/compiler` */

0 commit comments

Comments
 (0)