@css-modules-kit/core 0.0.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.
Files changed (99) hide show
  1. package/LICENSE +21 -0
  2. package/dist/checker.d.ts +7 -0
  3. package/dist/checker.d.ts.map +1 -0
  4. package/dist/checker.js +46 -0
  5. package/dist/checker.js.map +1 -0
  6. package/dist/config.d.ts +101 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +200 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/diagnostic.d.ts +34 -0
  11. package/dist/diagnostic.d.ts.map +1 -0
  12. package/dist/diagnostic.js +3 -0
  13. package/dist/diagnostic.js.map +1 -0
  14. package/dist/dts-creator.d.ts +56 -0
  15. package/dist/dts-creator.d.ts.map +1 -0
  16. package/dist/dts-creator.js +95 -0
  17. package/dist/dts-creator.js.map +1 -0
  18. package/dist/error.d.ts +8 -0
  19. package/dist/error.d.ts.map +1 -0
  20. package/dist/error.js +18 -0
  21. package/dist/error.js.map +1 -0
  22. package/dist/export-builder.d.ts +23 -0
  23. package/dist/export-builder.d.ts.map +1 -0
  24. package/dist/export-builder.js +34 -0
  25. package/dist/export-builder.js.map +1 -0
  26. package/dist/external-file.d.ts +2 -0
  27. package/dist/external-file.d.ts.map +1 -0
  28. package/dist/external-file.js +3 -0
  29. package/dist/external-file.js.map +1 -0
  30. package/dist/file.d.ts +28 -0
  31. package/dist/file.d.ts.map +1 -0
  32. package/dist/file.js +73 -0
  33. package/dist/file.js.map +1 -0
  34. package/dist/index.d.ts +14 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +39 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/language-plugin.d.ts +23 -0
  39. package/dist/language-plugin.d.ts.map +1 -0
  40. package/dist/language-plugin.js +73 -0
  41. package/dist/language-plugin.js.map +1 -0
  42. package/dist/parser/at-import-parser.d.ts +14 -0
  43. package/dist/parser/at-import-parser.d.ts.map +1 -0
  44. package/dist/parser/at-import-parser.js +47 -0
  45. package/dist/parser/at-import-parser.js.map +1 -0
  46. package/dist/parser/at-value-parser.d.ts +44 -0
  47. package/dist/parser/at-value-parser.d.ts.map +1 -0
  48. package/dist/parser/at-value-parser.js +147 -0
  49. package/dist/parser/at-value-parser.js.map +1 -0
  50. package/dist/parser/css-module-parser.d.ts +93 -0
  51. package/dist/parser/css-module-parser.d.ts.map +1 -0
  52. package/dist/parser/css-module-parser.js +96 -0
  53. package/dist/parser/css-module-parser.js.map +1 -0
  54. package/dist/parser/diagnostic.d.ts +34 -0
  55. package/dist/parser/diagnostic.d.ts.map +1 -0
  56. package/dist/parser/diagnostic.js +3 -0
  57. package/dist/parser/diagnostic.js.map +1 -0
  58. package/dist/parser/location.d.ts +34 -0
  59. package/dist/parser/location.d.ts.map +1 -0
  60. package/dist/parser/location.js +9 -0
  61. package/dist/parser/location.js.map +1 -0
  62. package/dist/parser/rule-parser.d.ts +19 -0
  63. package/dist/parser/rule-parser.d.ts.map +1 -0
  64. package/dist/parser/rule-parser.js +122 -0
  65. package/dist/parser/rule-parser.js.map +1 -0
  66. package/dist/path.d.ts +11 -0
  67. package/dist/path.d.ts.map +1 -0
  68. package/dist/path.js +43 -0
  69. package/dist/path.js.map +1 -0
  70. package/dist/resolver.d.ts +13 -0
  71. package/dist/resolver.d.ts.map +1 -0
  72. package/dist/resolver.js +50 -0
  73. package/dist/resolver.js.map +1 -0
  74. package/dist/semantic-builder.d.ts +23 -0
  75. package/dist/semantic-builder.d.ts.map +1 -0
  76. package/dist/semantic-builder.js +33 -0
  77. package/dist/semantic-builder.js.map +1 -0
  78. package/dist/util.d.ts +2 -0
  79. package/dist/util.d.ts.map +1 -0
  80. package/dist/util.js +7 -0
  81. package/dist/util.js.map +1 -0
  82. package/package.json +54 -0
  83. package/src/checker.ts +66 -0
  84. package/src/config.ts +285 -0
  85. package/src/diagnostic.ts +37 -0
  86. package/src/dts-creator.ts +128 -0
  87. package/src/error.ts +13 -0
  88. package/src/export-builder.ts +51 -0
  89. package/src/file.ts +83 -0
  90. package/src/index.ts +38 -0
  91. package/src/parser/at-import-parser.ts +47 -0
  92. package/src/parser/at-value-parser.ts +177 -0
  93. package/src/parser/css-module-parser.ts +193 -0
  94. package/src/parser/location.ts +43 -0
  95. package/src/parser/rule-parser.ts +140 -0
  96. package/src/path.ts +40 -0
  97. package/src/resolver.ts +57 -0
  98. package/src/typing/typescript.d.ts +19 -0
  99. package/src/util.ts +3 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,CAAS;IACb,YAAY,IAAY,EAAE,OAAe,EAAE,KAAe;QACxD,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAND,kCAMC;AAED,MAAa,yBAA0B,SAAQ,WAAW;IACxD;QACE,KAAK,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;IAC1D,CAAC;CACF;AAJD,8DAIC"}
@@ -0,0 +1,23 @@
1
+ import type { MatchesPattern } from './file.js';
2
+ import type { CSSModule } from './parser/css-module-parser.js';
3
+ import type { Resolver } from './resolver.js';
4
+ export interface ExportBuilderHost {
5
+ matchesPattern: MatchesPattern;
6
+ getCSSModule: (path: string) => CSSModule | undefined;
7
+ resolver: Resolver;
8
+ }
9
+ /**
10
+ * The export token record of a CSS module.
11
+ */
12
+ export interface ExportRecord {
13
+ /** The all exported tokens of the CSS module. */
14
+ allTokens: string[];
15
+ }
16
+ export interface ExportBuilder {
17
+ build(cssModule: CSSModule): ExportRecord;
18
+ }
19
+ /**
20
+ * A builder for exported token records of CSS modules.
21
+ */
22
+ export declare function createExportBuilder(host: ExportBuilderHost): ExportBuilder;
23
+ //# sourceMappingURL=export-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-builder.d.ts","sourceRoot":"","sources":["../src/export-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;IACtD,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAAC;CAC3C;AAED;;GAEG;AAIH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,aAAa,CAsB1E"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createExportBuilder = createExportBuilder;
4
+ /**
5
+ * A builder for exported token records of CSS modules.
6
+ */
7
+ // TODO: Add cache
8
+ // TODO: Add support for circular dependencies
9
+ // TODO: Handle same token name from different modules
10
+ function createExportBuilder(host) {
11
+ function build(cssModule) {
12
+ const result = { allTokens: [...cssModule.localTokens.map((t) => t.name)] };
13
+ for (const tokenImporter of cssModule.tokenImporters) {
14
+ const from = host.resolver(tokenImporter.from, { request: cssModule.fileName });
15
+ if (!from || !host.matchesPattern(from))
16
+ continue;
17
+ const imported = host.getCSSModule(from);
18
+ if (!imported)
19
+ continue;
20
+ const importedResult = build(imported);
21
+ if (tokenImporter.type === 'import') {
22
+ result.allTokens.push(...importedResult.allTokens);
23
+ }
24
+ else {
25
+ for (const value of tokenImporter.values) {
26
+ result.allTokens.push(value.name);
27
+ }
28
+ }
29
+ }
30
+ return result;
31
+ }
32
+ return { build };
33
+ }
34
+ //# sourceMappingURL=export-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-builder.js","sourceRoot":"","sources":["../src/export-builder.ts"],"names":[],"mappings":";;AA4BA,kDAsBC;AA5BD;;GAEG;AACH,kBAAkB;AAClB,8CAA8C;AAC9C,sDAAsD;AACtD,SAAgB,mBAAmB,CAAC,IAAuB;IACzD,SAAS,KAAK,CAAC,SAAoB;QACjC,MAAM,MAAM,GAAiB,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE1F,KAAK,MAAM,aAAa,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBAAE,SAAS;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;oBACzC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=external-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-file.d.ts","sourceRoot":"","sources":["../src/external-file.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=external-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-file.js","sourceRoot":"","sources":["../src/external-file.ts"],"names":[],"mappings":""}
package/dist/file.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ export declare const CSS_MODULE_EXTENSION = ".module.css";
2
+ export declare function isCSSModuleFile(fileName: string): boolean;
3
+ export declare function getCssModuleFileName(tsFileName: string): string;
4
+ export declare function isComponentFileName(fileName: string): boolean;
5
+ export declare function findComponentFile(cssModuleFileName: string, readFile: (path: string) => Promise<string>): Promise<{
6
+ fileName: string;
7
+ text: string;
8
+ } | undefined>;
9
+ export type MatchesPattern = (fileName: string) => boolean;
10
+ /**
11
+ * Create a function that checks whether the given file name matches the pattern.
12
+ * This does not access the file system.
13
+ * @param options
14
+ * @returns
15
+ */
16
+ export declare function createMatchesPattern(options: {
17
+ includes: string[];
18
+ excludes: string[];
19
+ }): MatchesPattern;
20
+ /**
21
+ * Get files matched by the pattern.
22
+ */
23
+ export declare function getFileNamesByPattern(options: {
24
+ basePath: string;
25
+ includes: string[];
26
+ excludes: string[];
27
+ }): string[];
28
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAGlD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG7D;AAED,wBAAsB,iBAAiB,CACrC,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAC1C,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAazD;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,cAAc,CAwBxG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAOrH"}
package/dist/file.js ADDED
@@ -0,0 +1,73 @@
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.CSS_MODULE_EXTENSION = void 0;
7
+ exports.isCSSModuleFile = isCSSModuleFile;
8
+ exports.getCssModuleFileName = getCssModuleFileName;
9
+ exports.isComponentFileName = isComponentFileName;
10
+ exports.findComponentFile = findComponentFile;
11
+ exports.createMatchesPattern = createMatchesPattern;
12
+ exports.getFileNamesByPattern = getFileNamesByPattern;
13
+ const typescript_1 = __importDefault(require("typescript"));
14
+ const path_js_1 = require("./path.js");
15
+ exports.CSS_MODULE_EXTENSION = '.module.css';
16
+ const COMPONENT_EXTENSIONS = ['.tsx', '.jsx'];
17
+ function isCSSModuleFile(fileName) {
18
+ return fileName.endsWith(exports.CSS_MODULE_EXTENSION);
19
+ }
20
+ function getCssModuleFileName(tsFileName) {
21
+ const { dir, name } = (0, path_js_1.parse)(tsFileName);
22
+ return (0, path_js_1.join)(dir, `${name}${exports.CSS_MODULE_EXTENSION}`);
23
+ }
24
+ function isComponentFileName(fileName) {
25
+ // NOTE: Do not check whether it is an upper camel case or not, since lower camel case (e.g. `page.tsx`) is used in Next.js.
26
+ return COMPONENT_EXTENSIONS.some((ext) => fileName.endsWith(ext));
27
+ }
28
+ async function findComponentFile(cssModuleFileName, readFile) {
29
+ const pathWithoutExtension = cssModuleFileName.slice(0, -exports.CSS_MODULE_EXTENSION.length);
30
+ for (const path of COMPONENT_EXTENSIONS.map((ext) => pathWithoutExtension + ext)) {
31
+ try {
32
+ // TODO: Cache the result of readFile
33
+ // eslint-disable-next-line no-await-in-loop
34
+ const text = await readFile(path);
35
+ return { fileName: path, text };
36
+ }
37
+ catch {
38
+ continue;
39
+ }
40
+ }
41
+ return undefined;
42
+ }
43
+ /**
44
+ * Create a function that checks whether the given file name matches the pattern.
45
+ * This does not access the file system.
46
+ * @param options
47
+ * @returns
48
+ */
49
+ function createMatchesPattern(options) {
50
+ // Setup utilities to check for pattern matches without accessing the file system
51
+ const realpath = (path) => path;
52
+ const getFileSystemEntries = (path) => {
53
+ return {
54
+ files: [path],
55
+ directories: [],
56
+ };
57
+ };
58
+ return (fileName) => {
59
+ const matchedFileNames = typescript_1.default.matchFiles(fileName, [exports.CSS_MODULE_EXTENSION], options.excludes, options.includes, typescript_1.default.sys.useCaseSensitiveFileNames, '', // `fileName`, `includes`, and `excludes` are absolute paths, so `currentDirectory` is not needed.
60
+ undefined, getFileSystemEntries, realpath);
61
+ return matchedFileNames.length > 0;
62
+ };
63
+ }
64
+ /**
65
+ * Get files matched by the pattern.
66
+ */
67
+ function getFileNamesByPattern(options) {
68
+ // ref: https://github.com/microsoft/TypeScript/blob/caf1aee269d1660b4d2a8b555c2d602c97cb28d7/src/compiler/commandLineParser.ts#L3929
69
+ // MEMO: `ts.sys.readDirectory` catch errors internally. So we don't need to wrap with try-catch.
70
+ // https://github.com/microsoft/TypeScript/blob/caf1aee269d1660b4d2a8b555c2d602c97cb28d7/src/compiler/sys.ts#L1877-L1879
71
+ return typescript_1.default.sys.readDirectory(options.basePath, [exports.CSS_MODULE_EXTENSION], options.excludes, options.includes);
72
+ }
73
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":";;;;;;AAMA,0CAEC;AAED,oDAGC;AAED,kDAGC;AAED,8CAgBC;AAUD,oDAwBC;AAKD,sDAOC;AAlFD,4DAA4B;AAC5B,uCAAwC;AAE3B,QAAA,oBAAoB,GAAG,aAAa,CAAC;AAClD,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,SAAgB,eAAe,CAAC,QAAgB;IAC9C,OAAO,QAAQ,CAAC,QAAQ,CAAC,4BAAoB,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,oBAAoB,CAAC,UAAkB;IACrD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAA,eAAK,EAAC,UAAU,CAAC,CAAC;IACxC,OAAO,IAAA,cAAI,EAAC,GAAG,EAAE,GAAG,IAAI,GAAG,4BAAoB,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,4HAA4H;IAC5H,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,iBAAyB,EACzB,QAA2C;IAE3C,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,4BAAoB,CAAC,MAAM,CAAC,CAAC;IACtF,KAAK,MAAM,IAAI,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,GAAG,GAAG,CAAC,EAAE,CAAC;QACjF,IAAI,CAAC;YACH,qCAAqC;YACrC,4CAA4C;YAC5C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAID;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,OAAmD;IACtF,iFAAiF;IACjF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC;IACxC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAwB,EAAE;QAClE,OAAO;YACL,KAAK,EAAE,CAAC,IAAI,CAAC;YACb,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CAAC,QAAgB,EAAE,EAAE;QAC1B,MAAM,gBAAgB,GAAG,oBAAE,CAAC,UAAU,CACpC,QAAQ,EACR,CAAC,4BAAoB,CAAC,EACtB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,QAAQ,EAChB,oBAAE,CAAC,GAAG,CAAC,yBAAyB,EAChC,EAAE,EAAE,kGAAkG;QACtG,SAAS,EACT,oBAAoB,EACpB,QAAQ,CACT,CAAC;QACF,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAqE;IACzG,qIAAqI;IAErI,iGAAiG;IACjG,wHAAwH;IAExH,OAAO,oBAAE,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,4BAAoB,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5G,CAAC"}
@@ -0,0 +1,14 @@
1
+ export type { CMKConfig } from './config.js';
2
+ export { readConfigFile } from './config.js';
3
+ export { TsConfigFileNotFoundError, SystemError } from './error.js';
4
+ export { parseCSSModule, type ParseCSSModuleOptions, type CSSModule, type Token, type AtImportTokenImporter, type TokenImporter, type AtValueTokenImporter, type AtValueTokenImporterValue, type ParseCSSModuleResult, } from './parser/css-module-parser.js';
5
+ export { type Location, type Position } from './parser/location.js';
6
+ export { parseRule } from './parser/rule-parser.js';
7
+ export { type Diagnostic, type SemanticDiagnostic, type SyntacticDiagnostic, type DiagnosticCategory, type DiagnosticPosition, } from './diagnostic.js';
8
+ export { type CreateDtsOptions, createDts, STYLES_EXPORT_NAME } from './dts-creator.js';
9
+ export { createResolver, type Resolver } from './resolver.js';
10
+ export { CSS_MODULE_EXTENSION, getCssModuleFileName, isComponentFileName, isCSSModuleFile, findComponentFile, type MatchesPattern, createMatchesPattern, getFileNamesByPattern, } from './file.js';
11
+ export { checkCSSModule } from './checker.js';
12
+ export { type ExportBuilder, createExportBuilder } from './export-builder.js';
13
+ export { join, resolve, relative, dirname, basename, parse, matchesGlob, isAbsolute } from './path.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,GAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,gBAAgB,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,KAAK,cAAc,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAbsolute = exports.matchesGlob = exports.parse = exports.basename = exports.dirname = exports.relative = exports.resolve = exports.join = exports.createExportBuilder = exports.checkCSSModule = exports.getFileNamesByPattern = exports.createMatchesPattern = exports.findComponentFile = exports.isCSSModuleFile = exports.isComponentFileName = exports.getCssModuleFileName = exports.CSS_MODULE_EXTENSION = exports.createResolver = exports.STYLES_EXPORT_NAME = exports.createDts = exports.parseRule = exports.parseCSSModule = exports.SystemError = exports.TsConfigFileNotFoundError = exports.readConfigFile = void 0;
4
+ var config_js_1 = require("./config.js");
5
+ Object.defineProperty(exports, "readConfigFile", { enumerable: true, get: function () { return config_js_1.readConfigFile; } });
6
+ var error_js_1 = require("./error.js");
7
+ Object.defineProperty(exports, "TsConfigFileNotFoundError", { enumerable: true, get: function () { return error_js_1.TsConfigFileNotFoundError; } });
8
+ Object.defineProperty(exports, "SystemError", { enumerable: true, get: function () { return error_js_1.SystemError; } });
9
+ var css_module_parser_js_1 = require("./parser/css-module-parser.js");
10
+ Object.defineProperty(exports, "parseCSSModule", { enumerable: true, get: function () { return css_module_parser_js_1.parseCSSModule; } });
11
+ var rule_parser_js_1 = require("./parser/rule-parser.js");
12
+ Object.defineProperty(exports, "parseRule", { enumerable: true, get: function () { return rule_parser_js_1.parseRule; } });
13
+ var dts_creator_js_1 = require("./dts-creator.js");
14
+ Object.defineProperty(exports, "createDts", { enumerable: true, get: function () { return dts_creator_js_1.createDts; } });
15
+ Object.defineProperty(exports, "STYLES_EXPORT_NAME", { enumerable: true, get: function () { return dts_creator_js_1.STYLES_EXPORT_NAME; } });
16
+ var resolver_js_1 = require("./resolver.js");
17
+ Object.defineProperty(exports, "createResolver", { enumerable: true, get: function () { return resolver_js_1.createResolver; } });
18
+ var file_js_1 = require("./file.js");
19
+ Object.defineProperty(exports, "CSS_MODULE_EXTENSION", { enumerable: true, get: function () { return file_js_1.CSS_MODULE_EXTENSION; } });
20
+ Object.defineProperty(exports, "getCssModuleFileName", { enumerable: true, get: function () { return file_js_1.getCssModuleFileName; } });
21
+ Object.defineProperty(exports, "isComponentFileName", { enumerable: true, get: function () { return file_js_1.isComponentFileName; } });
22
+ Object.defineProperty(exports, "isCSSModuleFile", { enumerable: true, get: function () { return file_js_1.isCSSModuleFile; } });
23
+ Object.defineProperty(exports, "findComponentFile", { enumerable: true, get: function () { return file_js_1.findComponentFile; } });
24
+ Object.defineProperty(exports, "createMatchesPattern", { enumerable: true, get: function () { return file_js_1.createMatchesPattern; } });
25
+ Object.defineProperty(exports, "getFileNamesByPattern", { enumerable: true, get: function () { return file_js_1.getFileNamesByPattern; } });
26
+ var checker_js_1 = require("./checker.js");
27
+ Object.defineProperty(exports, "checkCSSModule", { enumerable: true, get: function () { return checker_js_1.checkCSSModule; } });
28
+ var export_builder_js_1 = require("./export-builder.js");
29
+ Object.defineProperty(exports, "createExportBuilder", { enumerable: true, get: function () { return export_builder_js_1.createExportBuilder; } });
30
+ var path_js_1 = require("./path.js");
31
+ Object.defineProperty(exports, "join", { enumerable: true, get: function () { return path_js_1.join; } });
32
+ Object.defineProperty(exports, "resolve", { enumerable: true, get: function () { return path_js_1.resolve; } });
33
+ Object.defineProperty(exports, "relative", { enumerable: true, get: function () { return path_js_1.relative; } });
34
+ Object.defineProperty(exports, "dirname", { enumerable: true, get: function () { return path_js_1.dirname; } });
35
+ Object.defineProperty(exports, "basename", { enumerable: true, get: function () { return path_js_1.basename; } });
36
+ Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return path_js_1.parse; } });
37
+ Object.defineProperty(exports, "matchesGlob", { enumerable: true, get: function () { return path_js_1.matchesGlob; } });
38
+ Object.defineProperty(exports, "isAbsolute", { enumerable: true, get: function () { return path_js_1.isAbsolute; } });
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,yCAA6C;AAApC,2GAAA,cAAc,OAAA;AACvB,uCAAoE;AAA3D,qHAAA,yBAAyB,OAAA;AAAE,uGAAA,WAAW,OAAA;AAC/C,sEAUuC;AATrC,sHAAA,cAAc,OAAA;AAWhB,0DAAoD;AAA3C,2GAAA,SAAS,OAAA;AAQlB,mDAAwF;AAAxD,2GAAA,SAAS,OAAA;AAAE,oHAAA,kBAAkB,OAAA;AAC7D,6CAA8D;AAArD,6GAAA,cAAc,OAAA;AACvB,qCASmB;AARjB,+GAAA,oBAAoB,OAAA;AACpB,+GAAA,oBAAoB,OAAA;AACpB,8GAAA,mBAAmB,OAAA;AACnB,0GAAA,eAAe,OAAA;AACf,4GAAA,iBAAiB,OAAA;AAEjB,+GAAA,oBAAoB,OAAA;AACpB,gHAAA,qBAAqB,OAAA;AAEvB,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AACvB,yDAA8E;AAAjD,wHAAA,mBAAmB,OAAA;AAChD,qCAAuG;AAA9F,+FAAA,IAAI,OAAA;AAAE,kGAAA,OAAO,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAE,kGAAA,OAAO,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAE,gGAAA,KAAK,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,qGAAA,UAAU,OAAA"}
@@ -0,0 +1,23 @@
1
+ import type { LanguagePlugin, SourceScript, VirtualCode } from '@volar/language-core';
2
+ import type { HCMConfig } from './config.js';
3
+ import type { SyntacticDiagnostic } from './diagnostic.js';
4
+ import type { MatchesPattern } from './file.js';
5
+ import type { CSSModule } from './parser/css-module-parser.js';
6
+ import type { Resolver } from './resolver.js';
7
+ export declare const LANGUAGE_ID = "css-module";
8
+ export declare const HCM_DATA_KEY: unique symbol;
9
+ interface CSSModuleVirtualCode extends VirtualCode {
10
+ [HCM_DATA_KEY]: {
11
+ cssModule: CSSModule;
12
+ diagnostics: SyntacticDiagnostic[];
13
+ };
14
+ }
15
+ export interface CSSModuleScript<T> extends SourceScript<T> {
16
+ generated: SourceScript<T>['generated'] & {
17
+ root: CSSModuleVirtualCode;
18
+ };
19
+ }
20
+ export declare function createCSSModuleLanguagePlugin<T>(config: HCMConfig, resolver: Resolver, matchesPattern: MatchesPattern, asFileName: (scriptId: T) => string): LanguagePlugin<T, VirtualCode>;
21
+ export declare function isCSSModuleScript<T>(script: SourceScript<T> | undefined): script is CSSModuleScript<T>;
22
+ export {};
23
+ //# sourceMappingURL=language-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-plugin.d.ts","sourceRoot":"","sources":["../src/language-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,eAAO,MAAM,WAAW,eAAe,CAAC;AAExC,eAAO,MAAM,YAAY,eAAmC,CAAC;AAE7D,UAAU,oBAAqB,SAAQ,WAAW;IAChD,CAAC,YAAY,CAAC,EAAE;QACd,SAAS,EAAE,SAAS,CAAC;QACrB,WAAW,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IACzD,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG;QACxC,IAAI,EAAE,oBAAoB,CAAC;KAC5B,CAAC;CACH;AAED,wBAAgB,6BAA6B,CAAC,CAAC,EAC7C,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,MAAM,GAClC,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CAsDhC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAItG"}
@@ -0,0 +1,73 @@
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.HCM_DATA_KEY = exports.LANGUAGE_ID = void 0;
7
+ exports.createCSSModuleLanguagePlugin = createCSSModuleLanguagePlugin;
8
+ exports.isCSSModuleScript = isCSSModuleScript;
9
+ const typescript_1 = __importDefault(require("typescript"));
10
+ const dts_creator_js_1 = require("./dts-creator.js");
11
+ const css_module_parser_js_1 = require("./parser/css-module-parser.js");
12
+ exports.LANGUAGE_ID = 'css-module';
13
+ exports.HCM_DATA_KEY = Symbol('honey-css-modules-data');
14
+ function createCSSModuleLanguagePlugin(config, resolver, matchesPattern, asFileName) {
15
+ return {
16
+ getLanguageId(scriptId) {
17
+ if (!matchesPattern(asFileName(scriptId)))
18
+ return undefined;
19
+ return exports.LANGUAGE_ID;
20
+ },
21
+ createVirtualCode(scriptId, languageId, snapshot) {
22
+ if (languageId !== exports.LANGUAGE_ID)
23
+ return undefined;
24
+ const length = snapshot.getLength();
25
+ const cssModuleCode = snapshot.getText(0, length);
26
+ const { cssModule, diagnostics } = (0, css_module_parser_js_1.parseCSSModule)(cssModuleCode, {
27
+ fileName: asFileName(scriptId),
28
+ dashedIdents: config.dashedIdents,
29
+ // The CSS in the process of being written in an editor often contains invalid syntax.
30
+ // So, ts-plugin uses a fault-tolerant Parser to parse CSS.
31
+ safe: true,
32
+ });
33
+ const { text, mapping, linkedCodeMapping } = (0, dts_creator_js_1.createDts)(cssModule, { resolver, matchesPattern });
34
+ return {
35
+ id: 'main',
36
+ languageId: exports.LANGUAGE_ID,
37
+ snapshot: {
38
+ getText: (start, end) => text.slice(start, end),
39
+ getLength: () => text.length,
40
+ getChangeRange: () => undefined,
41
+ },
42
+ // `mappings` are required to support "Go to Definition" and renaming
43
+ mappings: [{ ...mapping, data: { navigation: true } }],
44
+ // `linkedCodeMappings` are required to support "Go to Definition" and renaming for the imported tokens
45
+ linkedCodeMappings: [{ ...linkedCodeMapping, data: undefined }],
46
+ [exports.HCM_DATA_KEY]: {
47
+ cssModule,
48
+ diagnostics,
49
+ },
50
+ };
51
+ },
52
+ typescript: {
53
+ extraFileExtensions: [
54
+ {
55
+ extension: 'css',
56
+ isMixedContent: true,
57
+ scriptKind: typescript_1.default.ScriptKind.TS,
58
+ },
59
+ ],
60
+ getServiceScript(root) {
61
+ return {
62
+ code: root,
63
+ extension: typescript_1.default.Extension.Ts,
64
+ scriptKind: typescript_1.default.ScriptKind.TS,
65
+ };
66
+ },
67
+ },
68
+ };
69
+ }
70
+ function isCSSModuleScript(script) {
71
+ return (!!script && script.languageId === exports.LANGUAGE_ID && !!script.generated?.root && exports.HCM_DATA_KEY in script.generated.root);
72
+ }
73
+ //# sourceMappingURL=language-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-plugin.js","sourceRoot":"","sources":["../src/language-plugin.ts"],"names":[],"mappings":";;;;;;AA4BA,sEA2DC;AAED,8CAIC;AA3FD,4DAA4B;AAG5B,qDAA6C;AAG7C,wEAA+D;AAGlD,QAAA,WAAW,GAAG,YAAY,CAAC;AAE3B,QAAA,YAAY,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAe7D,SAAgB,6BAA6B,CAC3C,MAAiB,EACjB,QAAkB,EAClB,cAA8B,EAC9B,UAAmC;IAEnC,OAAO;QACL,aAAa,CAAC,QAAQ;YACpB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC5D,OAAO,mBAAW,CAAC;QACrB,CAAC;QACD,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ;YAC9C,IAAI,UAAU,KAAK,mBAAW;gBAAE,OAAO,SAAS,CAAC;YAEjD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAA,qCAAc,EAAC,aAAa,EAAE;gBAC/D,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;gBAC9B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,sFAAsF;gBACtF,2DAA2D;gBAC3D,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,IAAA,0BAAS,EAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;YAChG,OAAO;gBACL,EAAE,EAAE,MAAM;gBACV,UAAU,EAAE,mBAAW;gBACvB,QAAQ,EAAE;oBACR,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;oBAC/C,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM;oBAC5B,cAAc,EAAE,GAAG,EAAE,CAAC,SAAS;iBAChC;gBACD,qEAAqE;gBACrE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;gBACtD,uGAAuG;gBACvG,kBAAkB,EAAE,CAAC,EAAE,GAAG,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC/D,CAAC,oBAAY,CAAC,EAAE;oBACd,SAAS;oBACT,WAAW;iBACZ;aACF,CAAC;QACJ,CAAC;QACD,UAAU,EAAE;YACV,mBAAmB,EAAE;gBACnB;oBACE,SAAS,EAAE,KAAK;oBAChB,cAAc,EAAE,IAAI;oBACpB,UAAU,EAAE,oBAAE,CAAC,UAAU,CAAC,EAAE;iBAC7B;aACF;YACD,gBAAgB,CAAC,IAAI;gBACnB,OAAO;oBACL,IAAI,EAAE,IAAI;oBACV,SAAS,EAAE,oBAAE,CAAC,SAAS,CAAC,EAAE;oBAC1B,UAAU,EAAE,oBAAE,CAAC,UAAU,CAAC,EAAE;iBAC7B,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAI,MAAmC;IACtE,OAAO,CACL,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,mBAAW,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,IAAI,oBAAY,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CACnH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { AtRule } from 'postcss';
2
+ import type { Location } from './location.js';
3
+ interface ParsedAtImport {
4
+ from: string;
5
+ fromLoc: Location;
6
+ }
7
+ /**
8
+ * Parse the `@import` rule.
9
+ * @param atImport The `@import` rule to parse.
10
+ * @returns The specifier of the imported file.
11
+ */
12
+ export declare function parseAtImport(atImport: AtRule): ParsedAtImport | undefined;
13
+ export {};
14
+ //# sourceMappingURL=at-import-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"at-import-parser.d.ts","sourceRoot":"","sources":["../../src/parser/at-import-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAU1E"}
@@ -0,0 +1,47 @@
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.parseAtImport = parseAtImport;
7
+ const postcss_value_parser_1 = __importDefault(require("postcss-value-parser"));
8
+ /**
9
+ * Parse the `@import` rule.
10
+ * @param atImport The `@import` rule to parse.
11
+ * @returns The specifier of the imported file.
12
+ */
13
+ function parseAtImport(atImport) {
14
+ const firstNode = (0, postcss_value_parser_1.default)(atImport.params).nodes[0];
15
+ if (firstNode === undefined)
16
+ return undefined;
17
+ if (firstNode.type === 'string')
18
+ return convertParsedAtImport(atImport, firstNode);
19
+ if (firstNode.type === 'function' && firstNode.value === 'url') {
20
+ if (firstNode.nodes[0] === undefined)
21
+ return undefined;
22
+ if (firstNode.nodes[0].type === 'string')
23
+ return convertParsedAtImport(atImport, firstNode.nodes[0]);
24
+ if (firstNode.nodes[0].type === 'word')
25
+ return convertParsedAtImport(atImport, firstNode.nodes[0]);
26
+ }
27
+ return undefined;
28
+ }
29
+ function convertParsedAtImport(atImport, node) {
30
+ // The length of the `@import ` part in `@import '...'`
31
+ const baseLength = 7 + (atImport.raws.afterName?.length ?? 0);
32
+ const start = {
33
+ line: atImport.source.start.line,
34
+ column: atImport.source.start.column + baseLength + node.sourceIndex + (node.type === 'string' ? 1 : 0),
35
+ offset: atImport.source.start.offset + baseLength + node.sourceIndex + (node.type === 'string' ? 1 : 0),
36
+ };
37
+ const end = {
38
+ line: start.line,
39
+ column: start.column + node.value.length,
40
+ offset: start.offset + node.value.length,
41
+ };
42
+ return {
43
+ from: node.value,
44
+ fromLoc: { start, end },
45
+ };
46
+ }
47
+ //# sourceMappingURL=at-import-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"at-import-parser.js","sourceRoot":"","sources":["../../src/parser/at-import-parser.ts"],"names":[],"mappings":";;;;;AAcA,sCAUC;AAvBD,gFAAsD;AAQtD;;;;GAIG;AACH,SAAgB,aAAa,CAAC,QAAgB;IAC5C,MAAM,SAAS,GAAG,IAAA,8BAAkB,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnF,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC/D,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACvD,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAC5B,QAAgB,EAChB,IAAiE;IAEjE,yDAAyD;IACzD,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG;QACZ,IAAI,EAAE,QAAQ,CAAC,MAAO,CAAC,KAAM,CAAC,IAAI;QAClC,MAAM,EAAE,QAAQ,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzG,MAAM,EAAE,QAAQ,CAAC,MAAO,CAAC,KAAM,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1G,CAAC;IACF,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;QACxC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;KACzC,CAAC;IACF,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,KAAK;QAChB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;KACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { AtRule } from 'postcss';
2
+ import type { SyntacticDiagnostic } from '../diagnostic.js';
3
+ import type { Location } from './location.js';
4
+ interface ValueDeclaration {
5
+ type: 'valueDeclaration';
6
+ name: string;
7
+ loc: Location;
8
+ }
9
+ interface ValueImportDeclaration {
10
+ type: 'valueImportDeclaration';
11
+ values: {
12
+ name: string;
13
+ loc: Location;
14
+ localName?: string;
15
+ localLoc?: Location;
16
+ }[];
17
+ from: string;
18
+ fromLoc: Location;
19
+ }
20
+ type ParsedAtValue = ValueDeclaration | ValueImportDeclaration;
21
+ interface ParseAtValueResult {
22
+ atValue?: ParsedAtValue;
23
+ diagnostics: SyntacticDiagnostic[];
24
+ }
25
+ /**
26
+ * Parse the `@value` rule.
27
+ * Forked from https://github.com/css-modules/postcss-modules-values/blob/v4.0.0/src/index.js.
28
+ *
29
+ * @license
30
+ * ISC License (ISC)
31
+ * Copyright (c) 2015, Glen Maddern
32
+ *
33
+ * Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted,
34
+ * provided that the above copyright notice and this permission notice appear in all copies.
35
+ *
36
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING
37
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
38
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
39
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
40
+ * THE USE OR PERFORMANCE OF THIS SOFTWARE.
41
+ */
42
+ export declare function parseAtValue(atValue: AtRule): ParseAtValueResult;
43
+ export {};
44
+ //# sourceMappingURL=at-value-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"at-value-parser.d.ts","sourceRoot":"","sources":["../../src/parser/at-value-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,UAAU,gBAAgB;IACxB,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IAEb,GAAG,EAAE,QAAQ,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,wBAAwB,CAAC;IAC/B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,QAAQ,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;KACrB,EAAE,CAAC;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,KAAK,aAAa,GAAG,gBAAgB,GAAG,sBAAsB,CAAC;AAE/D,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAMD;;;;;;;;;;;;;;;;GAgBG;AAGH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CA2HhE"}