happy-css-modules 3.0.1 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/emitter/dts.js +34 -17
- package/dist/emitter/dts.js.map +1 -1
- package/dist/emitter/dts.test.js +3 -3
- package/dist/emitter/dts.test.js.map +1 -1
- package/dist/emitter/index.test.js +3 -3
- package/dist/emitter/index.test.js.map +1 -1
- package/dist/locator/index.d.ts +4 -2
- package/dist/locator/index.js +41 -15
- package/dist/locator/index.js.map +1 -1
- package/dist/locator/index.test.js +142 -48
- package/dist/locator/index.test.js.map +1 -1
- package/dist/locator/postcss.d.ts +41 -3
- package/dist/locator/postcss.js +104 -32
- package/dist/locator/postcss.js.map +1 -1
- package/dist/locator/postcss.test.js +86 -26
- package/dist/locator/postcss.test.js.map +1 -1
- package/dist/test-util/util.d.ts +3 -2
- package/dist/test-util/util.js +22 -18
- package/dist/test-util/util.js.map +1 -1
- package/dist/transformer/less-transformer.test.js +25 -15
- package/dist/transformer/less-transformer.test.js.map +1 -1
- package/dist/transformer/postcss-transformer.test.js +5 -3
- package/dist/transformer/postcss-transformer.test.js.map +1 -1
- package/dist/transformer/scss-transformer.test.js +38 -19
- package/dist/transformer/scss-transformer.test.js.map +1 -1
- package/package.json +1 -1
- package/src/emitter/dts.test.ts +3 -3
- package/src/emitter/dts.ts +59 -37
- package/src/emitter/index.test.ts +3 -3
- package/src/locator/index.test.ts +143 -48
- package/src/locator/index.ts +51 -23
- package/src/locator/postcss.test.ts +135 -26
- package/src/locator/postcss.ts +120 -36
- package/src/test-util/util.ts +23 -18
- package/src/transformer/less-transformer.test.ts +25 -15
- package/src/transformer/postcss-transformer.test.ts +5 -3
- package/src/transformer/scss-transformer.test.ts +38 -19
|
@@ -26,14 +26,21 @@ export type Location = {
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function generateLocalTokenNames(ast: Root): Promise<string[]>;
|
|
28
28
|
/**
|
|
29
|
-
* Get the
|
|
29
|
+
* Get the original location of the class selector.
|
|
30
30
|
* @param rule The rule node that contains the token.
|
|
31
31
|
* @param classSelector The class selector node that contains the token.
|
|
32
|
-
* @returns The
|
|
32
|
+
* @returns The original location of the class selector.
|
|
33
33
|
*/
|
|
34
|
-
export declare function
|
|
34
|
+
export declare function getOriginalLocationOfClassSelector(rule: Rule, classSelector: ClassName): Location;
|
|
35
|
+
/**
|
|
36
|
+
* Get the original location of `@value`.
|
|
37
|
+
* @param atValue The `@value` rule.
|
|
38
|
+
* @returns The location of the `@value` rule.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getOriginalLocationOfAtValue(atValue: AtRule, valueDeclaration: ValueDeclaration): Location;
|
|
35
41
|
type CollectNodesResult = {
|
|
36
42
|
atImports: AtRule[];
|
|
43
|
+
atValues: AtRule[];
|
|
37
44
|
classSelectors: {
|
|
38
45
|
rule: Rule;
|
|
39
46
|
classSelector: ClassName;
|
|
@@ -50,4 +57,35 @@ export declare function collectNodes(ast: Root): CollectNodesResult;
|
|
|
50
57
|
* @returns The imported sheet path.
|
|
51
58
|
*/
|
|
52
59
|
export declare function parseAtImport(atImport: AtRule): string | undefined;
|
|
60
|
+
type ValueDeclaration = {
|
|
61
|
+
type: 'valueDeclaration';
|
|
62
|
+
tokenName: string;
|
|
63
|
+
};
|
|
64
|
+
type ValueImportDeclaration = {
|
|
65
|
+
type: 'valueImportDeclaration';
|
|
66
|
+
imports: {
|
|
67
|
+
importedTokenName: string;
|
|
68
|
+
localTokenName: string;
|
|
69
|
+
}[];
|
|
70
|
+
from: string;
|
|
71
|
+
};
|
|
72
|
+
type ParsedAtValue = ValueDeclaration | ValueImportDeclaration;
|
|
73
|
+
/**
|
|
74
|
+
* Parse the `@value` rule.
|
|
75
|
+
* Forked from https://github.com/css-modules/postcss-modules-values/blob/v4.0.0/src/index.js.
|
|
76
|
+
*
|
|
77
|
+
* @license
|
|
78
|
+
* ISC License (ISC)
|
|
79
|
+
* Copyright (c) 2015, Glen Maddern
|
|
80
|
+
*
|
|
81
|
+
* Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted,
|
|
82
|
+
* provided that the above copyright notice and this permission notice appear in all copies.
|
|
83
|
+
*
|
|
84
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING
|
|
85
|
+
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
86
|
+
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
87
|
+
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
|
|
88
|
+
* THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
89
|
+
*/
|
|
90
|
+
export declare function parseAtValue(atValue: AtRule): ParsedAtValue;
|
|
53
91
|
export {};
|
package/dist/locator/postcss.js
CHANGED
|
@@ -2,38 +2,26 @@ import postcss from 'postcss';
|
|
|
2
2
|
import modules from 'postcss-modules';
|
|
3
3
|
import selectorParser from 'postcss-selector-parser';
|
|
4
4
|
import valueParser from 'postcss-value-parser';
|
|
5
|
-
function removeDependenciesPlugin() {
|
|
6
|
-
return {
|
|
7
|
-
postcssPlugin: 'remove-dependencies',
|
|
8
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
9
|
-
AtRule(atRule) {
|
|
10
|
-
if (isAtImportNode(atRule) || isAtValueNode(atRule)) {
|
|
11
|
-
atRule.remove();
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
15
|
-
Declaration(declaration) {
|
|
16
|
-
if (isComposesDeclaration(declaration)) {
|
|
17
|
-
declaration.remove();
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
5
|
/**
|
|
23
6
|
* Traverses a local token from the AST and returns its name.
|
|
24
7
|
* @param ast The AST to traverse.
|
|
25
8
|
* @returns The name of the local token.
|
|
26
9
|
*/
|
|
27
10
|
export async function generateLocalTokenNames(ast) {
|
|
11
|
+
class EmptyLoader {
|
|
12
|
+
async fetch(_file, _relativeTo, _depTrace) {
|
|
13
|
+
// Return an empty object because we do not want to load external tokens in `generateLocalTokenNames`.
|
|
14
|
+
return Promise.resolve({});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
28
17
|
return new Promise((resolve, reject) => {
|
|
29
18
|
postcss
|
|
30
19
|
.default()
|
|
31
|
-
// postcss-modules collects tokens (i.e., includes external tokens) by following
|
|
32
|
-
// the dependencies specified in the @import.
|
|
33
|
-
// However, we do not want `generateLocalTokenNames` to return external tokens.
|
|
34
|
-
// So we remove the @import beforehand.
|
|
35
|
-
.use(removeDependenciesPlugin())
|
|
36
20
|
.use(modules({
|
|
21
|
+
// `@import`, `@value`, and `composes` can read tokens from external files.
|
|
22
|
+
// However, we want to collect only local tokens. So we will fake that
|
|
23
|
+
// an empty token is exported from the external file.
|
|
24
|
+
Loader: EmptyLoader,
|
|
37
25
|
getJSON: (_cssFileName, json) => {
|
|
38
26
|
resolve(Object.keys(json));
|
|
39
27
|
},
|
|
@@ -44,12 +32,12 @@ export async function generateLocalTokenNames(ast) {
|
|
|
44
32
|
});
|
|
45
33
|
}
|
|
46
34
|
/**
|
|
47
|
-
* Get the
|
|
35
|
+
* Get the original location of the class selector.
|
|
48
36
|
* @param rule The rule node that contains the token.
|
|
49
37
|
* @param classSelector The class selector node that contains the token.
|
|
50
|
-
* @returns The
|
|
38
|
+
* @returns The original location of the class selector.
|
|
51
39
|
*/
|
|
52
|
-
export function
|
|
40
|
+
export function getOriginalLocationOfClassSelector(rule, classSelector) {
|
|
53
41
|
// The node derived from `postcss.parse` always has `source` property. Therefore, this line is unreachable.
|
|
54
42
|
if (rule.source === undefined || classSelector.source === undefined)
|
|
55
43
|
throw new Error('Node#source is undefined');
|
|
@@ -97,6 +85,34 @@ export function getOriginalLocation(rule, classSelector) {
|
|
|
97
85
|
},
|
|
98
86
|
};
|
|
99
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Get the original location of `@value`.
|
|
90
|
+
* @param atValue The `@value` rule.
|
|
91
|
+
* @returns The location of the `@value` rule.
|
|
92
|
+
*/
|
|
93
|
+
export function getOriginalLocationOfAtValue(atValue, valueDeclaration) {
|
|
94
|
+
// The node derived from `postcss.parse` always has `source` property. Therefore, this line is unreachable.
|
|
95
|
+
if (atValue.source === undefined)
|
|
96
|
+
throw new Error('Node#source is undefined');
|
|
97
|
+
// The node derived from `postcss.parse` always has `start` and `end` property. Therefore, this line is unreachable.
|
|
98
|
+
if (atValue.source.start === undefined)
|
|
99
|
+
throw new Error('Node#start is undefined');
|
|
100
|
+
if (atValue.source.end === undefined)
|
|
101
|
+
throw new Error('Node#end is undefined');
|
|
102
|
+
if (atValue.source.input.file === undefined)
|
|
103
|
+
throw new Error('Node#input.file is undefined');
|
|
104
|
+
return {
|
|
105
|
+
filePath: atValue.source.input.file,
|
|
106
|
+
start: {
|
|
107
|
+
line: atValue.source.start.line,
|
|
108
|
+
column: atValue.source.start.column + 7, // Add for `@value `
|
|
109
|
+
},
|
|
110
|
+
end: {
|
|
111
|
+
line: atValue.source.start.line,
|
|
112
|
+
column: atValue.source.start.column + 7 + valueDeclaration.tokenName.length, // Add for `@value ` and token name
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
100
116
|
function isAtRuleNode(node) {
|
|
101
117
|
return node.type === 'atrule';
|
|
102
118
|
}
|
|
@@ -109,23 +125,21 @@ function isAtValueNode(node) {
|
|
|
109
125
|
function isRuleNode(node) {
|
|
110
126
|
return node.type === 'rule';
|
|
111
127
|
}
|
|
112
|
-
function isDeclaration(node) {
|
|
113
|
-
return node.type === 'decl';
|
|
114
|
-
}
|
|
115
|
-
function isComposesDeclaration(node) {
|
|
116
|
-
return isDeclaration(node) && node.prop === 'composes';
|
|
117
|
-
}
|
|
118
128
|
/**
|
|
119
129
|
* Collect nodes from the AST.
|
|
120
130
|
* @param ast The AST.
|
|
121
131
|
*/
|
|
122
132
|
export function collectNodes(ast) {
|
|
123
133
|
const atImports = [];
|
|
134
|
+
const atValues = [];
|
|
124
135
|
const classSelectors = [];
|
|
125
136
|
ast.walk((node) => {
|
|
126
137
|
if (isAtImportNode(node)) {
|
|
127
138
|
atImports.push(node);
|
|
128
139
|
}
|
|
140
|
+
else if (isAtValueNode(node)) {
|
|
141
|
+
atValues.push(node);
|
|
142
|
+
}
|
|
129
143
|
else if (isRuleNode(node)) {
|
|
130
144
|
// In `rule.selector` comes the following string:
|
|
131
145
|
// 1. ".foo"
|
|
@@ -143,7 +157,7 @@ export function collectNodes(ast) {
|
|
|
143
157
|
}).processSync(node);
|
|
144
158
|
}
|
|
145
159
|
});
|
|
146
|
-
return { atImports, classSelectors };
|
|
160
|
+
return { atImports, atValues, classSelectors };
|
|
147
161
|
}
|
|
148
162
|
/**
|
|
149
163
|
* Parse the `@import` rule.
|
|
@@ -166,4 +180,62 @@ export function parseAtImport(atImport) {
|
|
|
166
180
|
}
|
|
167
181
|
return undefined;
|
|
168
182
|
}
|
|
183
|
+
const matchImports = /^(.+?|\([\s\S]+?\))\s+from\s+("[^"]*"|'[^']*'|[\w-]+)$/u;
|
|
184
|
+
const matchValueDefinition = /(?:\s+|^)([\w-]+):?(.*?)$/u;
|
|
185
|
+
const matchImport = /^([\w-]+)(?:\s+as\s+([\w-]+))?/u;
|
|
186
|
+
/**
|
|
187
|
+
* Parse the `@value` rule.
|
|
188
|
+
* Forked from https://github.com/css-modules/postcss-modules-values/blob/v4.0.0/src/index.js.
|
|
189
|
+
*
|
|
190
|
+
* @license
|
|
191
|
+
* ISC License (ISC)
|
|
192
|
+
* Copyright (c) 2015, Glen Maddern
|
|
193
|
+
*
|
|
194
|
+
* Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted,
|
|
195
|
+
* provided that the above copyright notice and this permission notice appear in all copies.
|
|
196
|
+
*
|
|
197
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING
|
|
198
|
+
* ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
199
|
+
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
200
|
+
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
|
|
201
|
+
* THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
202
|
+
*/
|
|
203
|
+
export function parseAtValue(atValue) {
|
|
204
|
+
const matchesForImports = atValue.params.match(matchImports);
|
|
205
|
+
if (matchesForImports) {
|
|
206
|
+
const [, aliases, path] = matchesForImports;
|
|
207
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
208
|
+
if (aliases === undefined || path === undefined)
|
|
209
|
+
throw new Error(`unreachable`);
|
|
210
|
+
const imports = aliases
|
|
211
|
+
.replace(/^\(\s*([\s\S]+)\s*\)$/u, '$1')
|
|
212
|
+
.split(/\s*,\s*/u)
|
|
213
|
+
.map((alias) => {
|
|
214
|
+
const tokens = matchImport.exec(alias);
|
|
215
|
+
if (tokens) {
|
|
216
|
+
const [, theirName, myName] = tokens;
|
|
217
|
+
if (theirName === undefined)
|
|
218
|
+
throw new Error(`unreachable`);
|
|
219
|
+
return { importedTokenName: theirName, localTokenName: myName ?? theirName };
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
throw new Error(`@import statement "${alias}" is invalid!`);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
// Remove quotes from the path.
|
|
226
|
+
// NOTE: This is a restriction unique to "happy-css-modules" and not a specification of CSS Modules.
|
|
227
|
+
const normalizedPath = path.replace(/^['"]|['"]$/gu, '');
|
|
228
|
+
return { type: 'valueImportDeclaration', imports, from: normalizedPath };
|
|
229
|
+
}
|
|
230
|
+
const matchesForValueDefinitions = `${atValue.params}${atValue.raws.between}`.match(matchValueDefinition);
|
|
231
|
+
if (matchesForValueDefinitions) {
|
|
232
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
233
|
+
const [, key, value] = matchesForValueDefinitions;
|
|
234
|
+
if (key === undefined)
|
|
235
|
+
throw new Error(`unreachable`);
|
|
236
|
+
return { type: 'valueDeclaration', tokenName: key };
|
|
237
|
+
}
|
|
238
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
239
|
+
throw new Error(`@value statement "${atValue.source}" is invalid!`);
|
|
240
|
+
}
|
|
169
241
|
//# sourceMappingURL=postcss.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postcss.js","sourceRoot":"","sources":["../../src/locator/postcss.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"postcss.js","sourceRoot":"","sources":["../../src/locator/postcss.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import dedent from 'dedent';
|
|
2
|
-
import { createRoot, createClassSelectors, createAtImports, createFixtures } from '../test-util/util.js';
|
|
3
|
-
import { generateLocalTokenNames,
|
|
2
|
+
import { createRoot, createClassSelectors, createAtImports, createFixtures, createAtValues, } from '../test-util/util.js';
|
|
3
|
+
import { generateLocalTokenNames, getOriginalLocationOfClassSelector, parseAtImport, parseAtValue, collectNodes, getOriginalLocationOfAtValue, } from './postcss.js';
|
|
4
4
|
describe('generateLocalTokenNames', () => {
|
|
5
5
|
test('basic', async () => {
|
|
6
6
|
expect(await generateLocalTokenNames(createRoot(`
|
|
@@ -24,7 +24,9 @@ describe('generateLocalTokenNames', () => {
|
|
|
24
24
|
.local_class_name_3 {}
|
|
25
25
|
}
|
|
26
26
|
:local(.local_class_name_4) {}
|
|
27
|
+
@value value: #BF4040;
|
|
27
28
|
`))).toStrictEqual([
|
|
29
|
+
'value',
|
|
28
30
|
'basic',
|
|
29
31
|
'cascading',
|
|
30
32
|
'pseudo_class_1',
|
|
@@ -54,10 +56,14 @@ describe('generateLocalTokenNames', () => {
|
|
|
54
56
|
`))).toStrictEqual([]);
|
|
55
57
|
});
|
|
56
58
|
test('does not track styles imported by @value in other file because it is not a local token', async () => {
|
|
57
|
-
createFixtures({
|
|
59
|
+
createFixtures({
|
|
60
|
+
'/test/1.css': dedent `
|
|
61
|
+
.a {}
|
|
62
|
+
`,
|
|
63
|
+
});
|
|
58
64
|
expect(await generateLocalTokenNames(createRoot(`
|
|
59
|
-
@value
|
|
60
|
-
`))).toStrictEqual([]);
|
|
65
|
+
@value a from "/test/1.css";
|
|
66
|
+
`))).toStrictEqual(['a']);
|
|
61
67
|
});
|
|
62
68
|
test('does not track styles imported by composes in other file because it is not a local token', async () => {
|
|
63
69
|
createFixtures({
|
|
@@ -72,12 +78,12 @@ describe('generateLocalTokenNames', () => {
|
|
|
72
78
|
`))).toStrictEqual(['a']);
|
|
73
79
|
});
|
|
74
80
|
});
|
|
75
|
-
describe('
|
|
81
|
+
describe('getOriginalLocationOfClassSelector', () => {
|
|
76
82
|
test('basic', () => {
|
|
77
83
|
const [basic] = createClassSelectors(createRoot(dedent `
|
|
78
84
|
.basic {}
|
|
79
85
|
`));
|
|
80
|
-
expect(
|
|
86
|
+
expect(getOriginalLocationOfClassSelector(basic.rule, basic.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 6 } }`);
|
|
81
87
|
});
|
|
82
88
|
test('cascading', () => {
|
|
83
89
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
@@ -85,8 +91,8 @@ describe('getOriginalLocation', () => {
|
|
|
85
91
|
.cascading {}
|
|
86
92
|
.cascading {}
|
|
87
93
|
`));
|
|
88
|
-
expect(
|
|
89
|
-
expect(
|
|
94
|
+
expect(getOriginalLocationOfClassSelector(cascading_1.rule, cascading_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 10 } }`);
|
|
95
|
+
expect(getOriginalLocationOfClassSelector(cascading_2.rule, cascading_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 2, column: 1 }, end: { line: 2, column: 10 } }`);
|
|
90
96
|
});
|
|
91
97
|
test('pseudo_class', () => {
|
|
92
98
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
@@ -95,25 +101,25 @@ describe('getOriginalLocation', () => {
|
|
|
95
101
|
.pseudo_class_2:hover {}
|
|
96
102
|
:not(.pseudo_class_3) {}
|
|
97
103
|
`));
|
|
98
|
-
expect(
|
|
99
|
-
expect(
|
|
100
|
-
expect(
|
|
104
|
+
expect(getOriginalLocationOfClassSelector(pseudo_class_1.rule, pseudo_class_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 15 } }`);
|
|
105
|
+
expect(getOriginalLocationOfClassSelector(pseudo_class_2.rule, pseudo_class_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 2, column: 1 }, end: { line: 2, column: 15 } }`);
|
|
106
|
+
expect(getOriginalLocationOfClassSelector(pseudo_class_3.rule, pseudo_class_3.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 3, column: 6 }, end: { line: 3, column: 20 } }`);
|
|
101
107
|
});
|
|
102
108
|
test('multiple_selector', () => {
|
|
103
109
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
104
110
|
const [multiple_selector_1, multiple_selector_2] = createClassSelectors(createRoot(dedent `
|
|
105
111
|
.multiple_selector_1.multiple_selector_2 {}
|
|
106
112
|
`));
|
|
107
|
-
expect(
|
|
108
|
-
expect(
|
|
113
|
+
expect(getOriginalLocationOfClassSelector(multiple_selector_1.rule, multiple_selector_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 20 } }`);
|
|
114
|
+
expect(getOriginalLocationOfClassSelector(multiple_selector_2.rule, multiple_selector_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 21 }, end: { line: 1, column: 40 } }`);
|
|
109
115
|
});
|
|
110
116
|
test('combinator', () => {
|
|
111
117
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
112
118
|
const [combinator_1, combinator_2] = createClassSelectors(createRoot(dedent `
|
|
113
119
|
.combinator_1 + .combinator_2 {}
|
|
114
120
|
`));
|
|
115
|
-
expect(
|
|
116
|
-
expect(
|
|
121
|
+
expect(getOriginalLocationOfClassSelector(combinator_1.rule, combinator_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 13 } }`);
|
|
122
|
+
expect(getOriginalLocationOfClassSelector(combinator_2.rule, combinator_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 17 }, end: { line: 1, column: 29 } }`);
|
|
117
123
|
});
|
|
118
124
|
test('at_rule', () => {
|
|
119
125
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
@@ -124,15 +130,15 @@ describe('getOriginalLocation', () => {
|
|
|
124
130
|
}
|
|
125
131
|
}
|
|
126
132
|
`));
|
|
127
|
-
expect(
|
|
133
|
+
expect(getOriginalLocationOfClassSelector(at_rule.rule, at_rule.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 3, column: 5 }, end: { line: 3, column: 12 } }`);
|
|
128
134
|
});
|
|
129
135
|
test('selector_list', () => {
|
|
130
136
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
131
137
|
const [selector_list_1, selector_list_2] = createClassSelectors(createRoot(dedent `
|
|
132
138
|
.selector_list_1, .selector_list_2 {}
|
|
133
139
|
`));
|
|
134
|
-
expect(
|
|
135
|
-
expect(
|
|
140
|
+
expect(getOriginalLocationOfClassSelector(selector_list_1.rule, selector_list_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 16 } }`);
|
|
141
|
+
expect(getOriginalLocationOfClassSelector(selector_list_2.rule, selector_list_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 19 }, end: { line: 1, column: 34 } }`);
|
|
136
142
|
});
|
|
137
143
|
test('local_class_name', () => {
|
|
138
144
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
@@ -144,10 +150,10 @@ describe('getOriginalLocation', () => {
|
|
|
144
150
|
}
|
|
145
151
|
:local(.local_class_name_4) {}
|
|
146
152
|
`));
|
|
147
|
-
expect(
|
|
148
|
-
expect(
|
|
149
|
-
expect(
|
|
150
|
-
expect(
|
|
153
|
+
expect(getOriginalLocationOfClassSelector(local_class_name_1.rule, local_class_name_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 8 }, end: { line: 1, column: 26 } }`);
|
|
154
|
+
expect(getOriginalLocationOfClassSelector(local_class_name_2.rule, local_class_name_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 3, column: 3 }, end: { line: 3, column: 21 } }`);
|
|
155
|
+
expect(getOriginalLocationOfClassSelector(local_class_name_3.rule, local_class_name_3.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 4, column: 3 }, end: { line: 4, column: 21 } }`);
|
|
156
|
+
expect(getOriginalLocationOfClassSelector(local_class_name_4.rule, local_class_name_4.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 6, column: 8 }, end: { line: 6, column: 26 } }`);
|
|
151
157
|
});
|
|
152
158
|
test('with_newline', () => {
|
|
153
159
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
@@ -156,11 +162,26 @@ describe('getOriginalLocation', () => {
|
|
|
156
162
|
.with_newline_2
|
|
157
163
|
+ .with_newline_3, {}
|
|
158
164
|
`));
|
|
159
|
-
expect(
|
|
160
|
-
expect(
|
|
161
|
-
expect(
|
|
165
|
+
expect(getOriginalLocationOfClassSelector(with_newline_1.rule, with_newline_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 15 } }`);
|
|
166
|
+
expect(getOriginalLocationOfClassSelector(with_newline_2.rule, with_newline_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 2, column: 1 }, end: { line: 2, column: 15 } }`);
|
|
167
|
+
expect(getOriginalLocationOfClassSelector(with_newline_3.rule, with_newline_3.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 3, column: 5 }, end: { line: 3, column: 19 } }`);
|
|
162
168
|
});
|
|
163
169
|
});
|
|
170
|
+
test('getOriginalLocationOfAtValue', () => {
|
|
171
|
+
function tryGetOriginalLocationOfAtValue(atValue) {
|
|
172
|
+
const parsed = parseAtValue(atValue);
|
|
173
|
+
if (parsed.type === 'valueDeclaration') {
|
|
174
|
+
return getOriginalLocationOfAtValue(atValue, parsed);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
throw new Error('Unexpected type');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
const [basic] = createAtValues(createRoot(dedent `
|
|
181
|
+
@value basic: #000;
|
|
182
|
+
`));
|
|
183
|
+
expect(tryGetOriginalLocationOfAtValue(basic)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 8 }, end: { line: 1, column: 13 } }`);
|
|
184
|
+
});
|
|
164
185
|
test('collectNodes', () => {
|
|
165
186
|
const ast = createRoot(dedent `
|
|
166
187
|
@import;
|
|
@@ -193,4 +214,43 @@ test('parseAtImport', () => {
|
|
|
193
214
|
expect(parseAtImport(atImports[3])).toBe('test.css');
|
|
194
215
|
expect(parseAtImport(atImports[4])).toBe('test.css');
|
|
195
216
|
});
|
|
217
|
+
test('parseAtValue', () => {
|
|
218
|
+
const atValues = createAtValues(createRoot(dedent `
|
|
219
|
+
@value basic: #000;
|
|
220
|
+
@value withoutColon #000;
|
|
221
|
+
@value empty:;
|
|
222
|
+
@value comment:/* comment */;
|
|
223
|
+
@value complex: (max-width: 599px);
|
|
224
|
+
@value import from "test.css";
|
|
225
|
+
@value import1, import2 from "test.css";
|
|
226
|
+
@value import as alias from "test.css";
|
|
227
|
+
/*
|
|
228
|
+
* NOTE: happy-css-modules intentionally does not support module specifier as variable.
|
|
229
|
+
* e.g. \`@value d, e from moduleName;\`
|
|
230
|
+
*/
|
|
231
|
+
`));
|
|
232
|
+
expect(parseAtValue(atValues[0])).toStrictEqual({ type: 'valueDeclaration', tokenName: 'basic' });
|
|
233
|
+
expect(parseAtValue(atValues[1])).toStrictEqual({ type: 'valueDeclaration', tokenName: 'withoutColon' });
|
|
234
|
+
expect(parseAtValue(atValues[2])).toStrictEqual({ type: 'valueDeclaration', tokenName: 'empty' });
|
|
235
|
+
expect(parseAtValue(atValues[3])).toStrictEqual({ type: 'valueDeclaration', tokenName: 'comment' });
|
|
236
|
+
expect(parseAtValue(atValues[4])).toStrictEqual({ type: 'valueDeclaration', tokenName: 'complex' });
|
|
237
|
+
expect(parseAtValue(atValues[5])).toStrictEqual({
|
|
238
|
+
type: 'valueImportDeclaration',
|
|
239
|
+
imports: [{ importedTokenName: 'import', localTokenName: 'import' }],
|
|
240
|
+
from: 'test.css',
|
|
241
|
+
});
|
|
242
|
+
expect(parseAtValue(atValues[6])).toStrictEqual({
|
|
243
|
+
type: 'valueImportDeclaration',
|
|
244
|
+
imports: [
|
|
245
|
+
{ importedTokenName: 'import1', localTokenName: 'import1' },
|
|
246
|
+
{ importedTokenName: 'import2', localTokenName: 'import2' },
|
|
247
|
+
],
|
|
248
|
+
from: 'test.css',
|
|
249
|
+
});
|
|
250
|
+
expect(parseAtValue(atValues[7])).toStrictEqual({
|
|
251
|
+
type: 'valueImportDeclaration',
|
|
252
|
+
imports: [{ importedTokenName: 'import', localTokenName: 'alias' }],
|
|
253
|
+
from: 'test.css',
|
|
254
|
+
});
|
|
255
|
+
});
|
|
196
256
|
//# sourceMappingURL=postcss.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postcss.test.js","sourceRoot":"","sources":["../../src/locator/postcss.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"postcss.test.js","sourceRoot":"","sources":["../../src/locator/postcss.test.ts"],"names":[],"mappings":"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"}
|
package/dist/test-util/util.d.ts
CHANGED
|
@@ -4,16 +4,17 @@ import { type Token, type Location } from '../locator/index.js';
|
|
|
4
4
|
export declare const FIXTURE_DIR_PATH: string;
|
|
5
5
|
export declare function createRoot(code: string, from?: string): Root;
|
|
6
6
|
export declare function createAtImports(root: Root): AtRule[];
|
|
7
|
+
export declare function createAtValues(root: Root): AtRule[];
|
|
7
8
|
export declare function createClassSelectors(root: Root): {
|
|
8
9
|
rule: Rule;
|
|
9
10
|
classSelector: ClassName;
|
|
10
11
|
}[];
|
|
11
12
|
export declare function fakeToken(args: {
|
|
12
13
|
name: Token['name'];
|
|
13
|
-
|
|
14
|
+
originalLocation: {
|
|
14
15
|
filePath?: Location['filePath'];
|
|
15
16
|
start?: Location['start'];
|
|
16
|
-
}
|
|
17
|
+
};
|
|
17
18
|
}): Token;
|
|
18
19
|
export declare function waitForAsyncTask(ms?: number): Promise<void>;
|
|
19
20
|
export declare function exists(path: string): Promise<boolean>;
|
package/dist/test-util/util.js
CHANGED
|
@@ -12,28 +12,32 @@ export function createRoot(code, from) {
|
|
|
12
12
|
export function createAtImports(root) {
|
|
13
13
|
return collectNodes(root).atImports;
|
|
14
14
|
}
|
|
15
|
+
export function createAtValues(root) {
|
|
16
|
+
return collectNodes(root).atValues;
|
|
17
|
+
}
|
|
15
18
|
export function createClassSelectors(root) {
|
|
16
19
|
return collectNodes(root).classSelectors;
|
|
17
20
|
}
|
|
18
21
|
export function fakeToken(args) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
if (args.originalLocation.filePath === undefined || args.originalLocation.start === undefined) {
|
|
23
|
+
return {
|
|
24
|
+
name: args.name,
|
|
25
|
+
originalLocation: { filePath: undefined, start: undefined, end: undefined },
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return {
|
|
30
|
+
name: args.name,
|
|
31
|
+
originalLocation: {
|
|
32
|
+
filePath: args.originalLocation.filePath ?? getFixturePath('/test/1.css'),
|
|
33
|
+
start: args.originalLocation.start,
|
|
34
|
+
end: {
|
|
35
|
+
line: args.originalLocation.start.line,
|
|
36
|
+
column: args.originalLocation.start.column + args.name.length - 1,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
37
41
|
}
|
|
38
42
|
export async function waitForAsyncTask(ms) {
|
|
39
43
|
await new Promise((resolve) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/test-util/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,OAA8C,MAAM,SAAS,CAAC;AAErE,OAAO,EAAc,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CACrC,YAAY,CAAC,MAAM,EAAE,CAAC,EACtB,4BAA4B,EAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAE,CAC/B,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,IAAa;IACpD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,gBAAgB,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAU;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/test-util/util.ts"],"names":[],"mappings":"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"}
|