@css-modules-kit/core 0.0.5 → 0.2.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 +2 -6
- package/dist/checker.d.ts.map +1 -1
- package/dist/checker.js +4 -6
- package/dist/checker.js.map +1 -1
- package/dist/config.d.ts +5 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -8
- package/dist/config.js.map +1 -1
- package/dist/diagnostic.d.ts +6 -33
- package/dist/diagnostic.d.ts.map +1 -1
- package/dist/diagnostic.js +71 -0
- package/dist/diagnostic.js.map +1 -1
- package/dist/dts-creator.d.ts +1 -3
- package/dist/dts-creator.d.ts.map +1 -1
- package/dist/dts-creator.js.map +1 -1
- package/dist/export-builder.d.ts +1 -14
- package/dist/export-builder.d.ts.map +1 -1
- package/dist/export-builder.js.map +1 -1
- package/dist/file.d.ts +5 -1
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +15 -0
- package/dist/file.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/parser/at-import-parser.d.ts +1 -1
- package/dist/parser/at-import-parser.d.ts.map +1 -1
- package/dist/parser/at-value-parser.d.ts +2 -3
- package/dist/parser/at-value-parser.d.ts.map +1 -1
- package/dist/parser/at-value-parser.js +2 -13
- package/dist/parser/at-value-parser.js.map +1 -1
- package/dist/parser/css-module-parser.d.ts +2 -83
- package/dist/parser/css-module-parser.d.ts.map +1 -1
- package/dist/parser/css-module-parser.js +7 -8
- package/dist/parser/css-module-parser.js.map +1 -1
- package/dist/parser/rule-parser.d.ts +8 -4
- package/dist/parser/rule-parser.d.ts.map +1 -1
- package/dist/parser/rule-parser.js +9 -10
- package/dist/parser/rule-parser.js.map +1 -1
- package/dist/resolver.d.ts +3 -12
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +2 -2
- package/dist/resolver.js.map +1 -1
- package/dist/type.d.ts +174 -0
- package/dist/type.d.ts.map +1 -0
- package/dist/type.js +3 -0
- package/dist/type.js.map +1 -0
- package/dist/util.d.ts +1 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +17 -0
- package/dist/util.js.map +1 -1
- package/package.json +1 -1
- package/src/checker.ts +13 -15
- package/src/config.ts +10 -12
- package/src/diagnostic.ts +69 -29
- package/src/dts-creator.ts +1 -3
- package/src/export-builder.ts +1 -16
- package/src/file.ts +17 -1
- package/src/index.ts +15 -13
- package/src/parser/at-import-parser.ts +1 -1
- package/src/parser/at-value-parser.ts +5 -17
- package/src/parser/css-module-parser.ts +16 -98
- package/src/parser/rule-parser.ts +17 -14
- package/src/resolver.ts +12 -15
- package/src/type.ts +191 -0
- package/src/util.ts +18 -0
- package/dist/parser/location.d.ts +0 -34
- package/dist/parser/location.d.ts.map +0 -1
- package/dist/parser/location.js +0 -9
- package/dist/parser/location.js.map +0 -1
- package/src/parser/location.ts +0 -40
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"at-value-parser.js","sourceRoot":"","sources":["../../src/parser/at-value-parser.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"at-value-parser.js","sourceRoot":"","sources":["../../src/parser/at-value-parser.ts"],"names":[],"mappings":";;AAoDA,oCAgHC;AAvID,MAAM,oBAAoB,GAAG,sCAAsC,CAAC;AACpE,MAAM,wBAAwB,GAAG,6BAA6B,CAAC;AAC/D,MAAM,qBAAqB,GAAG,kCAAkC,CAAC;AAEjE;;;;;;;;;;;;;;;;GAgBG;AACH,uIAAuI;AACvI,gJAAgJ;AAChJ,SAAgB,YAAY,CAAC,OAAe;IAC1C,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACzE,MAAM,WAAW,GAAqC,EAAE,CAAC;IACzD,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,qBAAiD,CAAC;QAClF,oEAAoE;QACpE,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;QAE7D,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,MAAM,MAAM,GAAqC,EAAE,CAAC;QACpD,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,MAAM,gBAAgB,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YACrE,aAAa,GAAG,gBAAgB,CAAC;YACjC,MAAM,sBAAsB,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAElE,IAAI,sBAAsB,EAAE,CAAC;gBAC3B,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,sBAA8D,CAAC;gBAC3F,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;gBACzD,MAAM,KAAK,GAAG;oBACZ,IAAI,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,IAAI;oBACjC,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,UAAU,GAAG,gBAAgB,GAAG,SAAS;oBACjF,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,UAAU,GAAG,gBAAgB,GAAG,SAAS;iBAClF,CAAC;gBACF,MAAM,GAAG,GAAG;oBACV,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;oBAClC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;iBACnC,CAAC;gBACF,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC7C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,MAAM,cAAc,GAAG,sBAAsB,CAAC,OAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;oBAC9D,MAAM,KAAK,GAAG;wBACZ,IAAI,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,IAAI;wBACjC,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,UAAU,GAAG,gBAAgB,GAAG,cAAc;wBACtF,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,UAAU,GAAG,gBAAgB,GAAG,cAAc;qBACvF,CAAC;oBACF,MAAM,GAAG,GAAG;wBACV,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;wBACvC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;qBACxC,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAuB;oBAChC,IAAI,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,IAAI;oBACjC,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,UAAU,GAAG,gBAAgB;iBACtE,CAAC;gBACF,WAAW,CAAC,IAAI,CAAC;oBACf,KAAK;oBACL,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,IAAI,EAAE,KAAK,KAAK,uBAAuB;oBACvC,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,uFAAuF;QACvF,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzC,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,IAAI;YACjC,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,UAAU,GAAG,SAAS;YAC9D,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,UAAU,GAAG,SAAS;SAC/D,CAAC;QACF,MAAM,GAAG,GAAG;YACV,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;YAC5C,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;SAC7C,CAAC;QAEF,MAAM,aAAa,GAA2B;YAC5C,IAAI,EAAE,wBAAwB;YAC9B,MAAM;YACN,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;SACxB,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,yBAAyB,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAQ,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9G,IAAI,yBAAyB,EAAE,CAAC;QAC9B,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,yBAAyB,CAAC;QACnD,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QACvD,8DAA8D;QAC9D,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,yBAAyB,CAAC,OAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;QACxG,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,IAAI;YACjC,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,SAAS;YACjD,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,SAAS;SAClD,CAAC;QACF,MAAM,GAAG,GAAG;YACV,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;YAClC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;SACnC,CAAC;QACF,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAW,CAAC;QACvF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;IACjD,CAAC;IACD,WAAW,CAAC,IAAI,CAAC;QACf,KAAK,EAAE;YACL,IAAI,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,IAAI;YACjC,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM;SACtC;QACD,MAAM,EAAE,OAAO,CAAC,MAAO,CAAC,GAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM;QACnE,IAAI,EAAE,KAAK,OAAO,CAAC,QAAQ,EAAE,yBAAyB;QACtD,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IACH,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -1,92 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import { type Location } from './location.js';
|
|
3
|
-
/** The item being exported from a CSS module file (a.k.a. token). */
|
|
4
|
-
export interface Token {
|
|
5
|
-
/** The token name. */
|
|
6
|
-
name: string;
|
|
7
|
-
/** The location of the token in the source file. */
|
|
8
|
-
loc: Location;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* A token importer using `@import '...'`.
|
|
12
|
-
* `@import` imports all tokens from the file. Therefore, it does not have
|
|
13
|
-
* the name of the imported token unlike {@link AtValueTokenImporter}.
|
|
14
|
-
*/
|
|
15
|
-
export interface AtImportTokenImporter {
|
|
16
|
-
type: 'import';
|
|
17
|
-
/**
|
|
18
|
-
* The specifier of the file from which the token is imported.
|
|
19
|
-
* This is a string before being resolved and unquoted.
|
|
20
|
-
* @example `@import './a.module.css'` would have `from` as `'./a.module.css'`.
|
|
21
|
-
*/
|
|
22
|
-
from: string;
|
|
23
|
-
/** The location of the `from` in *.module.css file. */
|
|
24
|
-
fromLoc: Location;
|
|
25
|
-
}
|
|
26
|
-
/** A token importer using `@value ... from '...'`. */
|
|
27
|
-
export interface AtValueTokenImporter {
|
|
28
|
-
type: 'value';
|
|
29
|
-
/** The values imported from the file. */
|
|
30
|
-
values: AtValueTokenImporterValue[];
|
|
31
|
-
/**
|
|
32
|
-
* The specifier of the file from which the token is imported.
|
|
33
|
-
* This is a string before being resolved and unquoted.
|
|
34
|
-
* @example `@value a from './a.module.css'` would have `from` as `'./a.module.css'`.
|
|
35
|
-
*/
|
|
36
|
-
from: string;
|
|
37
|
-
/** The location of the `from` in *.module.css file. */
|
|
38
|
-
fromLoc: Location;
|
|
39
|
-
}
|
|
40
|
-
/** A value imported from a CSS module file using `@value ... from '...'`. */
|
|
41
|
-
export interface AtValueTokenImporterValue {
|
|
42
|
-
/**
|
|
43
|
-
* The name of the token in the file from which it is imported.
|
|
44
|
-
* @example `@value a from './a.module.css'` would have `name` as `'a'`.
|
|
45
|
-
* @example `@value a as b from './a.module.css'` would have `name` as `'a'`.
|
|
46
|
-
*/
|
|
47
|
-
name: string;
|
|
48
|
-
/** The location of the `name` in *.module.css file. */
|
|
49
|
-
loc: Location;
|
|
50
|
-
/**
|
|
51
|
-
* The name of the token in the current file.
|
|
52
|
-
* @example `@value a from './a.module.css'` would not have `localName`.
|
|
53
|
-
* @example `@value a as b from './a.module.css'` would have `localName` as `'b'`.
|
|
54
|
-
*/
|
|
55
|
-
localName?: string;
|
|
56
|
-
/**
|
|
57
|
-
* The location of the `localName` in *.module.css file.
|
|
58
|
-
* This is `undefined` when `localName` is `undefined`.
|
|
59
|
-
*/
|
|
60
|
-
localLoc?: Location;
|
|
61
|
-
}
|
|
62
|
-
export type TokenImporter = AtImportTokenImporter | AtValueTokenImporter;
|
|
63
|
-
export interface CSSModule {
|
|
64
|
-
/** Absolute path of the file */
|
|
65
|
-
fileName: string;
|
|
66
|
-
/**
|
|
67
|
-
* List of token names defined in the file.
|
|
68
|
-
* @example
|
|
69
|
-
* Consider the following file:
|
|
70
|
-
* ```css
|
|
71
|
-
* .foo { color: red }
|
|
72
|
-
* .bar, .baz { color: red }
|
|
73
|
-
* ```
|
|
74
|
-
* The `localTokens` for this file would be `['foo', 'bar', 'baz']`.
|
|
75
|
-
*/
|
|
76
|
-
localTokens: Token[];
|
|
77
|
-
/**
|
|
78
|
-
* List of token importers in the file.
|
|
79
|
-
* Token importer is a statement that imports tokens from another file.
|
|
80
|
-
*/
|
|
81
|
-
tokenImporters: TokenImporter[];
|
|
82
|
-
}
|
|
1
|
+
import type { CSSModule, DiagnosticWithLocation } from '../type.js';
|
|
83
2
|
export interface ParseCSSModuleOptions {
|
|
84
3
|
fileName: string;
|
|
85
4
|
safe: boolean;
|
|
86
5
|
}
|
|
87
6
|
export interface ParseCSSModuleResult {
|
|
88
7
|
cssModule: CSSModule;
|
|
89
|
-
diagnostics:
|
|
8
|
+
diagnostics: DiagnosticWithLocation[];
|
|
90
9
|
}
|
|
91
10
|
export declare function parseCSSModule(text: string, { fileName, safe }: ParseCSSModuleOptions): ParseCSSModuleResult;
|
|
92
11
|
//# sourceMappingURL=css-module-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-module-parser.d.ts","sourceRoot":"","sources":["../../src/parser/css-module-parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"css-module-parser.d.ts","sourceRoot":"","sources":["../../src/parser/css-module-parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EAET,sBAAsB,EAGvB,MAAM,YAAY,CAAC;AAyDpB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,sBAAsB,EAAE,CAAC;CACvC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,qBAAqB,GAAG,oBAAoB,CAiC5G"}
|
|
@@ -59,6 +59,7 @@ function collectTokens(ast) {
|
|
|
59
59
|
}
|
|
60
60
|
function parseCSSModule(text, { fileName, safe }) {
|
|
61
61
|
let ast;
|
|
62
|
+
const diagnosticSourceFile = { fileName, text };
|
|
62
63
|
try {
|
|
63
64
|
const parser = safe ? postcss_safe_parser_1.default : postcss_1.parse;
|
|
64
65
|
ast = parser(text, { from: fileName });
|
|
@@ -67,16 +68,13 @@ function parseCSSModule(text, { fileName, safe }) {
|
|
|
67
68
|
if (e instanceof postcss_1.CssSyntaxError) {
|
|
68
69
|
const start = { line: e.line ?? 1, column: e.column ?? 1 };
|
|
69
70
|
return {
|
|
70
|
-
cssModule: { fileName, localTokens: [], tokenImporters: [] },
|
|
71
|
+
cssModule: { fileName, text, localTokens: [], tokenImporters: [] },
|
|
71
72
|
diagnostics: [
|
|
72
73
|
{
|
|
73
|
-
|
|
74
|
-
fileName,
|
|
74
|
+
file: diagnosticSourceFile,
|
|
75
75
|
start,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
end: { line: e.endLine, column: e.endColumn },
|
|
79
|
-
}),
|
|
76
|
+
// TODO: Assign correct length (e.g. `e.endOffset - e.offset`)
|
|
77
|
+
length: 1,
|
|
80
78
|
text: e.reason,
|
|
81
79
|
category: 'error',
|
|
82
80
|
},
|
|
@@ -88,9 +86,10 @@ function parseCSSModule(text, { fileName, safe }) {
|
|
|
88
86
|
const { localTokens, tokenImporters, diagnostics } = collectTokens(ast);
|
|
89
87
|
const cssModule = {
|
|
90
88
|
fileName,
|
|
89
|
+
text,
|
|
91
90
|
localTokens,
|
|
92
91
|
tokenImporters,
|
|
93
92
|
};
|
|
94
|
-
return { cssModule, diagnostics };
|
|
93
|
+
return { cssModule, diagnostics: diagnostics.map((diagnostic) => ({ ...diagnostic, file: diagnosticSourceFile })) };
|
|
95
94
|
}
|
|
96
95
|
//# 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,11 @@
|
|
|
1
1
|
import type { Rule } from 'postcss';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import selectorParser from 'postcss-selector-parser';
|
|
3
|
+
import type { DiagnosticPosition, DiagnosticWithDetachedLocation, Location } from '../type.js';
|
|
4
|
+
declare function calcDiagnosticsLocationForSelectorParserNode(rule: Rule, node: selectorParser.Node): {
|
|
5
|
+
start: DiagnosticPosition;
|
|
6
|
+
length: number;
|
|
7
|
+
};
|
|
8
|
+
export { calcDiagnosticsLocationForSelectorParserNode as calcDiagnosticsLocationForSelectorParserNodeForTest };
|
|
4
9
|
interface ClassSelector {
|
|
5
10
|
/** The class name. It does not include the leading dot. */
|
|
6
11
|
name: string;
|
|
@@ -9,11 +14,10 @@ interface ClassSelector {
|
|
|
9
14
|
}
|
|
10
15
|
interface ParseRuleResult {
|
|
11
16
|
classSelectors: ClassSelector[];
|
|
12
|
-
diagnostics:
|
|
17
|
+
diagnostics: DiagnosticWithDetachedLocation[];
|
|
13
18
|
}
|
|
14
19
|
/**
|
|
15
20
|
* Parse a rule and collect local class selectors.
|
|
16
21
|
*/
|
|
17
22
|
export declare function parseRule(rule: Rule): ParseRuleResult;
|
|
18
|
-
export {};
|
|
19
23
|
//# sourceMappingURL=rule-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-parser.d.ts","sourceRoot":"","sources":["../../src/parser/rule-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"rule-parser.d.ts","sourceRoot":"","sources":["../../src/parser/rule-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,cAAc,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE/F,iBAAS,4CAA4C,CACnD,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,cAAc,CAAC,IAAI,GACxB;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAI/C;AACD,OAAO,EAAE,4CAA4C,IAAI,mDAAmD,EAAE,CAAC;AA2F/G,UAAU,aAAa;IACrB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,GAAG,EAAE,QAAQ,CAAC;CACf;AAED,UAAU,eAAe;IACvB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,EAAE,8BAA8B,EAAE,CAAC;CAC/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,CAwBrD"}
|
|
@@ -3,9 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.calcDiagnosticsLocationForSelectorParserNodeForTest = calcDiagnosticsLocationForSelectorParserNode;
|
|
6
7
|
exports.parseRule = parseRule;
|
|
7
8
|
const postcss_selector_parser_1 = __importDefault(require("postcss-selector-parser"));
|
|
8
|
-
|
|
9
|
+
function calcDiagnosticsLocationForSelectorParserNode(rule, node) {
|
|
10
|
+
const start = rule.positionBy({ index: node.sourceIndex });
|
|
11
|
+
const length = node.toString().length;
|
|
12
|
+
return { start, length };
|
|
13
|
+
}
|
|
9
14
|
function flatCollectResults(results) {
|
|
10
15
|
const classNames = [];
|
|
11
16
|
const diagnostics = [];
|
|
@@ -21,9 +26,7 @@ function convertClassNameToCollectResult(rule, node) {
|
|
|
21
26
|
const name = node.raws?.value ?? node.value;
|
|
22
27
|
if (!JS_IDENTIFIER_PATTERN.test(name)) {
|
|
23
28
|
const diagnostic = {
|
|
24
|
-
|
|
25
|
-
fileName: rule.source.input.file,
|
|
26
|
-
...(0, location_js_1.calcDiagnosticsLocationForSelectorParserNode)(rule, node),
|
|
29
|
+
...calcDiagnosticsLocationForSelectorParserNode(rule, node),
|
|
27
30
|
text: `\`${name}\` is not allowed because it is not a valid JavaScript identifier.`,
|
|
28
31
|
category: 'error',
|
|
29
32
|
};
|
|
@@ -62,9 +65,7 @@ function collectLocalClassNames(rule, root) {
|
|
|
62
65
|
// `node` is `:local` or `:global` (without any arguments)
|
|
63
66
|
// We don't support `:local` and `:global` (without any arguments) because they are complex.
|
|
64
67
|
const diagnostic = {
|
|
65
|
-
|
|
66
|
-
fileName: rule.source.input.file,
|
|
67
|
-
...(0, location_js_1.calcDiagnosticsLocationForSelectorParserNode)(rule, node),
|
|
68
|
+
...calcDiagnosticsLocationForSelectorParserNode(rule, node),
|
|
68
69
|
text: `\`${node.value}\` is not supported. Use \`${node.value}(...)\` instead.`,
|
|
69
70
|
category: 'error',
|
|
70
71
|
};
|
|
@@ -74,9 +75,7 @@ function collectLocalClassNames(rule, root) {
|
|
|
74
75
|
// `node` is `:local(...)` or `:global(...)` (with arguments)
|
|
75
76
|
if (wrappedBy !== undefined) {
|
|
76
77
|
const diagnostic = {
|
|
77
|
-
|
|
78
|
-
fileName: rule.source.input.file,
|
|
79
|
-
...(0, location_js_1.calcDiagnosticsLocationForSelectorParserNode)(rule, node),
|
|
78
|
+
...calcDiagnosticsLocationForSelectorParserNode(rule, node),
|
|
80
79
|
text: `A \`${node.value}(...)\` is not allowed inside of \`${wrappedBy}\`.`,
|
|
81
80
|
category: 'error',
|
|
82
81
|
};
|
|
@@ -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/resolver.d.ts
CHANGED
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import type { CompilerOptions } from 'typescript';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* A resolver function that resolves import specifiers.
|
|
8
|
-
* @param specifier The import specifier.
|
|
9
|
-
* @param options The options.
|
|
10
|
-
* @returns The resolved import specifier. It is a absolute path. If the import specifier cannot be resolved, return `undefined`.
|
|
11
|
-
*/
|
|
12
|
-
export type Resolver = (specifier: string, options: ResolverOptions) => string | undefined;
|
|
13
|
-
export declare function createResolver(compilerOptions: CompilerOptions): Resolver;
|
|
2
|
+
import ts from 'typescript';
|
|
3
|
+
import type { Resolver } from './type.js';
|
|
4
|
+
export declare function createResolver(compilerOptions: CompilerOptions, moduleResolutionCache: ts.ModuleResolutionCache | undefined): Resolver;
|
|
14
5
|
//# sourceMappingURL=resolver.d.ts.map
|
package/dist/resolver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,WAAW,CAAC;AAE3D,wBAAgB,cAAc,CAC5B,eAAe,EAAE,eAAe,EAChC,qBAAqB,EAAE,EAAE,CAAC,qBAAqB,GAAG,SAAS,GAC1D,QAAQ,CAqCV"}
|
package/dist/resolver.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.createResolver = createResolver;
|
|
|
7
7
|
const node_url_1 = require("node:url");
|
|
8
8
|
const typescript_1 = __importDefault(require("typescript"));
|
|
9
9
|
const path_js_1 = require("./path.js");
|
|
10
|
-
function createResolver(compilerOptions) {
|
|
10
|
+
function createResolver(compilerOptions, moduleResolutionCache) {
|
|
11
11
|
return (_specifier, options) => {
|
|
12
12
|
let specifier = _specifier;
|
|
13
13
|
const host = {
|
|
@@ -19,7 +19,7 @@ function createResolver(compilerOptions) {
|
|
|
19
19
|
return typescript_1.default.sys.fileExists(fileName);
|
|
20
20
|
},
|
|
21
21
|
};
|
|
22
|
-
const { resolvedModule } = typescript_1.default.resolveModuleName(specifier, options.request, compilerOptions, host);
|
|
22
|
+
const { resolvedModule } = typescript_1.default.resolveModuleName(specifier, options.request, compilerOptions, host, moduleResolutionCache);
|
|
23
23
|
if (resolvedModule) {
|
|
24
24
|
// TODO: Logging that the paths is used.
|
|
25
25
|
specifier = resolvedModule.resolvedFileName.replace(/\.module\.d\.css\.ts$/u, '.module.css');
|
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":";;;;;AAMA,wCAwCC;AA9CD,uCAAwD;AAExD,4DAA4B;AAC5B,uCAAgD;AAGhD,SAAgB,cAAc,CAC5B,eAAgC,EAChC,qBAA2D;IAE3D,OAAO,CAAC,UAAkB,EAAE,OAAwB,EAAE,EAAE;QACtD,IAAI,SAAS,GAAG,UAAU,CAAC;QAE3B,MAAM,IAAI,GAA4B;YACpC,GAAG,oBAAE,CAAC,GAAG;YACT,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;gBACvB,IAAI,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBAC1C,OAAO,oBAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC,CAAC;gBACtF,CAAC;gBACD,OAAO,oBAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC;SACF,CAAC;QACF,MAAM,EAAE,cAAc,EAAE,GAAG,oBAAE,CAAC,iBAAiB,CAC7C,SAAS,EACT,OAAO,CAAC,OAAO,EACf,eAAe,EACf,IAAI,EACJ,qBAAqB,CACtB,CAAC;QACF,IAAI,cAAc,EAAE,CAAC;YACnB,wCAAwC;YACxC,SAAS,GAAG,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,IAAA,oBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAA,iBAAO,EAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,4CAA4C;YAC5C,kIAAkI;YAClI,qEAAqE;YACrE,OAAO,IAAA,iBAAO,EAAC,IAAA,wBAAa,EAAC,IAAI,GAAG,CAAC,SAAS,EAAE,IAAA,wBAAa,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACzF,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,sDAAsD;YACtD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC"}
|
package/dist/type.d.ts
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/** The position of the node in the source file. */
|
|
2
|
+
export interface Position {
|
|
3
|
+
/**
|
|
4
|
+
* The line number in the source file. It is 1-based.
|
|
5
|
+
* This is compatible with postcss and tsserver.
|
|
6
|
+
*/
|
|
7
|
+
line: number;
|
|
8
|
+
/**
|
|
9
|
+
* The column number in the source file. It is 1-based.
|
|
10
|
+
* This is compatible with postcss and tsserver.
|
|
11
|
+
*/
|
|
12
|
+
column: number;
|
|
13
|
+
/** The offset in the source file. It is 0-based. */
|
|
14
|
+
offset: number;
|
|
15
|
+
}
|
|
16
|
+
/** The location of the node in the source file. */
|
|
17
|
+
export interface Location {
|
|
18
|
+
/**
|
|
19
|
+
* The starting position of the node. It is inclusive.
|
|
20
|
+
* This is compatible with postcss and tsserver.
|
|
21
|
+
*/
|
|
22
|
+
start: Position;
|
|
23
|
+
/**
|
|
24
|
+
* The ending position of the node. It is exclusive.
|
|
25
|
+
* This is compatible with tsserver, but not postcss.
|
|
26
|
+
*/
|
|
27
|
+
end: Position;
|
|
28
|
+
}
|
|
29
|
+
/** The item being exported from a CSS module file (a.k.a. token). */
|
|
30
|
+
export interface Token {
|
|
31
|
+
/** The token name. */
|
|
32
|
+
name: string;
|
|
33
|
+
/** The location of the token in the source file. */
|
|
34
|
+
loc: Location;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A token importer using `@import '...'`.
|
|
38
|
+
* `@import` imports all tokens from the file. Therefore, it does not have
|
|
39
|
+
* the name of the imported token unlike {@link AtValueTokenImporter}.
|
|
40
|
+
*/
|
|
41
|
+
export interface AtImportTokenImporter {
|
|
42
|
+
type: 'import';
|
|
43
|
+
/**
|
|
44
|
+
* The specifier of the file from which the token is imported.
|
|
45
|
+
* This is a string before being resolved and unquoted.
|
|
46
|
+
* @example `@import './a.module.css'` would have `from` as `'./a.module.css'`.
|
|
47
|
+
*/
|
|
48
|
+
from: string;
|
|
49
|
+
/** The location of the `from` in *.module.css file. */
|
|
50
|
+
fromLoc: Location;
|
|
51
|
+
}
|
|
52
|
+
/** A token importer using `@value ... from '...'`. */
|
|
53
|
+
export interface AtValueTokenImporter {
|
|
54
|
+
type: 'value';
|
|
55
|
+
/** The values imported from the file. */
|
|
56
|
+
values: AtValueTokenImporterValue[];
|
|
57
|
+
/**
|
|
58
|
+
* The specifier of the file from which the token is imported.
|
|
59
|
+
* This is a string before being resolved and unquoted.
|
|
60
|
+
* @example `@value a from './a.module.css'` would have `from` as `'./a.module.css'`.
|
|
61
|
+
*/
|
|
62
|
+
from: string;
|
|
63
|
+
/** The location of the `from` in *.module.css file. */
|
|
64
|
+
fromLoc: Location;
|
|
65
|
+
}
|
|
66
|
+
/** A value imported from a CSS module file using `@value ... from '...'`. */
|
|
67
|
+
export interface AtValueTokenImporterValue {
|
|
68
|
+
/**
|
|
69
|
+
* The name of the token in the file from which it is imported.
|
|
70
|
+
* @example `@value a from './a.module.css'` would have `name` as `'a'`.
|
|
71
|
+
* @example `@value a as b from './a.module.css'` would have `name` as `'a'`.
|
|
72
|
+
*/
|
|
73
|
+
name: string;
|
|
74
|
+
/** The location of the `name` in *.module.css file. */
|
|
75
|
+
loc: Location;
|
|
76
|
+
/**
|
|
77
|
+
* The name of the token in the current file.
|
|
78
|
+
* @example `@value a from './a.module.css'` would not have `localName`.
|
|
79
|
+
* @example `@value a as b from './a.module.css'` would have `localName` as `'b'`.
|
|
80
|
+
*/
|
|
81
|
+
localName?: string;
|
|
82
|
+
/**
|
|
83
|
+
* The location of the `localName` in *.module.css file.
|
|
84
|
+
* This is `undefined` when `localName` is `undefined`.
|
|
85
|
+
*/
|
|
86
|
+
localLoc?: Location;
|
|
87
|
+
}
|
|
88
|
+
export type TokenImporter = AtImportTokenImporter | AtValueTokenImporter;
|
|
89
|
+
export interface CSSModule {
|
|
90
|
+
/** Absolute path of the file */
|
|
91
|
+
fileName: string;
|
|
92
|
+
/** The content of the file */
|
|
93
|
+
text: string;
|
|
94
|
+
/**
|
|
95
|
+
* List of token names defined in the file.
|
|
96
|
+
* @example
|
|
97
|
+
* Consider the following file:
|
|
98
|
+
* ```css
|
|
99
|
+
* .foo { color: red }
|
|
100
|
+
* .bar, .baz { color: red }
|
|
101
|
+
* ```
|
|
102
|
+
* The `localTokens` for this file would be `['foo', 'bar', 'baz']`.
|
|
103
|
+
*/
|
|
104
|
+
localTokens: Token[];
|
|
105
|
+
/**
|
|
106
|
+
* List of token importers in the file.
|
|
107
|
+
* Token importer is a statement that imports tokens from another file.
|
|
108
|
+
*/
|
|
109
|
+
tokenImporters: TokenImporter[];
|
|
110
|
+
}
|
|
111
|
+
export interface ResolverOptions {
|
|
112
|
+
/** The file that imports the specifier. It is a absolute path. */
|
|
113
|
+
request: string;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* A resolver function that resolves import specifiers.
|
|
117
|
+
* @param specifier The import specifier.
|
|
118
|
+
* @param options The options.
|
|
119
|
+
* @returns The resolved import specifier. It is a absolute path. If the import specifier cannot be resolved, return `undefined`.
|
|
120
|
+
*/
|
|
121
|
+
export type Resolver = (specifier: string, options: ResolverOptions) => string | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* A function that checks if a file name matches a pattern.
|
|
124
|
+
* @param fileName The file name. It is an absolute path.
|
|
125
|
+
* @returns `true` if the file name matches the pattern, otherwise `false`.
|
|
126
|
+
*/
|
|
127
|
+
export type MatchesPattern = (fileName: string) => boolean;
|
|
128
|
+
/** The export token record of a CSS module. */
|
|
129
|
+
export interface ExportRecord {
|
|
130
|
+
/** The all exported tokens of the CSS module. */
|
|
131
|
+
allTokens: string[];
|
|
132
|
+
}
|
|
133
|
+
export interface ExportBuilder {
|
|
134
|
+
build(cssModule: CSSModule): ExportRecord;
|
|
135
|
+
clearCache(): void;
|
|
136
|
+
}
|
|
137
|
+
export type DiagnosticCategory = 'error' | 'warning';
|
|
138
|
+
export interface DiagnosticSourceFile {
|
|
139
|
+
fileName: string;
|
|
140
|
+
text: string;
|
|
141
|
+
}
|
|
142
|
+
export interface DiagnosticPosition {
|
|
143
|
+
/** The line number in the source file. It is 1-based. */
|
|
144
|
+
line: number;
|
|
145
|
+
/** The column number in the source file. It is 1-based. */
|
|
146
|
+
column: number;
|
|
147
|
+
}
|
|
148
|
+
interface DiagnosticWithoutLocation {
|
|
149
|
+
/** Text of diagnostic message. */
|
|
150
|
+
text: string;
|
|
151
|
+
/** The category of the diagnostic message. */
|
|
152
|
+
category: DiagnosticCategory;
|
|
153
|
+
}
|
|
154
|
+
export interface DiagnosticWithLocation extends DiagnosticWithoutLocation {
|
|
155
|
+
/** The file in which the diagnostic occurred */
|
|
156
|
+
file: DiagnosticSourceFile;
|
|
157
|
+
/** Starting file position at which text applies. It is inclusive. */
|
|
158
|
+
start: DiagnosticPosition;
|
|
159
|
+
/** Length of the diagnostic. */
|
|
160
|
+
length: number;
|
|
161
|
+
}
|
|
162
|
+
export type Diagnostic = DiagnosticWithLocation | DiagnosticWithoutLocation;
|
|
163
|
+
/**
|
|
164
|
+
* A diagnostic with location information detached from the source file.
|
|
165
|
+
* It is an intermediate representation used inside the CSS Module parser.
|
|
166
|
+
*/
|
|
167
|
+
export interface DiagnosticWithDetachedLocation extends DiagnosticWithoutLocation {
|
|
168
|
+
/** Starting file position at which text applies. It is inclusive. */
|
|
169
|
+
start: DiagnosticPosition;
|
|
170
|
+
/** Length of the diagnostic. */
|
|
171
|
+
length: number;
|
|
172
|
+
}
|
|
173
|
+
export {};
|
|
174
|
+
//# sourceMappingURL=type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":"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"}
|
package/dist/type.js
ADDED
package/dist/type.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.js","sourceRoot":"","sources":["../src/type.ts"],"names":[],"mappings":""}
|
package/dist/util.d.ts
CHANGED
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"}
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAWD,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAOrE"}
|
package/dist/util.js
CHANGED
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isPosixRelativePath = isPosixRelativePath;
|
|
4
|
+
exports.findUsedTokenNames = findUsedTokenNames;
|
|
4
5
|
function isPosixRelativePath(path) {
|
|
5
6
|
return path.startsWith(`./`) || path.startsWith(`../`);
|
|
6
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* The syntax pattern for consuming tokens imported from CSS Module.
|
|
10
|
+
* @example `styles.foo`
|
|
11
|
+
*/
|
|
12
|
+
// TODO(#125): Support `styles['foo']` and `styles["foo"]`
|
|
13
|
+
// MEMO: The `xxxStyles.foo` format is not supported, because the css module file for current component file is usually imported with `styles`.
|
|
14
|
+
// It is sufficient to support only the `styles.foo` format.
|
|
15
|
+
const TOKEN_CONSUMER_PATTERN = /styles\.([$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*)/gu;
|
|
16
|
+
function findUsedTokenNames(componentText) {
|
|
17
|
+
const usedClassNames = new Set();
|
|
18
|
+
let match;
|
|
19
|
+
while ((match = TOKEN_CONSUMER_PATTERN.exec(componentText)) !== null) {
|
|
20
|
+
usedClassNames.add(match[1]);
|
|
21
|
+
}
|
|
22
|
+
return usedClassNames;
|
|
23
|
+
}
|
|
7
24
|
//# 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":";;AAAA,kDAEC;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;AAAA,kDAEC;AAWD,gDAOC;AApBD,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,0DAA0D;AAC1D,+IAA+I;AAC/I,kEAAkE;AAClE,MAAM,sBAAsB,GAAG,6DAA6D,CAAC;AAE7F,SAAgB,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"}
|