@css-modules-kit/core 0.6.0 → 0.8.0
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/checker.d.ts +9 -2
- package/dist/checker.d.ts.map +1 -1
- package/dist/checker.js +16 -14
- package/dist/checker.js.map +1 -1
- package/dist/config.d.ts +6 -32
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +60 -59
- package/dist/config.js.map +1 -1
- package/dist/diagnostic.d.ts.map +1 -1
- package/dist/diagnostic.js +8 -18
- package/dist/diagnostic.js.map +1 -1
- package/dist/{dts-creator.d.ts → dts-generator.d.ts} +6 -10
- package/dist/dts-generator.d.ts.map +1 -0
- package/dist/{dts-creator.js → dts-generator.js} +63 -25
- package/dist/dts-generator.js.map +1 -0
- package/dist/error.js +2 -7
- package/dist/error.js.map +1 -1
- package/dist/export-builder.js +1 -4
- package/dist/export-builder.js.map +1 -1
- package/dist/file.js +17 -30
- package/dist/file.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -44
- package/dist/index.js.map +1 -1
- package/dist/parser/at-import-parser.js +3 -9
- package/dist/parser/at-import-parser.js.map +1 -1
- package/dist/parser/at-value-parser.js +1 -4
- package/dist/parser/at-value-parser.js.map +1 -1
- package/dist/parser/css-module-parser.d.ts +8 -7
- package/dist/parser/css-module-parser.d.ts.map +1 -1
- package/dist/parser/css-module-parser.js +41 -39
- package/dist/parser/css-module-parser.js.map +1 -1
- package/dist/parser/key-frame-parser.js +1 -4
- package/dist/parser/key-frame-parser.js.map +1 -1
- package/dist/parser/rule-parser.js +7 -13
- package/dist/parser/rule-parser.js.map +1 -1
- package/dist/path.d.ts +0 -1
- package/dist/path.d.ts.map +1 -1
- package/dist/path.js +16 -31
- package/dist/path.js.map +1 -1
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +12 -38
- package/dist/resolver.js.map +1 -1
- package/dist/type.d.ts +2 -0
- package/dist/type.d.ts.map +1 -1
- package/dist/type.js +1 -2
- package/dist/util.d.ts +1 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +6 -8
- package/dist/util.js.map +1 -1
- package/package.json +2 -2
- package/src/checker.ts +20 -16
- package/src/config.ts +58 -47
- package/src/diagnostic.ts +2 -4
- package/src/{dts-creator.ts → dts-generator.ts} +65 -27
- package/src/index.ts +5 -4
- package/src/parser/css-module-parser.ts +32 -30
- package/src/path.ts +0 -3
- package/src/resolver.ts +5 -26
- package/src/type.ts +2 -0
- package/src/util.ts +4 -0
- package/dist/dts-creator.d.ts.map +0 -1
- package/dist/dts-creator.js.map +0 -1
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const postcss_1 = require("postcss");
|
|
8
|
-
const postcss_safe_parser_1 = __importDefault(require("postcss-safe-parser"));
|
|
9
|
-
const at_import_parser_js_1 = require("./at-import-parser.js");
|
|
10
|
-
const at_value_parser_js_1 = require("./at-value-parser.js");
|
|
11
|
-
const key_frame_parser_js_1 = require("./key-frame-parser.js");
|
|
12
|
-
const rule_parser_js_1 = require("./rule-parser.js");
|
|
1
|
+
import { CssSyntaxError, parse } from 'postcss';
|
|
2
|
+
import safeParser from 'postcss-safe-parser';
|
|
3
|
+
import { parseAtImport } from './at-import-parser.js';
|
|
4
|
+
import { parseAtValue } from './at-value-parser.js';
|
|
5
|
+
import { parseAtKeyframes } from './key-frame-parser.js';
|
|
6
|
+
import { parseRule } from './rule-parser.js';
|
|
13
7
|
function isAtRuleNode(node) {
|
|
14
8
|
return node.type === 'atrule';
|
|
15
9
|
}
|
|
@@ -34,13 +28,13 @@ function collectTokens(ast, keyframes) {
|
|
|
34
28
|
const tokenImporters = [];
|
|
35
29
|
ast.walk((node) => {
|
|
36
30
|
if (isAtImportNode(node)) {
|
|
37
|
-
const parsed =
|
|
31
|
+
const parsed = parseAtImport(node);
|
|
38
32
|
if (parsed !== undefined) {
|
|
39
33
|
tokenImporters.push({ type: 'import', ...parsed });
|
|
40
34
|
}
|
|
41
35
|
}
|
|
42
36
|
else if (isAtValueNode(node)) {
|
|
43
|
-
const { atValue, diagnostics } =
|
|
37
|
+
const { atValue, diagnostics } = parseAtValue(node);
|
|
44
38
|
allDiagnostics.push(...diagnostics);
|
|
45
39
|
if (atValue === undefined)
|
|
46
40
|
return;
|
|
@@ -52,14 +46,14 @@ function collectTokens(ast, keyframes) {
|
|
|
52
46
|
}
|
|
53
47
|
}
|
|
54
48
|
else if (keyframes && isAtKeyframesNode(node)) {
|
|
55
|
-
const { keyframe, diagnostics } =
|
|
49
|
+
const { keyframe, diagnostics } = parseAtKeyframes(node);
|
|
56
50
|
allDiagnostics.push(...diagnostics);
|
|
57
51
|
if (keyframe) {
|
|
58
52
|
localTokens.push({ name: keyframe.name, loc: keyframe.loc, declarationLoc: keyframe.declarationLoc });
|
|
59
53
|
}
|
|
60
54
|
}
|
|
61
55
|
else if (isRuleNode(node)) {
|
|
62
|
-
const { classSelectors, diagnostics } =
|
|
56
|
+
const { classSelectors, diagnostics } = parseRule(node);
|
|
63
57
|
allDiagnostics.push(...diagnostics);
|
|
64
58
|
for (const classSelector of classSelectors) {
|
|
65
59
|
localTokens.push(classSelector);
|
|
@@ -68,38 +62,46 @@ function collectTokens(ast, keyframes) {
|
|
|
68
62
|
});
|
|
69
63
|
return { localTokens, tokenImporters, diagnostics: allDiagnostics };
|
|
70
64
|
}
|
|
71
|
-
|
|
65
|
+
/**
|
|
66
|
+
* Parse CSS Module text.
|
|
67
|
+
* If a syntax error is detected in the text, it is re-parsed using `postcss-safe-parser`, and `localTokens` are collected as much as possible.
|
|
68
|
+
*/
|
|
69
|
+
export function parseCSSModule(text, { fileName, includeSyntaxError, keyframes }) {
|
|
72
70
|
let ast;
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
71
|
+
const diagnosticFile = { fileName, text };
|
|
72
|
+
const allDiagnostics = [];
|
|
73
|
+
if (includeSyntaxError) {
|
|
74
|
+
try {
|
|
75
|
+
ast = parse(text, { from: fileName });
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
if (!(e instanceof CssSyntaxError))
|
|
79
|
+
throw e;
|
|
80
|
+
// If syntax error, try to parse with safe parser. While this incurs a cost
|
|
81
|
+
// due to parsing the file twice, it rarely becomes an issue since files
|
|
82
|
+
// with syntax errors are usually few in number.
|
|
83
|
+
ast = safeParser(text, { from: fileName });
|
|
80
84
|
const { line, column, endColumn } = e.input;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
text: e.reason,
|
|
89
|
-
category: 'error',
|
|
90
|
-
},
|
|
91
|
-
],
|
|
92
|
-
};
|
|
85
|
+
allDiagnostics.push({
|
|
86
|
+
file: diagnosticFile,
|
|
87
|
+
start: { line, column },
|
|
88
|
+
length: endColumn !== undefined ? endColumn - column : 1,
|
|
89
|
+
text: e.reason,
|
|
90
|
+
category: 'error',
|
|
91
|
+
});
|
|
93
92
|
}
|
|
94
|
-
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
ast = safeParser(text, { from: fileName });
|
|
95
96
|
}
|
|
96
97
|
const { localTokens, tokenImporters, diagnostics } = collectTokens(ast, keyframes);
|
|
97
|
-
|
|
98
|
+
allDiagnostics.push(...diagnostics.map((diagnostic) => ({ ...diagnostic, file: diagnosticFile })));
|
|
99
|
+
return {
|
|
98
100
|
fileName,
|
|
99
101
|
text,
|
|
100
102
|
localTokens,
|
|
101
103
|
tokenImporters,
|
|
104
|
+
diagnostics: allDiagnostics,
|
|
102
105
|
};
|
|
103
|
-
return { cssModule, diagnostics: diagnostics.map((diagnostic) => ({ ...diagnostic, file: diagnosticSourceFile })) };
|
|
104
106
|
}
|
|
105
107
|
//# sourceMappingURL=css-module-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-module-parser.js","sourceRoot":"","sources":["../../src/parser/css-module-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"css-module-parser.js","sourceRoot":"","sources":["../../src/parser/css-module-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseAtKeyframes = parseAtKeyframes;
|
|
4
1
|
/**
|
|
5
2
|
* Parse the `@keyframes` rule to extract keyframe name.
|
|
6
3
|
*
|
|
@@ -10,7 +7,7 @@ exports.parseAtKeyframes = parseAtKeyframes;
|
|
|
10
7
|
* @param atKeyframes The @keyframes at-rule to parse
|
|
11
8
|
* @returns Parsed keyframe information and diagnostics
|
|
12
9
|
*/
|
|
13
|
-
function parseAtKeyframes(atKeyframes) {
|
|
10
|
+
export function parseAtKeyframes(atKeyframes) {
|
|
14
11
|
// Extract keyframe name from params
|
|
15
12
|
// e.g., "@keyframes fadeIn { ... }" -> keyframeName = "fadeIn"
|
|
16
13
|
// e.g., "@keyframes :local(slideOut) { ... }" -> keyframeName = ":local(slideOut)"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-frame-parser.js","sourceRoot":"","sources":["../../src/parser/key-frame-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"key-frame-parser.js","sourceRoot":"","sources":["../../src/parser/key-frame-parser.ts"],"names":[],"mappings":"AAkBA;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,oCAAoC;IACpC,+DAA+D;IAC/D,mFAAmF;IACnF,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;IAExC,8BAA8B;IAC9B,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,eAAe,GAAG;QACtB,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,WAAW,CAAC,IAAI,CAAC,SAAU,EAAE,CAAC,MAAM,EAAE,CAAC;QAC3F,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,WAAW,CAAC,IAAI,CAAC,SAAU,GAAG,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC;KACzG,CAAC;IAEF,yCAAyC;IACzC,IAAI,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrE,oFAAoF;QACpF,OAAO;YACL,WAAW,EAAE;gBACX;oBACE,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,eAAe,CAAC,KAAK;oBAC5B,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,IAAI,EAAE,yFAAyF,YAAY,mBAAmB;iBAC/H;aACF;SACF,CAAC;IACJ,CAAC;SAAM,IAAI,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7E,wCAAwC;QACxC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,QAAQ,EAAE;YACR,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,eAAe;YACpB,cAAc,EAAE;gBACd,KAAK,EAAE,WAAW,CAAC,MAAO,CAAC,KAAM;gBACjC,GAAG,EAAE,WAAW,CAAC,UAAU,CAAC;oBAC1B,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM;iBACrC,CAAC;aACH;SACF;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.calcDiagnosticsLocationForSelectorParserNodeForTest = calcDiagnosticsLocationForSelectorParserNode;
|
|
7
|
-
exports.parseRule = parseRule;
|
|
8
|
-
const postcss_selector_parser_1 = __importDefault(require("postcss-selector-parser"));
|
|
1
|
+
import selectorParser from 'postcss-selector-parser';
|
|
9
2
|
function calcDiagnosticsLocationForSelectorParserNode(rule, node) {
|
|
10
3
|
const start = rule.positionBy({ index: node.sourceIndex });
|
|
11
4
|
const length = node.toString().length;
|
|
12
5
|
return { start, length };
|
|
13
6
|
}
|
|
7
|
+
export { calcDiagnosticsLocationForSelectorParserNode as calcDiagnosticsLocationForSelectorParserNodeForTest };
|
|
14
8
|
function flatCollectResults(results) {
|
|
15
9
|
const classNames = [];
|
|
16
10
|
const diagnostics = [];
|
|
@@ -31,7 +25,7 @@ function flatCollectResults(results) {
|
|
|
31
25
|
function collectLocalClassNames(rule, root) {
|
|
32
26
|
return visitNode(root, undefined);
|
|
33
27
|
function visitNode(node, wrappedBy) {
|
|
34
|
-
if (
|
|
28
|
+
if (selectorParser.isClassName(node)) {
|
|
35
29
|
switch (wrappedBy) {
|
|
36
30
|
// If the class name is wrapped by `:local(...)` or `:global(...)`,
|
|
37
31
|
// the scope is determined by the wrapper.
|
|
@@ -46,7 +40,7 @@ function collectLocalClassNames(rule, root) {
|
|
|
46
40
|
return { classNames: [node], diagnostics: [] };
|
|
47
41
|
}
|
|
48
42
|
}
|
|
49
|
-
else if (
|
|
43
|
+
else if (selectorParser.isPseudo(node) && (node.value === ':local' || node.value === ':global')) {
|
|
50
44
|
if (node.nodes.length === 0) {
|
|
51
45
|
// `node` is `:local` or `:global` (without any arguments)
|
|
52
46
|
// We don't support `:local` and `:global` (without any arguments) because they are complex.
|
|
@@ -70,7 +64,7 @@ function collectLocalClassNames(rule, root) {
|
|
|
70
64
|
return flatCollectResults(node.nodes.map((child) => visitNode(child, node.value === ':local' ? ':local(...)' : ':global(...)')));
|
|
71
65
|
}
|
|
72
66
|
}
|
|
73
|
-
else if (
|
|
67
|
+
else if (selectorParser.isContainer(node)) {
|
|
74
68
|
return flatCollectResults(node.nodes.map((child) => visitNode(child, wrappedBy)));
|
|
75
69
|
}
|
|
76
70
|
return { classNames: [], diagnostics: [] };
|
|
@@ -79,8 +73,8 @@ function collectLocalClassNames(rule, root) {
|
|
|
79
73
|
/**
|
|
80
74
|
* Parse a rule and collect local class selectors.
|
|
81
75
|
*/
|
|
82
|
-
function parseRule(rule) {
|
|
83
|
-
const root = (
|
|
76
|
+
export function parseRule(rule) {
|
|
77
|
+
const root = selectorParser().astSync(rule);
|
|
84
78
|
const result = collectLocalClassNames(rule, root);
|
|
85
79
|
const classSelectors = result.classNames.map((className) => {
|
|
86
80
|
// If `rule` is `.a, .b { color: red; }` and `className` is `.b`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-parser.js","sourceRoot":"","sources":["../../src/parser/rule-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rule-parser.js","sourceRoot":"","sources":["../../src/parser/rule-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/path.d.ts
CHANGED
|
@@ -6,5 +6,4 @@ export declare function relative(from: string, to: string): string;
|
|
|
6
6
|
export declare function dirname(path: string): string;
|
|
7
7
|
export declare function basename(path: string): string;
|
|
8
8
|
export declare function parse(path: string): ParsedPath;
|
|
9
|
-
export declare const isAbsolute: (path: string) => boolean;
|
|
10
9
|
//# sourceMappingURL=path.d.ts.map
|
package/dist/path.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAK5C,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,wBAAgB,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAE/C;AAED,wBAAgB,OAAO,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAElD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAG9C
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAK5C,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,wBAAgB,IAAI,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAE/C;AAED,wBAAgB,OAAO,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAElD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAG9C"}
|
package/dist/path.js
CHANGED
|
@@ -1,41 +1,26 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isAbsolute = void 0;
|
|
7
|
-
exports.slash = slash;
|
|
8
|
-
exports.join = join;
|
|
9
|
-
exports.resolve = resolve;
|
|
10
|
-
exports.relative = relative;
|
|
11
|
-
exports.dirname = dirname;
|
|
12
|
-
exports.basename = basename;
|
|
13
|
-
exports.parse = parse;
|
|
14
1
|
// eslint-disable-next-line no-restricted-imports
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
function slash(path) {
|
|
18
|
-
return
|
|
2
|
+
import nodePath from 'node:path';
|
|
3
|
+
import ts from 'typescript';
|
|
4
|
+
export function slash(path) {
|
|
5
|
+
return ts.server.toNormalizedPath(path);
|
|
19
6
|
}
|
|
20
|
-
function join(...paths) {
|
|
21
|
-
return slash(
|
|
7
|
+
export function join(...paths) {
|
|
8
|
+
return slash(nodePath.join(...paths));
|
|
22
9
|
}
|
|
23
|
-
function resolve(...paths) {
|
|
24
|
-
return slash(
|
|
10
|
+
export function resolve(...paths) {
|
|
11
|
+
return slash(nodePath.resolve(...paths));
|
|
25
12
|
}
|
|
26
|
-
function relative(from, to) {
|
|
27
|
-
return slash(
|
|
13
|
+
export function relative(from, to) {
|
|
14
|
+
return slash(nodePath.relative(from, to));
|
|
28
15
|
}
|
|
29
|
-
function dirname(path) {
|
|
30
|
-
return slash(
|
|
16
|
+
export function dirname(path) {
|
|
17
|
+
return slash(nodePath.dirname(path));
|
|
31
18
|
}
|
|
32
|
-
function basename(path) {
|
|
33
|
-
return slash(
|
|
19
|
+
export function basename(path) {
|
|
20
|
+
return slash(nodePath.basename(path));
|
|
34
21
|
}
|
|
35
|
-
function parse(path) {
|
|
36
|
-
const { root, dir, base, name, ext } =
|
|
22
|
+
export function parse(path) {
|
|
23
|
+
const { root, dir, base, name, ext } = nodePath.parse(path);
|
|
37
24
|
return { root: slash(root), dir: slash(dir), base, name, ext };
|
|
38
25
|
}
|
|
39
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
40
|
-
exports.isAbsolute = node_path_1.default.isAbsolute;
|
|
41
26
|
//# sourceMappingURL=path.js.map
|
package/dist/path.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAEA,iDAAiD;AACjD,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,UAAU,KAAK,CAAC,IAAY;IAChC,OAAO,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAG,KAAe;IACrC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAG,KAAe;IACxC,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,EAAU;IAC/C,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,IAAY;IAChC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACjE,CAAC"}
|
package/dist/resolver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,WAAW,CAAC;AAG3D,wBAAgB,cAAc,CAC5B,eAAe,EAAE,eAAe,EAChC,qBAAqB,EAAE,EAAE,CAAC,qBAAqB,GAAG,SAAS,GAC1D,QAAQ,CAyBV"}
|
package/dist/resolver.js
CHANGED
|
@@ -1,50 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const node_url_1 = require("node:url");
|
|
8
|
-
const typescript_1 = __importDefault(require("typescript"));
|
|
9
|
-
const path_js_1 = require("./path.js");
|
|
10
|
-
function createResolver(compilerOptions, moduleResolutionCache) {
|
|
11
|
-
return (_specifier, options) => {
|
|
12
|
-
let specifier = _specifier;
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { isURLSpecifier } from './util.js';
|
|
3
|
+
export function createResolver(compilerOptions, moduleResolutionCache) {
|
|
4
|
+
return (specifier, options) => {
|
|
5
|
+
if (isURLSpecifier(specifier))
|
|
6
|
+
return undefined;
|
|
13
7
|
const host = {
|
|
14
|
-
...
|
|
8
|
+
...ts.sys,
|
|
15
9
|
fileExists: (fileName) => {
|
|
16
10
|
if (fileName.endsWith('.module.d.css.ts')) {
|
|
17
|
-
return
|
|
11
|
+
return ts.sys.fileExists(fileName.replace(/\.module\.d\.css\.ts$/u, '.module.css'));
|
|
18
12
|
}
|
|
19
|
-
return
|
|
13
|
+
return ts.sys.fileExists(fileName);
|
|
20
14
|
},
|
|
21
15
|
};
|
|
22
|
-
const { resolvedModule } =
|
|
16
|
+
const { resolvedModule } = ts.resolveModuleName(specifier, options.request, compilerOptions, host, moduleResolutionCache);
|
|
23
17
|
if (resolvedModule) {
|
|
24
18
|
// TODO: Logging that the paths is used.
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
if ((0, path_js_1.isAbsolute)(specifier)) {
|
|
28
|
-
return (0, path_js_1.resolve)(specifier);
|
|
29
|
-
}
|
|
30
|
-
else if (isRelativeSpecifier(specifier)) {
|
|
31
|
-
// Convert the specifier to an absolute path
|
|
32
|
-
// NOTE: Node.js resolves relative specifier with standard relative URL resolution semantics. So we will follow that here as well.
|
|
33
|
-
// ref: https://nodejs.org/docs/latest-v23.x/api/esm.html#terminology
|
|
34
|
-
return (0, path_js_1.resolve)((0, node_url_1.fileURLToPath)(new URL(specifier, (0, node_url_1.pathToFileURL)(options.request)).href));
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
// Do not support URL or bare specifiers
|
|
38
|
-
// TODO: Logging that the specifier could not resolve.
|
|
39
|
-
return undefined;
|
|
19
|
+
return resolvedModule.resolvedFileName.replace(/\.module\.d\.css\.ts$/u, '.module.css');
|
|
40
20
|
}
|
|
21
|
+
return undefined;
|
|
41
22
|
};
|
|
42
23
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Check if the specifier is a relative specifier.
|
|
45
|
-
* @see https://nodejs.org/docs/latest-v23.x/api/esm.html#terminology
|
|
46
|
-
*/
|
|
47
|
-
function isRelativeSpecifier(specifier) {
|
|
48
|
-
return specifier.startsWith('./') || specifier.startsWith('../');
|
|
49
|
-
}
|
|
50
24
|
//# sourceMappingURL=resolver.js.map
|
package/dist/resolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,UAAU,cAAc,CAC5B,eAAgC,EAChC,qBAA2D;IAE3D,OAAO,CAAC,SAAiB,EAAE,OAAwB,EAAE,EAAE;QACrD,IAAI,cAAc,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAChD,MAAM,IAAI,GAA4B;YACpC,GAAG,EAAE,CAAC,GAAG;YACT,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACvB,IAAI,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBAC1C,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC,CAAC;gBACtF,CAAC;gBACD,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC;SACF,CAAC;QACF,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAC7C,SAAS,EACT,OAAO,CAAC,OAAO,EACf,eAAe,EACf,IAAI,EACJ,qBAAqB,CACtB,CAAC;QACF,IAAI,cAAc,EAAE,CAAC;YACnB,wCAAwC;YACxC,OAAO,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/type.d.ts
CHANGED
|
@@ -109,6 +109,8 @@ export interface CSSModule {
|
|
|
109
109
|
* Token importer is a statement that imports tokens from another file.
|
|
110
110
|
*/
|
|
111
111
|
tokenImporters: TokenImporter[];
|
|
112
|
+
/** Diagnostics found during parsing. */
|
|
113
|
+
diagnostics: DiagnosticWithLocation[];
|
|
112
114
|
}
|
|
113
115
|
export interface ResolverOptions {
|
|
114
116
|
/** The file that imports the specifier. It is a absolute path. */
|
package/dist/type.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mDAAmD;AACnD,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,GAAG,EAAE,QAAQ,CAAC;CACf;AAED,qEAAqE;AACrE,MAAM,WAAW,KAAK;IACpB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,GAAG,EAAE,QAAQ,CAAC;IACd,uEAAuE;IACvE,cAAc,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,QAAQ,CAAC;IACf;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,sDAAsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,yCAAyC;IACzC,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,6EAA6E;AAC7E,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,GAAG,EAAE,QAAQ,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;OASG;IACH,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB;;;OAGG;IACH,cAAc,EAAE,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"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"}
|
package/dist/type.js
CHANGED
package/dist/util.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare function isPosixRelativePath(path: string): boolean;
|
|
2
2
|
export declare function isValidAsJSIdentifier(name: string): boolean;
|
|
3
3
|
export declare function findUsedTokenNames(componentText: string): Set<string>;
|
|
4
|
+
export declare function isURLSpecifier(specifier: string): boolean;
|
|
4
5
|
//# sourceMappingURL=util.d.ts.map
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAID,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAWD,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAOrE"}
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAID,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAWD,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAOrE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzD"}
|
package/dist/util.js
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isPosixRelativePath = isPosixRelativePath;
|
|
4
|
-
exports.isValidAsJSIdentifier = isValidAsJSIdentifier;
|
|
5
|
-
exports.findUsedTokenNames = findUsedTokenNames;
|
|
6
|
-
function isPosixRelativePath(path) {
|
|
1
|
+
export function isPosixRelativePath(path) {
|
|
7
2
|
return path.startsWith(`./`) || path.startsWith(`../`);
|
|
8
3
|
}
|
|
9
4
|
const JS_IDENTIFIER_PATTERN = /^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u;
|
|
10
|
-
function isValidAsJSIdentifier(name) {
|
|
5
|
+
export function isValidAsJSIdentifier(name) {
|
|
11
6
|
return JS_IDENTIFIER_PATTERN.test(name);
|
|
12
7
|
}
|
|
13
8
|
/**
|
|
@@ -18,7 +13,7 @@ function isValidAsJSIdentifier(name) {
|
|
|
18
13
|
// MEMO: The `xxxStyles.foo` format is not supported, because the css module file for current component file is usually imported with `styles`.
|
|
19
14
|
// It is sufficient to support only the `styles.foo` format.
|
|
20
15
|
const TOKEN_CONSUMER_PATTERN = /styles\.([$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*)/gu;
|
|
21
|
-
function findUsedTokenNames(componentText) {
|
|
16
|
+
export function findUsedTokenNames(componentText) {
|
|
22
17
|
const usedClassNames = new Set();
|
|
23
18
|
let match;
|
|
24
19
|
while ((match = TOKEN_CONSUMER_PATTERN.exec(componentText)) !== null) {
|
|
@@ -26,4 +21,7 @@ function findUsedTokenNames(componentText) {
|
|
|
26
21
|
}
|
|
27
22
|
return usedClassNames;
|
|
28
23
|
}
|
|
24
|
+
export function isURLSpecifier(specifier) {
|
|
25
|
+
return URL.canParse(specifier);
|
|
26
|
+
}
|
|
29
27
|
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,qBAAqB,GAAG,oDAAoD,CAAC;AAEnF,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,0DAA0D;AAC1D,+IAA+I;AAC/I,kEAAkE;AAClE,MAAM,sBAAsB,GAAG,6DAA6D,CAAC;AAE7F,MAAM,UAAU,kBAAkB,CAAC,aAAqB;IACtD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrE,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC"}
|
package/package.json
CHANGED
package/src/checker.ts
CHANGED
|
@@ -4,23 +4,25 @@ import type {
|
|
|
4
4
|
AtValueTokenImporterValue,
|
|
5
5
|
CSSModule,
|
|
6
6
|
Diagnostic,
|
|
7
|
-
|
|
7
|
+
ExportRecord,
|
|
8
8
|
Location,
|
|
9
9
|
MatchesPattern,
|
|
10
10
|
Resolver,
|
|
11
11
|
TokenImporter,
|
|
12
12
|
} from './type.js';
|
|
13
|
-
import { isValidAsJSIdentifier } from './util.js';
|
|
13
|
+
import { isURLSpecifier, isValidAsJSIdentifier } from './util.js';
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
cssModule: CSSModule
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
export interface CheckerArgs {
|
|
16
|
+
config: CMKConfig;
|
|
17
|
+
getExportRecord: (cssModule: CSSModule) => ExportRecord;
|
|
18
|
+
matchesPattern: MatchesPattern;
|
|
19
|
+
resolver: Resolver;
|
|
20
|
+
getCSSModule: (path: string) => CSSModule | undefined;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// eslint-disable-next-line complexity
|
|
24
|
+
export function checkCSSModule(cssModule: CSSModule, args: CheckerArgs): Diagnostic[] {
|
|
25
|
+
const { config } = args;
|
|
24
26
|
const diagnostics: Diagnostic[] = [];
|
|
25
27
|
|
|
26
28
|
for (const token of cssModule.localTokens) {
|
|
@@ -37,16 +39,18 @@ export function checkCSSModule(
|
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
for (const tokenImporter of cssModule.tokenImporters) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (!imported) {
|
|
42
|
+
if (isURLSpecifier(tokenImporter.from)) continue;
|
|
43
|
+
const from = args.resolver(tokenImporter.from, { request: cssModule.fileName });
|
|
44
|
+
if (!from) {
|
|
44
45
|
diagnostics.push(createCannotImportModuleDiagnostic(cssModule, tokenImporter));
|
|
45
46
|
continue;
|
|
46
47
|
}
|
|
48
|
+
if (!args.matchesPattern(from)) continue;
|
|
49
|
+
const imported = args.getCSSModule(from);
|
|
50
|
+
if (!imported) throw new Error('unreachable: `imported` is undefined');
|
|
47
51
|
|
|
48
52
|
if (tokenImporter.type === 'value') {
|
|
49
|
-
const exportRecord =
|
|
53
|
+
const exportRecord = args.getExportRecord(imported);
|
|
50
54
|
for (const value of tokenImporter.values) {
|
|
51
55
|
if (!exportRecord.allTokens.includes(value.name)) {
|
|
52
56
|
diagnostics.push(createModuleHasNoExportedTokenDiagnostic(cssModule, tokenImporter, value));
|