happy-css-modules 4.0.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 (114) 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 +3 -4
  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 +1 -2
  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 +303 -169
  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 +2 -3
  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 +50 -18
  47. package/dist/runner.js.map +1 -1
  48. package/dist/runner.test.js +47 -32
  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 +22 -5
  60. package/dist/test-util/util.js.map +1 -1
  61. package/dist/transformer/index.js +1 -1
  62. package/dist/transformer/index.js.map +1 -1
  63. package/dist/transformer/index.test.js +17 -17
  64. package/dist/transformer/index.test.js.map +1 -1
  65. package/dist/transformer/less-transformer.js +4 -4
  66. package/dist/transformer/less-transformer.js.map +1 -1
  67. package/dist/transformer/less-transformer.test.js +75 -49
  68. package/dist/transformer/less-transformer.test.js.map +1 -1
  69. package/dist/transformer/postcss-transformer.test.js +56 -50
  70. package/dist/transformer/postcss-transformer.test.js.map +1 -1
  71. package/dist/transformer/scss-transformer.js +0 -1
  72. package/dist/transformer/scss-transformer.js.map +1 -1
  73. package/dist/transformer/scss-transformer.test.js +105 -52
  74. package/dist/transformer/scss-transformer.test.js.map +1 -1
  75. package/dist/util.js +6 -8
  76. package/dist/util.js.map +1 -1
  77. package/dist/util.test.js +2 -2
  78. package/dist/util.test.js.map +1 -1
  79. package/package.json +58 -34
  80. package/src/cli.ts +119 -117
  81. package/src/emitter/dts.test.ts +12 -12
  82. package/src/emitter/dts.ts +25 -26
  83. package/src/emitter/file-system.test.ts +1 -1
  84. package/src/emitter/file-system.ts +2 -2
  85. package/src/emitter/index.test.ts +1 -2
  86. package/src/emitter/index.ts +1 -1
  87. package/src/emitter/source-map.test.ts +1 -1
  88. package/src/emitter/source-map.ts +1 -1
  89. package/src/integration-test/go-to-definition.test.ts +405 -105
  90. package/src/locator/index.test.ts +303 -169
  91. package/src/locator/index.ts +6 -6
  92. package/src/locator/postcss.test.ts +317 -73
  93. package/src/locator/postcss.ts +2 -3
  94. package/src/logger.ts +6 -6
  95. package/src/regression-test/issue-168.test.ts +2 -3
  96. package/src/resolver/index.ts +4 -4
  97. package/src/resolver/node-resolver.ts +1 -1
  98. package/src/resolver/relative-resolver.ts +1 -1
  99. package/src/resolver/webpack-resolver.ts +5 -5
  100. package/src/runner.test.ts +54 -32
  101. package/src/runner.ts +51 -19
  102. package/src/test-util/line-column.test.ts +21 -0
  103. package/src/test-util/line-column.ts +15 -0
  104. package/src/test-util/tsserver.ts +11 -12
  105. package/src/test-util/util.ts +23 -5
  106. package/src/transformer/index.test.ts +17 -17
  107. package/src/transformer/index.ts +1 -1
  108. package/src/transformer/less-transformer.test.ts +73 -45
  109. package/src/transformer/less-transformer.ts +1 -3
  110. package/src/transformer/postcss-transformer.test.ts +56 -50
  111. package/src/transformer/scss-transformer.test.ts +107 -52
  112. package/src/transformer/scss-transformer.ts +0 -1
  113. package/src/util.test.ts +2 -2
  114. package/src/util.ts +6 -8
@@ -1,7 +1,7 @@
1
1
  import dedent from 'dedent';
2
2
  import { run } from '../runner.js';
3
3
  import { createTSServer } from '../test-util/tsserver.js';
4
- import { createFixtures, getFixturePath } from '../test-util/util.js';
4
+ import { createFixtures, getFixturePath, replaceFixtureDir } from '../test-util/util.js';
5
5
  const server = createTSServer();
6
6
  const defaultOptions = {
7
7
  pattern: 'test/**/*.{css,scss}',
@@ -10,32 +10,40 @@ const defaultOptions = {
10
10
  cwd: getFixturePath('/'),
11
11
  cache: false,
12
12
  };
13
+ vi.mock('sass', async (importOriginal) => {
14
+ const sass = await importOriginal();
15
+ return {
16
+ ...sass,
17
+ // Suppress the warning: `Sass @import rules are deprecated and will be removed in Dart Sass 3.0.0.`
18
+ compileStringAsync: async (source, options) => sass.compileStringAsync(source, { silenceDeprecations: ['import'], ...options }),
19
+ };
20
+ });
13
21
  afterAll(async () => {
14
22
  await server.exit();
15
23
  });
16
24
  test('basic', async () => {
17
25
  createFixtures({
18
26
  '/test/1.css': dedent `
19
- .basic {}
20
- .cascading {}
21
- .cascading {}
22
- .pseudo_class_1 {}
23
- .pseudo_class_2:hover {}
24
- :not(.pseudo_class_3) {}
25
- .multiple_selector_1.multiple_selector_2 {}
26
- .combinator_1 + .combinator_2 {}
27
- @supports (display: flex) {
28
- @media screen and (min-width: 900px) {
29
- .at_rule {}
27
+ .basic {}
28
+ .cascading {}
29
+ .cascading {}
30
+ .pseudo_class_1 {}
31
+ .pseudo_class_2:hover {}
32
+ :not(.pseudo_class_3) {}
33
+ .multiple_selector_1.multiple_selector_2 {}
34
+ .combinator_1 + .combinator_2 {}
35
+ @supports (display: flex) {
36
+ @media screen and (min-width: 900px) {
37
+ .at_rule {}
38
+ }
39
+ }
40
+ .selector_list_1, .selector_list_2 {}
41
+ :local .local_class_name_1 {}
42
+ :local {
43
+ .local_class_name_2 {}
44
+ .local_class_name_3 {}
30
45
  }
31
- }
32
- .selector_list_1, .selector_list_2 {}
33
- :local .local_class_name_1 {}
34
- :local {
35
- .local_class_name_2 {}
36
- .local_class_name_3 {}
37
- }
38
- :local(.local_class_name_4) {}
46
+ :local(.local_class_name_4) {}
39
47
  `,
40
48
  });
41
49
  await run({ ...defaultOptions });
@@ -58,196 +66,409 @@ test('basic', async () => {
58
66
  'local_class_name_4',
59
67
  ]);
60
68
  // FIXME: Fix an issue where the text at definition destination was incorrect.
61
- expect(results).toMatchInlineSnapshot(`
69
+ expect(replaceFixtureDir(results)).toMatchInlineSnapshot(`
62
70
  [
63
71
  {
64
72
  "definitions": [
65
- { file: "<fixtures>/test/1.css", text: ".basic ", start: { line: 1, offset: 1 }, end: { line: 1, offset: 8 } },
73
+ {
74
+ "end": {
75
+ "line": 1,
76
+ "offset": 8,
77
+ },
78
+ "file": "<fixtures>/test/1.css",
79
+ "start": {
80
+ "line": 1,
81
+ "offset": 1,
82
+ },
83
+ "text": ".basic ",
84
+ },
66
85
  ],
67
86
  "identifier": "basic",
68
87
  },
69
88
  {
70
89
  "definitions": [
71
- { file: "<fixtures>/test/1.css", text: ".cascading ", start: { line: 2, offset: 1 }, end: { line: 2, offset: 12 } },
72
- { file: "<fixtures>/test/1.css", text: ".cascading ", start: { line: 3, offset: 1 }, end: { line: 3, offset: 12 } },
90
+ {
91
+ "end": {
92
+ "line": 2,
93
+ "offset": 12,
94
+ },
95
+ "file": "<fixtures>/test/1.css",
96
+ "start": {
97
+ "line": 2,
98
+ "offset": 1,
99
+ },
100
+ "text": ".cascading ",
101
+ },
102
+ {
103
+ "end": {
104
+ "line": 3,
105
+ "offset": 12,
106
+ },
107
+ "file": "<fixtures>/test/1.css",
108
+ "start": {
109
+ "line": 3,
110
+ "offset": 1,
111
+ },
112
+ "text": ".cascading ",
113
+ },
73
114
  ],
74
115
  "identifier": "cascading",
75
116
  },
76
117
  {
77
118
  "definitions": [
78
- { file: "<fixtures>/test/1.css", text: ".pseudo_class_1 ", start: { line: 4, offset: 1 }, end: { line: 4, offset: 17 } },
119
+ {
120
+ "end": {
121
+ "line": 4,
122
+ "offset": 17,
123
+ },
124
+ "file": "<fixtures>/test/1.css",
125
+ "start": {
126
+ "line": 4,
127
+ "offset": 1,
128
+ },
129
+ "text": ".pseudo_class_1 ",
130
+ },
79
131
  ],
80
132
  "identifier": "pseudo_class_1",
81
133
  },
82
134
  {
83
135
  "definitions": [
84
- { file: "<fixtures>/test/1.css", text: ".pseudo_class_2:", start: { line: 5, offset: 1 }, end: { line: 5, offset: 17 } },
136
+ {
137
+ "end": {
138
+ "line": 5,
139
+ "offset": 17,
140
+ },
141
+ "file": "<fixtures>/test/1.css",
142
+ "start": {
143
+ "line": 5,
144
+ "offset": 1,
145
+ },
146
+ "text": ".pseudo_class_2:",
147
+ },
85
148
  ],
86
149
  "identifier": "pseudo_class_2",
87
150
  },
88
151
  {
89
152
  "definitions": [
90
- { file: "<fixtures>/test/1.css", text: ".pseudo_class_3)", start: { line: 6, offset: 6 }, end: { line: 6, offset: 22 } },
153
+ {
154
+ "end": {
155
+ "line": 6,
156
+ "offset": 22,
157
+ },
158
+ "file": "<fixtures>/test/1.css",
159
+ "start": {
160
+ "line": 6,
161
+ "offset": 6,
162
+ },
163
+ "text": ".pseudo_class_3)",
164
+ },
91
165
  ],
92
166
  "identifier": "pseudo_class_3",
93
167
  },
94
168
  {
95
169
  "definitions": [
96
170
  {
97
- file: "<fixtures>/test/1.css",
98
- text: ".multiple_selector_1.",
99
- start: { line: 7, offset: 1 },
100
- end: { line: 7, offset: 22 },
101
- },
171
+ "end": {
172
+ "line": 7,
173
+ "offset": 22,
174
+ },
175
+ "file": "<fixtures>/test/1.css",
176
+ "start": {
177
+ "line": 7,
178
+ "offset": 1,
179
+ },
180
+ "text": ".multiple_selector_1.",
181
+ },
102
182
  ],
103
183
  "identifier": "multiple_selector_1",
104
184
  },
105
185
  {
106
186
  "definitions": [
107
187
  {
108
- file: "<fixtures>/test/1.css",
109
- text: ".multiple_selector_2 ",
110
- start: { line: 7, offset: 21 },
111
- end: { line: 7, offset: 42 },
112
- },
188
+ "end": {
189
+ "line": 7,
190
+ "offset": 42,
191
+ },
192
+ "file": "<fixtures>/test/1.css",
193
+ "start": {
194
+ "line": 7,
195
+ "offset": 21,
196
+ },
197
+ "text": ".multiple_selector_2 ",
198
+ },
113
199
  ],
114
200
  "identifier": "multiple_selector_2",
115
201
  },
116
202
  {
117
203
  "definitions": [
118
- { file: "<fixtures>/test/1.css", text: ".combinator_1 ", start: { line: 8, offset: 1 }, end: { line: 8, offset: 15 } },
204
+ {
205
+ "end": {
206
+ "line": 8,
207
+ "offset": 15,
208
+ },
209
+ "file": "<fixtures>/test/1.css",
210
+ "start": {
211
+ "line": 8,
212
+ "offset": 1,
213
+ },
214
+ "text": ".combinator_1 ",
215
+ },
119
216
  ],
120
217
  "identifier": "combinator_1",
121
218
  },
122
219
  {
123
220
  "definitions": [
124
- { file: "<fixtures>/test/1.css", text: ".combinator_2 ", start: { line: 8, offset: 17 }, end: { line: 8, offset: 31 } },
221
+ {
222
+ "end": {
223
+ "line": 8,
224
+ "offset": 31,
225
+ },
226
+ "file": "<fixtures>/test/1.css",
227
+ "start": {
228
+ "line": 8,
229
+ "offset": 17,
230
+ },
231
+ "text": ".combinator_2 ",
232
+ },
125
233
  ],
126
234
  "identifier": "combinator_2",
127
235
  },
128
236
  {
129
237
  "definitions": [
130
- { file: "<fixtures>/test/1.css", text: ".at_rule ", start: { line: 11, offset: 5 }, end: { line: 11, offset: 14 } },
238
+ {
239
+ "end": {
240
+ "line": 11,
241
+ "offset": 14,
242
+ },
243
+ "file": "<fixtures>/test/1.css",
244
+ "start": {
245
+ "line": 11,
246
+ "offset": 5,
247
+ },
248
+ "text": ".at_rule ",
249
+ },
131
250
  ],
132
251
  "identifier": "at_rule",
133
252
  },
134
253
  {
135
254
  "definitions": [
136
255
  {
137
- file: "<fixtures>/test/1.css",
138
- text: ".selector_list_1,",
139
- start: { line: 14, offset: 1 },
140
- end: { line: 14, offset: 18 },
141
- },
256
+ "end": {
257
+ "line": 14,
258
+ "offset": 18,
259
+ },
260
+ "file": "<fixtures>/test/1.css",
261
+ "start": {
262
+ "line": 14,
263
+ "offset": 1,
264
+ },
265
+ "text": ".selector_list_1,",
266
+ },
142
267
  ],
143
268
  "identifier": "selector_list_1",
144
269
  },
145
270
  {
146
271
  "definitions": [
147
272
  {
148
- file: "<fixtures>/test/1.css",
149
- text: ".selector_list_2 ",
150
- start: { line: 14, offset: 19 },
151
- end: { line: 14, offset: 36 },
152
- },
273
+ "end": {
274
+ "line": 14,
275
+ "offset": 36,
276
+ },
277
+ "file": "<fixtures>/test/1.css",
278
+ "start": {
279
+ "line": 14,
280
+ "offset": 19,
281
+ },
282
+ "text": ".selector_list_2 ",
283
+ },
153
284
  ],
154
285
  "identifier": "selector_list_2",
155
286
  },
156
287
  {
157
288
  "definitions": [
158
289
  {
159
- file: "<fixtures>/test/1.css",
160
- text: ".local_class_name_1 ",
161
- start: { line: 15, offset: 8 },
162
- end: { line: 15, offset: 28 },
163
- },
290
+ "end": {
291
+ "line": 15,
292
+ "offset": 28,
293
+ },
294
+ "file": "<fixtures>/test/1.css",
295
+ "start": {
296
+ "line": 15,
297
+ "offset": 8,
298
+ },
299
+ "text": ".local_class_name_1 ",
300
+ },
164
301
  ],
165
302
  "identifier": "local_class_name_1",
166
303
  },
167
304
  {
168
305
  "definitions": [
169
306
  {
170
- file: "<fixtures>/test/1.css",
171
- text: ".local_class_name_2 ",
172
- start: { line: 17, offset: 3 },
173
- end: { line: 17, offset: 23 },
174
- },
307
+ "end": {
308
+ "line": 17,
309
+ "offset": 23,
310
+ },
311
+ "file": "<fixtures>/test/1.css",
312
+ "start": {
313
+ "line": 17,
314
+ "offset": 3,
315
+ },
316
+ "text": ".local_class_name_2 ",
317
+ },
175
318
  ],
176
319
  "identifier": "local_class_name_2",
177
320
  },
178
321
  {
179
322
  "definitions": [
180
323
  {
181
- file: "<fixtures>/test/1.css",
182
- text: ".local_class_name_3 ",
183
- start: { line: 18, offset: 3 },
184
- end: { line: 18, offset: 23 },
185
- },
324
+ "end": {
325
+ "line": 18,
326
+ "offset": 23,
327
+ },
328
+ "file": "<fixtures>/test/1.css",
329
+ "start": {
330
+ "line": 18,
331
+ "offset": 3,
332
+ },
333
+ "text": ".local_class_name_3 ",
334
+ },
186
335
  ],
187
336
  "identifier": "local_class_name_3",
188
337
  },
189
338
  {
190
339
  "definitions": [
191
340
  {
192
- file: "<fixtures>/test/1.css",
193
- text: ".local_class_name_4)",
194
- start: { line: 20, offset: 8 },
195
- end: { line: 20, offset: 28 },
196
- },
341
+ "end": {
342
+ "line": 20,
343
+ "offset": 28,
344
+ },
345
+ "file": "<fixtures>/test/1.css",
346
+ "start": {
347
+ "line": 20,
348
+ "offset": 8,
349
+ },
350
+ "text": ".local_class_name_4)",
351
+ },
197
352
  ],
198
353
  "identifier": "local_class_name_4",
199
354
  },
200
355
  ]
201
356
  `);
202
357
  const moduleDefinitions = await server.getModuleDefinitions(getFixturePath('/test/1.css'));
203
- expect(moduleDefinitions).toMatchInlineSnapshot(`
358
+ expect(replaceFixtureDir(moduleDefinitions)).toMatchInlineSnapshot(`
204
359
  [
205
- { file: "<fixtures>/test/1.css", text: "", start: { line: 1, offset: 1 }, end: { line: 1, offset: 1 } },
360
+ {
361
+ "end": {
362
+ "line": 1,
363
+ "offset": 1,
364
+ },
365
+ "file": "<fixtures>/test/1.css",
366
+ "start": {
367
+ "line": 1,
368
+ "offset": 1,
369
+ },
370
+ "text": "",
371
+ },
206
372
  ]
207
373
  `);
208
374
  });
209
375
  test('imported tokens', async () => {
210
376
  createFixtures({
211
377
  '/test/1.css': dedent `
212
- @import './2.css';
213
- .a {}
214
- .b {}
215
- .b {}
378
+ @import './2.css';
379
+ .a {}
380
+ .b {}
381
+ .b {}
216
382
  `,
217
383
  '/test/2.css': dedent `
218
- @import './3.css';
219
- .c {}
384
+ @import './3.css';
385
+ .c {}
220
386
  `,
221
387
  '/test/3.css': dedent `
222
- .d {}
388
+ .d {}
223
389
  `,
224
390
  });
225
391
  await run({ ...defaultOptions });
226
392
  const results = await server.getMultipleIdentifierDefinitions(getFixturePath(`/test/1.css`), ['a', 'b', 'c', 'd']);
227
- expect(results).toMatchInlineSnapshot(`
393
+ expect(replaceFixtureDir(results)).toMatchInlineSnapshot(`
228
394
  [
229
395
  {
230
396
  "definitions": [
231
- { file: "<fixtures>/test/1.css", text: ".a ", start: { line: 2, offset: 1 }, end: { line: 2, offset: 4 } },
397
+ {
398
+ "end": {
399
+ "line": 2,
400
+ "offset": 4,
401
+ },
402
+ "file": "<fixtures>/test/1.css",
403
+ "start": {
404
+ "line": 2,
405
+ "offset": 1,
406
+ },
407
+ "text": ".a ",
408
+ },
232
409
  ],
233
410
  "identifier": "a",
234
411
  },
235
412
  {
236
413
  "definitions": [
237
- { file: "<fixtures>/test/1.css", text: ".b ", start: { line: 3, offset: 1 }, end: { line: 3, offset: 4 } },
238
- { file: "<fixtures>/test/1.css", text: ".b ", start: { line: 4, offset: 1 }, end: { line: 4, offset: 4 } },
414
+ {
415
+ "end": {
416
+ "line": 3,
417
+ "offset": 4,
418
+ },
419
+ "file": "<fixtures>/test/1.css",
420
+ "start": {
421
+ "line": 3,
422
+ "offset": 1,
423
+ },
424
+ "text": ".b ",
425
+ },
426
+ {
427
+ "end": {
428
+ "line": 4,
429
+ "offset": 4,
430
+ },
431
+ "file": "<fixtures>/test/1.css",
432
+ "start": {
433
+ "line": 4,
434
+ "offset": 1,
435
+ },
436
+ "text": ".b ",
437
+ },
239
438
  ],
240
439
  "identifier": "b",
241
440
  },
242
441
  {
243
442
  "definitions": [
244
- { file: "<fixtures>/test/2.css", text: ".c ", start: { line: 2, offset: 1 }, end: { line: 2, offset: 4 } },
443
+ {
444
+ "end": {
445
+ "line": 2,
446
+ "offset": 4,
447
+ },
448
+ "file": "<fixtures>/test/2.css",
449
+ "start": {
450
+ "line": 2,
451
+ "offset": 1,
452
+ },
453
+ "text": ".c ",
454
+ },
245
455
  ],
246
456
  "identifier": "c",
247
457
  },
248
458
  {
249
459
  "definitions": [
250
- { file: "<fixtures>/test/3.css", text: ".d ", start: { line: 1, offset: 1 }, end: { line: 1, offset: 4 } },
460
+ {
461
+ "end": {
462
+ "line": 1,
463
+ "offset": 4,
464
+ },
465
+ "file": "<fixtures>/test/3.css",
466
+ "start": {
467
+ "line": 1,
468
+ "offset": 1,
469
+ },
470
+ "text": ".d ",
471
+ },
251
472
  ],
252
473
  "identifier": "d",
253
474
  },
@@ -257,22 +478,22 @@ test('imported tokens', async () => {
257
478
  test('with transformer', async () => {
258
479
  createFixtures({
259
480
  '/test/1.scss': dedent `
260
- @use './2.scss' as two; // sass feature test (@use)
261
- @import './3.scss'; // css feature test (@import)
262
- .basic { dummy: ''; }
263
- .nesting {
264
- dummy: '';
265
- // sass feature test (nesting)
266
- .nesting_1 { dummy: ''; }
267
- &_2 { dummy: ''; }
268
- }
481
+ @use './2.scss' as two; // sass feature test (@use)
482
+ @import './3.scss'; // css feature test (@import)
483
+ .basic { dummy: ''; }
484
+ .nesting {
485
+ dummy: '';
486
+ // sass feature test (nesting)
487
+ .nesting_1 { dummy: ''; }
488
+ &_2 { dummy: ''; }
489
+ }
269
490
  `,
270
491
  '/test/2.scss': dedent `
271
- .b_1 { dummy: ''; }
272
- @mixin b_2 { dummy: ''; }
492
+ .b_1 { dummy: ''; }
493
+ @mixin b_2 { dummy: ''; }
273
494
  `,
274
495
  '/test/3.scss': dedent `
275
- .c { dummy: ''; }
496
+ .c { dummy: ''; }
276
497
  `,
277
498
  });
278
499
  await run({ ...defaultOptions });
@@ -285,36 +506,102 @@ test('with transformer', async () => {
285
506
  'b_2',
286
507
  'c',
287
508
  ]);
288
- expect(results).toMatchInlineSnapshot(`
509
+ expect(replaceFixtureDir(results)).toMatchInlineSnapshot(`
289
510
  [
290
511
  {
291
512
  "definitions": [
292
- { file: "<fixtures>/test/1.scss", text: ".basic ", start: { line: 3, offset: 1 }, end: { line: 3, offset: 8 } },
513
+ {
514
+ "end": {
515
+ "line": 3,
516
+ "offset": 8,
517
+ },
518
+ "file": "<fixtures>/test/1.scss",
519
+ "start": {
520
+ "line": 3,
521
+ "offset": 1,
522
+ },
523
+ "text": ".basic ",
524
+ },
293
525
  ],
294
526
  "identifier": "basic",
295
527
  },
296
528
  {
297
529
  "definitions": [
298
- { file: "<fixtures>/test/1.scss", text: ".nesting ", start: { line: 4, offset: 1 }, end: { line: 4, offset: 10 } },
299
- { file: "<fixtures>/test/1.scss", text: ".nesting_", start: { line: 7, offset: 3 }, end: { line: 7, offset: 12 } },
530
+ {
531
+ "end": {
532
+ "line": 4,
533
+ "offset": 10,
534
+ },
535
+ "file": "<fixtures>/test/1.scss",
536
+ "start": {
537
+ "line": 4,
538
+ "offset": 1,
539
+ },
540
+ "text": ".nesting ",
541
+ },
542
+ {
543
+ "end": {
544
+ "line": 7,
545
+ "offset": 12,
546
+ },
547
+ "file": "<fixtures>/test/1.scss",
548
+ "start": {
549
+ "line": 7,
550
+ "offset": 3,
551
+ },
552
+ "text": ".nesting_",
553
+ },
300
554
  ],
301
555
  "identifier": "nesting",
302
556
  },
303
557
  {
304
558
  "definitions": [
305
- { file: "<fixtures>/test/1.scss", text: ".nesting_1 ", start: { line: 7, offset: 3 }, end: { line: 7, offset: 14 } },
559
+ {
560
+ "end": {
561
+ "line": 7,
562
+ "offset": 14,
563
+ },
564
+ "file": "<fixtures>/test/1.scss",
565
+ "start": {
566
+ "line": 7,
567
+ "offset": 3,
568
+ },
569
+ "text": ".nesting_1 ",
570
+ },
306
571
  ],
307
572
  "identifier": "nesting_1",
308
573
  },
309
574
  {
310
575
  "definitions": [
311
- { file: "<fixtures>/test/1.scss", text: "&_2 { dummy", start: { line: 8, offset: 3 }, end: { line: 8, offset: 14 } },
576
+ {
577
+ "end": {
578
+ "line": 8,
579
+ "offset": 14,
580
+ },
581
+ "file": "<fixtures>/test/1.scss",
582
+ "start": {
583
+ "line": 8,
584
+ "offset": 3,
585
+ },
586
+ "text": "&_2 { dummy",
587
+ },
312
588
  ],
313
589
  "identifier": "nesting_2",
314
590
  },
315
591
  {
316
592
  "definitions": [
317
- { file: "<fixtures>/test/2.scss", text: ".b_1 ", start: { line: 1, offset: 1 }, end: { line: 1, offset: 6 } },
593
+ {
594
+ "end": {
595
+ "line": 1,
596
+ "offset": 6,
597
+ },
598
+ "file": "<fixtures>/test/2.scss",
599
+ "start": {
600
+ "line": 1,
601
+ "offset": 1,
602
+ },
603
+ "text": ".b_1 ",
604
+ },
318
605
  ],
319
606
  "identifier": "b_1",
320
607
  },
@@ -324,7 +611,18 @@ test('with transformer', async () => {
324
611
  },
325
612
  {
326
613
  "definitions": [
327
- { file: "<fixtures>/test/3.scss", text: ".c ", start: { line: 1, offset: 1 }, end: { line: 1, offset: 4 } },
614
+ {
615
+ "end": {
616
+ "line": 1,
617
+ "offset": 4,
618
+ },
619
+ "file": "<fixtures>/test/3.scss",
620
+ "start": {
621
+ "line": 1,
622
+ "offset": 1,
623
+ },
624
+ "text": ".c ",
625
+ },
328
626
  ],
329
627
  "identifier": "c",
330
628
  },