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
@@ -1,196 +0,0 @@
1
- import dedent from 'dedent';
2
- import { createRoot, createClassSelectors, createAtImports, createFixtures } from '../test-util/util.js';
3
- import { generateLocalTokenNames, getOriginalLocation, parseAtImport, collectNodes } from './postcss.js';
4
- describe('generateLocalTokenNames', () => {
5
- test('basic', async () => {
6
- expect(await generateLocalTokenNames(createRoot(`
7
- .basic {}
8
- .cascading {}
9
- .cascading {}
10
- .pseudo_class_1 {}
11
- .pseudo_class_2:hover {}
12
- :not(.pseudo_class_3) {}
13
- .multiple_selector_1.multiple_selector_2 {}
14
- .combinator_1 + .combinator_2 {}
15
- @supports (display: flex) {
16
- @media screen and (min-width: 900px) {
17
- .at_rule {}
18
- }
19
- }
20
- .selector_list_1, .selector_list_2 {}
21
- :local .local_class_name_1 {}
22
- :local {
23
- .local_class_name_2 {}
24
- .local_class_name_3 {}
25
- }
26
- :local(.local_class_name_4) {}
27
- `))).toStrictEqual([
28
- 'basic',
29
- 'cascading',
30
- 'pseudo_class_1',
31
- 'pseudo_class_2',
32
- 'pseudo_class_3',
33
- 'multiple_selector_1',
34
- 'multiple_selector_2',
35
- 'combinator_1',
36
- 'combinator_2',
37
- 'at_rule',
38
- 'selector_list_1',
39
- 'selector_list_2',
40
- 'local_class_name_1',
41
- 'local_class_name_2',
42
- 'local_class_name_3',
43
- 'local_class_name_4',
44
- ]);
45
- });
46
- test('does not track styles imported by @import in other file because it is not a local token', async () => {
47
- createFixtures({
48
- '/test/1.css': dedent `
49
- .a {}
50
- `,
51
- });
52
- expect(await generateLocalTokenNames(createRoot(`
53
- @import "/test/1.css";
54
- `))).toStrictEqual([]);
55
- });
56
- test('does not track styles imported by @value in other file because it is not a local token', async () => {
57
- createFixtures({});
58
- expect(await generateLocalTokenNames(createRoot(`
59
- @value something from "/test/1.css";
60
- `))).toStrictEqual([]);
61
- });
62
- test('does not track styles imported by composes in other file because it is not a local token', async () => {
63
- createFixtures({
64
- '/test/1.css': dedent `
65
- .b {}
66
- `,
67
- });
68
- expect(await generateLocalTokenNames(createRoot(`
69
- .a {
70
- composes: b from "/test/1.css";
71
- }
72
- `))).toStrictEqual(['a']);
73
- });
74
- });
75
- describe('getOriginalLocation', () => {
76
- test('basic', () => {
77
- const [basic] = createClassSelectors(createRoot(dedent `
78
- .basic {}
79
- `));
80
- expect(getOriginalLocation(basic.rule, basic.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 6 } }`);
81
- });
82
- test('cascading', () => {
83
- // eslint-disable-next-line @typescript-eslint/naming-convention
84
- const [cascading_1, cascading_2] = createClassSelectors(createRoot(dedent `
85
- .cascading {}
86
- .cascading {}
87
- `));
88
- expect(getOriginalLocation(cascading_1.rule, cascading_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 10 } }`);
89
- expect(getOriginalLocation(cascading_2.rule, cascading_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 2, column: 1 }, end: { line: 2, column: 10 } }`);
90
- });
91
- test('pseudo_class', () => {
92
- // eslint-disable-next-line @typescript-eslint/naming-convention
93
- const [pseudo_class_1, pseudo_class_2, pseudo_class_3] = createClassSelectors(createRoot(dedent `
94
- .pseudo_class_1 {}
95
- .pseudo_class_2:hover {}
96
- :not(.pseudo_class_3) {}
97
- `));
98
- expect(getOriginalLocation(pseudo_class_1.rule, pseudo_class_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 15 } }`);
99
- expect(getOriginalLocation(pseudo_class_2.rule, pseudo_class_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 2, column: 1 }, end: { line: 2, column: 15 } }`);
100
- expect(getOriginalLocation(pseudo_class_3.rule, pseudo_class_3.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 3, column: 6 }, end: { line: 3, column: 20 } }`);
101
- });
102
- test('multiple_selector', () => {
103
- // eslint-disable-next-line @typescript-eslint/naming-convention
104
- const [multiple_selector_1, multiple_selector_2] = createClassSelectors(createRoot(dedent `
105
- .multiple_selector_1.multiple_selector_2 {}
106
- `));
107
- expect(getOriginalLocation(multiple_selector_1.rule, multiple_selector_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 20 } }`);
108
- expect(getOriginalLocation(multiple_selector_2.rule, multiple_selector_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 21 }, end: { line: 1, column: 40 } }`);
109
- });
110
- test('combinator', () => {
111
- // eslint-disable-next-line @typescript-eslint/naming-convention
112
- const [combinator_1, combinator_2] = createClassSelectors(createRoot(dedent `
113
- .combinator_1 + .combinator_2 {}
114
- `));
115
- expect(getOriginalLocation(combinator_1.rule, combinator_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 13 } }`);
116
- expect(getOriginalLocation(combinator_2.rule, combinator_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 17 }, end: { line: 1, column: 29 } }`);
117
- });
118
- test('at_rule', () => {
119
- // eslint-disable-next-line @typescript-eslint/naming-convention
120
- const [at_rule] = createClassSelectors(createRoot(dedent `
121
- @supports (display: flex) {
122
- @media screen and (min-width: 900px) {
123
- .at_rule {}
124
- }
125
- }
126
- `));
127
- expect(getOriginalLocation(at_rule.rule, at_rule.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 3, column: 5 }, end: { line: 3, column: 12 } }`);
128
- });
129
- test('selector_list', () => {
130
- // eslint-disable-next-line @typescript-eslint/naming-convention
131
- const [selector_list_1, selector_list_2] = createClassSelectors(createRoot(dedent `
132
- .selector_list_1, .selector_list_2 {}
133
- `));
134
- expect(getOriginalLocation(selector_list_1.rule, selector_list_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 16 } }`);
135
- expect(getOriginalLocation(selector_list_2.rule, selector_list_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 19 }, end: { line: 1, column: 34 } }`);
136
- });
137
- test('local_class_name', () => {
138
- // eslint-disable-next-line @typescript-eslint/naming-convention
139
- const [local_class_name_1, local_class_name_2, local_class_name_3, local_class_name_4] = createClassSelectors(createRoot(dedent `
140
- :local .local_class_name_1 {}
141
- :local {
142
- .local_class_name_2 {}
143
- .local_class_name_3 {}
144
- }
145
- :local(.local_class_name_4) {}
146
- `));
147
- expect(getOriginalLocation(local_class_name_1.rule, local_class_name_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 8 }, end: { line: 1, column: 26 } }`);
148
- expect(getOriginalLocation(local_class_name_2.rule, local_class_name_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 3, column: 3 }, end: { line: 3, column: 21 } }`);
149
- expect(getOriginalLocation(local_class_name_3.rule, local_class_name_3.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 4, column: 3 }, end: { line: 4, column: 21 } }`);
150
- expect(getOriginalLocation(local_class_name_4.rule, local_class_name_4.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 6, column: 8 }, end: { line: 6, column: 26 } }`);
151
- });
152
- test('with_newline', () => {
153
- // eslint-disable-next-line @typescript-eslint/naming-convention
154
- const [with_newline_1, with_newline_2, with_newline_3] = createClassSelectors(createRoot(dedent `
155
- .with_newline_1,
156
- .with_newline_2
157
- + .with_newline_3, {}
158
- `));
159
- expect(getOriginalLocation(with_newline_1.rule, with_newline_1.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 1, column: 1 }, end: { line: 1, column: 15 } }`);
160
- expect(getOriginalLocation(with_newline_2.rule, with_newline_2.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 2, column: 1 }, end: { line: 2, column: 15 } }`);
161
- expect(getOriginalLocation(with_newline_3.rule, with_newline_3.classSelector)).toMatchInlineSnapshot(`{ filePath: "/test/test.css", start: { line: 3, column: 5 }, end: { line: 3, column: 19 } }`);
162
- });
163
- });
164
- test('collectNodes', () => {
165
- const ast = createRoot(dedent `
166
- @import;
167
- @import "test.css";
168
- @ignored;
169
- .a { ignored: "ignored"; }
170
- .b { ignored: "ignored"; }
171
- `);
172
- const { atImports, classSelectors } = collectNodes(ast);
173
- expect(atImports).toHaveLength(2);
174
- expect(atImports[0].toString()).toEqual('@import');
175
- expect(atImports[1].toString()).toEqual('@import "test.css"');
176
- expect(classSelectors).toHaveLength(2);
177
- expect(classSelectors[0].rule.toString()).toEqual('.a { ignored: "ignored"; }');
178
- expect(classSelectors[0].classSelector.toString()).toEqual('.a');
179
- expect(classSelectors[1].rule.toString()).toEqual('.b { ignored: "ignored"; }');
180
- expect(classSelectors[1].classSelector.toString()).toEqual('.b');
181
- });
182
- test('parseAtImport', () => {
183
- const atImports = createAtImports(createRoot(dedent `
184
- @import;
185
- @import "test.css";
186
- @import url("test.css");
187
- @import url(test.css);
188
- @import "test.css" print;
189
- `));
190
- expect(parseAtImport(atImports[0])).toBe(undefined);
191
- expect(parseAtImport(atImports[1])).toBe('test.css');
192
- expect(parseAtImport(atImports[2])).toBe('test.css');
193
- expect(parseAtImport(atImports[3])).toBe('test.css');
194
- expect(parseAtImport(atImports[4])).toBe('test.css');
195
- });
196
- //# sourceMappingURL=postcss.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"postcss.test.js","sourceRoot":"","sources":["../../src/locator/postcss.test.ts"],"names":[],"mappings":"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"}
package/dist/logger.d.ts DELETED
@@ -1,9 +0,0 @@
1
- type LogLevelLabel = 'debug' | 'info' | 'silent';
2
- export declare class Logger {
3
- private logLevel;
4
- constructor(logLevelLabel: LogLevelLabel);
5
- debug(message: unknown): void;
6
- info(message: unknown): void;
7
- error(message: unknown): void;
8
- }
9
- export {};
package/dist/logger.js DELETED
@@ -1,28 +0,0 @@
1
- import chalk from 'chalk';
2
- const LOG_LEVEL = {
3
- debug: 2,
4
- info: 1,
5
- silent: 0,
6
- };
7
- export class Logger {
8
- constructor(logLevelLabel) {
9
- this.logLevel = LOG_LEVEL[logLevelLabel];
10
- }
11
- debug(message) {
12
- if (this.logLevel >= LOG_LEVEL['debug']) {
13
- // eslint-disable-next-line no-console
14
- console.log('[debug]', message);
15
- }
16
- }
17
- info(message) {
18
- if (this.logLevel >= LOG_LEVEL['info']) {
19
- // eslint-disable-next-line no-console
20
- console.log(chalk.blue('[info]'), message);
21
- }
22
- }
23
- error(message) {
24
- // eslint-disable-next-line no-console
25
- console.error(chalk.red('[error]'), message);
26
- }
27
- }
28
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,SAAS,GAAoC;IACjD,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;CACV,CAAC;AAEF,MAAM,OAAO,MAAM;IAEjB,YAAY,aAA4B;QACtC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IACD,KAAK,CAAC,OAAgB;QACpB,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,IAAI,CAAC,OAAgB;QACnB,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,KAAK,CAAC,OAAgB;QACpB,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,30 +0,0 @@
1
- import { symlink } from 'fs/promises';
2
- import { jest } from '@jest/globals';
3
- import { run } from '../runner.js';
4
- import { createFixtures, getFixturePath, waitForAsyncTask } from '../test-util/util.js';
5
- const defaultOptions = {
6
- pattern: 'test/**/*.css',
7
- cwd: getFixturePath('/'),
8
- cache: false,
9
- logLevel: 'silent',
10
- };
11
- // eslint-disable-next-line @typescript-eslint/no-empty-function
12
- const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => { });
13
- // Exit the watcher even if the test fails
14
- let watcher;
15
- afterEach(async () => {
16
- if (watcher) {
17
- await watcher.close();
18
- }
19
- });
20
- it('issue-168', async () => {
21
- createFixtures({
22
- '/test/css-file.css': '.a {}',
23
- '/test/non-css-file.txt': 'text file',
24
- });
25
- await symlink(getFixturePath('/test/non-css-file.txt'), getFixturePath('/test/symlink.txt'));
26
- watcher = await run({ ...defaultOptions, watch: true });
27
- await waitForAsyncTask(300); // Wait for initial code generation to complete
28
- expect(consoleErrorSpy).not.toBeCalled(); // If an error is output, then failed
29
- });
30
- //# sourceMappingURL=issue-168.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-168.test.js","sourceRoot":"","sources":["../../src/regression-test/issue-168.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExF,MAAM,cAAc,GAAkB;IACpC,OAAO,EAAE,eAAe;IACxB,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC;IACxB,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF,gEAAgE;AAChE,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAElF,0CAA0C;AAC1C,IAAI,OAA4B,CAAC;AACjC,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;IACzB,cAAc,CAAC;QACb,oBAAoB,EAAE,OAAO;QAC7B,wBAAwB,EAAE,WAAW;KACtC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,EAAE,cAAc,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC7F,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,GAAG,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,+CAA+C;IAC5E,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,qCAAqC;AACjF,CAAC,CAAC,CAAC"}
@@ -1,22 +0,0 @@
1
- import type { WebpackResolverOptions } from './webpack-resolver.js';
2
- export type ResolverOptions = {
3
- request: string;
4
- };
5
- /**
6
- * The function to resolve the path of the imported file.
7
- * @returns The resolved path of the imported file. `false` means to skip resolving.
8
- */
9
- export type Resolver = (specifier: string, options: ResolverOptions) => string | false | Promise<string | false>;
10
- export type DefaultResolverOptions = WebpackResolverOptions;
11
- /**
12
- * The Default resolver.
13
- *
14
- * This resolver implements a resolve algorithm that is as compatible as possible with the major toolchains,
15
- * including Node.js, webpack (css-loader, sass-loader, less-loader) and vite. It is difficult to completely
16
- * mimic the behavior of these toolchains, so the behavior may differ in some cases.
17
- *
18
- * @param specifier The specifier to resolve (i.e. './foo.css', '~bootstrap', etc.)
19
- * @param options The options to resolve
20
- * @returns The resolved path (absolute). `false` means to skip resolving.
21
- */
22
- export declare const createDefaultResolver: (defaultResolverOptions?: DefaultResolverOptions | undefined) => Resolver;
@@ -1,44 +0,0 @@
1
- import { exists } from '../util.js';
2
- import { createNodeResolver } from './node-resolver.js';
3
- import { createRelativeResolver } from './relative-resolver.js';
4
- import { createWebpackResolver } from './webpack-resolver.js';
5
- /**
6
- * The Default resolver.
7
- *
8
- * This resolver implements a resolve algorithm that is as compatible as possible with the major toolchains,
9
- * including Node.js, webpack (css-loader, sass-loader, less-loader) and vite. It is difficult to completely
10
- * mimic the behavior of these toolchains, so the behavior may differ in some cases.
11
- *
12
- * @param specifier The specifier to resolve (i.e. './foo.css', '~bootstrap', etc.)
13
- * @param options The options to resolve
14
- * @returns The resolved path (absolute). `false` means to skip resolving.
15
- */
16
- export const createDefaultResolver = (defaultResolverOptions) => {
17
- const relativeResolver = createRelativeResolver();
18
- const nodeResolver = createNodeResolver();
19
- const webpackResolver = createWebpackResolver(defaultResolverOptions);
20
- // In less-loader, `relativeResolver` has priority over `webpackResolver`.
21
- // happy-css-modules follows suit.
22
- // ref: https://github.com/webpack-contrib/sass-loader/blob/49a578a218574ddc92a597c7e365b6c21960717e/src/utils.js#L588-L596
23
- // ref: https://github.com/webpack-contrib/less-loader/tree/454e187f58046356c3d383d67fda763db8bfc528#webpack-resolver
24
- const resolvers = [relativeResolver, nodeResolver, webpackResolver];
25
- return async (specifier, options) => {
26
- for (const resolver of resolvers) {
27
- try {
28
- // eslint-disable-next-line no-await-in-loop
29
- const resolved = await resolver(specifier, options);
30
- if (resolved !== false) {
31
- // eslint-disable-next-line no-await-in-loop
32
- const isExists = await exists(resolved);
33
- if (isExists)
34
- return resolved;
35
- }
36
- }
37
- catch (e) {
38
- // noop
39
- }
40
- }
41
- return false;
42
- };
43
- };
44
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAc9D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA8E,CAC9G,sBAAsB,EACtB,EAAE;IACF,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,CAAC;IAClD,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;IAC1C,MAAM,eAAe,GAAG,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;IAEtE,0EAA0E;IAC1E,kCAAkC;IAClC,2HAA2H;IAC3H,qHAAqH;IACrH,MAAM,SAAS,GAAG,CAAC,gBAAgB,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IAEpE,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QAClC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,4CAA4C;gBAC5C,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACpD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;oBACvB,4CAA4C;oBAC5C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACxC,IAAI,QAAQ;wBAAE,OAAO,QAAQ,CAAC;gBAChC,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,16 +0,0 @@
1
- import { createFixtures, getFixturePath } from '../test-util/util.js';
2
- import { createDefaultResolver } from './index.js';
3
- const defaultResolver = createDefaultResolver();
4
- const request = getFixturePath('/test/1.css');
5
- test('resolve with webpackResolver when other resolvers fail to resolve', async () => {
6
- createFixtures({
7
- '/test/2.css': `.a {}`,
8
- '/test/3.css': `.a {}`,
9
- '/node_modules/3.css/index.css': `.a {}`,
10
- '/node_modules/4.css/index.css': `.a {}`,
11
- });
12
- expect(await defaultResolver('2.css', { request })).toBe(getFixturePath('/test/2.css'));
13
- expect(await defaultResolver('3.css', { request })).toBe(getFixturePath('/test/3.css'));
14
- expect(await defaultResolver('~4.css', { request })).toBe(getFixturePath('/node_modules/4.css/index.css'));
15
- });
16
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/resolver/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,eAAe,GAAG,qBAAqB,EAAE,CAAC;AAChD,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAE9C,IAAI,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;IACnF,cAAc,CAAC;QACb,aAAa,EAAE,OAAO;QACtB,aAAa,EAAE,OAAO;QACtB,+BAA+B,EAAE,OAAO;QACxC,+BAA+B,EAAE,OAAO;KACzC,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,eAAe,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IACxF,MAAM,CAAC,MAAM,eAAe,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IACxF,MAAM,CAAC,MAAM,eAAe,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,+BAA+B,CAAC,CAAC,CAAC;AAC7G,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { Resolver } from './index.js';
2
- export declare const createNodeResolver: () => Resolver;
@@ -1,6 +0,0 @@
1
- import { fileURLToPath, pathToFileURL } from 'url';
2
- import { resolve } from 'import-meta-resolve';
3
- export const createNodeResolver = () => (specifier, options) => {
4
- return fileURLToPath(resolve(specifier, pathToFileURL(options.request).href));
5
- };
6
- //# sourceMappingURL=node-resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-resolver.js","sourceRoot":"","sources":["../../src/resolver/node-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,MAAM,CAAC,MAAM,kBAAkB,GAAmB,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE;IAC7E,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,25 +0,0 @@
1
- import { createFixtures, getFixturePath } from '../test-util/util.js';
2
- import { createNodeResolver } from './node-resolver.js';
3
- const nodeResolver = createNodeResolver();
4
- const request = getFixturePath('/test/1.css');
5
- test('resolves specifier with node mechanism', async () => {
6
- createFixtures({
7
- '/test/2.css': `.a {}`,
8
- '/test/dir/3.css': `.a {}`,
9
- '/4.css': `.a {}`,
10
- '/test/5.css': `.a {}`,
11
- '/node_modules/package-1/6.css': `.a {}`,
12
- '/package.json': `{ "imports": { "#subpath-1": "./test/7.css", "#subpath-2/*.css": "./test/*.css" } }`,
13
- '/test/7.css': `.a {}`,
14
- '/test/8.css': `.a {}`,
15
- });
16
- expect(await nodeResolver('./2.css', { request })).toBe(getFixturePath('/test/2.css'));
17
- expect(await nodeResolver('./dir/3.css', { request })).toBe(getFixturePath('/test/dir/3.css'));
18
- expect(await nodeResolver('../4.css', { request })).toBe(getFixturePath('/4.css'));
19
- expect(await nodeResolver(getFixturePath('/test/5.css'), { request })).toBe(getFixturePath('/test/5.css'));
20
- expect(await nodeResolver('package-1/6.css', { request })).toBe(getFixturePath('/node_modules/package-1/6.css'));
21
- expect(await nodeResolver('#subpath-1', { request })).toBe(getFixturePath('/test/7.css'));
22
- // FIXME: For some reason, it does not pass...
23
- // expect(await nodeResolver('#subpath-2/8.css', { request })).toBe(getFixturePath('/test/8.css'));
24
- });
25
- //# sourceMappingURL=node-resolver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-resolver.test.js","sourceRoot":"","sources":["../../src/resolver/node-resolver.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;AAC1C,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAE9C,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;IACxD,cAAc,CAAC;QACb,aAAa,EAAE,OAAO;QACtB,iBAAiB,EAAE,OAAO;QAC1B,QAAQ,EAAE,OAAO;QACjB,aAAa,EAAE,OAAO;QACtB,+BAA+B,EAAE,OAAO;QACxC,eAAe,EAAE,qFAAqF;QACtG,aAAa,EAAE,OAAO;QACtB,aAAa,EAAE,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,YAAY,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IACvF,MAAM,CAAC,MAAM,YAAY,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC/F,MAAM,CAAC,MAAM,YAAY,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnF,MAAM,CAAC,MAAM,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3G,MAAM,CAAC,MAAM,YAAY,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACjH,MAAM,CAAC,MAAM,YAAY,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IAC1F,8CAA8C;IAC9C,mGAAmG;AACrG,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import type { Resolver } from './index.js';
2
- export declare const createRelativeResolver: () => Resolver;
@@ -1,5 +0,0 @@
1
- import { dirname, resolve } from 'path';
2
- export const createRelativeResolver = () => (specifier, options) => {
3
- return resolve(dirname(options.request), specifier);
4
- };
5
- //# sourceMappingURL=relative-resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relative-resolver.js","sourceRoot":"","sources":["../../src/resolver/relative-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGxC,MAAM,CAAC,MAAM,sBAAsB,GAAmB,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE;IACjF,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,12 +0,0 @@
1
- import { getFixturePath } from '../test-util/util.js';
2
- import { createRelativeResolver } from './relative-resolver.js';
3
- const relativeResolver = createRelativeResolver();
4
- const request = getFixturePath('/test/1.css');
5
- test('resolves specifier with relative mechanism', async () => {
6
- expect(await relativeResolver('2.css', { request })).toBe(getFixturePath('/test/2.css'));
7
- expect(await relativeResolver('./3.css', { request })).toBe(getFixturePath('/test/3.css'));
8
- expect(await relativeResolver('dir/4.css', { request })).toBe(getFixturePath('/test/dir/4.css'));
9
- expect(await relativeResolver('../5.css', { request })).toBe(getFixturePath('/5.css'));
10
- expect(await relativeResolver(getFixturePath('/test/6.css'), { request })).toBe(getFixturePath('/test/6.css'));
11
- });
12
- //# sourceMappingURL=relative-resolver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relative-resolver.test.js","sourceRoot":"","sources":["../../src/resolver/relative-resolver.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,CAAC;AAClD,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;AAE9C,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;IAC5D,MAAM,CAAC,MAAM,gBAAgB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IACzF,MAAM,CAAC,MAAM,gBAAgB,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3F,MAAM,CAAC,MAAM,gBAAgB,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACjG,MAAM,CAAC,MAAM,gBAAgB,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvF,MAAM,CAAC,MAAM,gBAAgB,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;AACjH,CAAC,CAAC,CAAC"}
@@ -1,24 +0,0 @@
1
- import type { Resolver } from './index.js';
2
- export type WebpackResolverOptions = {
3
- /** Working directory path. */
4
- cwd?: string | undefined;
5
- /**
6
- * The option compatible with sass's `--load-path`. It is an array of relative or absolute paths.
7
- * @example ['src/styles']
8
- * @example ['/home/user/repository/src/styles']
9
- */
10
- sassLoadPaths?: string[] | undefined;
11
- /**
12
- * The option compatible with less's `--include-path`. It is an array of relative or absolute paths.
13
- * @example ['src/styles']
14
- * @example ['/home/user/repository/src/styles']
15
- */
16
- lessIncludePaths?: string[] | undefined;
17
- /**
18
- * The option compatible with webpack's `resolve.alias`. It is an object consisting of a pair of alias names and relative or absolute paths.
19
- * @example { style: 'src/styles', '@': 'src' }
20
- * @example { style: '/home/user/repository/src/styles', '@': '/home/user/repository/src' }
21
- */
22
- webpackResolveAlias?: Record<string, string> | undefined;
23
- };
24
- export declare const createWebpackResolver: (webpackResolverOptions?: WebpackResolverOptions | undefined) => Resolver;
@@ -1,91 +0,0 @@
1
- import { basename, dirname, join, resolve } from 'path';
2
- import enhancedResolve from 'enhanced-resolve';
3
- import { exists } from '../util.js';
4
- // TODO: Support `resolve.alias` for Node.js API
5
- export const createWebpackResolver = (webpackResolverOptions) => {
6
- const cwd = webpackResolverOptions?.cwd ?? process.cwd();
7
- const sassLoadPaths = webpackResolverOptions?.sassLoadPaths?.map((path) => resolve(cwd, path));
8
- const lessIncludePaths = webpackResolverOptions?.lessIncludePaths?.map((path) => resolve(cwd, path));
9
- const webpackResolveAlias = webpackResolverOptions?.webpackResolveAlias
10
- ? Object.fromEntries(Object.entries(webpackResolverOptions?.webpackResolveAlias).map(([key, value]) => [key, resolve(cwd, value)]))
11
- : undefined;
12
- /**
13
- * A resolver compatible with css-loader.
14
- *
15
- * @see https://github.com/webpack-contrib/css-loader/blob/897e7dd250ccdb0d31e6c66d4cd0d009f2022a85/src/plugins/postcss-import-parser.js#L228-L235
16
- */
17
- const cssLoaderResolver = enhancedResolve.create.sync({
18
- conditionNames: ['style'],
19
- // We are not sure how "..." affects behavior...
20
- mainFields: ['css', 'style', 'main', '...'],
21
- mainFiles: ['index', '...'],
22
- extensions: ['.css', '...'],
23
- preferRelative: true,
24
- alias: webpackResolveAlias ?? {},
25
- });
26
- /**
27
- * A resolver compatible with sass-loader.
28
- *
29
- * @see https://github.com/webpack-contrib/sass-loader/blob/49a578a218574ddc92a597c7e365b6c21960717e/src/utils.js#L531-L539
30
- */
31
- const sassLoaderResolver = enhancedResolve.create.sync({
32
- conditionNames: ['sass', 'style'],
33
- mainFields: ['sass', 'style', 'main', '...'],
34
- mainFiles: ['_index', 'index', '...'],
35
- extensions: ['.sass', '.scss', '.css'],
36
- restrictions: [/\.((sa|sc|c)ss)$/iu],
37
- preferRelative: true,
38
- alias: webpackResolveAlias ?? {},
39
- modules: ['node_modules', ...(sassLoadPaths ?? [])],
40
- });
41
- /**
42
- * A resolver compatible with less-loader.
43
- *
44
- * @see https://github.com/webpack-contrib/less-loader/blob/d74f740c100c4006b00dfb3e02c6d5aaf8713519/src/utils.js#L35-L42
45
- */
46
- const lessLoaderResolver = enhancedResolve.create.sync({
47
- conditionNames: ['less', 'style'],
48
- mainFields: ['less', 'style', 'main', '...'],
49
- mainFiles: ['index', '...'],
50
- extensions: ['.less', '.css'],
51
- preferRelative: true,
52
- alias: webpackResolveAlias ?? {},
53
- modules: ['node_modules', ...(lessIncludePaths ?? [])],
54
- });
55
- // NOTE: In theory, `sassLoaderResolver` should only be used when the resolver is called from `sassTransformer`.
56
- // However, we do not implement such behavior because it is cumbersome. If someone wants it, we will implement it.
57
- const resolvers = [cssLoaderResolver, sassLoaderResolver, lessLoaderResolver];
58
- return async (specifier, options) => {
59
- // `~` prefix is optional.
60
- // ref: https://github.com/webpack-contrib/css-loader/blob/5e6cf91fd3f0c8b5fb4b91197b98dc56abdef4bf/src/utils.js#L92-L95
61
- // ref: https://github.com/webpack-contrib/sass-loader/blob/49a578a218574ddc92a597c7e365b6c21960717e/src/utils.js#L368-L370
62
- // ref: https://github.com/webpack-contrib/less-loader/blob/d74f740c100c4006b00dfb3e02c6d5aaf8713519/src/utils.js#L72-L75
63
- // eslint-disable-next-line no-param-reassign
64
- if (specifier.startsWith('~'))
65
- specifier = specifier.slice(1);
66
- for (const resolver of resolvers) {
67
- const specifierVariants = resolver === sassLoaderResolver
68
- ? // Support partial import for sass
69
- // https://sass-lang.com/documentation/at-rules/import#partials
70
- // https://github.com/webpack-contrib/sass-loader/blob/0e9494074f69a6b6d47efea6c083a02a31a5ae84/test/sass/import-with-underscore.sass
71
- [join(dirname(specifier), `_${basename(specifier)}`), specifier]
72
- : [specifier];
73
- for (const specifierVariant of specifierVariants) {
74
- try {
75
- const resolved = resolver(dirname(options.request), specifierVariant);
76
- if (resolved !== false) {
77
- // eslint-disable-next-line no-await-in-loop
78
- const isExists = await exists(resolved);
79
- if (isExists)
80
- return resolved;
81
- }
82
- }
83
- catch (e) {
84
- // noop
85
- }
86
- }
87
- }
88
- return false;
89
- };
90
- };
91
- //# sourceMappingURL=webpack-resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webpack-resolver.js","sourceRoot":"","sources":["../../src/resolver/webpack-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AA0BpC,gDAAgD;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAA8E,CAC9G,sBAAsB,EACtB,EAAE;IACF,MAAM,GAAG,GAAG,sBAAsB,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzD,MAAM,aAAa,GAAG,sBAAsB,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/F,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACrG,MAAM,mBAAmB,GAAG,sBAAsB,EAAE,mBAAmB;QACrE,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAC9G;QACH,CAAC,CAAC,SAAS,CAAC;IACd;;;;OAIG;IACH,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;QACpD,cAAc,EAAE,CAAC,OAAO,CAAC;QACzB,gDAAgD;QAChD,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;QAC3C,SAAS,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;QAC3B,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;QAC3B,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,mBAAmB,IAAI,EAAE;KACjC,CAAC,CAAC;IAEH;;;;OAIG;IACH,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;QACrD,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACjC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;QAC5C,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC;QACrC,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;QACtC,YAAY,EAAE,CAAC,oBAAoB,CAAC;QACpC,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,mBAAmB,IAAI,EAAE;QAChC,OAAO,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;KACpD,CAAC,CAAC;IAEH;;;;OAIG;IACH,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;QACrD,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACjC,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;QAC5C,SAAS,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;QAC3B,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,IAAI;QACpB,KAAK,EAAE,mBAAmB,IAAI,EAAE;QAChC,OAAO,EAAE,CAAC,cAAc,EAAE,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;KACvD,CAAC,CAAC;IAEH,gHAAgH;IAChH,kHAAkH;IAClH,MAAM,SAAS,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QAClC,0BAA0B;QAC1B,wHAAwH;QACxH,2HAA2H;QAC3H,yHAAyH;QACzH,6CAA6C;QAC7C,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE9D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,iBAAiB,GACrB,QAAQ,KAAK,kBAAkB;gBAC7B,CAAC,CAAC,kCAAkC;oBAClC,+DAA+D;oBAC/D,qIAAqI;oBACrI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;gBAClE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAElB,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;gBACjD,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC;oBACtE,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;wBACvB,4CAA4C;wBAC5C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;wBACxC,IAAI,QAAQ;4BAAE,OAAO,QAAQ,CAAC;oBAChC,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};