happy-css-modules 3.0.1 → 3.1.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 (141) hide show
  1. package/package.json +1 -1
  2. package/src/emitter/dts.test.ts +3 -3
  3. package/src/emitter/dts.ts +59 -37
  4. package/src/emitter/index.test.ts +3 -3
  5. package/src/locator/index.test.ts +143 -48
  6. package/src/locator/index.ts +51 -23
  7. package/src/locator/postcss.test.ts +135 -26
  8. package/src/locator/postcss.ts +120 -36
  9. package/src/test-util/util.ts +23 -18
  10. package/src/transformer/less-transformer.test.ts +25 -15
  11. package/src/transformer/postcss-transformer.test.ts +5 -3
  12. package/src/transformer/scss-transformer.test.ts +38 -19
  13. package/dist/cli.d.ts +0 -6
  14. package/dist/cli.js +0 -121
  15. package/dist/cli.js.map +0 -1
  16. package/dist/cli.test.d.ts +0 -1
  17. package/dist/cli.test.js +0 -66
  18. package/dist/cli.test.js.map +0 -1
  19. package/dist/config.d.ts +0 -1
  20. package/dist/config.js +0 -2
  21. package/dist/config.js.map +0 -1
  22. package/dist/emitter/dts.d.ts +0 -14
  23. package/dist/emitter/dts.js +0 -111
  24. package/dist/emitter/dts.js.map +0 -1
  25. package/dist/emitter/dts.test.d.ts +0 -1
  26. package/dist/emitter/dts.test.js +0 -205
  27. package/dist/emitter/dts.test.js.map +0 -1
  28. package/dist/emitter/file-system.d.ts +0 -6
  29. package/dist/emitter/file-system.js +0 -26
  30. package/dist/emitter/file-system.js.map +0 -1
  31. package/dist/emitter/file-system.test.d.ts +0 -1
  32. package/dist/emitter/file-system.test.js +0 -34
  33. package/dist/emitter/file-system.test.js.map +0 -1
  34. package/dist/emitter/index.d.ts +0 -34
  35. package/dist/emitter/index.js +0 -49
  36. package/dist/emitter/index.js.map +0 -1
  37. package/dist/emitter/index.test.d.ts +0 -1
  38. package/dist/emitter/index.test.js +0 -68
  39. package/dist/emitter/index.test.js.map +0 -1
  40. package/dist/emitter/source-map.d.ts +0 -8
  41. package/dist/emitter/source-map.js +0 -16
  42. package/dist/emitter/source-map.js.map +0 -1
  43. package/dist/emitter/source-map.test.d.ts +0 -1
  44. package/dist/emitter/source-map.test.js +0 -13
  45. package/dist/emitter/source-map.test.js.map +0 -1
  46. package/dist/index.d.ts +0 -5
  47. package/dist/index.js +0 -6
  48. package/dist/index.js.map +0 -1
  49. package/dist/integration-test/go-to-definition.test.d.ts +0 -1
  50. package/dist/integration-test/go-to-definition.test.js +0 -334
  51. package/dist/integration-test/go-to-definition.test.js.map +0 -1
  52. package/dist/library/source-map/index.d.ts +0 -8
  53. package/dist/library/source-map/index.js +0 -5
  54. package/dist/library/source-map/index.js.map +0 -1
  55. package/dist/locator/index.d.ts +0 -44
  56. package/dist/locator/index.js +0 -147
  57. package/dist/locator/index.js.map +0 -1
  58. package/dist/locator/index.test.d.ts +0 -1
  59. package/dist/locator/index.test.js +0 -299
  60. package/dist/locator/index.test.js.map +0 -1
  61. package/dist/locator/postcss.d.ts +0 -53
  62. package/dist/locator/postcss.js +0 -169
  63. package/dist/locator/postcss.js.map +0 -1
  64. package/dist/locator/postcss.test.d.ts +0 -1
  65. package/dist/locator/postcss.test.js +0 -196
  66. package/dist/locator/postcss.test.js.map +0 -1
  67. package/dist/logger.d.ts +0 -9
  68. package/dist/logger.js +0 -28
  69. package/dist/logger.js.map +0 -1
  70. package/dist/regression-test/issue-168.test.d.ts +0 -1
  71. package/dist/regression-test/issue-168.test.js +0 -30
  72. package/dist/regression-test/issue-168.test.js.map +0 -1
  73. package/dist/resolver/index.d.ts +0 -22
  74. package/dist/resolver/index.js +0 -44
  75. package/dist/resolver/index.js.map +0 -1
  76. package/dist/resolver/index.test.d.ts +0 -1
  77. package/dist/resolver/index.test.js +0 -16
  78. package/dist/resolver/index.test.js.map +0 -1
  79. package/dist/resolver/node-resolver.d.ts +0 -2
  80. package/dist/resolver/node-resolver.js +0 -6
  81. package/dist/resolver/node-resolver.js.map +0 -1
  82. package/dist/resolver/node-resolver.test.d.ts +0 -1
  83. package/dist/resolver/node-resolver.test.js +0 -25
  84. package/dist/resolver/node-resolver.test.js.map +0 -1
  85. package/dist/resolver/relative-resolver.d.ts +0 -2
  86. package/dist/resolver/relative-resolver.js +0 -5
  87. package/dist/resolver/relative-resolver.js.map +0 -1
  88. package/dist/resolver/relative-resolver.test.d.ts +0 -1
  89. package/dist/resolver/relative-resolver.test.js +0 -12
  90. package/dist/resolver/relative-resolver.test.js.map +0 -1
  91. package/dist/resolver/webpack-resolver.d.ts +0 -24
  92. package/dist/resolver/webpack-resolver.js +0 -91
  93. package/dist/resolver/webpack-resolver.js.map +0 -1
  94. package/dist/resolver/webpack-resolver.test.d.ts +0 -1
  95. package/dist/resolver/webpack-resolver.test.js +0 -89
  96. package/dist/resolver/webpack-resolver.test.js.map +0 -1
  97. package/dist/runner.d.ts +0 -76
  98. package/dist/runner.js +0 -120
  99. package/dist/runner.js.map +0 -1
  100. package/dist/runner.test.d.ts +0 -1
  101. package/dist/runner.test.js +0 -287
  102. package/dist/runner.test.js.map +0 -1
  103. package/dist/test-util/jest/resolver.cjs +0 -31
  104. package/dist/test-util/jest/resolver.cjs.map +0 -1
  105. package/dist/test-util/jest/resolver.d.cts +0 -16
  106. package/dist/test-util/tsserver.d.ts +0 -31
  107. package/dist/test-util/tsserver.js +0 -112
  108. package/dist/test-util/tsserver.js.map +0 -1
  109. package/dist/test-util/util.d.ts +0 -28
  110. package/dist/test-util/util.js +0 -81
  111. package/dist/test-util/util.js.map +0 -1
  112. package/dist/transformer/index.d.ts +0 -30
  113. package/dist/transformer/index.js +0 -25
  114. package/dist/transformer/index.js.map +0 -1
  115. package/dist/transformer/index.test.d.ts +0 -1
  116. package/dist/transformer/index.test.js +0 -66
  117. package/dist/transformer/index.test.js.map +0 -1
  118. package/dist/transformer/less-transformer.d.ts +0 -2
  119. package/dist/transformer/less-transformer.js +0 -45
  120. package/dist/transformer/less-transformer.js.map +0 -1
  121. package/dist/transformer/less-transformer.test.d.ts +0 -1
  122. package/dist/transformer/less-transformer.test.js +0 -124
  123. package/dist/transformer/less-transformer.test.js.map +0 -1
  124. package/dist/transformer/postcss-transformer.d.ts +0 -12
  125. package/dist/transformer/postcss-transformer.js +0 -32
  126. package/dist/transformer/postcss-transformer.js.map +0 -1
  127. package/dist/transformer/postcss-transformer.test.d.ts +0 -1
  128. package/dist/transformer/postcss-transformer.test.js +0 -176
  129. package/dist/transformer/postcss-transformer.test.js.map +0 -1
  130. package/dist/transformer/scss-transformer.d.ts +0 -2
  131. package/dist/transformer/scss-transformer.js +0 -40
  132. package/dist/transformer/scss-transformer.js.map +0 -1
  133. package/dist/transformer/scss-transformer.test.d.ts +0 -1
  134. package/dist/transformer/scss-transformer.test.js +0 -130
  135. package/dist/transformer/scss-transformer.test.js.map +0 -1
  136. package/dist/util.d.ts +0 -21
  137. package/dist/util.js +0 -72
  138. package/dist/util.js.map +0 -1
  139. package/dist/util.test.d.ts +0 -1
  140. package/dist/util.test.js +0 -74
  141. package/dist/util.test.js.map +0 -1
@@ -48,40 +48,59 @@ test('handles sass features', async () => {
48
48
  tokens: [
49
49
  {
50
50
  name: "b_1",
51
- originalLocations: [
52
- { filePath: "<fixtures>/test/2.scss", start: { line: 1, column: 1 }, end: { line: 1, column: 4 } },
53
- ],
51
+ originalLocation: {
52
+ filePath: "<fixtures>/test/2.scss",
53
+ start: { line: 1, column: 1 },
54
+ end: { line: 1, column: 4 },
55
+ },
54
56
  },
55
57
  {
56
58
  name: "c",
57
- originalLocations: [
58
- { filePath: "<fixtures>/test/3.scss", start: { line: 1, column: 1 }, end: { line: 1, column: 2 } },
59
- ],
59
+ originalLocation: {
60
+ filePath: "<fixtures>/test/3.scss",
61
+ start: { line: 1, column: 1 },
62
+ end: { line: 1, column: 2 },
63
+ },
60
64
  },
61
65
  {
62
66
  name: "a_1",
63
- originalLocations: [
64
- { filePath: "<fixtures>/test/1.scss", start: { line: 3, column: 1 }, end: { line: 3, column: 4 } },
65
- ],
67
+ originalLocation: {
68
+ filePath: "<fixtures>/test/1.scss",
69
+ start: { line: 3, column: 1 },
70
+ end: { line: 3, column: 4 },
71
+ },
66
72
  },
67
73
  {
68
74
  name: "a_2",
69
- originalLocations: [
70
- { filePath: "<fixtures>/test/1.scss", start: { line: 4, column: 1 }, end: { line: 4, column: 4 } },
71
- { filePath: "<fixtures>/test/1.scss", start: { line: 7, column: 3 }, end: { line: 7, column: 6 } },
72
- ],
75
+ originalLocation: {
76
+ filePath: "<fixtures>/test/1.scss",
77
+ start: { line: 4, column: 1 },
78
+ end: { line: 4, column: 4 },
79
+ },
80
+ },
81
+ {
82
+ name: "a_2",
83
+ originalLocation: {
84
+ filePath: "<fixtures>/test/1.scss",
85
+ start: { line: 7, column: 3 },
86
+ end: { line: 7, column: 6 },
87
+ },
73
88
  },
74
89
  {
75
90
  name: "a_2_1",
76
- originalLocations: [
77
- { filePath: "<fixtures>/test/1.scss", start: { line: 7, column: 3 }, end: { line: 7, column: 8 } },
78
- ],
91
+ originalLocation: {
92
+ filePath: "<fixtures>/test/1.scss",
93
+ start: { line: 7, column: 3 },
94
+ end: { line: 7, column: 8 },
95
+ },
79
96
  },
80
97
  {
81
98
  name: "a_2_2",
82
- originalLocations: [
83
- { filePath: "<fixtures>/test/1.scss", start: { line: 8, column: 3 }, end: { line: 8, column: 8 } },
84
- ],
99
+ originalLocation: {
100
+ filePath: "<fixtures>/test/1.scss",
101
+ start: { line: 8, column: 3 },
102
+ end: { line: 8, column: 8 },
103
+ },
85
104
  },
86
105
  ],
87
106
  }
package/dist/cli.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import { type RunnerOptions } from './runner.js';
2
- /**
3
- * Parse command line arguments.
4
- * @returns Runner options.
5
- */
6
- export declare function parseArgv(argv: string[]): RunnerOptions;
package/dist/cli.js DELETED
@@ -1,121 +0,0 @@
1
- import yargs from 'yargs';
2
- import { hideBin } from 'yargs/helpers';
3
- import { DEFAULT_ARBITRARY_EXTENSIONS } from './config.js';
4
- import { getPackageJson } from './util.js';
5
- /**
6
- * Parse command line arguments.
7
- * @returns Runner options.
8
- */
9
- export function parseArgv(argv) {
10
- const pkgJson = getPackageJson();
11
- const parsedArgv = yargs(hideBin(argv))
12
- .wrap(Math.min(140, process.stdout.columns))
13
- .scriptName('hcm')
14
- .usage('Generate .d.ts and .d.ts.map for CSS modules.\n\n$0 [options] <glob>')
15
- .example("$0 'src/**/*.module.css'", 'Generate .d.ts and .d.ts.map.')
16
- .example("$0 'src/**/*.module.{css,scss,less}'", 'Also generate files for sass and less.')
17
- .example("$0 'src/**/*.module.css' --watch", 'Watch for changes and generate .d.ts and .d.ts.map.')
18
- .example("$0 'src/**/*.module.css' --declarationMap=false", 'Generate .d.ts only.')
19
- .example("$0 'src/**/*.module.css' --sassLoadPaths=src/style", "Run with sass's `--load-path`.")
20
- .example("$0 'src/**/*.module.css' --lessIncludePaths=src/style", "Run with less's `--include-path`.")
21
- .example('$0 \'src/**/*.module.css\' --webpackResolveAlias=\'{"@": "src"}\'', "Run with webpack's `resolve.alias`.")
22
- .example("$0 'src/**/*.module.css' --cache=false", 'Disable cache.')
23
- .detectLocale(false)
24
- .option('watch', {
25
- type: 'boolean',
26
- alias: 'w',
27
- default: false,
28
- describe: "Watch input directory's css files or pattern",
29
- })
30
- .option('localsConvention', {
31
- choices: ['camelCase', 'camelCaseOnly', 'dashes', 'dashesOnly'],
32
- describe: 'Style of exported class names.',
33
- })
34
- .option('declarationMap', {
35
- type: 'boolean',
36
- default: true,
37
- describe: 'Create sourcemaps for d.ts files',
38
- })
39
- .option('sassLoadPaths', {
40
- array: true,
41
- nargs: 1,
42
- describe: "The option compatible with sass's `--load-path`.",
43
- })
44
- .option('lessIncludePaths', {
45
- array: true,
46
- nargs: 1,
47
- describe: "The option compatible with less's `--include-path`.",
48
- })
49
- .option('webpackResolveAlias', {
50
- string: true,
51
- describe: "The option compatible with webpack's `resolve.alias`.",
52
- })
53
- // TODO: Support --noPostcssConfig option.
54
- .option('postcssConfig', {
55
- string: true,
56
- describe: "The option compatible with postcss's `--config`.",
57
- })
58
- .option('arbitraryExtensions', {
59
- type: 'boolean',
60
- default: DEFAULT_ARBITRARY_EXTENSIONS,
61
- describe: 'Generate `.d.css.ts` instead of `.css.d.ts`.',
62
- })
63
- .option('cache', {
64
- type: 'boolean',
65
- default: true,
66
- describe: 'Only generate .d.ts and .d.ts.map for changed files.',
67
- })
68
- .option('cacheStrategy', {
69
- choices: ['content', 'metadata'],
70
- // NOTE: This is a workaround for `parsedArgv.cacheStrategy` type breaks.
71
- default: 'content',
72
- describe: 'Strategy for the cache to use for detecting changed files.',
73
- })
74
- .option('logLevel', {
75
- choices: ['debug', 'info', 'silent'],
76
- default: 'info',
77
- describe: 'What level of logs to report.',
78
- })
79
- .alias('h', 'help')
80
- .alias('v', 'version')
81
- .version(pkgJson.version)
82
- .check((argv) => {
83
- const patterns = argv._;
84
- // TODO: support multiple patterns
85
- if (patterns.length !== 1)
86
- throw new Error('Only one pattern is allowed.');
87
- if (argv.webpackResolveAlias) {
88
- let parsedWebpackResolveAlias;
89
- try {
90
- parsedWebpackResolveAlias = JSON.parse(argv.webpackResolveAlias);
91
- }
92
- catch (e) {
93
- throw new Error('--webpackResolveAlias must be a valid JSON string.');
94
- }
95
- if (typeof parsedWebpackResolveAlias !== 'object' || parsedWebpackResolveAlias === null)
96
- throw new Error('--webpackResolveAlias must be an object');
97
- if (!Object.keys(parsedWebpackResolveAlias).every((key) => typeof key === 'string'))
98
- throw new Error('--webpackResolveAlias must be an object of string keys');
99
- if (!Object.values(parsedWebpackResolveAlias).every((value) => typeof value === 'string'))
100
- throw new Error('--webpackResolveAlias must be an object of string values');
101
- }
102
- return true;
103
- })
104
- .parseSync();
105
- const patterns = parsedArgv._.map((pattern) => pattern.toString());
106
- return {
107
- pattern: patterns[0],
108
- watch: parsedArgv.watch,
109
- localsConvention: parsedArgv.localsConvention,
110
- declarationMap: parsedArgv.declarationMap,
111
- sassLoadPaths: parsedArgv.sassLoadPaths?.map((item) => item.toString()),
112
- lessIncludePaths: parsedArgv.lessIncludePaths?.map((item) => item.toString()),
113
- webpackResolveAlias: parsedArgv.webpackResolveAlias ? JSON.parse(parsedArgv.webpackResolveAlias) : undefined,
114
- postcssConfig: parsedArgv.postcssConfig,
115
- arbitraryExtensions: parsedArgv.arbitraryExtensions,
116
- cache: parsedArgv.cache,
117
- cacheStrategy: parsedArgv.cacheStrategy,
118
- logLevel: parsedArgv.logLevel,
119
- };
120
- }
121
- //# sourceMappingURL=cli.js.map
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
package/dist/cli.test.js DELETED
@@ -1,66 +0,0 @@
1
- import { parseArgv } from './cli.js';
2
- import { DEFAULT_ARBITRARY_EXTENSIONS } from './config.js';
3
- const baseArgs = ['node', 'hcm'];
4
- describe('parseArgv', () => {
5
- test('pattern', () => {
6
- expect(parseArgv([...baseArgs, 'foo']).pattern).toStrictEqual('foo');
7
- expect(parseArgv([...baseArgs, '1']).pattern).toStrictEqual('1');
8
- // TODO: Support multiple patterns
9
- // parseArgv([...baseArgs, 'foo', 'bar']);
10
- });
11
- test('--watch', () => {
12
- expect(parseArgv([...baseArgs, '1.css', '--watch']).watch).toBe(true);
13
- expect(parseArgv([...baseArgs, '1.css', '--no-watch']).watch).toBe(false);
14
- });
15
- test('--localsConvention', () => {
16
- expect(parseArgv([...baseArgs, '1.css']).localsConvention).toBe(undefined);
17
- expect(parseArgv([...baseArgs, '1.css', '--localsConvention', 'camelCaseOnly']).localsConvention).toBe('camelCaseOnly');
18
- expect(parseArgv([...baseArgs, '1.css', '--localsConvention', 'camelCase']).localsConvention).toBe('camelCase');
19
- expect(parseArgv([...baseArgs, '1.css', '--localsConvention', 'dashesOnly']).localsConvention).toBe('dashesOnly');
20
- expect(parseArgv([...baseArgs, '1.css', '--localsConvention', 'dashes']).localsConvention).toBe('dashes');
21
- });
22
- test('--declarationMap', () => {
23
- expect(parseArgv([...baseArgs, '1.css', '--declarationMap']).declarationMap).toBe(true);
24
- expect(parseArgv([...baseArgs, '1.css', '--no-declarationMap']).declarationMap).toBe(false);
25
- });
26
- test('--sassLoadPaths', () => {
27
- expect(parseArgv([...baseArgs, '1.css', '--sassLoadPaths', 'dir1', '--sassLoadPaths', 'dir2']).sassLoadPaths).toStrictEqual(['dir1', 'dir2']);
28
- // Passing a number is treated as a string
29
- expect(parseArgv([...baseArgs, '1.css', '--sassLoadPaths', '1']).sassLoadPaths).toStrictEqual(['1']);
30
- });
31
- test('--lessIncludePaths', () => {
32
- expect(parseArgv([...baseArgs, '1.css', '--lessIncludePaths', 'dir1', '--lessIncludePaths', 'dir2']).lessIncludePaths).toStrictEqual(['dir1', 'dir2']);
33
- // Passing a number is treated as a string
34
- expect(parseArgv([...baseArgs, '1.css', '--lessIncludePaths', '1']).lessIncludePaths).toStrictEqual(['1']);
35
- });
36
- test('--webpackResolveAlias', () => {
37
- expect(parseArgv([...baseArgs, '1.css', '--webpackResolveAlias', '{ "key1": "value1", "key2": "value2" }'])
38
- .webpackResolveAlias).toStrictEqual({
39
- key1: 'value1',
40
- key2: 'value2',
41
- });
42
- });
43
- test('--postcssConfig', () => {
44
- expect(parseArgv([...baseArgs, '1.css', '--postcssConfig', '.']).postcssConfig).toBe('.');
45
- expect(parseArgv([...baseArgs, '1.css', '--postcssConfig', 'postcss.config.js']).postcssConfig).toBe('postcss.config.js');
46
- });
47
- test('--arbitraryExtensions', () => {
48
- expect(parseArgv([...baseArgs, '1.css']).arbitraryExtensions).toBe(DEFAULT_ARBITRARY_EXTENSIONS);
49
- expect(parseArgv([...baseArgs, '1.css', '--arbitraryExtensions']).arbitraryExtensions).toBe(true);
50
- });
51
- test('--cache', () => {
52
- expect(parseArgv([...baseArgs, '1.css']).cache).toBe(true);
53
- expect(parseArgv([...baseArgs, '1.css', '--cache']).cache).toBe(true);
54
- expect(parseArgv([...baseArgs, '1.css', '--no-cache']).cache).toBe(false);
55
- });
56
- test('--cacheStrategy', () => {
57
- expect(parseArgv([...baseArgs, '1.css']).cacheStrategy).toBe('content');
58
- expect(parseArgv([...baseArgs, '1.css', '--cacheStrategy', 'metadata']).cacheStrategy).toBe('metadata');
59
- });
60
- test('--logLevel', () => {
61
- expect(parseArgv([...baseArgs, '1.css']).logLevel).toBe('info');
62
- expect(parseArgv([...baseArgs, '1.css', '--logLevel', 'debug']).logLevel).toBe('debug');
63
- expect(parseArgv([...baseArgs, '1.css', '--logLevel', 'silent']).logLevel).toBe('silent');
64
- });
65
- });
66
- //# sourceMappingURL=cli.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../src/cli.test.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare const DEFAULT_ARBITRARY_EXTENSIONS = false;
package/dist/config.js DELETED
@@ -1,2 +0,0 @@
1
- export const DEFAULT_ARBITRARY_EXTENSIONS = false;
2
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC"}
@@ -1,14 +0,0 @@
1
- import { type CodeWithSourceMap } from '../library/source-map/index.js';
2
- import { type Token } from '../locator/index.js';
3
- import { type DtsFormatOptions } from './index.js';
4
- /**
5
- * Get .d.ts file path.
6
- * @param filePath The path to the source file (i.e. `/dir/foo.css`). It is absolute.
7
- * @param arbitraryExtensions Generate `.d.css.ts` instead of `.css.d.ts`.
8
- * @returns The path to the .d.ts file. It is absolute.
9
- */
10
- export declare function getDtsFilePath(filePath: string, arbitraryExtensions: boolean): string;
11
- export declare function generateDtsContentWithSourceMap(filePath: string, dtsFilePath: string, sourceMapFilePath: string, tokens: Token[], dtsFormatOptions: DtsFormatOptions | undefined, isExternalFile: (filePath: string) => boolean): {
12
- dtsContent: CodeWithSourceMap['code'];
13
- sourceMap: CodeWithSourceMap['map'];
14
- };
@@ -1,111 +0,0 @@
1
- import { EOL } from 'os';
2
- import { basename, parse, join } from 'path';
3
- import camelcase from 'camelcase';
4
- import { SourceNode } from '../library/source-map/index.js';
5
- import { getRelativePath } from './index.js';
6
- /**
7
- * Get .d.ts file path.
8
- * @param filePath The path to the source file (i.e. `/dir/foo.css`). It is absolute.
9
- * @param arbitraryExtensions Generate `.d.css.ts` instead of `.css.d.ts`.
10
- * @returns The path to the .d.ts file. It is absolute.
11
- */
12
- export function getDtsFilePath(filePath, arbitraryExtensions) {
13
- if (arbitraryExtensions) {
14
- const { dir, name, ext } = parse(filePath);
15
- return join(dir, `${name}.d${ext}.ts`);
16
- }
17
- else {
18
- return `${filePath}.d.ts`;
19
- }
20
- }
21
- function dashesCamelCase(str) {
22
- return str.replace(/-+(\w)/gu, (match, firstLetter) => {
23
- return firstLetter.toUpperCase();
24
- });
25
- }
26
- function formatTokens(tokens, localsConvention) {
27
- const result = [];
28
- for (const token of tokens) {
29
- if (localsConvention === 'camelCaseOnly') {
30
- result.push({ ...token, name: camelcase(token.name) });
31
- }
32
- else if (localsConvention === 'camelCase') {
33
- result.push(token);
34
- result.push({ ...token, name: camelcase(token.name) });
35
- }
36
- else if (localsConvention === 'dashesOnly') {
37
- result.push({ ...token, name: dashesCamelCase(token.name) });
38
- }
39
- else if (localsConvention === 'dashes') {
40
- result.push(token);
41
- result.push({ ...token, name: dashesCamelCase(token.name) });
42
- }
43
- else {
44
- result.push(token); // asIs
45
- }
46
- }
47
- return result;
48
- }
49
- function generateTokenDeclarations(filePath, sourceMapFilePath, tokens, dtsFormatOptions, isExternalFile) {
50
- const formattedTokens = formatTokens(tokens, dtsFormatOptions?.localsConvention);
51
- const result = [];
52
- for (const token of formattedTokens) {
53
- // Only one original position can be associated with one generated position.
54
- // This is due to the sourcemap specification. Therefore, we output multiple type definitions
55
- // with the same name and assign a separate original position to each.
56
- for (let originalLocation of token.originalLocations) {
57
- if (originalLocation.filePath === undefined) {
58
- // If the original location is not specified, fallback to the source file.
59
- originalLocation = {
60
- filePath,
61
- start: { line: 1, column: 1 },
62
- end: { line: 1, column: 1 },
63
- };
64
- }
65
- result.push(originalLocation.filePath === filePath || isExternalFile(originalLocation.filePath)
66
- ? new SourceNode(null, null, null, [
67
- '& Readonly<{ ',
68
- new SourceNode(originalLocation.start.line ?? null,
69
- // The SourceNode's column is 0-based, but the originalLocation's column is 1-based.
70
- originalLocation.start.column - 1 ?? null, getRelativePath(sourceMapFilePath, originalLocation.filePath), `"${token.name}"`, token.name),
71
- ': string }>',
72
- ])
73
- : // Imported tokens in non-external files are typed by dynamic import.
74
- // See https://github.com/mizdra/happy-css-modules/issues/106.
75
- new SourceNode(null, null, null, [
76
- '& Readonly<Pick<(typeof import(',
77
- `"${getRelativePath(filePath, originalLocation.filePath)}"`,
78
- '))["default"], ',
79
- `"${token.name}"`,
80
- '>>',
81
- ]));
82
- }
83
- }
84
- return result;
85
- }
86
- // eslint-disable-next-line max-params
87
- export function generateDtsContentWithSourceMap(filePath, dtsFilePath, sourceMapFilePath, tokens, dtsFormatOptions, isExternalFile) {
88
- const tokenDeclarations = generateTokenDeclarations(filePath, sourceMapFilePath, tokens, dtsFormatOptions, isExternalFile);
89
- let sourceNode;
90
- if (!tokenDeclarations || !tokenDeclarations.length) {
91
- sourceNode = new SourceNode(null, null, null, '');
92
- }
93
- else {
94
- sourceNode = new SourceNode(1, 0, getRelativePath(sourceMapFilePath, filePath), [
95
- `declare const styles:${EOL}`,
96
- ...tokenDeclarations.map((tokenDeclaration) => [' ', tokenDeclaration, EOL]),
97
- `;${EOL}`,
98
- `export default styles;${EOL}`,
99
- ]);
100
- }
101
- const codeWithSourceMap = sourceNode.toStringWithSourceMap({
102
- // Since sourcemap and type definitions are in the same directory, they can be referenced by relative paths.
103
- file: basename(dtsFilePath),
104
- sourceRoot: '',
105
- });
106
- return {
107
- dtsContent: codeWithSourceMap.code,
108
- sourceMap: codeWithSourceMap.map,
109
- };
110
- }
111
- //# sourceMappingURL=dts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dts.js","sourceRoot":"","sources":["../../src/emitter/dts.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,205 +0,0 @@
1
- import dedent from 'dedent';
2
- import { SourceMapConsumer } from 'source-map';
3
- import { Locator } from '../locator/index.js';
4
- import { getFixturePath, createFixtures } from '../test-util/util.js';
5
- import { generateDtsContentWithSourceMap, getDtsFilePath } from './dts.js';
6
- const locator = new Locator();
7
- const isExternalFile = () => false;
8
- test('getDtsFilePath', () => {
9
- expect(getDtsFilePath('/app/src/dir/1.css', false)).toBe('/app/src/dir/1.css.d.ts');
10
- expect(getDtsFilePath('/app/src/dir/1.scss', false)).toBe('/app/src/dir/1.scss.d.ts');
11
- expect(getDtsFilePath('/app/src/dir/1.css', true)).toBe('/app/src/dir/1.d.css.ts');
12
- expect(getDtsFilePath('/app/src/dir/1.scss', true)).toBe('/app/src/dir/1.d.scss.ts');
13
- });
14
- describe('generateDtsContentWithSourceMap', () => {
15
- const filePath = getFixturePath('/test/1.css');
16
- const dtsFilePath = getFixturePath('/test/1.css.d.ts');
17
- const sourceMapFilePath = getFixturePath('/test/1.css.map');
18
- const dtsFormatOptions = {
19
- localsConvention: undefined,
20
- };
21
- test('generate dts content with source map', async () => {
22
- createFixtures({
23
- '/test/1.css': dedent `
24
- @import './2.css';
25
- .a {}
26
- .b {}
27
- .b {}
28
- `,
29
- '/test/2.css': dedent `
30
- @import './3.css';
31
- .c {}
32
- `,
33
- '/test/3.css': dedent `
34
- .d {}
35
- `,
36
- });
37
- const result = await locator.load(filePath);
38
- const { dtsContent, sourceMap } = generateDtsContentWithSourceMap(filePath, dtsFilePath, sourceMapFilePath, result.tokens, dtsFormatOptions, isExternalFile);
39
- expect(dtsContent).toMatchInlineSnapshot(`
40
- "declare const styles:
41
- & Readonly<Pick<(typeof import("./3.css"))["default"], "d">>
42
- & Readonly<Pick<(typeof import("./2.css"))["default"], "c">>
43
- & Readonly<{ "a": string }>
44
- & Readonly<{ "b": string }>
45
- & Readonly<{ "b": string }>
46
- ;
47
- export default styles;
48
- "
49
- `);
50
- const smc = await new SourceMapConsumer(sourceMap.toJSON());
51
- expect(smc.originalPositionFor({ line: 4, column: 15 })).toMatchInlineSnapshot(`
52
- {
53
- "column": 0,
54
- "line": 2,
55
- "name": "a",
56
- "source": "1.css",
57
- }
58
- `);
59
- expect(smc.originalPositionFor({ line: 5, column: 15 })).toMatchInlineSnapshot(`
60
- {
61
- "column": 0,
62
- "line": 3,
63
- "name": "b",
64
- "source": "1.css",
65
- }
66
- `);
67
- expect(smc.originalPositionFor({ line: 6, column: 15 })).toMatchInlineSnapshot(`
68
- {
69
- "column": 0,
70
- "line": 4,
71
- "name": "b",
72
- "source": "1.css",
73
- }
74
- `);
75
- });
76
- describe('format case', () => {
77
- async function getResult(filePath) {
78
- createFixtures({
79
- '/test/1.css': dedent `
80
- .foo-bar {}
81
- .foo_bar {}
82
- `,
83
- });
84
- return locator.load(filePath);
85
- }
86
- test('undefined', async () => {
87
- const result = await getResult(filePath);
88
- const { dtsContent } = generateDtsContentWithSourceMap(filePath, dtsFilePath, sourceMapFilePath, result.tokens, {
89
- ...dtsFormatOptions,
90
- localsConvention: undefined,
91
- }, isExternalFile);
92
- expect(dtsContent).toMatchInlineSnapshot(`
93
- "declare const styles:
94
- & Readonly<{ "foo-bar": string }>
95
- & Readonly<{ "foo_bar": string }>
96
- ;
97
- export default styles;
98
- "
99
- `);
100
- });
101
- test('camelCaseOnly', async () => {
102
- const result = await getResult(filePath);
103
- const { dtsContent } = generateDtsContentWithSourceMap(filePath, dtsFilePath, sourceMapFilePath, result.tokens, {
104
- ...dtsFormatOptions,
105
- localsConvention: 'camelCaseOnly',
106
- }, isExternalFile);
107
- expect(dtsContent).toMatchInlineSnapshot(`
108
- "declare const styles:
109
- & Readonly<{ "fooBar": string }>
110
- & Readonly<{ "fooBar": string }>
111
- ;
112
- export default styles;
113
- "
114
- `);
115
- });
116
- test('camelCase', async () => {
117
- const result = await getResult(filePath);
118
- const { dtsContent } = generateDtsContentWithSourceMap(filePath, dtsFilePath, sourceMapFilePath, result.tokens, {
119
- ...dtsFormatOptions,
120
- localsConvention: 'camelCase',
121
- }, isExternalFile);
122
- expect(dtsContent).toMatchInlineSnapshot(`
123
- "declare const styles:
124
- & Readonly<{ "foo-bar": string }>
125
- & Readonly<{ "fooBar": string }>
126
- & Readonly<{ "foo_bar": string }>
127
- & Readonly<{ "fooBar": string }>
128
- ;
129
- export default styles;
130
- "
131
- `);
132
- });
133
- test('dashesOnly', async () => {
134
- const result = await getResult(filePath);
135
- const { dtsContent } = generateDtsContentWithSourceMap(filePath, dtsFilePath, sourceMapFilePath, result.tokens, {
136
- ...dtsFormatOptions,
137
- localsConvention: 'dashesOnly',
138
- }, isExternalFile);
139
- expect(dtsContent).toMatchInlineSnapshot(`
140
- "declare const styles:
141
- & Readonly<{ "fooBar": string }>
142
- & Readonly<{ "foo_bar": string }>
143
- ;
144
- export default styles;
145
- "
146
- `);
147
- });
148
- test('dashes', async () => {
149
- const result = await getResult(filePath);
150
- const { dtsContent } = generateDtsContentWithSourceMap(filePath, dtsFilePath, sourceMapFilePath, result.tokens, {
151
- ...dtsFormatOptions,
152
- localsConvention: 'dashes',
153
- }, isExternalFile);
154
- expect(dtsContent).toMatchInlineSnapshot(`
155
- "declare const styles:
156
- & Readonly<{ "foo-bar": string }>
157
- & Readonly<{ "fooBar": string }>
158
- & Readonly<{ "foo_bar": string }>
159
- & Readonly<{ "foo_bar": string }>
160
- ;
161
- export default styles;
162
- "
163
- `);
164
- });
165
- });
166
- test('emit other directory', async () => {
167
- createFixtures({
168
- '/test/1.css': `.a {}`,
169
- });
170
- const result = await locator.load(filePath);
171
- const { dtsContent, sourceMap } = generateDtsContentWithSourceMap(getFixturePath('/test/src/1.css'), getFixturePath('/test/dist/1.css.d.ts'), getFixturePath('/test/dist/1.css.d.ts.map'), result.tokens, dtsFormatOptions, isExternalFile);
172
- expect(dtsContent).toMatchInlineSnapshot(`
173
- "declare const styles:
174
- & Readonly<Pick<(typeof import("../1.css"))["default"], "a">>
175
- ;
176
- export default styles;
177
- "
178
- `);
179
- expect(sourceMap.toJSON().sources).toStrictEqual(['../src/1.css']);
180
- expect(sourceMap.toJSON().file).toStrictEqual('1.css.d.ts');
181
- });
182
- test('treats imported tokens from external files the same as local tokens', async () => {
183
- createFixtures({
184
- '/test/1.css': dedent `
185
- @import './2.css';
186
- @import './3.css';
187
- .a {}
188
- `,
189
- '/test/2.css': `.b {}`,
190
- '/test/3.css': `.c {}`,
191
- });
192
- const result = await locator.load(filePath);
193
- const { dtsContent } = generateDtsContentWithSourceMap(filePath, dtsFilePath, sourceMapFilePath, result.tokens, dtsFormatOptions, (filePath) => filePath.endsWith('3.css'));
194
- expect(dtsContent).toMatchInlineSnapshot(`
195
- "declare const styles:
196
- & Readonly<Pick<(typeof import("./2.css"))["default"], "b">>
197
- & Readonly<{ "c": string }>
198
- & Readonly<{ "a": string }>
199
- ;
200
- export default styles;
201
- "
202
- `);
203
- });
204
- });
205
- //# sourceMappingURL=dts.test.js.map