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