@esmx/core 3.0.0-rc.62 → 3.0.0-rc.64

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.
@@ -1,5 +1,10 @@
1
1
  import { assert, describe, test } from 'vitest';
2
- import { buildImportsMap, buildScopesMap, getImportMap } from './import-map';
2
+ import {
3
+ buildImportsMap,
4
+ buildScopesMap,
5
+ fixNestedScopesResolution,
6
+ getImportMap
7
+ } from './import-map';
3
8
  import type { GetImportMapOptions, ImportMapManifest } from './import-map';
4
9
 
5
10
  describe('buildImportsMap', () => {
@@ -12,7 +17,6 @@ describe('buildImportsMap', () => {
12
17
  const manifests: ImportMapManifest[] = [
13
18
  {
14
19
  name: 'test-module',
15
- imports: {},
16
20
  exports: {
17
21
  component: {
18
22
  name: 'component',
@@ -42,19 +46,16 @@ describe('buildImportsMap', () => {
42
46
  });
43
47
  });
44
48
 
45
- test('should handle user imports with existing identifiers', () => {
49
+ test('should create aliases for index suffixes', () => {
46
50
  const manifests: ImportMapManifest[] = [
47
51
  {
48
52
  name: 'test-module',
49
- imports: {
50
- 'custom-name': 'test-module/component'
51
- },
52
53
  exports: {
53
- component: {
54
- name: 'component',
54
+ 'src/index': {
55
+ name: 'src/index',
55
56
  pkg: false,
56
- file: 'component.js',
57
- identifier: 'test-module/component'
57
+ file: 'src/index.js',
58
+ identifier: 'test-module/src/index'
58
59
  }
59
60
  },
60
61
  scopes: {}
@@ -67,27 +68,29 @@ describe('buildImportsMap', () => {
67
68
  );
68
69
 
69
70
  assert.deepEqual(result, {
70
- 'test-module/component': 'test-module/component.js',
71
- 'test-module/custom-name': 'test-module/component.js'
71
+ 'test-module/src/index': 'test-module/src/index.js',
72
+ 'test-module/src': 'test-module/src/index.js'
72
73
  });
73
74
  });
74
75
 
75
- test('should handle user imports with non existing identifiers', () => {
76
+ test('should handle multiple manifests', () => {
76
77
  const manifests: ImportMapManifest[] = [
77
78
  {
78
- name: 'test-module',
79
- imports: {
80
- external: 'https://cdn.com/lib.js'
81
- },
79
+ name: 'module-a',
82
80
  exports: {
83
- component: {
84
- name: 'component',
81
+ utils: {
82
+ name: 'utils',
85
83
  pkg: false,
86
- file: 'component.js',
87
- identifier: 'test-module/component'
84
+ file: 'utils.js',
85
+ identifier: 'module-a/utils'
88
86
  }
89
87
  },
90
88
  scopes: {}
89
+ },
90
+ {
91
+ name: 'module-b',
92
+ exports: {},
93
+ scopes: {}
91
94
  }
92
95
  ];
93
96
 
@@ -97,22 +100,37 @@ describe('buildImportsMap', () => {
97
100
  );
98
101
 
99
102
  assert.deepEqual(result, {
100
- 'test-module/component': 'test-module/component.js',
101
- 'test-module/external': 'https://cdn.com/lib.js'
103
+ 'module-a/utils': 'module-a/utils.js'
102
104
  });
103
105
  });
104
106
 
105
- test('should create aliases for index suffixes', () => {
107
+ test('should handle empty exports', () => {
108
+ const manifests: ImportMapManifest[] = [
109
+ {
110
+ name: 'test-module',
111
+ exports: {},
112
+ scopes: {}
113
+ }
114
+ ];
115
+
116
+ const result = buildImportsMap(
117
+ manifests,
118
+ (name, file) => `${name}/${file}`
119
+ );
120
+
121
+ assert.deepEqual(result, {});
122
+ });
123
+
124
+ test('should handle duplicate alias creation', () => {
106
125
  const manifests: ImportMapManifest[] = [
107
126
  {
108
127
  name: 'test-module',
109
- imports: {},
110
128
  exports: {
111
- 'src/index': {
112
- name: 'src/index',
129
+ 'src/components/index': {
130
+ name: 'src/components/index',
113
131
  pkg: false,
114
- file: 'src/index.js',
115
- identifier: 'test-module/src/index'
132
+ file: 'src/components/index.js',
133
+ identifier: 'test-module/src/components/index'
116
134
  }
117
135
  },
118
136
  scopes: {}
@@ -125,21 +143,21 @@ describe('buildImportsMap', () => {
125
143
  );
126
144
 
127
145
  assert.deepEqual(result, {
128
- 'test-module/src/index': 'test-module/src/index.js',
129
- 'test-module/src': 'test-module/src/index.js'
146
+ 'test-module/src/components/index':
147
+ 'test-module/src/components/index.js',
148
+ 'test-module/src/components': 'test-module/src/components/index.js'
130
149
  });
131
150
  });
132
151
 
133
- test('should handle multiple manifests', () => {
152
+ test('should handle identifier conflicts across modules', () => {
134
153
  const manifests: ImportMapManifest[] = [
135
154
  {
136
155
  name: 'module-a',
137
- imports: {},
138
156
  exports: {
139
157
  utils: {
140
158
  name: 'utils',
141
159
  pkg: false,
142
- file: 'utils.js',
160
+ file: 'utils-a.js',
143
161
  identifier: 'module-a/utils'
144
162
  }
145
163
  },
@@ -147,10 +165,14 @@ describe('buildImportsMap', () => {
147
165
  },
148
166
  {
149
167
  name: 'module-b',
150
- imports: {
151
- shared: 'module-a/utils'
168
+ exports: {
169
+ utils: {
170
+ name: 'utils',
171
+ pkg: false,
172
+ file: 'utils-b.js',
173
+ identifier: 'module-b/utils'
174
+ }
152
175
  },
153
- exports: {},
154
176
  scopes: {}
155
177
  }
156
178
  ];
@@ -161,31 +183,21 @@ describe('buildImportsMap', () => {
161
183
  );
162
184
 
163
185
  assert.deepEqual(result, {
164
- 'module-a/utils': 'module-a/utils.js',
165
- 'module-b/shared': 'module-a/utils.js'
186
+ 'module-a/utils': 'module-a/utils-a.js',
187
+ 'module-b/utils': 'module-b/utils-b.js'
166
188
  });
167
189
  });
168
190
 
169
- test('should prioritize user imports', () => {
191
+ test('should handle nested index aliases', () => {
170
192
  const manifests: ImportMapManifest[] = [
171
193
  {
172
194
  name: 'test-module',
173
- imports: {
174
- react: 'preact',
175
- vue: './custom/vue.js'
176
- },
177
195
  exports: {
178
- react: {
179
- name: 'react',
180
- pkg: false,
181
- file: 'react.js',
182
- identifier: 'test-module/react'
183
- },
184
- vue: {
185
- name: 'vue',
196
+ 'src/components/utils/index': {
197
+ name: 'src/components/utils/index',
186
198
  pkg: false,
187
- file: 'vue.js',
188
- identifier: 'test-module/vue'
199
+ file: 'src/components/utils/index.js',
200
+ identifier: 'test-module/src/components/utils/index'
189
201
  }
190
202
  },
191
203
  scopes: {}
@@ -198,294 +210,717 @@ describe('buildImportsMap', () => {
198
210
  );
199
211
 
200
212
  assert.deepEqual(result, {
201
- 'test-module/react': 'preact',
202
- 'test-module/vue': './custom/vue.js'
213
+ 'test-module/src/components/utils/index':
214
+ 'test-module/src/components/utils/index.js',
215
+ 'test-module/src/components/utils':
216
+ 'test-module/src/components/utils/index.js'
203
217
  });
204
218
  });
219
+ });
205
220
 
206
- test('should handle mixed user import types', () => {
207
- const manifests: ImportMapManifest[] = [
208
- {
209
- name: 'test-module',
210
- imports: {
211
- 'url-import': 'https://example.com/lib.js',
212
- 'relative-import': './local/file.js',
213
- 'identifier-import': 'test-module/component'
221
+ describe('fixNestedScopesResolution', () => {
222
+ test('should return unchanged import map for empty scopes', () => {
223
+ const importMap = {
224
+ imports: {
225
+ 'shared-modules/vue': '/shared-modules/vue.620a1e89.final.mjs'
226
+ },
227
+ scopes: {}
228
+ };
229
+
230
+ const result = fixNestedScopesResolution(importMap);
231
+ assert.deepEqual(result, importMap);
232
+ });
233
+
234
+ test('should return unchanged import map for shallow scopes only', () => {
235
+ const importMap = {
236
+ imports: {
237
+ 'shared-modules/vue': '/shared-modules/vue.620a1e89.final.mjs'
238
+ },
239
+ scopes: {
240
+ '/shared-modules/': {
241
+ vue: '/shared-modules/vue.620a1e89.final.mjs'
242
+ }
243
+ }
244
+ };
245
+
246
+ const result = fixNestedScopesResolution(importMap);
247
+ assert.deepEqual(result, importMap);
248
+ });
249
+
250
+ test('should create file-level scopes for nested scopes', () => {
251
+ const importMap = {
252
+ imports: {
253
+ 'shared-modules/vue2':
254
+ '/shared-modules/vue2.a1b2c3d4.final.mjs',
255
+ 'shared-modules/vue2/@esmx/router-vue':
256
+ '/shared-modules/vue2/@esmx/router-vue.e5f6g7h8.final.mjs',
257
+ 'shared-modules/vue2/index':
258
+ '/shared-modules/vue2/index.i9j0k1l2.final.mjs',
259
+ 'shared-modules/vue': '/shared-modules/vue.m3n4o5p6.final.mjs'
260
+ },
261
+ scopes: {
262
+ '/shared-modules/': {
263
+ vue: '/shared-modules/vue.m3n4o5p6.final.mjs'
214
264
  },
215
- exports: {
216
- component: {
217
- name: 'component',
218
- pkg: false,
219
- file: 'component.js',
220
- identifier: 'test-module/component'
221
- }
265
+ '/shared-modules/vue2/': {
266
+ vue: '/shared-modules/vue2.a1b2c3d4.final.mjs'
267
+ }
268
+ }
269
+ };
270
+
271
+ const expected = {
272
+ imports: {
273
+ 'shared-modules/vue2':
274
+ '/shared-modules/vue2.a1b2c3d4.final.mjs',
275
+ 'shared-modules/vue2/@esmx/router-vue':
276
+ '/shared-modules/vue2/@esmx/router-vue.e5f6g7h8.final.mjs',
277
+ 'shared-modules/vue2/index':
278
+ '/shared-modules/vue2/index.i9j0k1l2.final.mjs',
279
+ 'shared-modules/vue': '/shared-modules/vue.m3n4o5p6.final.mjs'
280
+ },
281
+ scopes: {
282
+ '/shared-modules/vue.m3n4o5p6.final.mjs': {
283
+ vue: '/shared-modules/vue.m3n4o5p6.final.mjs'
222
284
  },
223
- scopes: {}
285
+ '/shared-modules/vue2.a1b2c3d4.final.mjs': {
286
+ vue: '/shared-modules/vue.m3n4o5p6.final.mjs'
287
+ },
288
+ '/shared-modules/vue2/@esmx/router-vue.e5f6g7h8.final.mjs': {
289
+ vue: '/shared-modules/vue2.a1b2c3d4.final.mjs'
290
+ },
291
+ '/shared-modules/vue2/index.i9j0k1l2.final.mjs': {
292
+ vue: '/shared-modules/vue2.a1b2c3d4.final.mjs'
293
+ }
224
294
  }
225
- ];
295
+ };
226
296
 
227
- const result = buildImportsMap(
228
- manifests,
229
- (name, file) => `${name}/${file}`
230
- );
297
+ const result = fixNestedScopesResolution(importMap);
298
+ assert.deepEqual(result, expected);
299
+ });
231
300
 
232
- assert.deepEqual(result, {
233
- 'test-module/component': 'test-module/component.js',
234
- 'test-module/url-import': 'https://example.com/lib.js',
235
- 'test-module/relative-import': './local/file.js',
236
- 'test-module/identifier-import': 'test-module/component.js'
237
- });
301
+ test('should handle multiple nested scopes correctly', () => {
302
+ const importMap = {
303
+ imports: {
304
+ 'shared-modules/vue2':
305
+ '/shared-modules/vue2.q7r8s9t0.final.mjs',
306
+ 'shared-modules/vue2/component':
307
+ '/shared-modules/vue2/component.u1v2w3x4.final.mjs',
308
+ 'shared-modules/vue3':
309
+ '/shared-modules/vue3.y5z6a7b8.final.mjs',
310
+ 'shared-modules/vue3/component':
311
+ '/shared-modules/vue3/component.c9d0e1f2.final.mjs',
312
+ 'shared-modules/vue': '/shared-modules/vue.g3h4i5j6.final.mjs'
313
+ },
314
+ scopes: {
315
+ '/shared-modules/': {
316
+ vue: '/shared-modules/vue.g3h4i5j6.final.mjs'
317
+ },
318
+ '/shared-modules/vue2/': {
319
+ vue: '/shared-modules/vue2.q7r8s9t0.final.mjs'
320
+ },
321
+ '/shared-modules/vue3/': {
322
+ vue: '/shared-modules/vue3.y5z6a7b8.final.mjs'
323
+ }
324
+ }
325
+ };
326
+
327
+ const expected = {
328
+ imports: {
329
+ 'shared-modules/vue2':
330
+ '/shared-modules/vue2.q7r8s9t0.final.mjs',
331
+ 'shared-modules/vue2/component':
332
+ '/shared-modules/vue2/component.u1v2w3x4.final.mjs',
333
+ 'shared-modules/vue3':
334
+ '/shared-modules/vue3.y5z6a7b8.final.mjs',
335
+ 'shared-modules/vue3/component':
336
+ '/shared-modules/vue3/component.c9d0e1f2.final.mjs',
337
+ 'shared-modules/vue': '/shared-modules/vue.g3h4i5j6.final.mjs'
338
+ },
339
+ scopes: {
340
+ '/shared-modules/vue.g3h4i5j6.final.mjs': {
341
+ vue: '/shared-modules/vue.g3h4i5j6.final.mjs'
342
+ },
343
+ '/shared-modules/vue2.q7r8s9t0.final.mjs': {
344
+ vue: '/shared-modules/vue.g3h4i5j6.final.mjs'
345
+ },
346
+ '/shared-modules/vue2/component.u1v2w3x4.final.mjs': {
347
+ vue: '/shared-modules/vue2.q7r8s9t0.final.mjs'
348
+ },
349
+ '/shared-modules/vue3.y5z6a7b8.final.mjs': {
350
+ vue: '/shared-modules/vue.g3h4i5j6.final.mjs'
351
+ },
352
+ '/shared-modules/vue3/component.c9d0e1f2.final.mjs': {
353
+ vue: '/shared-modules/vue3.y5z6a7b8.final.mjs'
354
+ }
355
+ }
356
+ };
357
+
358
+ const result = fixNestedScopesResolution(importMap);
359
+ assert.deepEqual(result, expected);
238
360
  });
239
361
 
240
- test('should handle empty exports', () => {
241
- const manifests: ImportMapManifest[] = [
242
- {
243
- name: 'test-module',
244
- imports: {
245
- external: 'https://cdn.com/lib.js'
362
+ test('should handle deeply nested scopes', () => {
363
+ const importMap = {
364
+ imports: {
365
+ 'shared-modules/vue2/components/button':
366
+ '/shared-modules/vue2/components/button.k7l8m9n0.final.mjs',
367
+ 'shared-modules/vue2/components/input':
368
+ '/shared-modules/vue2/components/input.o1p2q3r4.final.mjs'
369
+ },
370
+ scopes: {
371
+ '/shared-modules/vue2/components/': {
372
+ vue: '/shared-modules/vue2.s5t6u7v8.final.mjs'
373
+ }
374
+ }
375
+ };
376
+
377
+ const expected = {
378
+ imports: {
379
+ 'shared-modules/vue2/components/button':
380
+ '/shared-modules/vue2/components/button.k7l8m9n0.final.mjs',
381
+ 'shared-modules/vue2/components/input':
382
+ '/shared-modules/vue2/components/input.o1p2q3r4.final.mjs'
383
+ },
384
+ scopes: {
385
+ '/shared-modules/vue2/components/button.k7l8m9n0.final.mjs': {
386
+ vue: '/shared-modules/vue2.s5t6u7v8.final.mjs'
246
387
  },
247
- exports: {},
248
- scopes: {}
388
+ '/shared-modules/vue2/components/input.o1p2q3r4.final.mjs': {
389
+ vue: '/shared-modules/vue2.s5t6u7v8.final.mjs'
390
+ }
249
391
  }
250
- ];
392
+ };
251
393
 
252
- const result = buildImportsMap(
253
- manifests,
254
- (name, file) => `${name}/${file}`
394
+ const result = fixNestedScopesResolution(importMap);
395
+ assert.deepEqual(result, expected);
396
+ });
397
+
398
+ test('should not create file-level scopes for imports not matching nested scope', () => {
399
+ const importMap = {
400
+ imports: {
401
+ 'shared-modules/vue': '/shared-modules/vue.w9x0y1z2.final.mjs',
402
+ 'shared-modules/vue2/component':
403
+ '/shared-modules/vue2/component.a3b4c5d6.final.mjs',
404
+ 'other-modules/component':
405
+ '/other-modules/component.e7f8g9h0.final.mjs'
406
+ },
407
+ scopes: {
408
+ '/shared-modules/vue2/': {
409
+ vue: '/shared-modules/vue2.i1j2k3l4.final.mjs'
410
+ }
411
+ }
412
+ };
413
+
414
+ const expected = {
415
+ imports: importMap.imports,
416
+ scopes: {
417
+ '/shared-modules/vue2/component.a3b4c5d6.final.mjs': {
418
+ vue: '/shared-modules/vue2.i1j2k3l4.final.mjs'
419
+ }
420
+ }
421
+ };
422
+
423
+ const result = fixNestedScopesResolution(importMap);
424
+ assert.deepEqual(result, expected);
425
+ });
426
+
427
+ test('should handle empty imports', () => {
428
+ const importMap = {
429
+ imports: {},
430
+ scopes: {
431
+ '/shared-modules/vue2/': {
432
+ vue: '/shared-modules/vue2.m5n6o7p8.final.mjs'
433
+ }
434
+ }
435
+ };
436
+
437
+ const expected = {
438
+ imports: {},
439
+ scopes: {}
440
+ };
441
+
442
+ const result = fixNestedScopesResolution(importMap);
443
+ assert.deepEqual(result, expected);
444
+ });
445
+
446
+ test('should preserve original import map structure', () => {
447
+ const importMap = {
448
+ imports: {
449
+ 'shared-modules/vue2':
450
+ '/shared-modules/vue2.q9r8s7t6.final.mjs',
451
+ 'shared-modules/vue2/component':
452
+ '/shared-modules/vue2/component.u5v4w3x2.final.mjs'
453
+ },
454
+ scopes: {
455
+ '/shared-modules/vue2/': {
456
+ vue: '/shared-modules/vue2.q9r8s7t6.final.mjs',
457
+ 'vue-router':
458
+ '/shared-modules/vue2/router.y1z0a9b8.final.mjs'
459
+ }
460
+ }
461
+ };
462
+
463
+ const result = fixNestedScopesResolution(importMap);
464
+
465
+ assert.deepEqual(result.imports, importMap.imports);
466
+ assert.deepEqual(
467
+ result.scopes['/shared-modules/vue2/'],
468
+ importMap.scopes['/shared-modules/vue2/']
255
469
  );
256
470
 
257
- assert.deepEqual(result, {
258
- 'test-module/external': 'https://cdn.com/lib.js'
259
- });
471
+ assert.deepEqual(
472
+ result.scopes['/shared-modules/vue2/component.u5v4w3x2.final.mjs'],
473
+ {
474
+ vue: '/shared-modules/vue2.q9r8s7t6.final.mjs',
475
+ 'vue-router': '/shared-modules/vue2/router.y1z0a9b8.final.mjs'
476
+ }
477
+ );
478
+ });
479
+
480
+ test('should handle complex priority scenarios with multiple nested levels', () => {
481
+ const importMap = {
482
+ imports: {
483
+ 'shared-modules/vue2':
484
+ '/shared-modules/vue2.c7d8e9f0.final.mjs',
485
+ 'shared-modules/vue2/test':
486
+ '/shared-modules/vue2/test.a1b2c3d4.final.mjs',
487
+ 'shared-modules/vue2/test/component':
488
+ '/shared-modules/vue2/test/component.e5f6g7h8.final.mjs',
489
+ 'shared-modules/vue': '/shared-modules/vue.i9j0k1l2.final.mjs'
490
+ },
491
+ scopes: {
492
+ '/shared-modules/': {
493
+ vue: '/shared-modules/vue.i9j0k1l2.final.mjs',
494
+ 'vue-router':
495
+ '/shared-modules/@esmx/router.m3n4o5p6.final.mjs'
496
+ },
497
+ '/shared-modules/vue2/': {
498
+ vue: '/shared-modules/vue2.c7d8e9f0.final.mjs',
499
+ 'vue-router':
500
+ '/shared-modules/vue2/@esmx/router-vue.q7r8s9t0.final.mjs'
501
+ },
502
+ '/shared-modules/vue2/test/': {
503
+ vue: '/shared-modules/vue2.c7d8e9f0.final.mjs',
504
+ 'test-utils':
505
+ '/shared-modules/vue2/test/utils.u1v2w3x4.final.mjs'
506
+ }
507
+ }
508
+ };
509
+
510
+ const expected = {
511
+ imports: {
512
+ 'shared-modules/vue2':
513
+ '/shared-modules/vue2.c7d8e9f0.final.mjs',
514
+ 'shared-modules/vue2/test':
515
+ '/shared-modules/vue2/test.a1b2c3d4.final.mjs',
516
+ 'shared-modules/vue2/test/component':
517
+ '/shared-modules/vue2/test/component.e5f6g7h8.final.mjs',
518
+ 'shared-modules/vue': '/shared-modules/vue.i9j0k1l2.final.mjs'
519
+ },
520
+ scopes: {
521
+ '/shared-modules/vue.i9j0k1l2.final.mjs': {
522
+ vue: '/shared-modules/vue.i9j0k1l2.final.mjs',
523
+ 'vue-router':
524
+ '/shared-modules/@esmx/router.m3n4o5p6.final.mjs'
525
+ },
526
+ '/shared-modules/vue2.c7d8e9f0.final.mjs': {
527
+ vue: '/shared-modules/vue.i9j0k1l2.final.mjs',
528
+ 'vue-router':
529
+ '/shared-modules/@esmx/router.m3n4o5p6.final.mjs'
530
+ },
531
+ '/shared-modules/vue2/test.a1b2c3d4.final.mjs': {
532
+ vue: '/shared-modules/vue2.c7d8e9f0.final.mjs',
533
+ 'vue-router':
534
+ '/shared-modules/vue2/@esmx/router-vue.q7r8s9t0.final.mjs'
535
+ },
536
+ '/shared-modules/vue2/test/component.e5f6g7h8.final.mjs': {
537
+ vue: '/shared-modules/vue2.c7d8e9f0.final.mjs',
538
+ 'test-utils':
539
+ '/shared-modules/vue2/test/utils.u1v2w3x4.final.mjs',
540
+ 'vue-router':
541
+ '/shared-modules/vue2/@esmx/router-vue.q7r8s9t0.final.mjs'
542
+ }
543
+ }
544
+ };
545
+
546
+ const result = fixNestedScopesResolution(importMap);
547
+ assert.deepEqual(result, expected);
548
+ });
549
+
550
+ test('should handle priority with overlapping nested scopes', () => {
551
+ const importMap = {
552
+ imports: {
553
+ 'shared-modules/vue2':
554
+ '/shared-modules/vue2.n3o4p5q6.final.mjs',
555
+ 'shared-modules/vue2/components':
556
+ '/shared-modules/vue2/components.r7s8t9u0.final.mjs',
557
+ 'shared-modules/vue2/components/button':
558
+ '/shared-modules/vue2/components/button.v1w2x3y4.final.mjs',
559
+ 'shared-modules/vue2/components/input':
560
+ '/shared-modules/vue2/components/input.z5a6b7c8.final.mjs'
561
+ },
562
+ scopes: {
563
+ '/shared-modules/vue2/': {
564
+ vue: '/shared-modules/vue2.n3o4p5q6.final.mjs',
565
+ 'vue-router':
566
+ '/shared-modules/vue2/@esmx/router-vue.d9e0f1g2.final.mjs'
567
+ },
568
+ '/shared-modules/vue2/components/': {
569
+ vue: '/shared-modules/vue2.n3o4p5q6.final.mjs',
570
+ 'component-utils':
571
+ '/shared-modules/vue2/components/utils.h3i4j5k6.final.mjs'
572
+ }
573
+ }
574
+ };
575
+
576
+ const expected = {
577
+ imports: {
578
+ 'shared-modules/vue2':
579
+ '/shared-modules/vue2.n3o4p5q6.final.mjs',
580
+ 'shared-modules/vue2/components':
581
+ '/shared-modules/vue2/components.r7s8t9u0.final.mjs',
582
+ 'shared-modules/vue2/components/button':
583
+ '/shared-modules/vue2/components/button.v1w2x3y4.final.mjs',
584
+ 'shared-modules/vue2/components/input':
585
+ '/shared-modules/vue2/components/input.z5a6b7c8.final.mjs'
586
+ },
587
+ scopes: {
588
+ '/shared-modules/vue2/components.r7s8t9u0.final.mjs': {
589
+ vue: '/shared-modules/vue2.n3o4p5q6.final.mjs',
590
+ 'vue-router':
591
+ '/shared-modules/vue2/@esmx/router-vue.d9e0f1g2.final.mjs'
592
+ },
593
+ '/shared-modules/vue2/components/button.v1w2x3y4.final.mjs': {
594
+ 'component-utils':
595
+ '/shared-modules/vue2/components/utils.h3i4j5k6.final.mjs',
596
+ vue: '/shared-modules/vue2.n3o4p5q6.final.mjs',
597
+ 'vue-router':
598
+ '/shared-modules/vue2/@esmx/router-vue.d9e0f1g2.final.mjs'
599
+ },
600
+ '/shared-modules/vue2/components/input.z5a6b7c8.final.mjs': {
601
+ 'component-utils':
602
+ '/shared-modules/vue2/components/utils.h3i4j5k6.final.mjs',
603
+ vue: '/shared-modules/vue2.n3o4p5q6.final.mjs',
604
+ 'vue-router':
605
+ '/shared-modules/vue2/@esmx/router-vue.d9e0f1g2.final.mjs'
606
+ }
607
+ }
608
+ };
609
+
610
+ const result = fixNestedScopesResolution(importMap);
611
+ assert.deepEqual(result, expected);
612
+ });
613
+
614
+ test('should handle very deeply nested scope priority scenarios', () => {
615
+ const importMap = {
616
+ imports: {
617
+ 'shared-modules/vue2':
618
+ '/shared-modules/vue2.l7m8n9o0.final.mjs',
619
+ 'shared-modules/vue2/test':
620
+ '/shared-modules/vue2/test.p1q2r3s4.final.mjs',
621
+ 'shared-modules/vue2/test/unit':
622
+ '/shared-modules/vue2/test/unit.t5u6v7w8.final.mjs',
623
+ 'shared-modules/vue2/test/unit/component':
624
+ '/shared-modules/vue2/test/unit/component.x9y0z1a2.final.mjs'
625
+ },
626
+ scopes: {
627
+ '/shared-modules/': {
628
+ vue: '/shared-modules/vue.b3c4d5e6.final.mjs'
629
+ },
630
+ '/shared-modules/vue2/': {
631
+ vue: '/shared-modules/vue2.l7m8n9o0.final.mjs'
632
+ },
633
+ '/shared-modules/vue2/test/': {
634
+ vue: '/shared-modules/vue2.l7m8n9o0.final.mjs',
635
+ 'test-utils':
636
+ '/shared-modules/vue2/test/utils.f7g8h9i0.final.mjs'
637
+ },
638
+ '/shared-modules/vue2/test/unit/': {
639
+ vue: '/shared-modules/vue2.l7m8n9o0.final.mjs',
640
+ 'test-utils':
641
+ '/shared-modules/vue2/test/utils.f7g8h9i0.final.mjs'
642
+ }
643
+ }
644
+ };
645
+
646
+ const expected = {
647
+ imports: {
648
+ 'shared-modules/vue2':
649
+ '/shared-modules/vue2.l7m8n9o0.final.mjs',
650
+ 'shared-modules/vue2/test':
651
+ '/shared-modules/vue2/test.p1q2r3s4.final.mjs',
652
+ 'shared-modules/vue2/test/unit':
653
+ '/shared-modules/vue2/test/unit.t5u6v7w8.final.mjs',
654
+ 'shared-modules/vue2/test/unit/component':
655
+ '/shared-modules/vue2/test/unit/component.x9y0z1a2.final.mjs'
656
+ },
657
+ scopes: {
658
+ '/shared-modules/vue2.l7m8n9o0.final.mjs': {
659
+ vue: '/shared-modules/vue.b3c4d5e6.final.mjs'
660
+ },
661
+ '/shared-modules/vue2/test.p1q2r3s4.final.mjs': {
662
+ vue: '/shared-modules/vue2.l7m8n9o0.final.mjs'
663
+ },
664
+ '/shared-modules/vue2/test/unit.t5u6v7w8.final.mjs': {
665
+ vue: '/shared-modules/vue2.l7m8n9o0.final.mjs',
666
+ 'test-utils':
667
+ '/shared-modules/vue2/test/utils.f7g8h9i0.final.mjs'
668
+ },
669
+ '/shared-modules/vue2/test/unit/component.x9y0z1a2.final.mjs': {
670
+ vue: '/shared-modules/vue2.l7m8n9o0.final.mjs',
671
+ 'test-utils':
672
+ '/shared-modules/vue2/test/utils.f7g8h9i0.final.mjs'
673
+ }
674
+ }
675
+ };
676
+
677
+ const result = fixNestedScopesResolution(importMap);
678
+ assert.deepEqual(result, expected);
260
679
  });
261
680
 
262
- test('should handle empty imports', () => {
263
- const manifests: ImportMapManifest[] = [
264
- {
265
- name: 'test-module',
266
- imports: {},
267
- exports: {
268
- component: {
269
- name: 'component',
270
- pkg: false,
271
- file: 'component.js',
272
- identifier: 'test-module/component'
273
- }
681
+ test('should ensure different directory levels have distinct values for proper testing', () => {
682
+ const importMap = {
683
+ imports: {
684
+ 'shared-modules/level1':
685
+ '/shared-modules/level1.a1b2c3d4.final.mjs',
686
+ 'shared-modules/level1/level2':
687
+ '/shared-modules/level1/level2.e5f6g7h8.final.mjs',
688
+ 'shared-modules/level1/level2/level3':
689
+ '/shared-modules/level1/level2/level3.i9j0k1l2.final.mjs'
690
+ },
691
+ scopes: {
692
+ '/shared-modules/level1/': {
693
+ vue: '/shared-modules/level1.a1b2c3d4.final.mjs'
274
694
  },
275
- scopes: {}
695
+ '/shared-modules/level1/level2/': {
696
+ vue: '/shared-modules/level1/level2.e5f6g7h8.final.mjs'
697
+ }
276
698
  }
277
- ];
699
+ };
278
700
 
279
- const result = buildImportsMap(
280
- manifests,
281
- (name, file) => `${name}/${file}`
701
+ const expected = {
702
+ imports: {
703
+ 'shared-modules/level1':
704
+ '/shared-modules/level1.a1b2c3d4.final.mjs',
705
+ 'shared-modules/level1/level2':
706
+ '/shared-modules/level1/level2.e5f6g7h8.final.mjs',
707
+ 'shared-modules/level1/level2/level3':
708
+ '/shared-modules/level1/level2/level3.i9j0k1l2.final.mjs'
709
+ },
710
+ scopes: {
711
+ '/shared-modules/level1/level2.e5f6g7h8.final.mjs': {
712
+ vue: '/shared-modules/level1.a1b2c3d4.final.mjs'
713
+ },
714
+ '/shared-modules/level1/level2/level3.i9j0k1l2.final.mjs': {
715
+ vue: '/shared-modules/level1/level2.e5f6g7h8.final.mjs'
716
+ }
717
+ }
718
+ };
719
+
720
+ const result = fixNestedScopesResolution(importMap);
721
+ assert.deepEqual(result, expected);
722
+
723
+ assert.equal(
724
+ result.scopes['/shared-modules/level1/level2.e5f6g7h8.final.mjs']
725
+ .vue,
726
+ '/shared-modules/level1.a1b2c3d4.final.mjs'
282
727
  );
283
728
 
284
- assert.deepEqual(result, {
285
- 'test-module/component': 'test-module/component.js'
286
- });
729
+ assert.equal(
730
+ result.scopes[
731
+ '/shared-modules/level1/level2/level3.i9j0k1l2.final.mjs'
732
+ ].vue,
733
+ '/shared-modules/level1/level2.e5f6g7h8.final.mjs'
734
+ );
287
735
  });
288
736
 
289
- test('should handle duplicate alias creation', () => {
290
- const manifests: ImportMapManifest[] = [
291
- {
292
- name: 'test-module',
293
- imports: {},
294
- exports: {
295
- 'src/components/index': {
296
- name: 'src/components/index',
297
- pkg: false,
298
- file: 'src/components/index.js',
299
- identifier: 'test-module/src/components/index'
300
- }
301
- },
302
- scopes: {}
737
+ test('should successfully delete properties using Reflect.deleteProperty', () => {
738
+ const importMap = {
739
+ imports: {
740
+ 'shared/modules/vue2': '/shared/modules/vue2.a1b2c3d4.final.mjs'
741
+ },
742
+ scopes: {
743
+ '/shared/modules/vue2/': {
744
+ vue: '/shared/modules/vue2.a1b2c3d4.final.mjs'
745
+ }
303
746
  }
304
- ];
305
-
306
- const result = buildImportsMap(
307
- manifests,
308
- (name, file) => `${name}/${file}`
309
- );
747
+ };
310
748
 
311
- assert.deepEqual(result, {
312
- 'test-module/src/components/index':
313
- 'test-module/src/components/index.js',
314
- 'test-module/src/components': 'test-module/src/components/index.js'
749
+ const result = fixNestedScopesResolution(importMap);
750
+ assert.deepEqual(result.imports, importMap.imports);
751
+ assert.isUndefined(result.scopes['/shared/modules/vue2/']);
752
+ assert.doesNotThrow(() => {
753
+ fixNestedScopesResolution(importMap);
315
754
  });
316
755
  });
317
756
 
318
- test('should handle cross-module references', () => {
319
- const manifests: ImportMapManifest[] = [
320
- {
321
- name: 'module-a',
322
- imports: {},
323
- exports: {
324
- utils: {
325
- name: 'utils',
326
- pkg: false,
327
- file: 'utils.js',
328
- identifier: 'module-a/utils'
329
- }
330
- },
331
- scopes: {}
332
- },
333
- {
334
- name: 'module-b',
757
+ describe('scope path processing logic', () => {
758
+ test('should process all scope paths regardless of format', () => {
759
+ const importMap = {
335
760
  imports: {
336
- shared: 'module-a/utils'
761
+ 'shared/modules/vue2':
762
+ '/shared/modules/vue2.a1b2c3d4.final.mjs',
763
+ 'shared/vue': '/shared/vue.e5f6g7h8.final.mjs'
337
764
  },
338
- exports: {},
339
- scopes: {}
340
- }
341
- ];
765
+ scopes: {
766
+ 'shared/modules/vue2/': {
767
+ vue: '/shared/modules/vue2.a1b2c3d4.final.mjs'
768
+ },
769
+ '/shared/modules/vue2': {
770
+ vue: '/shared/modules/vue2.a1b2c3d4.final.mjs'
771
+ },
772
+ '/shared/': {
773
+ vue: '/shared/vue.e5f6g7h8.final.mjs'
774
+ },
775
+ '/shared/modules/vue2/': {
776
+ vue: '/shared/modules/vue2.a1b2c3d4.final.mjs'
777
+ }
778
+ }
779
+ };
342
780
 
343
- const result = buildImportsMap(
344
- manifests,
345
- (name, file) => `${name}/${file}`
346
- );
781
+ const expected = {
782
+ imports: {
783
+ 'shared/modules/vue2':
784
+ '/shared/modules/vue2.a1b2c3d4.final.mjs',
785
+ 'shared/vue': '/shared/vue.e5f6g7h8.final.mjs'
786
+ },
787
+ scopes: {
788
+ '/shared/modules/vue2.a1b2c3d4.final.mjs': {
789
+ vue: '/shared/modules/vue2.a1b2c3d4.final.mjs'
790
+ },
791
+ '/shared/vue.e5f6g7h8.final.mjs': {
792
+ vue: '/shared/vue.e5f6g7h8.final.mjs'
793
+ }
794
+ }
795
+ };
347
796
 
348
- assert.deepEqual(result, {
349
- 'module-a/utils': 'module-a/utils.js',
350
- 'module-b/shared': 'module-a/utils.js'
797
+ const result = fixNestedScopesResolution(importMap);
798
+ assert.deepEqual(result, expected);
351
799
  });
352
- });
353
800
 
354
- test('should handle cross-module non-existent references', () => {
355
- const manifests: ImportMapManifest[] = [
356
- {
357
- name: 'module-a',
358
- imports: {},
359
- exports: {
360
- utils: {
361
- name: 'utils',
362
- pkg: false,
363
- file: 'utils.js',
364
- identifier: 'module-a/utils'
365
- }
801
+ test('should handle scope paths with any depth', () => {
802
+ const importMap = {
803
+ imports: {
804
+ 'a/b/c': '/a/b/c.a1b2c3d4.final.mjs'
366
805
  },
367
- scopes: {}
368
- },
369
- {
370
- name: 'module-b',
806
+ scopes: {
807
+ '/a/b/c/': {
808
+ vue: '/a/b/c.a1b2c3d4.final.mjs'
809
+ }
810
+ }
811
+ };
812
+
813
+ const expected = {
371
814
  imports: {
372
- external: 'module-a/non-existent'
815
+ 'a/b/c': '/a/b/c.a1b2c3d4.final.mjs'
373
816
  },
374
- exports: {},
375
817
  scopes: {}
376
- }
377
- ];
378
-
379
- const result = buildImportsMap(
380
- manifests,
381
- (name, file) => `${name}/${file}`
382
- );
818
+ };
383
819
 
384
- assert.deepEqual(result, {
385
- 'module-a/utils': 'module-a/utils.js',
386
- 'module-b/external': 'module-a/non-existent'
820
+ const result = fixNestedScopesResolution(importMap);
821
+ assert.deepEqual(result, expected);
387
822
  });
388
- });
389
823
 
390
- test('should handle identifier conflicts across modules', () => {
391
- const manifests: ImportMapManifest[] = [
392
- {
393
- name: 'module-a',
394
- imports: {},
395
- exports: {
396
- utils: {
397
- name: 'utils',
398
- pkg: false,
399
- file: 'utils-a.js',
400
- identifier: 'module-a/utils'
401
- }
824
+ test('should handle very deep nested scope paths', () => {
825
+ const importMap = {
826
+ imports: {
827
+ 'a/b/c/d/e/f': '/a/b/c/d/e/f.a1b2c3d4.final.mjs'
402
828
  },
403
- scopes: {}
404
- },
405
- {
406
- name: 'module-b',
407
- imports: {},
408
- exports: {
409
- utils: {
410
- name: 'utils',
411
- pkg: false,
412
- file: 'utils-b.js',
413
- identifier: 'module-b/utils'
829
+ scopes: {
830
+ '/a/b/c/d/e/f/': {
831
+ vue: '/a/b/c/d/e/f.a1b2c3d4.final.mjs'
414
832
  }
833
+ }
834
+ };
835
+
836
+ const expected = {
837
+ imports: {
838
+ 'a/b/c/d/e/f': '/a/b/c/d/e/f.a1b2c3d4.final.mjs'
415
839
  },
416
840
  scopes: {}
417
- }
418
- ];
419
-
420
- const result = buildImportsMap(
421
- manifests,
422
- (name, file) => `${name}/${file}`
423
- );
841
+ };
424
842
 
425
- assert.deepEqual(result, {
426
- 'module-a/utils': 'module-a/utils-a.js',
427
- 'module-b/utils': 'module-b/utils-b.js'
843
+ const result = fixNestedScopesResolution(importMap);
844
+ assert.deepEqual(result, expected);
428
845
  });
429
- });
430
846
 
431
- test('should handle user imports referencing aliased identifiers', () => {
432
- const manifests: ImportMapManifest[] = [
433
- {
434
- name: 'test-module',
847
+ test('should create file-level scopes for all scope paths', () => {
848
+ const importMap = {
435
849
  imports: {
436
- 'alias-test': 'test-module/src/index'
850
+ 'modules/vue': '/modules/vue.a1b2c3d4.final.mjs',
851
+ 'shared/vue': '/shared/vue.e5f6g7h8.final.mjs'
437
852
  },
438
- exports: {
439
- 'src/index': {
440
- name: 'src/index',
441
- pkg: false,
442
- file: 'src/index.js',
443
- identifier: 'test-module/src/index'
853
+ scopes: {
854
+ '/modules/': {
855
+ vue: '/modules/vue.a1b2c3d4.final.mjs'
856
+ },
857
+ '/shared/': {
858
+ vue: '/shared/vue.e5f6g7h8.final.mjs'
444
859
  }
445
- },
446
- scopes: {}
447
- }
448
- ];
860
+ }
861
+ };
449
862
 
450
- const result = buildImportsMap(
451
- manifests,
452
- (name, file) => `${name}/${file}`
453
- );
863
+ const expected = {
864
+ imports: {
865
+ 'modules/vue': '/modules/vue.a1b2c3d4.final.mjs',
866
+ 'shared/vue': '/shared/vue.e5f6g7h8.final.mjs'
867
+ },
868
+ scopes: {
869
+ '/modules/vue.a1b2c3d4.final.mjs': {
870
+ vue: '/modules/vue.a1b2c3d4.final.mjs'
871
+ },
872
+ '/shared/vue.e5f6g7h8.final.mjs': {
873
+ vue: '/shared/vue.e5f6g7h8.final.mjs'
874
+ }
875
+ }
876
+ };
454
877
 
455
- assert.deepEqual(result, {
456
- 'test-module/src/index': 'test-module/src/index.js',
457
- 'test-module/src': 'test-module/src/index.js',
458
- 'test-module/alias-test': 'test-module/src/index.js'
878
+ const result = fixNestedScopesResolution(importMap);
879
+ assert.deepEqual(result, expected);
459
880
  });
460
- });
461
881
 
462
- test('should handle nested index aliases', () => {
463
- const manifests: ImportMapManifest[] = [
464
- {
465
- name: 'test-module',
466
- imports: {},
467
- exports: {
468
- 'src/components/utils/index': {
469
- name: 'src/components/utils/index',
470
- pkg: false,
471
- file: 'src/components/utils/index.js',
472
- identifier: 'test-module/src/components/utils/index'
473
- }
882
+ test('should process multiple scope paths in correct order by depth', () => {
883
+ const importMap = {
884
+ imports: {
885
+ 'shared/modules/vue2':
886
+ '/shared/modules/vue2.a1b2c3d4.final.mjs',
887
+ 'shared/modules/vue2/component':
888
+ '/shared/modules/vue2/component.e5f6g7h8.final.mjs',
889
+ 'shared/modules/vue2/utils':
890
+ '/shared/modules/vue2/utils.i9j0k1l2.final.mjs'
474
891
  },
475
- scopes: {}
476
- }
477
- ];
892
+ scopes: {
893
+ '/shared/modules/vue2/': {
894
+ vue: '/shared/modules/vue2.a1b2c3d4.final.mjs'
895
+ },
896
+ '/shared/modules/vue2/utils/': {
897
+ 'test-utils':
898
+ '/shared/modules/vue2/utils.i9j0k1l2.final.mjs'
899
+ }
900
+ }
901
+ };
478
902
 
479
- const result = buildImportsMap(
480
- manifests,
481
- (name, file) => `${name}/${file}`
482
- );
903
+ const expected = {
904
+ imports: {
905
+ 'shared/modules/vue2':
906
+ '/shared/modules/vue2.a1b2c3d4.final.mjs',
907
+ 'shared/modules/vue2/component':
908
+ '/shared/modules/vue2/component.e5f6g7h8.final.mjs',
909
+ 'shared/modules/vue2/utils':
910
+ '/shared/modules/vue2/utils.i9j0k1l2.final.mjs'
911
+ },
912
+ scopes: {
913
+ '/shared/modules/vue2/component.e5f6g7h8.final.mjs': {
914
+ vue: '/shared/modules/vue2.a1b2c3d4.final.mjs'
915
+ },
916
+ '/shared/modules/vue2/utils.i9j0k1l2.final.mjs': {
917
+ vue: '/shared/modules/vue2.a1b2c3d4.final.mjs'
918
+ }
919
+ }
920
+ };
483
921
 
484
- assert.deepEqual(result, {
485
- 'test-module/src/components/utils/index':
486
- 'test-module/src/components/utils/index.js',
487
- 'test-module/src/components/utils':
488
- 'test-module/src/components/utils/index.js'
922
+ const result = fixNestedScopesResolution(importMap);
923
+ assert.deepEqual(result, expected);
489
924
  });
490
925
  });
491
926
  });
@@ -509,7 +944,6 @@ describe('buildScopesMap', () => {
509
944
  const manifests: ImportMapManifest[] = [
510
945
  {
511
946
  name: 'test-module',
512
- imports: {},
513
947
  exports: {
514
948
  component: {
515
949
  name: 'component',
@@ -537,7 +971,6 @@ describe('buildScopesMap', () => {
537
971
  const manifests: ImportMapManifest[] = [
538
972
  {
539
973
  name: 'test-module',
540
- imports: {},
541
974
  exports: {
542
975
  component: {
543
976
  name: 'component',
@@ -580,7 +1013,6 @@ describe('buildScopesMap', () => {
580
1013
  const manifests: ImportMapManifest[] = [
581
1014
  {
582
1015
  name: 'test-module',
583
- imports: {},
584
1016
  exports: {
585
1017
  component: {
586
1018
  name: 'component',
@@ -617,7 +1049,6 @@ describe('buildScopesMap', () => {
617
1049
  const manifests: ImportMapManifest[] = [
618
1050
  {
619
1051
  name: 'test-module',
620
- imports: {},
621
1052
  exports: {
622
1053
  component: {
623
1054
  name: 'component',
@@ -655,7 +1086,6 @@ describe('buildScopesMap', () => {
655
1086
  const manifests: ImportMapManifest[] = [
656
1087
  {
657
1088
  name: 'test-module',
658
- imports: {},
659
1089
  exports: {
660
1090
  node_modules: {
661
1091
  name: 'node_modules',
@@ -696,7 +1126,6 @@ describe('buildScopesMap', () => {
696
1126
  const manifests: ImportMapManifest[] = [
697
1127
  {
698
1128
  name: 'test-module',
699
- imports: {},
700
1129
  exports: {
701
1130
  component: {
702
1131
  name: 'component',
@@ -732,7 +1161,6 @@ describe('buildScopesMap', () => {
732
1161
  const manifests: ImportMapManifest[] = [
733
1162
  {
734
1163
  name: 'test-module',
735
- imports: {},
736
1164
  exports: {
737
1165
  component: {
738
1166
  name: 'component',
@@ -780,7 +1208,6 @@ describe('buildScopesMap', () => {
780
1208
  const manifests: ImportMapManifest[] = [
781
1209
  {
782
1210
  name: 'module-a',
783
- imports: {},
784
1211
  exports: {
785
1212
  component: {
786
1213
  name: 'component',
@@ -797,7 +1224,6 @@ describe('buildScopesMap', () => {
797
1224
  },
798
1225
  {
799
1226
  name: 'module-b',
800
- imports: {},
801
1227
  exports: {
802
1228
  utils: {
803
1229
  name: 'utils',
@@ -835,7 +1261,6 @@ describe('buildScopesMap', () => {
835
1261
  const manifests: ImportMapManifest[] = [
836
1262
  {
837
1263
  name: 'test-module',
838
- imports: {},
839
1264
  exports: {
840
1265
  component: {
841
1266
  name: 'component',
@@ -866,7 +1291,6 @@ describe('buildScopesMap', () => {
866
1291
  const manifests: ImportMapManifest[] = [
867
1292
  {
868
1293
  name: 'test-module',
869
- imports: {},
870
1294
  exports: {
871
1295
  component: {
872
1296
  name: 'component',
@@ -901,14 +1325,11 @@ describe('getImportMap', () => {
901
1325
  });
902
1326
  });
903
1327
 
904
- test('should build complete import map with imports and scopes', () => {
1328
+ test('should build complete import map with exports and scopes', () => {
905
1329
  const options: GetImportMapOptions = {
906
1330
  manifests: [
907
1331
  {
908
1332
  name: 'test-module',
909
- imports: {
910
- 'custom-react': 'test-module/component'
911
- },
912
1333
  exports: {
913
1334
  component: {
914
1335
  name: 'component',
@@ -938,8 +1359,7 @@ describe('getImportMap', () => {
938
1359
  assert.deepEqual(result, {
939
1360
  imports: {
940
1361
  'test-module/component': 'test-module/component.js',
941
- 'test-module/utils': 'test-module/utils.js',
942
- 'test-module/custom-react': 'test-module/component.js'
1362
+ 'test-module/utils': 'test-module/utils.js'
943
1363
  },
944
1364
  scopes: {
945
1365
  'test-module//node_modules': {
@@ -955,7 +1375,6 @@ describe('getImportMap', () => {
955
1375
  manifests: [
956
1376
  {
957
1377
  name: 'module-a',
958
- imports: {},
959
1378
  exports: {
960
1379
  utils: {
961
1380
  name: 'utils',
@@ -972,9 +1391,6 @@ describe('getImportMap', () => {
972
1391
  },
973
1392
  {
974
1393
  name: 'module-b',
975
- imports: {
976
- shared: 'module-a/utils'
977
- },
978
1394
  exports: {
979
1395
  component: {
980
1396
  name: 'component',
@@ -997,8 +1413,7 @@ describe('getImportMap', () => {
997
1413
  assert.deepEqual(result, {
998
1414
  imports: {
999
1415
  'module-a/utils': 'module-a/utils.js',
1000
- 'module-b/component': 'module-b/component.js',
1001
- 'module-b/shared': 'module-a/utils.js'
1416
+ 'module-b/component': 'module-b/component.js'
1002
1417
  },
1003
1418
  scopes: {
1004
1419
  'module-a//node_modules': {
@@ -1016,7 +1431,6 @@ describe('getImportMap', () => {
1016
1431
  manifests: [
1017
1432
  {
1018
1433
  name: 'test-module',
1019
- imports: {},
1020
1434
  exports: {
1021
1435
  component: {
1022
1436
  name: 'component',
@@ -1040,36 +1454,11 @@ describe('getImportMap', () => {
1040
1454
  });
1041
1455
  });
1042
1456
 
1043
- test('should handle manifests with only imports', () => {
1044
- const options: GetImportMapOptions = {
1045
- manifests: [
1046
- {
1047
- name: 'test-module',
1048
- imports: {
1049
- external: 'https://cdn.com/lib.js'
1050
- },
1051
- exports: {},
1052
- scopes: {}
1053
- }
1054
- ],
1055
- getFile: (name, file) => `${name}/${file}`,
1056
- getScope: (name, scope) => `${name}/${scope}`
1057
- };
1058
- const result = getImportMap(options);
1059
- assert.deepEqual(result, {
1060
- imports: {
1061
- 'test-module/external': 'https://cdn.com/lib.js'
1062
- },
1063
- scopes: {}
1064
- });
1065
- });
1066
-
1067
1457
  test('should handle manifests with only scopes', () => {
1068
1458
  const options: GetImportMapOptions = {
1069
1459
  manifests: [
1070
1460
  {
1071
1461
  name: 'test-module',
1072
- imports: {},
1073
1462
  exports: {},
1074
1463
  scopes: {
1075
1464
  node_modules: {
@@ -1097,7 +1486,6 @@ describe('getImportMap', () => {
1097
1486
  manifests: [
1098
1487
  {
1099
1488
  name: 'test-module',
1100
- imports: {},
1101
1489
  exports: {
1102
1490
  component: {
1103
1491
  name: 'component',
@@ -1134,7 +1522,6 @@ describe('getImportMap', () => {
1134
1522
  manifests: [
1135
1523
  {
1136
1524
  name: 'test-module',
1137
- imports: {},
1138
1525
  exports: {
1139
1526
  component: {
1140
1527
  name: 'component',
@@ -1163,10 +1550,6 @@ describe('getImportMap', () => {
1163
1550
  manifests: [
1164
1551
  {
1165
1552
  name: 'test-module',
1166
- imports: {
1167
- 'external-react': 'https://cdn.com/react.js',
1168
- 'local-alias': 'test-module/component'
1169
- },
1170
1553
  exports: {
1171
1554
  component: {
1172
1555
  name: 'component',
@@ -1189,9 +1572,7 @@ describe('getImportMap', () => {
1189
1572
  const result = getImportMap(options);
1190
1573
  assert.deepEqual(result, {
1191
1574
  imports: {
1192
- 'test-module/component': 'test-module/component.js',
1193
- 'test-module/external-react': 'https://cdn.com/react.js',
1194
- 'test-module/local-alias': 'test-module/component.js'
1575
+ 'test-module/component': 'test-module/component.js'
1195
1576
  },
1196
1577
  scopes: {
1197
1578
  'test-module//node_modules': {
@@ -1207,7 +1588,6 @@ describe('getImportMap', () => {
1207
1588
  manifests: [
1208
1589
  {
1209
1590
  name: 'test-module',
1210
- imports: {},
1211
1591
  exports: {
1212
1592
  'src/index': {
1213
1593
  name: 'src/index',