@css-modules-kit/core 0.1.0 → 0.3.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.
Files changed (72) hide show
  1. package/dist/checker.d.ts +2 -6
  2. package/dist/checker.d.ts.map +1 -1
  3. package/dist/checker.js +4 -6
  4. package/dist/checker.js.map +1 -1
  5. package/dist/config.d.ts +13 -17
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +41 -30
  8. package/dist/config.js.map +1 -1
  9. package/dist/diagnostic.d.ts +6 -33
  10. package/dist/diagnostic.d.ts.map +1 -1
  11. package/dist/diagnostic.js +71 -0
  12. package/dist/diagnostic.js.map +1 -1
  13. package/dist/dts-creator.d.ts +8 -28
  14. package/dist/dts-creator.d.ts.map +1 -1
  15. package/dist/dts-creator.js +106 -7
  16. package/dist/dts-creator.js.map +1 -1
  17. package/dist/export-builder.d.ts +1 -14
  18. package/dist/export-builder.d.ts.map +1 -1
  19. package/dist/export-builder.js.map +1 -1
  20. package/dist/file.d.ts +1 -1
  21. package/dist/file.d.ts.map +1 -1
  22. package/dist/file.js.map +1 -1
  23. package/dist/index.d.ts +7 -7
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +5 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/parser/at-import-parser.d.ts +1 -1
  28. package/dist/parser/at-import-parser.d.ts.map +1 -1
  29. package/dist/parser/at-value-parser.d.ts +2 -3
  30. package/dist/parser/at-value-parser.d.ts.map +1 -1
  31. package/dist/parser/at-value-parser.js +2 -13
  32. package/dist/parser/at-value-parser.js.map +1 -1
  33. package/dist/parser/css-module-parser.d.ts +2 -83
  34. package/dist/parser/css-module-parser.d.ts.map +1 -1
  35. package/dist/parser/css-module-parser.js +7 -8
  36. package/dist/parser/css-module-parser.js.map +1 -1
  37. package/dist/parser/rule-parser.d.ts +8 -4
  38. package/dist/parser/rule-parser.d.ts.map +1 -1
  39. package/dist/parser/rule-parser.js +9 -10
  40. package/dist/parser/rule-parser.js.map +1 -1
  41. package/dist/path.d.ts +0 -1
  42. package/dist/path.d.ts.map +1 -1
  43. package/dist/path.js +1 -3
  44. package/dist/path.js.map +1 -1
  45. package/dist/resolver.d.ts +3 -12
  46. package/dist/resolver.d.ts.map +1 -1
  47. package/dist/resolver.js +2 -2
  48. package/dist/resolver.js.map +1 -1
  49. package/dist/type.d.ts +174 -0
  50. package/dist/type.d.ts.map +1 -0
  51. package/dist/type.js +3 -0
  52. package/dist/type.js.map +1 -0
  53. package/package.json +2 -2
  54. package/src/checker.ts +13 -15
  55. package/src/config.ts +50 -45
  56. package/src/diagnostic.ts +69 -29
  57. package/src/dts-creator.ts +120 -13
  58. package/src/export-builder.ts +1 -16
  59. package/src/file.ts +1 -2
  60. package/src/index.ts +14 -14
  61. package/src/parser/at-import-parser.ts +1 -1
  62. package/src/parser/at-value-parser.ts +5 -17
  63. package/src/parser/css-module-parser.ts +16 -98
  64. package/src/parser/rule-parser.ts +17 -14
  65. package/src/path.ts +0 -3
  66. package/src/resolver.ts +12 -15
  67. package/src/type.ts +191 -0
  68. package/dist/parser/location.d.ts +0 -34
  69. package/dist/parser/location.d.ts.map +0 -1
  70. package/dist/parser/location.js +0 -9
  71. package/dist/parser/location.js.map +0 -1
  72. package/src/parser/location.ts +0 -40
package/dist/checker.d.ts CHANGED
@@ -1,7 +1,3 @@
1
- import type { SemanticDiagnostic } from './diagnostic.js';
2
- import type { ExportBuilder } from './export-builder.js';
3
- import type { MatchesPattern } from './file.js';
4
- import type { CSSModule } from './parser/css-module-parser.js';
5
- import type { Resolver } from './resolver.js';
6
- export declare function checkCSSModule(cssModule: CSSModule, exportBuilder: ExportBuilder, matchesPattern: MatchesPattern, resolver: Resolver, getCSSModule: (path: string) => CSSModule | undefined): SemanticDiagnostic[];
1
+ import type { CSSModule, Diagnostic, ExportBuilder, MatchesPattern, Resolver } from './type.js';
2
+ export declare function checkCSSModule(cssModule: CSSModule, exportBuilder: ExportBuilder, matchesPattern: MatchesPattern, resolver: Resolver, getCSSModule: (path: string) => CSSModule | undefined): Diagnostic[];
7
3
  //# sourceMappingURL=checker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAGV,SAAS,EAEV,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,wBAAgB,cAAc,CAC5B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,GACpD,kBAAkB,EAAE,CAsBtB"}
1
+ {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,SAAS,EACT,UAAU,EACV,aAAa,EACb,cAAc,EACd,QAAQ,EAET,MAAM,WAAW,CAAC;AAEnB,wBAAgB,cAAc,CAC5B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,GACpD,UAAU,EAAE,CAsBd"}
package/dist/checker.js CHANGED
@@ -25,22 +25,20 @@ function checkCSSModule(cssModule, exportBuilder, matchesPattern, resolver, getC
25
25
  }
26
26
  function createCannotImportModuleDiagnostic(cssModule, tokenImporter) {
27
27
  return {
28
- type: 'semantic',
29
28
  text: `Cannot import module '${tokenImporter.from}'`,
30
29
  category: 'error',
31
- fileName: cssModule.fileName,
30
+ file: { fileName: cssModule.fileName, text: cssModule.text },
32
31
  start: { line: tokenImporter.fromLoc.start.line, column: tokenImporter.fromLoc.start.column },
33
- end: { line: tokenImporter.fromLoc.end.line, column: tokenImporter.fromLoc.end.column },
32
+ length: tokenImporter.fromLoc.end.offset - tokenImporter.fromLoc.start.offset,
34
33
  };
35
34
  }
36
35
  function createModuleHasNoExportedTokenDiagnostic(cssModule, tokenImporter, value) {
37
36
  return {
38
- type: 'semantic',
39
37
  text: `Module '${tokenImporter.from}' has no exported token '${value.name}'.`,
40
38
  category: 'error',
41
- fileName: cssModule.fileName,
39
+ file: { fileName: cssModule.fileName, text: cssModule.text },
42
40
  start: { line: value.loc.start.line, column: value.loc.start.column },
43
- end: { line: value.loc.end.line, column: value.loc.end.column },
41
+ length: value.loc.end.offset - value.loc.start.offset,
44
42
  };
45
43
  }
46
44
  //# sourceMappingURL=checker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checker.js","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":";;AAWA,wCA4BC;AA5BD,SAAgB,cAAc,CAC5B,SAAoB,EACpB,aAA4B,EAC5B,cAA8B,EAC9B,QAAkB,EAClB,YAAqD;IAErD,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,KAAK,MAAM,aAAa,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAAE,SAAS;QAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,WAAW,CAAC,IAAI,CAAC,kCAAkC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;YAC/E,SAAS;QACX,CAAC;QAED,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnD,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACzC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjD,WAAW,CAAC,IAAI,CAAC,wCAAwC,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,kCAAkC,CAAC,SAAoB,EAAE,aAA4B;IAC5F,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,yBAAyB,aAAa,CAAC,IAAI,GAAG;QACpD,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;QAC7F,GAAG,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;KACxF,CAAC;AACJ,CAAC;AAED,SAAS,wCAAwC,CAC/C,SAAoB,EACpB,aAAmC,EACnC,KAAgC;IAEhC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW,aAAa,CAAC,IAAI,4BAA4B,KAAK,CAAC,IAAI,IAAI;QAC7E,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE;QACrE,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE;KAChE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"checker.js","sourceRoot":"","sources":["../src/checker.ts"],"names":[],"mappings":";;AAWA,wCA4BC;AA5BD,SAAgB,cAAc,CAC5B,SAAoB,EACpB,aAA4B,EAC5B,cAA8B,EAC9B,QAAkB,EAClB,YAAqD;IAErD,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,KAAK,MAAM,aAAa,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAAE,SAAS;QAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,WAAW,CAAC,IAAI,CAAC,kCAAkC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;YAC/E,SAAS;QACX,CAAC;QAED,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACnD,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBACzC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjD,WAAW,CAAC,IAAI,CAAC,wCAAwC,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC9F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,kCAAkC,CAAC,SAAoB,EAAE,aAA4B;IAC5F,OAAO;QACL,IAAI,EAAE,yBAAyB,aAAa,CAAC,IAAI,GAAG;QACpD,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;QAC5D,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE;QAC7F,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;KAC9E,CAAC;AACJ,CAAC;AAED,SAAS,wCAAwC,CAC/C,SAAoB,EACpB,aAAmC,EACnC,KAAgC;IAEhC,OAAO;QACL,IAAI,EAAE,WAAW,aAAa,CAAC,IAAI,4BAA4B,KAAK,CAAC,IAAI,IAAI;QAC7E,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE;QAC5D,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE;QACrE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;KACtD,CAAC;AACJ,CAAC"}
package/dist/config.d.ts CHANGED
@@ -1,8 +1,5 @@
1
1
  import ts from 'typescript';
2
- import type { SemanticDiagnostic } from './diagnostic.js';
3
- type RemoveUndefined<T> = {
4
- [K in keyof T]: Exclude<T[K], undefined>;
5
- };
2
+ import type { Diagnostic } from './type.js';
6
3
  /**
7
4
  * The config used by css-modules-kit.
8
5
  * This is normalized. Paths are resolved from relative to absolute, and default values are set for missing options.
@@ -12,6 +9,8 @@ export interface CMKConfig {
12
9
  excludes: string[];
13
10
  dtsOutDir: string;
14
11
  arbitraryExtensions: boolean;
12
+ namedExports: boolean;
13
+ prioritizeNamedImports: boolean;
15
14
  /**
16
15
  * A root directory to resolve relative path entries in the config file to.
17
16
  * This is an absolute path.
@@ -53,27 +52,29 @@ export interface CMKConfig {
53
52
  configFileName: string;
54
53
  compilerOptions: ts.CompilerOptions;
55
54
  /** The diagnostics that occurred while reading the config file. */
56
- diagnostics: SemanticDiagnostic[];
55
+ diagnostics: Diagnostic[];
57
56
  }
58
57
  /**
59
58
  * The config loaded from `ts.ParsedCommandLine['raw']`.
60
59
  * This is unnormalized. Paths are relative, and some options may be omitted.
61
60
  */
62
61
  interface UnnormalizedRawConfig {
63
- includes: string[] | undefined;
64
- excludes: string[] | undefined;
65
- dtsOutDir: string | undefined;
66
- arbitraryExtensions: boolean | undefined;
62
+ includes?: string[];
63
+ excludes?: string[];
64
+ dtsOutDir?: string;
65
+ arbitraryExtensions?: boolean;
66
+ namedExports?: boolean;
67
+ prioritizeNamedImports?: boolean;
67
68
  }
68
69
  /**
69
70
  * The validated data of `ts.ParsedCommandLine['raw']`.
70
71
  */
71
72
  interface ParsedRawData {
72
73
  config: UnnormalizedRawConfig;
73
- diagnostics: SemanticDiagnostic[];
74
+ diagnostics: Diagnostic[];
74
75
  }
75
76
  export declare function findTsConfigFile(project: string): string | undefined;
76
- declare function parseRawData(raw: unknown, configFileName: string): ParsedRawData;
77
+ declare function parseRawData(raw: unknown, tsConfigSourceFile: ts.TsConfigSourceFile): ParsedRawData;
77
78
  export { parseRawData as parseRawDataForTest };
78
79
  /**
79
80
  * @throws {TsConfigFileNotFoundError}
@@ -82,13 +83,8 @@ export declare function readTsConfigFile(project: string): {
82
83
  configFileName: string;
83
84
  config: UnnormalizedRawConfig;
84
85
  compilerOptions: ts.CompilerOptions;
85
- diagnostics: SemanticDiagnostic[];
86
+ diagnostics: Diagnostic[];
86
87
  };
87
- /**
88
- * Normalize `UnnormalizedRawConfig`. Resolve relative paths to absolute paths, and set default values for missing options.
89
- * @param basePath A root directory to resolve relative path entries in the config file to.
90
- */
91
- export declare function normalizeConfig(config: UnnormalizedRawConfig, basePath: string): RemoveUndefined<UnnormalizedRawConfig>;
92
88
  /**
93
89
  * Reads the `tsconfig.json` file and returns the normalized config.
94
90
  * Even if the `tsconfig.json` file contains syntax or semantic errors,
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAO1D,KAAK,eAAe,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;CACzC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,EAAE,CAAC,eAAe,CAAC;IACpC,mEAAmE;IACnE,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpE;AAED,iBAAS,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,aAAa,CAwDzE;AACD,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,CAAC;AAa/C;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,eAAe,EAAE,EAAE,CAAC,eAAe,CAAC;IACpC,WAAW,EAAE,kBAAkB,EAAE,CAAC;CACnC,CAgDA;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,EAAE,MAAM,GACf,eAAe,CAAC,qBAAqB,CAAC,CASxC;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAUzD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAK5C;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,sBAAsB,EAAE,OAAO,CAAC;IAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,EAAE,CAAC,eAAe,CAAC;IACpC,mEAAmE;IACnE,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpE;AAED,iBAAS,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,GAAG,aAAa,CAuE5F;AACD,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,CAAC;AAc/C;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,eAAe,EAAE,EAAE,CAAC,eAAe,CAAC;IACpC,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B,CAgDA;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAiBzD"}
package/dist/config.js CHANGED
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.findTsConfigFile = findTsConfigFile;
7
7
  exports.parseRawDataForTest = parseRawData;
8
8
  exports.readTsConfigFile = readTsConfigFile;
9
- exports.normalizeConfig = normalizeConfig;
10
9
  exports.readConfigFile = readConfigFile;
11
10
  const typescript_1 = __importDefault(require("typescript"));
12
11
  const error_js_1 = require("./error.js");
@@ -21,14 +20,9 @@ function findTsConfigFile(project) {
21
20
  return undefined;
22
21
  return (0, path_js_1.resolve)(configFile);
23
22
  }
24
- function parseRawData(raw, configFileName) {
23
+ function parseRawData(raw, tsConfigSourceFile) {
25
24
  const result = {
26
- config: {
27
- includes: undefined,
28
- excludes: undefined,
29
- dtsOutDir: undefined,
30
- arbitraryExtensions: undefined,
31
- },
25
+ config: {},
32
26
  diagnostics: [],
33
27
  };
34
28
  if (typeof raw !== 'object' || raw === null)
@@ -56,10 +50,9 @@ function parseRawData(raw, configFileName) {
56
50
  }
57
51
  else {
58
52
  result.diagnostics.push({
59
- type: 'semantic',
60
53
  category: 'error',
61
- text: '`dtsOutDir` must be a string.',
62
- fileName: configFileName,
54
+ text: `\`dtsOutDir\` in ${tsConfigSourceFile.fileName} must be a string.`,
55
+ // MEMO: Location information can be obtained from `tsConfigSourceFile.statements`, but this is complicated and will be omitted.
63
56
  });
64
57
  }
65
58
  }
@@ -69,10 +62,33 @@ function parseRawData(raw, configFileName) {
69
62
  }
70
63
  else {
71
64
  result.diagnostics.push({
72
- type: 'semantic',
73
65
  category: 'error',
74
- text: '`arbitraryExtensions` must be a boolean.',
75
- fileName: configFileName,
66
+ text: `\`arbitraryExtensions\` in ${tsConfigSourceFile.fileName} must be a boolean.`,
67
+ // MEMO: Location information can be obtained from `tsConfigSourceFile.statements`, but this is complicated and will be omitted.
68
+ });
69
+ }
70
+ }
71
+ if ('namedExports' in raw.cmkOptions) {
72
+ if (typeof raw.cmkOptions.namedExports === 'boolean') {
73
+ result.config.namedExports = raw.cmkOptions.namedExports;
74
+ }
75
+ else {
76
+ result.diagnostics.push({
77
+ category: 'error',
78
+ text: `\`namedExports\` in ${tsConfigSourceFile.fileName} must be a boolean.`,
79
+ // MEMO: Location information can be obtained from `tsConfigSourceFile.statements`, but this is complicated and will be omitted.
80
+ });
81
+ }
82
+ }
83
+ if ('prioritizeNamedImports' in raw.cmkOptions) {
84
+ if (typeof raw.cmkOptions.prioritizeNamedImports === 'boolean') {
85
+ result.config.prioritizeNamedImports = raw.cmkOptions.prioritizeNamedImports;
86
+ }
87
+ else {
88
+ result.diagnostics.push({
89
+ category: 'error',
90
+ text: `\`prioritizeNamedImports\` in ${tsConfigSourceFile.fileName} must be a boolean.`,
91
+ // MEMO: Location information can be obtained from `tsConfigSourceFile.statements`, but this is complicated and will be omitted.
76
92
  });
77
93
  }
78
94
  }
@@ -89,6 +105,8 @@ function mergeParsedRawData(base, overrides) {
89
105
  result.config.dtsOutDir = overrides.config.dtsOutDir;
90
106
  if (overrides.config.arbitraryExtensions !== undefined)
91
107
  result.config.arbitraryExtensions = overrides.config.arbitraryExtensions;
108
+ if (overrides.config.namedExports !== undefined)
109
+ result.config.namedExports = overrides.config.namedExports;
92
110
  result.diagnostics.push(...overrides.diagnostics);
93
111
  return result;
94
112
  }
@@ -112,7 +130,7 @@ function readTsConfigFile(project) {
112
130
  },
113
131
  ]);
114
132
  // Read options from `parsedCommandLine.raw`
115
- let parsedRawData = parseRawData(parsedCommandLine.raw, configFileName);
133
+ let parsedRawData = parseRawData(parsedCommandLine.raw, tsConfigSourceFile);
116
134
  // The options read from `parsedCommandLine.raw` do not inherit values from the file specified in `extends`.
117
135
  // So here we read the options from those files and merge them into `parsedRawData`.
118
136
  if (tsConfigSourceFile.extendedSourceFiles) {
@@ -135,20 +153,6 @@ function readTsConfigFile(project) {
135
153
  ...parsedRawData,
136
154
  };
137
155
  }
138
- /**
139
- * Normalize `UnnormalizedRawConfig`. Resolve relative paths to absolute paths, and set default values for missing options.
140
- * @param basePath A root directory to resolve relative path entries in the config file to.
141
- */
142
- function normalizeConfig(config, basePath) {
143
- return {
144
- // If `include` is not specified, fallback to the default include spec.
145
- // ref: https://github.com/microsoft/TypeScript/blob/caf1aee269d1660b4d2a8b555c2d602c97cb28d7/src/compiler/commandLineParser.ts#L3102
146
- includes: (config.includes ?? [DEFAULT_INCLUDE_SPEC]).map((i) => (0, path_js_1.join)(basePath, i)),
147
- excludes: (config.excludes ?? []).map((e) => (0, path_js_1.join)(basePath, e)),
148
- dtsOutDir: (0, path_js_1.join)(basePath, config.dtsOutDir ?? 'generated'),
149
- arbitraryExtensions: config.arbitraryExtensions ?? false,
150
- };
151
- }
152
156
  /**
153
157
  * Reads the `tsconfig.json` file and returns the normalized config.
154
158
  * Even if the `tsconfig.json` file contains syntax or semantic errors,
@@ -161,7 +165,14 @@ function readConfigFile(project) {
161
165
  const { configFileName, config, compilerOptions, diagnostics } = readTsConfigFile(project);
162
166
  const basePath = (0, path_js_1.dirname)(configFileName);
163
167
  return {
164
- ...normalizeConfig(config, basePath),
168
+ // If `include` is not specified, fallback to the default include spec.
169
+ // ref: https://github.com/microsoft/TypeScript/blob/caf1aee269d1660b4d2a8b555c2d602c97cb28d7/src/compiler/commandLineParser.ts#L3102
170
+ includes: (config.includes ?? [DEFAULT_INCLUDE_SPEC]).map((i) => (0, path_js_1.join)(basePath, i)),
171
+ excludes: (config.excludes ?? []).map((e) => (0, path_js_1.join)(basePath, e)),
172
+ dtsOutDir: (0, path_js_1.join)(basePath, config.dtsOutDir ?? 'generated'),
173
+ arbitraryExtensions: config.arbitraryExtensions ?? false,
174
+ namedExports: config.namedExports ?? false,
175
+ prioritizeNamedImports: config.prioritizeNamedImports ?? false,
165
176
  basePath,
166
177
  configFileName,
167
178
  compilerOptions,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,7 @@
1
- export type DiagnosticCategory = 'error' | 'warning';
2
- export interface DiagnosticPosition {
3
- /** The line number in the source file. It is 1-based. */
4
- line: number;
5
- /** The column number in the source file. It is 1-based. */
6
- column: number;
7
- }
8
- export type Diagnostic = SemanticDiagnostic | SyntacticDiagnostic;
9
- interface DiagnosticBase {
10
- /** Text of diagnostic message. */
11
- text: string;
12
- /** The category of the diagnostic message. */
13
- category: DiagnosticCategory;
14
- }
15
- export interface SemanticDiagnostic extends DiagnosticBase {
16
- type: 'semantic';
17
- /** The filename of the file in which the diagnostic occurred */
18
- fileName?: string;
19
- /** Starting file position at which text applies. It is inclusive. */
20
- start?: DiagnosticPosition;
21
- /** The last file position at which the text applies. It is exclusive. */
22
- end?: DiagnosticPosition;
23
- }
24
- export interface SyntacticDiagnostic extends DiagnosticBase {
25
- type: 'syntactic';
26
- /** The filename of the file in which the diagnostic occurred */
27
- fileName: string;
28
- /** Starting file position at which text applies. It is inclusive. */
29
- start: DiagnosticPosition;
30
- /** The last file position at which the text applies. It is exclusive. */
31
- end?: DiagnosticPosition;
32
- }
33
- export {};
1
+ import ts from 'typescript';
2
+ import type { SystemError } from './error.js';
3
+ import type { Diagnostic, DiagnosticSourceFile, DiagnosticWithLocation } from './type.js';
4
+ export declare function convertDiagnostic(diagnostic: Diagnostic, getSourceFile: (file: DiagnosticSourceFile) => ts.SourceFile): ts.Diagnostic;
5
+ export declare function convertDiagnosticWithLocation(diagnostic: DiagnosticWithLocation, getSourceFile: (file: DiagnosticSourceFile) => ts.SourceFile): ts.DiagnosticWithLocation;
6
+ export declare function convertSystemError(systemError: SystemError): ts.Diagnostic;
34
7
  //# sourceMappingURL=diagnostic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../src/diagnostic.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAElE,UAAU,cAAc;IACtB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,IAAI,EAAE,UAAU,CAAC;IACjB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,0EAA0E;IAC1E,GAAG,CAAC,EAAE,kBAAkB,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,IAAI,EAAE,WAAW,CAAC;IAClB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,KAAK,EAAE,kBAAkB,CAAC;IAC1B,0EAA0E;IAC1E,GAAG,CAAC,EAAE,kBAAkB,CAAC;CAC1B"}
1
+ {"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../src/diagnostic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAoB1F,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,EAAE,CAAC,UAAU,GAC3D,EAAE,CAAC,UAAU,CAcf;AAED,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,sBAAsB,EAClC,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,EAAE,CAAC,UAAU,GAC3D,EAAE,CAAC,sBAAsB,CAY3B;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,CAAC,UAAU,CAkB1E"}
@@ -1,3 +1,74 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.convertDiagnostic = convertDiagnostic;
7
+ exports.convertDiagnosticWithLocation = convertDiagnosticWithLocation;
8
+ exports.convertSystemError = convertSystemError;
9
+ const typescript_1 = __importDefault(require("typescript"));
10
+ /** The error code used by tsserver to display the css-modules-kit error in the editor. */
11
+ const TS_ERROR_CODE = 0;
12
+ const TS_ERROR_SOURCE = 'css-modules-kit';
13
+ function convertErrorCategory(category) {
14
+ switch (category) {
15
+ case 'error':
16
+ return typescript_1.default.DiagnosticCategory.Error;
17
+ case 'warning':
18
+ return typescript_1.default.DiagnosticCategory.Warning;
19
+ case 'suggestion':
20
+ return typescript_1.default.DiagnosticCategory.Suggestion;
21
+ default:
22
+ throw new Error(`Unknown category: ${String(category)}`);
23
+ }
24
+ }
25
+ function convertDiagnostic(diagnostic, getSourceFile) {
26
+ if ('file' in diagnostic) {
27
+ return convertDiagnosticWithLocation(diagnostic, getSourceFile);
28
+ }
29
+ else {
30
+ return {
31
+ file: undefined,
32
+ start: undefined,
33
+ length: undefined,
34
+ category: convertErrorCategory(diagnostic.category),
35
+ messageText: diagnostic.text,
36
+ code: TS_ERROR_CODE,
37
+ source: TS_ERROR_SOURCE,
38
+ };
39
+ }
40
+ }
41
+ function convertDiagnosticWithLocation(diagnostic, getSourceFile) {
42
+ const sourceFile = getSourceFile(diagnostic.file);
43
+ const start = typescript_1.default.getPositionOfLineAndCharacter(sourceFile, diagnostic.start.line - 1, diagnostic.start.column - 1);
44
+ return {
45
+ file: sourceFile,
46
+ start,
47
+ length: diagnostic.length,
48
+ category: convertErrorCategory(diagnostic.category),
49
+ messageText: diagnostic.text,
50
+ code: TS_ERROR_CODE,
51
+ source: TS_ERROR_SOURCE,
52
+ };
53
+ }
54
+ function convertSystemError(systemError) {
55
+ let messageText = systemError.message;
56
+ if (systemError.cause) {
57
+ if (systemError.cause instanceof Error) {
58
+ messageText += `: ${systemError.cause.message}`;
59
+ }
60
+ else {
61
+ messageText += `: ${JSON.stringify(systemError.cause)}`;
62
+ }
63
+ }
64
+ return {
65
+ file: undefined,
66
+ start: undefined,
67
+ length: undefined,
68
+ category: typescript_1.default.DiagnosticCategory.Error,
69
+ messageText,
70
+ code: TS_ERROR_CODE,
71
+ source: TS_ERROR_SOURCE,
72
+ };
73
+ }
3
74
  //# sourceMappingURL=diagnostic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../src/diagnostic.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../src/diagnostic.ts"],"names":[],"mappings":";;;;;AAsBA,8CAiBC;AAED,sEAeC;AAED,gDAkBC;AA5ED,4DAA4B;AAI5B,0FAA0F;AAC1F,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAE1C,SAAS,oBAAoB,CAAC,QAA4C;IACxE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,oBAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC;QACrC,KAAK,SAAS;YACZ,OAAO,oBAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACvC,KAAK,YAAY;YACf,OAAO,oBAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC;QAC1C;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAC/B,UAAsB,EACtB,aAA4D;IAE5D,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;QACzB,OAAO,6BAA6B,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,QAAQ,CAAC;YACnD,WAAW,EAAE,UAAU,CAAC,IAAI;YAC5B,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,eAAe;SACxB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAgB,6BAA6B,CAC3C,UAAkC,EAClC,aAA4D;IAE5D,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,oBAAE,CAAC,6BAA6B,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnH,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,KAAK;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,QAAQ,CAAC;QACnD,WAAW,EAAE,UAAU,CAAC,IAAI;QAC5B,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,eAAe;KACxB,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,WAAwB;IACzD,IAAI,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC;IACtC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,WAAW,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;YACvC,WAAW,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,WAAW,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,oBAAE,CAAC,kBAAkB,CAAC,KAAK;QACrC,WAAW;QACX,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,eAAe;KACxB,CAAC;AACJ,CAAC"}
@@ -1,10 +1,9 @@
1
- import type { MatchesPattern } from './file.js';
2
- import type { CSSModule } from './parser/css-module-parser.js';
3
- import type { Resolver } from './resolver.js';
1
+ import type { CSSModule, MatchesPattern, Resolver } from './type.js';
4
2
  export declare const STYLES_EXPORT_NAME = "styles";
5
3
  export interface CreateDtsOptions {
6
4
  resolver: Resolver;
7
5
  matchesPattern: MatchesPattern;
6
+ namedExports: boolean;
8
7
  }
9
8
  interface CodeMapping {
10
9
  /** The source offsets of the tokens in the *.module.css file. */
@@ -25,33 +24,14 @@ interface LinkedCodeMapping extends CodeMapping {
25
24
  /** The length of the second code to be linked. */
26
25
  generatedLengths: number[];
27
26
  }
28
- /**
29
- * Create a d.ts file from a CSS module file.
30
- * @example
31
- * If the CSS module file is:
32
- * ```css
33
- * @import './a.module.css';
34
- * @value local1: string;
35
- * @value imported1, imported2 as aliasedImported2 from './b.module.css';
36
- * .local2 { color: red }
37
- * ```
38
- * The d.ts file would be:
39
- * ```ts
40
- * // @ts-nocheck
41
- * const styles = {
42
- * local1: '' as readonly string,
43
- * local2: '' as readonly string,
44
- * ...(await import('./a.module.css')).default,
45
- * imported1: (await import('./b.module.css')).default.imported1,
46
- * aliasedImported2: (await import('./b.module.css')).default.imported2,
47
- * };
48
- * export default styles;
49
- * ```
50
- */
51
- export declare function createDts({ fileName, localTokens, tokenImporters: _tokenImporters }: CSSModule, options: CreateDtsOptions): {
27
+ interface CreateDtsResult {
52
28
  text: string;
53
29
  mapping: CodeMapping;
54
30
  linkedCodeMapping: LinkedCodeMapping;
55
- };
31
+ }
32
+ /**
33
+ * Create a d.ts file.
34
+ */
35
+ export declare function createDts(cssModules: CSSModule, options: CreateDtsOptions): CreateDtsResult;
56
36
  export {};
57
37
  //# sourceMappingURL=dts-creator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dts-creator.d.ts","sourceRoot":"","sources":["../src/dts-creator.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,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,UAAU,WAAW;IACnB,iEAAiE;IACjE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8DAA8D;IAC9D,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,8CAA8C;AAE9C,UAAU,iBAAkB,SAAQ,WAAW;IAC7C,iDAAiD;IACjD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CACvB,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,SAAS,EACrE,OAAO,EAAE,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC;IAAC,iBAAiB,EAAE,iBAAiB,CAAA;CAAE,CAkE9E"}
1
+ {"version":3,"file":"dts-creator.d.ts","sourceRoot":"","sources":["../src/dts-creator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAwB,MAAM,WAAW,CAAC;AAE3F,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,WAAW;IACnB,iEAAiE;IACjE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8DAA8D;IAC9D,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,8CAA8C;AAE9C,UAAU,iBAAkB,SAAQ,WAAW;IAC7C,iDAAiD;IACjD,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,iBAAiB,EAAE,iBAAiB,CAAC;CACtC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAW3F"}
@@ -4,7 +4,111 @@ exports.STYLES_EXPORT_NAME = void 0;
4
4
  exports.createDts = createDts;
5
5
  exports.STYLES_EXPORT_NAME = 'styles';
6
6
  /**
7
- * Create a d.ts file from a CSS module file.
7
+ * Create a d.ts file.
8
+ */
9
+ function createDts(cssModules, options) {
10
+ // Filter external files
11
+ const tokenImporters = cssModules.tokenImporters.filter((tokenImporter) => {
12
+ const resolved = options.resolver(tokenImporter.from, { request: cssModules.fileName });
13
+ return resolved !== undefined && options.matchesPattern(resolved);
14
+ });
15
+ if (options.namedExports) {
16
+ return createNamedExportsDts(cssModules.localTokens, tokenImporters);
17
+ }
18
+ else {
19
+ return createDefaultExportDts(cssModules.localTokens, tokenImporters);
20
+ }
21
+ }
22
+ /**
23
+ * Create a d.ts file with named exports.
24
+ * @example
25
+ * If the CSS module file is:
26
+ * ```css
27
+ * @import './a.module.css';
28
+ * @value local1: string;
29
+ * @value imported1, imported2 as aliasedImported2 from './b.module.css';
30
+ * .local2 { color: red }
31
+ * ```
32
+ * The d.ts file would be:
33
+ * ```ts
34
+ * // @ts-nocheck
35
+ * export var local1: string;
36
+ * export var local2: string;
37
+ * export * from './a.module.css';
38
+ * export {
39
+ * imported1,
40
+ * imported2 as aliasedImported2,
41
+ * } from './b.module.css';
42
+ * ```
43
+ */
44
+ function createNamedExportsDts(localTokens, tokenImporters) {
45
+ const mapping = { sourceOffsets: [], lengths: [], generatedOffsets: [] };
46
+ const linkedCodeMapping = {
47
+ sourceOffsets: [],
48
+ lengths: [],
49
+ generatedOffsets: [],
50
+ generatedLengths: [],
51
+ };
52
+ // MEMO: Depending on the TypeScript compilation options, the generated type definition file contains compile errors.
53
+ // For example, it contains `Top-level 'await' expressions are only allowed when the 'module' option is set to ...` error.
54
+ //
55
+ // If `--skipLibCheck` is false, those errors will be reported by `tsc`. However, these are negligible errors.
56
+ // Therefore, `@ts-nocheck` is added to the generated type definition file.
57
+ let text = `// @ts-nocheck\n`;
58
+ for (const token of localTokens) {
59
+ text += `export var `;
60
+ mapping.sourceOffsets.push(token.loc.start.offset);
61
+ mapping.generatedOffsets.push(text.length);
62
+ mapping.lengths.push(token.name.length);
63
+ text += `${token.name}: string;\n`;
64
+ }
65
+ for (const tokenImporter of tokenImporters) {
66
+ if (tokenImporter.type === 'import') {
67
+ text += `export * from `;
68
+ mapping.sourceOffsets.push(tokenImporter.fromLoc.start.offset - 1);
69
+ mapping.lengths.push(tokenImporter.from.length + 2);
70
+ mapping.generatedOffsets.push(text.length);
71
+ text += `'${tokenImporter.from}';\n`;
72
+ }
73
+ else {
74
+ text += `export {\n`;
75
+ // eslint-disable-next-line no-loop-func
76
+ tokenImporter.values.forEach((value) => {
77
+ const localName = value.localName ?? value.name;
78
+ const localLoc = value.localLoc ?? value.loc;
79
+ text += ` `;
80
+ if ('localName' in value) {
81
+ mapping.sourceOffsets.push(value.loc.start.offset);
82
+ mapping.lengths.push(value.name.length);
83
+ mapping.generatedOffsets.push(text.length);
84
+ linkedCodeMapping.generatedOffsets.push(text.length);
85
+ linkedCodeMapping.generatedLengths.push(value.name.length);
86
+ text += `${value.name} as `;
87
+ mapping.sourceOffsets.push(localLoc.start.offset);
88
+ mapping.lengths.push(localName.length);
89
+ mapping.generatedOffsets.push(text.length);
90
+ linkedCodeMapping.sourceOffsets.push(text.length);
91
+ linkedCodeMapping.lengths.push(localName.length);
92
+ text += `${localName},\n`;
93
+ }
94
+ else {
95
+ mapping.sourceOffsets.push(value.loc.start.offset);
96
+ mapping.lengths.push(value.name.length);
97
+ mapping.generatedOffsets.push(text.length);
98
+ text += `${value.name},\n`;
99
+ }
100
+ });
101
+ text += `} from `;
102
+ mapping.sourceOffsets.push(tokenImporter.fromLoc.start.offset - 1);
103
+ mapping.lengths.push(tokenImporter.from.length + 2);
104
+ mapping.generatedOffsets.push(text.length);
105
+ text += `'${tokenImporter.from}';\n`;
106
+ }
107
+ }
108
+ return { text, mapping, linkedCodeMapping };
109
+ }
110
+ /**
111
+ * Create a d.ts file with a default export.
8
112
  * @example
9
113
  * If the CSS module file is:
10
114
  * ```css
@@ -26,7 +130,7 @@ exports.STYLES_EXPORT_NAME = 'styles';
26
130
  * export default styles;
27
131
  * ```
28
132
  */
29
- function createDts({ fileName, localTokens, tokenImporters: _tokenImporters }, options) {
133
+ function createDefaultExportDts(localTokens, tokenImporters) {
30
134
  const mapping = { sourceOffsets: [], lengths: [], generatedOffsets: [] };
31
135
  const linkedCodeMapping = {
32
136
  sourceOffsets: [],
@@ -34,11 +138,6 @@ function createDts({ fileName, localTokens, tokenImporters: _tokenImporters }, o
34
138
  generatedOffsets: [],
35
139
  generatedLengths: [],
36
140
  };
37
- // Filter external files
38
- const tokenImporters = _tokenImporters.filter((tokenImporter) => {
39
- const resolved = options.resolver(tokenImporter.from, { request: fileName });
40
- return resolved !== undefined && options.matchesPattern(resolved);
41
- });
42
141
  // MEMO: Depending on the TypeScript compilation options, the generated type definition file contains compile errors.
43
142
  // For example, it contains `Top-level 'await' expressions are only allowed when the 'module' option is set to ...` error.
44
143
  //