happy-css-modules 3.2.0 → 5.0.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 (120) hide show
  1. package/LICENSE.txt +23 -0
  2. package/README.md +307 -2
  3. package/bin/hcm.js +1 -1
  4. package/dist/cli.d.ts +0 -4
  5. package/dist/cli.js +111 -118
  6. package/dist/cli.js.map +1 -1
  7. package/dist/emitter/dts.js +7 -8
  8. package/dist/emitter/dts.js.map +1 -1
  9. package/dist/emitter/dts.test.js +12 -12
  10. package/dist/emitter/file-system.js +2 -2
  11. package/dist/emitter/file-system.js.map +1 -1
  12. package/dist/emitter/file-system.test.js +1 -1
  13. package/dist/emitter/file-system.test.js.map +1 -1
  14. package/dist/emitter/index.js +1 -1
  15. package/dist/emitter/index.js.map +1 -1
  16. package/dist/emitter/index.test.js +2 -4
  17. package/dist/emitter/index.test.js.map +1 -1
  18. package/dist/emitter/source-map.js +1 -1
  19. package/dist/emitter/source-map.js.map +1 -1
  20. package/dist/emitter/source-map.test.js +1 -1
  21. package/dist/emitter/source-map.test.js.map +1 -1
  22. package/dist/integration-test/go-to-definition.test.js +403 -105
  23. package/dist/integration-test/go-to-definition.test.js.map +1 -1
  24. package/dist/locator/index.js +10 -8
  25. package/dist/locator/index.js.map +1 -1
  26. package/dist/locator/index.test.js +304 -171
  27. package/dist/locator/index.test.js.map +1 -1
  28. package/dist/locator/postcss.js +2 -3
  29. package/dist/locator/postcss.js.map +1 -1
  30. package/dist/locator/postcss.test.js +317 -73
  31. package/dist/locator/postcss.test.js.map +1 -1
  32. package/dist/logger.js +7 -6
  33. package/dist/logger.js.map +1 -1
  34. package/dist/regression-test/issue-168.test.js +3 -5
  35. package/dist/regression-test/issue-168.test.js.map +1 -1
  36. package/dist/resolver/index.d.ts +1 -1
  37. package/dist/resolver/index.js +3 -3
  38. package/dist/resolver/index.js.map +1 -1
  39. package/dist/resolver/node-resolver.js +1 -1
  40. package/dist/resolver/node-resolver.js.map +1 -1
  41. package/dist/resolver/relative-resolver.js +1 -1
  42. package/dist/resolver/relative-resolver.js.map +1 -1
  43. package/dist/resolver/webpack-resolver.d.ts +1 -1
  44. package/dist/resolver/webpack-resolver.js +4 -4
  45. package/dist/resolver/webpack-resolver.js.map +1 -1
  46. package/dist/runner.js +52 -21
  47. package/dist/runner.js.map +1 -1
  48. package/dist/runner.test.js +59 -43
  49. package/dist/runner.test.js.map +1 -1
  50. package/dist/test-util/line-column.d.ts +9 -0
  51. package/dist/test-util/line-column.js +16 -0
  52. package/dist/test-util/line-column.js.map +1 -0
  53. package/dist/test-util/line-column.test.d.ts +1 -0
  54. package/dist/test-util/line-column.test.js +21 -0
  55. package/dist/test-util/line-column.test.js.map +1 -0
  56. package/dist/test-util/tsserver.js +11 -12
  57. package/dist/test-util/tsserver.js.map +1 -1
  58. package/dist/test-util/util.d.ts +6 -0
  59. package/dist/test-util/util.js +23 -6
  60. package/dist/test-util/util.js.map +1 -1
  61. package/dist/transformer/index.d.ts +0 -1
  62. package/dist/transformer/index.js +1 -1
  63. package/dist/transformer/index.js.map +1 -1
  64. package/dist/transformer/index.test.js +17 -17
  65. package/dist/transformer/index.test.js.map +1 -1
  66. package/dist/transformer/less-transformer.js +4 -4
  67. package/dist/transformer/less-transformer.js.map +1 -1
  68. package/dist/transformer/less-transformer.test.js +76 -51
  69. package/dist/transformer/less-transformer.test.js.map +1 -1
  70. package/dist/transformer/postcss-transformer.test.js +58 -54
  71. package/dist/transformer/postcss-transformer.test.js.map +1 -1
  72. package/dist/transformer/scss-transformer.js +11 -30
  73. package/dist/transformer/scss-transformer.js.map +1 -1
  74. package/dist/transformer/scss-transformer.test.js +106 -54
  75. package/dist/transformer/scss-transformer.test.js.map +1 -1
  76. package/dist/util.js +6 -8
  77. package/dist/util.js.map +1 -1
  78. package/dist/util.test.js +2 -2
  79. package/dist/util.test.js.map +1 -1
  80. package/package.json +59 -35
  81. package/src/__snapshots__/runner.test.ts.snap +1 -1
  82. package/src/cli.ts +119 -117
  83. package/src/emitter/dts.test.ts +12 -12
  84. package/src/emitter/dts.ts +27 -28
  85. package/src/emitter/file-system.test.ts +1 -1
  86. package/src/emitter/file-system.ts +2 -2
  87. package/src/emitter/index.test.ts +2 -4
  88. package/src/emitter/index.ts +1 -1
  89. package/src/emitter/source-map.test.ts +1 -1
  90. package/src/emitter/source-map.ts +1 -1
  91. package/src/integration-test/go-to-definition.test.ts +405 -105
  92. package/src/locator/index.test.ts +304 -171
  93. package/src/locator/index.ts +6 -6
  94. package/src/locator/postcss.test.ts +317 -73
  95. package/src/locator/postcss.ts +2 -3
  96. package/src/logger.ts +6 -6
  97. package/src/regression-test/issue-168.test.ts +3 -5
  98. package/src/resolver/index.ts +4 -4
  99. package/src/resolver/node-resolver.ts +1 -1
  100. package/src/resolver/relative-resolver.ts +1 -1
  101. package/src/resolver/webpack-resolver.ts +5 -5
  102. package/src/runner.test.ts +66 -43
  103. package/src/runner.ts +53 -22
  104. package/src/test-util/line-column.test.ts +21 -0
  105. package/src/test-util/line-column.ts +15 -0
  106. package/src/test-util/tsserver.ts +11 -12
  107. package/src/test-util/util.ts +24 -6
  108. package/src/transformer/index.test.ts +17 -17
  109. package/src/transformer/index.ts +1 -1
  110. package/src/transformer/less-transformer.test.ts +74 -47
  111. package/src/transformer/less-transformer.ts +1 -3
  112. package/src/transformer/postcss-transformer.test.ts +58 -54
  113. package/src/transformer/scss-transformer.test.ts +108 -54
  114. package/src/transformer/scss-transformer.ts +13 -30
  115. package/src/util.test.ts +2 -2
  116. package/src/util.ts +6 -8
  117. package/dist/test-util/jest/resolver.cjs +0 -31
  118. package/dist/test-util/jest/resolver.cjs.map +0 -1
  119. package/dist/test-util/jest/resolver.d.cts +0 -16
  120. package/src/test-util/jest/resolver.cjs +0 -31
@@ -1,37 +1,48 @@
1
- import { readFile, writeFile } from 'fs/promises';
2
1
  import { randomUUID } from 'node:crypto';
3
- import { jest } from '@jest/globals';
2
+ import { readFile, writeFile } from 'node:fs/promises';
4
3
  import dedent from 'dedent';
5
4
  import { Locator, createDefaultTransformer } from '../index.js';
6
- import { createFixtures, getFixturePath } from '../test-util/util.js';
5
+ import { createFixtures, getFixturePath, replaceFixtureDir } from '../test-util/util.js';
7
6
  import { sleepSync } from '../util.js';
8
7
  const locator = new Locator();
9
8
  test('basic', async () => {
10
9
  createFixtures({
11
10
  '/test/1.css': dedent `
12
- .a {}
13
- .b {}
11
+ .a {}
12
+ .b {}
14
13
  `,
15
14
  });
16
15
  const result = await locator.load(getFixturePath('/test/1.css'));
17
- expect(result).toMatchInlineSnapshot(`
16
+ expect(replaceFixtureDir(result)).toMatchInlineSnapshot(`
18
17
  {
19
- dependencies: [],
20
- tokens: [
18
+ "dependencies": [],
19
+ "tokens": [
21
20
  {
22
- name: "a",
23
- originalLocation: {
24
- filePath: "<fixtures>/test/1.css",
25
- start: { line: 1, column: 1 },
26
- end: { line: 1, column: 2 },
21
+ "name": "a",
22
+ "originalLocation": {
23
+ "end": {
24
+ "column": 2,
25
+ "line": 1,
26
+ },
27
+ "filePath": "<fixtures>/test/1.css",
28
+ "start": {
29
+ "column": 1,
30
+ "line": 1,
31
+ },
27
32
  },
28
33
  },
29
34
  {
30
- name: "b",
31
- originalLocation: {
32
- filePath: "<fixtures>/test/1.css",
33
- start: { line: 2, column: 1 },
34
- end: { line: 2, column: 2 },
35
+ "name": "b",
36
+ "originalLocation": {
37
+ "end": {
38
+ "column": 2,
39
+ "line": 2,
40
+ },
41
+ "filePath": "<fixtures>/test/1.css",
42
+ "start": {
43
+ "column": 1,
44
+ "line": 2,
45
+ },
35
46
  },
36
47
  },
37
48
  ],
@@ -41,68 +52,92 @@ test('basic', async () => {
41
52
  test('tracks other files when `@import` is present', async () => {
42
53
  createFixtures({
43
54
  '/test/1.css': dedent `
44
- @import './2.css';
45
- @import '3.css';
46
- @import '${getFixturePath('/test/4.css')}';
47
- @import './5.css';
55
+ @import './2.css';
56
+ @import '3.css';
57
+ @import '${getFixturePath('/test/4.css')}';
58
+ @import './5.css';
48
59
  `,
49
60
  '/test/2.css': dedent `
50
- .a {}
61
+ .a {}
51
62
  `,
52
63
  '/test/3.css': dedent `
53
- .b {}
64
+ .b {}
54
65
  `,
55
66
  '/test/4.css': dedent `
56
- .c {}
67
+ .c {}
57
68
  `,
58
69
  '/test/5.css': dedent `
59
- @import './5-recursive.css';
70
+ @import './5-recursive.css';
60
71
  `,
61
72
  '/test/5-recursive.css': dedent `
62
- .d {}
73
+ .d {}
63
74
  `,
64
75
  });
65
76
  const result = await locator.load(getFixturePath('/test/1.css'));
66
- expect(result).toMatchInlineSnapshot(`
77
+ expect(replaceFixtureDir(result)).toMatchInlineSnapshot(`
67
78
  {
68
- dependencies: [
79
+ "dependencies": [
69
80
  "<fixtures>/test/2.css",
70
81
  "<fixtures>/test/3.css",
71
82
  "<fixtures>/test/4.css",
72
83
  "<fixtures>/test/5.css",
73
84
  "<fixtures>/test/5-recursive.css",
74
85
  ],
75
- tokens: [
86
+ "tokens": [
76
87
  {
77
- name: "a",
78
- originalLocation: {
79
- filePath: "<fixtures>/test/2.css",
80
- start: { line: 1, column: 1 },
81
- end: { line: 1, column: 2 },
88
+ "name": "a",
89
+ "originalLocation": {
90
+ "end": {
91
+ "column": 2,
92
+ "line": 1,
93
+ },
94
+ "filePath": "<fixtures>/test/2.css",
95
+ "start": {
96
+ "column": 1,
97
+ "line": 1,
98
+ },
82
99
  },
83
100
  },
84
101
  {
85
- name: "b",
86
- originalLocation: {
87
- filePath: "<fixtures>/test/3.css",
88
- start: { line: 1, column: 1 },
89
- end: { line: 1, column: 2 },
102
+ "name": "b",
103
+ "originalLocation": {
104
+ "end": {
105
+ "column": 2,
106
+ "line": 1,
107
+ },
108
+ "filePath": "<fixtures>/test/3.css",
109
+ "start": {
110
+ "column": 1,
111
+ "line": 1,
112
+ },
90
113
  },
91
114
  },
92
115
  {
93
- name: "c",
94
- originalLocation: {
95
- filePath: "<fixtures>/test/4.css",
96
- start: { line: 1, column: 1 },
97
- end: { line: 1, column: 2 },
116
+ "name": "c",
117
+ "originalLocation": {
118
+ "end": {
119
+ "column": 2,
120
+ "line": 1,
121
+ },
122
+ "filePath": "<fixtures>/test/4.css",
123
+ "start": {
124
+ "column": 1,
125
+ "line": 1,
126
+ },
98
127
  },
99
128
  },
100
129
  {
101
- name: "d",
102
- originalLocation: {
103
- filePath: "<fixtures>/test/5-recursive.css",
104
- start: { line: 1, column: 1 },
105
- end: { line: 1, column: 2 },
130
+ "name": "d",
131
+ "originalLocation": {
132
+ "end": {
133
+ "column": 2,
134
+ "line": 1,
135
+ },
136
+ "filePath": "<fixtures>/test/5-recursive.css",
137
+ "start": {
138
+ "column": 1,
139
+ "line": 1,
140
+ },
106
141
  },
107
142
  },
108
143
  ],
@@ -112,26 +147,32 @@ test('tracks other files when `@import` is present', async () => {
112
147
  test('does not track other files by `composes`', async () => {
113
148
  createFixtures({
114
149
  '/test/1.css': dedent `
115
- .a {
116
- composes: b from './2.css';
117
- composes: c from './3.css'; /* non-existent file */
118
- }
150
+ .a {
151
+ composes: b from './2.css';
152
+ composes: c from './3.css'; /* non-existent file */
153
+ }
119
154
  `,
120
155
  '/test/2.css': dedent `
121
- .b {}
156
+ .b {}
122
157
  `,
123
158
  });
124
159
  const result = await locator.load(getFixturePath('/test/1.css'));
125
- expect(result).toMatchInlineSnapshot(`
160
+ expect(replaceFixtureDir(result)).toMatchInlineSnapshot(`
126
161
  {
127
- dependencies: [],
128
- tokens: [
162
+ "dependencies": [],
163
+ "tokens": [
129
164
  {
130
- name: "a",
131
- originalLocation: {
132
- filePath: "<fixtures>/test/1.css",
133
- start: { line: 1, column: 1 },
134
- end: { line: 1, column: 2 },
165
+ "name": "a",
166
+ "originalLocation": {
167
+ "end": {
168
+ "column": 2,
169
+ "line": 1,
170
+ },
171
+ "filePath": "<fixtures>/test/1.css",
172
+ "start": {
173
+ "column": 1,
174
+ "line": 1,
175
+ },
135
176
  },
136
177
  },
137
178
  ],
@@ -141,47 +182,69 @@ test('does not track other files by `composes`', async () => {
141
182
  test('tracks other files when `@value` is present', async () => {
142
183
  createFixtures({
143
184
  '/test/1.css': dedent `
144
- @value a from './2.css';
145
- @value b from '3.css';
146
- @value c from '${getFixturePath('/test/4.css')}';
185
+ @value a from './2.css';
186
+ @value b from '3.css';
187
+ @value c from '${getFixturePath('/test/4.css')}';
147
188
  `,
148
189
  '/test/2.css': dedent `
149
- @value a: 1;
190
+ @value a: 1;
150
191
  `,
151
192
  '/test/3.css': dedent `
152
- @value b: 2;
193
+ @value b: 2;
153
194
  `,
154
195
  '/test/4.css': dedent `
155
- @value c: 3;
196
+ @value c: 3;
156
197
  `,
157
198
  });
158
199
  const result = await locator.load(getFixturePath('/test/1.css'));
159
- expect(result).toMatchInlineSnapshot(`
200
+ expect(replaceFixtureDir(result)).toMatchInlineSnapshot(`
160
201
  {
161
- dependencies: ["<fixtures>/test/2.css", "<fixtures>/test/3.css", "<fixtures>/test/4.css"],
162
- tokens: [
202
+ "dependencies": [
203
+ "<fixtures>/test/2.css",
204
+ "<fixtures>/test/3.css",
205
+ "<fixtures>/test/4.css",
206
+ ],
207
+ "tokens": [
163
208
  {
164
- name: "a",
165
- originalLocation: {
166
- filePath: "<fixtures>/test/2.css",
167
- start: { line: 1, column: 8 },
168
- end: { line: 1, column: 9 },
209
+ "name": "a",
210
+ "originalLocation": {
211
+ "end": {
212
+ "column": 9,
213
+ "line": 1,
214
+ },
215
+ "filePath": "<fixtures>/test/2.css",
216
+ "start": {
217
+ "column": 8,
218
+ "line": 1,
219
+ },
169
220
  },
170
221
  },
171
222
  {
172
- name: "b",
173
- originalLocation: {
174
- filePath: "<fixtures>/test/3.css",
175
- start: { line: 1, column: 8 },
176
- end: { line: 1, column: 9 },
223
+ "name": "b",
224
+ "originalLocation": {
225
+ "end": {
226
+ "column": 9,
227
+ "line": 1,
228
+ },
229
+ "filePath": "<fixtures>/test/3.css",
230
+ "start": {
231
+ "column": 8,
232
+ "line": 1,
233
+ },
177
234
  },
178
235
  },
179
236
  {
180
- name: "c",
181
- originalLocation: {
182
- filePath: "<fixtures>/test/4.css",
183
- start: { line: 1, column: 8 },
184
- end: { line: 1, column: 9 },
237
+ "name": "c",
238
+ "originalLocation": {
239
+ "end": {
240
+ "column": 9,
241
+ "line": 1,
242
+ },
243
+ "filePath": "<fixtures>/test/4.css",
244
+ "start": {
245
+ "column": 8,
246
+ "line": 1,
247
+ },
185
248
  },
186
249
  },
187
250
  ],
@@ -191,52 +254,78 @@ test('tracks other files when `@value` is present', async () => {
191
254
  test('unique tokens', async () => {
192
255
  createFixtures({
193
256
  '/test/1.css': dedent `
194
- /* duplicate import */
195
- @import './2.css';
196
- @import '2.css';
197
- .a {}
198
- .a {} /* duplicate class selector */
257
+ /* duplicate import */
258
+ @import './2.css';
259
+ @import '2.css';
260
+ .a {}
261
+ .a {} /* duplicate class selector */
199
262
  `,
200
263
  '/test/2.css': dedent `
201
- .a {} /* class selector that duplicates the import source */
202
- .b {}
264
+ .a {} /* class selector that duplicates the import source */
265
+ .b {}
203
266
  `,
204
267
  });
205
268
  const result = await locator.load(getFixturePath('/test/1.css'));
206
- expect(result).toMatchInlineSnapshot(`
269
+ expect(replaceFixtureDir(result)).toMatchInlineSnapshot(`
207
270
  {
208
- dependencies: ["<fixtures>/test/2.css"],
209
- tokens: [
271
+ "dependencies": [
272
+ "<fixtures>/test/2.css",
273
+ ],
274
+ "tokens": [
210
275
  {
211
- name: "a",
212
- originalLocation: {
213
- filePath: "<fixtures>/test/2.css",
214
- start: { line: 1, column: 1 },
215
- end: { line: 1, column: 2 },
276
+ "name": "a",
277
+ "originalLocation": {
278
+ "end": {
279
+ "column": 2,
280
+ "line": 1,
281
+ },
282
+ "filePath": "<fixtures>/test/2.css",
283
+ "start": {
284
+ "column": 1,
285
+ "line": 1,
286
+ },
216
287
  },
217
288
  },
218
289
  {
219
- name: "b",
220
- originalLocation: {
221
- filePath: "<fixtures>/test/2.css",
222
- start: { line: 2, column: 1 },
223
- end: { line: 2, column: 2 },
290
+ "name": "b",
291
+ "originalLocation": {
292
+ "end": {
293
+ "column": 2,
294
+ "line": 2,
295
+ },
296
+ "filePath": "<fixtures>/test/2.css",
297
+ "start": {
298
+ "column": 1,
299
+ "line": 2,
300
+ },
224
301
  },
225
302
  },
226
303
  {
227
- name: "a",
228
- originalLocation: {
229
- filePath: "<fixtures>/test/1.css",
230
- start: { line: 4, column: 1 },
231
- end: { line: 4, column: 2 },
304
+ "name": "a",
305
+ "originalLocation": {
306
+ "end": {
307
+ "column": 2,
308
+ "line": 4,
309
+ },
310
+ "filePath": "<fixtures>/test/1.css",
311
+ "start": {
312
+ "column": 1,
313
+ "line": 4,
314
+ },
232
315
  },
233
316
  },
234
317
  {
235
- name: "a",
236
- originalLocation: {
237
- filePath: "<fixtures>/test/1.css",
238
- start: { line: 5, column: 1 },
239
- end: { line: 5, column: 2 },
318
+ "name": "a",
319
+ "originalLocation": {
320
+ "end": {
321
+ "column": 2,
322
+ "line": 5,
323
+ },
324
+ "filePath": "<fixtures>/test/1.css",
325
+ "start": {
326
+ "column": 1,
327
+ "line": 5,
328
+ },
240
329
  },
241
330
  },
242
331
  ],
@@ -246,19 +335,19 @@ test('unique tokens', async () => {
246
335
  test('returns the result from the cache when the file has not been modified', async () => {
247
336
  createFixtures({
248
337
  '/test/1.css': dedent `
249
- @import './2.css';
250
- @import './3.css';
338
+ @import './2.css';
339
+ @import './3.css';
251
340
  `,
252
341
  '/test/2.css': dedent `
253
- .b {}
342
+ .b {}
254
343
  `,
255
344
  '/test/3.css': dedent `
256
- .c {}
257
- .d {}
345
+ .c {}
346
+ .d {}
258
347
  `,
259
348
  });
260
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
261
- const readCSSSpy = jest.spyOn(locator, 'readCSS');
349
+ // oxlint-disable-next-line typescript/no-explicit-any
350
+ const readCSSSpy = vi.spyOn(locator, 'readCSS');
262
351
  await locator.load(getFixturePath('/test/1.css'));
263
352
  expect(readCSSSpy).toHaveBeenCalledTimes(3);
264
353
  expect(readCSSSpy).toHaveBeenNthCalledWith(1, getFixturePath('/test/1.css'));
@@ -286,41 +375,59 @@ describe('supports sourcemap', () => {
286
375
  const locator = new Locator({ transformer });
287
376
  createFixtures({
288
377
  '/test/1.scss': dedent `
289
- .nesting {
290
- dummy: '';
291
- .nesting_child {
378
+ .nesting {
292
379
  dummy: '';
380
+ .nesting_child {
381
+ dummy: '';
382
+ }
293
383
  }
294
- }
295
384
  `,
296
385
  });
297
386
  const result = await locator.load(getFixturePath('/test/1.scss'));
298
- expect(result).toMatchInlineSnapshot(`
387
+ expect(replaceFixtureDir(result)).toMatchInlineSnapshot(`
299
388
  {
300
- dependencies: [],
301
- tokens: [
389
+ "dependencies": [],
390
+ "tokens": [
302
391
  {
303
- name: "nesting",
304
- originalLocation: {
305
- filePath: "<fixtures>/test/1.scss",
306
- start: { line: 1, column: 1 },
307
- end: { line: 1, column: 8 },
392
+ "name": "nesting",
393
+ "originalLocation": {
394
+ "end": {
395
+ "column": 8,
396
+ "line": 1,
397
+ },
398
+ "filePath": "<fixtures>/test/1.scss",
399
+ "start": {
400
+ "column": 1,
401
+ "line": 1,
402
+ },
308
403
  },
309
404
  },
310
405
  {
311
- name: "nesting",
312
- originalLocation: {
313
- filePath: "<fixtures>/test/1.scss",
314
- start: { line: 3, column: 3 },
315
- end: { line: 3, column: 10 },
406
+ "name": "nesting",
407
+ "originalLocation": {
408
+ "end": {
409
+ "column": 10,
410
+ "line": 3,
411
+ },
412
+ "filePath": "<fixtures>/test/1.scss",
413
+ "start": {
414
+ "column": 3,
415
+ "line": 3,
416
+ },
316
417
  },
317
418
  },
318
419
  {
319
- name: "nesting_child",
320
- originalLocation: {
321
- filePath: "<fixtures>/test/1.scss",
322
- start: { line: 3, column: 3 },
323
- end: { line: 3, column: 16 },
420
+ "name": "nesting_child",
421
+ "originalLocation": {
422
+ "end": {
423
+ "column": 16,
424
+ "line": 3,
425
+ },
426
+ "filePath": "<fixtures>/test/1.scss",
427
+ "start": {
428
+ "column": 3,
429
+ "line": 3,
430
+ },
324
431
  },
325
432
  },
326
433
  ],
@@ -331,42 +438,68 @@ describe('supports sourcemap', () => {
331
438
  const uuid = randomUUID();
332
439
  createFixtures({
333
440
  [`/${uuid}/postcss.config.js`]: dedent `
334
- module.exports = {
335
- plugins: [],
336
- };
441
+ module.exports = {
442
+ plugins: [],
443
+ };
337
444
  `,
338
445
  '/test/1.css': dedent `
339
- .selector_list_a_1, .selector_list_a_2 {}
340
- /* In postcss, including newlines in the selector list breaks the sourcemap. */
341
- .selector_list_b_1,
342
- .selector_list_b_2 {}
446
+ .selector_list_a_1, .selector_list_a_2 {}
447
+ /* In postcss, including newlines in the selector list breaks the sourcemap. */
448
+ .selector_list_b_1,
449
+ .selector_list_b_2 {}
343
450
  `,
344
451
  });
345
452
  const transformer = createDefaultTransformer({ postcssConfig: getFixturePath(`/${uuid}/postcss.config.js`) });
346
453
  const locator = new Locator({ transformer });
347
454
  const result = await locator.load(getFixturePath('/test/1.css'));
348
- expect(result).toMatchInlineSnapshot(`
455
+ expect(replaceFixtureDir(result)).toMatchInlineSnapshot(`
349
456
  {
350
- dependencies: [],
351
- tokens: [
457
+ "dependencies": [],
458
+ "tokens": [
459
+ {
460
+ "name": "selector_list_a_1",
461
+ "originalLocation": {
462
+ "end": {
463
+ "column": 18,
464
+ "line": 1,
465
+ },
466
+ "filePath": "<fixtures>/test/1.css",
467
+ "start": {
468
+ "column": 1,
469
+ "line": 1,
470
+ },
471
+ },
472
+ },
473
+ {
474
+ "name": "selector_list_a_2",
475
+ "originalLocation": {
476
+ "end": {
477
+ "column": 18,
478
+ "line": 1,
479
+ },
480
+ "filePath": "<fixtures>/test/1.css",
481
+ "start": {
482
+ "column": 1,
483
+ "line": 1,
484
+ },
485
+ },
486
+ },
352
487
  {
353
- name: "selector_list_a_1",
354
- originalLocation: {
355
- filePath: "<fixtures>/test/1.css",
356
- start: { line: 1, column: 1 },
357
- end: { line: 1, column: 18 },
488
+ "name": "selector_list_b_1",
489
+ "originalLocation": {
490
+ "end": undefined,
491
+ "filePath": undefined,
492
+ "start": undefined,
358
493
  },
359
494
  },
360
495
  {
361
- name: "selector_list_a_2",
362
- originalLocation: {
363
- filePath: "<fixtures>/test/1.css",
364
- start: { line: 1, column: 1 },
365
- end: { line: 1, column: 18 },
496
+ "name": "selector_list_b_2",
497
+ "originalLocation": {
498
+ "end": undefined,
499
+ "filePath": undefined,
500
+ "start": undefined,
366
501
  },
367
502
  },
368
- { name: "selector_list_b_1", originalLocation: {} },
369
- { name: "selector_list_b_2", originalLocation: {} },
370
503
  ],
371
504
  }
372
505
  `);
@@ -375,8 +508,8 @@ describe('supports sourcemap', () => {
375
508
  test('ignores http(s) protocol file', async () => {
376
509
  createFixtures({
377
510
  '/test/1.css': dedent `
378
- @import 'http://example.com/path/http.css';
379
- @import 'https://example.com/path/https.css';
511
+ @import 'http://example.com/path/http.css';
512
+ @import 'https://example.com/path/https.css';
380
513
  `,
381
514
  });
382
515
  const result = await locator.load(getFixturePath('/test/1.css'));
@@ -388,6 +521,6 @@ test('block concurrent calls to load method', async () => {
388
521
  });
389
522
  await expect(async () => {
390
523
  await Promise.all([locator.load(getFixturePath('/test/1.css')), locator.load(getFixturePath('/test/1.css'))]);
391
- }).rejects.toThrowError('Cannot call `Locator#load` concurrently.');
524
+ }).rejects.toThrow('Cannot call `Locator#load` concurrently.');
392
525
  });
393
526
  //# sourceMappingURL=index.test.js.map