@ms-cloudpack/package-utilities 0.13.1 → 0.14.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 (65) hide show
  1. package/CHANGELOG.json +16 -1
  2. package/CHANGELOG.md +10 -2
  3. package/lib/PackageDefinitions.d.ts +1 -0
  4. package/lib/PackageDefinitions.js +2 -1
  5. package/lib/PackageDefinitions.js.map +1 -1
  6. package/lib/createExportsMap.d.ts +12 -0
  7. package/lib/createExportsMap.js +105 -0
  8. package/lib/createExportsMap.js.map +1 -0
  9. package/lib/{evaluateImportsFromEntries.test.d.ts → createExportsMap.test.d.ts} +0 -0
  10. package/lib/createExportsMap.test.js +131 -0
  11. package/lib/createExportsMap.test.js.map +1 -0
  12. package/lib/createImportMap.d.ts +7 -2
  13. package/lib/createImportMap.js +49 -29
  14. package/lib/createImportMap.js.map +1 -1
  15. package/lib/createImportMap.test.js +44 -157
  16. package/lib/createImportMap.test.js.map +1 -1
  17. package/lib/createResolveMap.test.js +6 -5
  18. package/lib/createResolveMap.test.js.map +1 -1
  19. package/lib/{getFlattenedExportsMap.d.ts → flattenExportsMap.d.ts} +4 -1
  20. package/lib/flattenExportsMap.js +67 -0
  21. package/lib/flattenExportsMap.js.map +1 -0
  22. package/lib/{generateExportsMap.test.d.ts → flattenExportsMap.test.d.ts} +0 -0
  23. package/lib/flattenExportsMap.test.js +185 -0
  24. package/lib/flattenExportsMap.test.js.map +1 -0
  25. package/lib/getExportPathFromEntry.js +2 -1
  26. package/lib/getExportPathFromEntry.js.map +1 -1
  27. package/lib/getExportPathFromEntry.test.js +0 -8
  28. package/lib/getExportPathFromEntry.test.js.map +1 -1
  29. package/lib/getExportsMap.d.ts +5 -0
  30. package/lib/getExportsMap.js +11 -0
  31. package/lib/getExportsMap.js.map +1 -0
  32. package/lib/index.d.ts +2 -3
  33. package/lib/index.js +2 -3
  34. package/lib/index.js.map +1 -1
  35. package/lib/resolveImportFromPackage.test.js +22 -7
  36. package/lib/resolveImportFromPackage.test.js.map +1 -1
  37. package/lib/resolveImportFromPackagePath.d.ts +8 -5
  38. package/lib/resolveImportFromPackagePath.js +55 -43
  39. package/lib/resolveImportFromPackagePath.js.map +1 -1
  40. package/lib/resolvePackageEntries.d.ts +8 -2
  41. package/lib/resolvePackageEntries.js +8 -37
  42. package/lib/resolvePackageEntries.js.map +1 -1
  43. package/lib/resolvePackageEntries.test.js +76 -77
  44. package/lib/resolvePackageEntries.test.js.map +1 -1
  45. package/lib/safeRelativePath.d.ts +4 -0
  46. package/lib/safeRelativePath.js +19 -0
  47. package/lib/safeRelativePath.js.map +1 -0
  48. package/lib/{getFlattenedExportsMap.test.d.ts → safeRelativePath.test.d.ts} +0 -0
  49. package/lib/safeRelativePath.test.js +17 -0
  50. package/lib/safeRelativePath.test.js.map +1 -0
  51. package/package.json +1 -1
  52. package/lib/evaluateImportsFromEntries.d.ts +0 -31
  53. package/lib/evaluateImportsFromEntries.js +0 -151
  54. package/lib/evaluateImportsFromEntries.js.map +0 -1
  55. package/lib/evaluateImportsFromEntries.test.js +0 -39
  56. package/lib/evaluateImportsFromEntries.test.js.map +0 -1
  57. package/lib/generateExportsMap.d.ts +0 -9
  58. package/lib/generateExportsMap.js +0 -80
  59. package/lib/generateExportsMap.js.map +0 -1
  60. package/lib/generateExportsMap.test.js +0 -100
  61. package/lib/generateExportsMap.test.js.map +0 -1
  62. package/lib/getFlattenedExportsMap.js +0 -77
  63. package/lib/getFlattenedExportsMap.js.map +0 -1
  64. package/lib/getFlattenedExportsMap.test.js +0 -270
  65. package/lib/getFlattenedExportsMap.test.js.map +0 -1
package/CHANGELOG.json CHANGED
@@ -2,7 +2,22 @@
2
2
  "name": "@ms-cloudpack/package-utilities",
3
3
  "entries": [
4
4
  {
5
- "date": "Thu, 29 Sep 2022 17:46:14 GMT",
5
+ "date": "Wed, 05 Oct 2022 19:39:05 GMT",
6
+ "tag": "@ms-cloudpack/package-utilities_v0.14.0",
7
+ "version": "0.14.0",
8
+ "comments": {
9
+ "minor": [
10
+ {
11
+ "author": "dzearing@microsoft.com",
12
+ "package": "@ms-cloudpack/package-utilities",
13
+ "commit": "a5958df7dbb6455200dee17b7201273b7bb8155a",
14
+ "comment": "Overhaul of import/export map utilities. We now have getExportsMap, createExportsMap, flattenExportsMap, and createImportMap. Also removing some of the deprecated apis."
15
+ }
16
+ ]
17
+ }
18
+ },
19
+ {
20
+ "date": "Thu, 29 Sep 2022 17:46:30 GMT",
6
21
  "tag": "@ms-cloudpack/package-utilities_v0.13.1",
7
22
  "version": "0.13.1",
8
23
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,12 +1,20 @@
1
1
  # Change Log - @ms-cloudpack/package-utilities
2
2
 
3
- This log was last generated on Thu, 29 Sep 2022 17:46:14 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 05 Oct 2022 19:39:05 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 0.14.0
8
+
9
+ Wed, 05 Oct 2022 19:39:05 GMT
10
+
11
+ ### Minor changes
12
+
13
+ - Overhaul of import/export map utilities. We now have getExportsMap, createExportsMap, flattenExportsMap, and createImportMap. Also removing some of the deprecated apis. (dzearing@microsoft.com)
14
+
7
15
  ## 0.13.1
8
16
 
9
- Thu, 29 Sep 2022 17:46:14 GMT
17
+ Thu, 29 Sep 2022 17:46:30 GMT
10
18
 
11
19
  ### Patches
12
20
 
@@ -4,6 +4,7 @@ export declare class PackageDefinitions {
4
4
  static getInstance(): PackageDefinitions;
5
5
  private _cache;
6
6
  private _transforms;
7
+ constructor(definitionMap?: Record<string, PackageJson>);
7
8
  get(packagePath: string, options?: {
8
9
  refresh: boolean;
9
10
  }): Promise<PackageJson | undefined>;
@@ -3,9 +3,10 @@ import { applyOverrides } from '@ms-cloudpack/package-overrides';
3
3
  import { readJson } from '@ms-cloudpack/json-utilities';
4
4
  let _singleton;
5
5
  export class PackageDefinitions {
6
- constructor() {
6
+ constructor(definitionMap = {}) {
7
7
  this._cache = {};
8
8
  this._transforms = [applyOverrides];
9
+ this._cache = definitionMap;
9
10
  }
10
11
  static getInstance() {
11
12
  if (!_singleton) {
@@ -1 +1 @@
1
- {"version":3,"file":"PackageDefinitions.js","sourceRoot":"","sources":["../src/PackageDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,IAAI,UAA0C,CAAC;AAG/C,MAAM,OAAO,kBAAkB;IAA/B;QAQU,WAAM,GAAgC,EAAE,CAAC;QACzC,gBAAW,GAAiC,CAAC,cAAc,CAAC,CAAC;IAiCvE,CAAC;IAzCC,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,GAAG,IAAI,kBAAkB,EAAE,CAAC;SACvC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAKD,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,OAA8B;QAC3D,IAAI,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAElD,IAAI,CAAC,kBAAkB,IAAI,OAAO,EAAE,OAAO,EAAE;YAC3C,IAAI;gBACF,yCAAyC;gBACzC,MAAM,UAAU,GAA4B,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;gBAEnG,gFAAgF;gBAChF,IAAI,UAAU,EAAE;oBACd,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CACrE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,EACzC,UAAU,CACX,CAAC;iBACH;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,WAAW;aACZ;SACF;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,iBAAiB,CAAC,QAAoC;QACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;CACF"}
1
+ {"version":3,"file":"PackageDefinitions.js","sourceRoot":"","sources":["../src/PackageDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,IAAI,UAA0C,CAAC;AAG/C,MAAM,OAAO,kBAAkB;IAW7B,YAAY,gBAA6C,EAAE;QAHnD,WAAM,GAAgC,EAAE,CAAC;QACzC,gBAAW,GAAiC,CAAC,cAAc,CAAC,CAAC;QAGnE,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;IAC9B,CAAC;IAZD,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,GAAG,IAAI,kBAAkB,EAAE,CAAC;SACvC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IASD,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,OAA8B;QAC3D,IAAI,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAElD,IAAI,CAAC,kBAAkB,IAAI,OAAO,EAAE,OAAO,EAAE;YAC3C,IAAI;gBACF,yCAAyC;gBACzC,MAAM,UAAU,GAA4B,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;gBAEnG,gFAAgF;gBAChF,IAAI,UAAU,EAAE;oBACd,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CACrE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,EACzC,UAAU,CACX,CAAC;iBACH;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,WAAW;aACZ;SACF;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,iBAAiB,CAAC,QAAoC;QACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import type { PackageJson } from 'type-fest';
2
+ import { PackageDefinitions } from './PackageDefinitions.js';
3
+ /**
4
+ * Given a package path, generates an export map for the package.
5
+ */
6
+ export declare function createExportsMap(packagePath: string, options?: {
7
+ packages?: PackageDefinitions;
8
+ }): Promise<PackageJson.Exports>;
9
+ /**
10
+ * Given an exports map and details about an import path, adds the entry.
11
+ */
12
+ export declare function addExportsMapEntry(exports: PackageJson.Exports, importPath: string | undefined, packagePath: string, condition: string | undefined, entryPath: string | undefined, typesPath?: string): Promise<void>;
@@ -0,0 +1,105 @@
1
+ import path from 'path';
2
+ import { isFile } from '@ms-cloudpack/path-utilities';
3
+ import { PackageDefinitions } from './PackageDefinitions.js';
4
+ import { isExternalPackage } from './isExternalPackage.js';
5
+ import { resolveImportFromPackagePath } from './resolveImportFromPackagePath.js';
6
+ import { safeRelativePath } from './safeRelativePath.js';
7
+ /**
8
+ * Given a package path, generates an export map for the package.
9
+ */
10
+ export async function createExportsMap(packagePath, options = {}) {
11
+ const { packages = PackageDefinitions.getInstance() } = options;
12
+ const definition = await packages.get(packagePath);
13
+ if (!definition) {
14
+ throw new Error(`Package definition not found for ${packagePath}`);
15
+ }
16
+ // Don't create an exports map for a definition that already has one.
17
+ if (definition.exports) {
18
+ return definition.exports;
19
+ }
20
+ const { main, module, browser } = definition;
21
+ const hasRootIndexJs = isFile(path.join(packagePath, 'index.js'));
22
+ const exports = {};
23
+ const types = definition.types || definition.typings;
24
+ if (!(main || module || browser || hasRootIndexJs)) {
25
+ return exports;
26
+ }
27
+ if (hasRootIndexJs) {
28
+ await addExportsMapEntry(exports, undefined, packagePath, 'default', 'index.js', types);
29
+ }
30
+ await addExportsMapEntry(exports, undefined, packagePath, 'default', main, types);
31
+ await addExportsMapEntry(exports, undefined, packagePath, 'import', module, types);
32
+ if (browser) {
33
+ if (typeof browser === 'string') {
34
+ await addExportsMapEntry(exports, undefined, packagePath, 'browser', browser, types);
35
+ }
36
+ else if (typeof browser === 'object') {
37
+ // If we have an entry defined in the package, iterate through exports and update things.
38
+ if (main || module) {
39
+ for (const mapValue of Object.values(exports)) {
40
+ const exportUrl = (mapValue.import || mapValue.default);
41
+ if (browser[exportUrl]) {
42
+ mapValue['browser'] = browser[exportUrl] || '';
43
+ }
44
+ }
45
+ }
46
+ else {
47
+ // When all we have are browser entries, attempt to make exports out of them.
48
+ for (const [key, value] of Object.entries(browser)) {
49
+ if (typeof value === 'string' && path.extname(value) === '.js') {
50
+ exports[makeSafeImportKey(key)] = {
51
+ browser: value,
52
+ };
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
58
+ return exports;
59
+ }
60
+ /**
61
+ * Given an exports map and details about an import path, adds the entry.
62
+ */
63
+ export async function addExportsMapEntry(exports, importPath, packagePath, condition = 'default', entryPath, typesPath) {
64
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
+ const packageExports = exports;
66
+ if (!entryPath) {
67
+ return;
68
+ }
69
+ entryPath = safeRelativePath(entryPath);
70
+ const intermediatePath = (importPath && (await resolveImportFromPackagePath(packagePath, importPath))) || entryPath;
71
+ const isInternal = !isExternalPackage(packagePath);
72
+ const sourcePath = isInternal
73
+ ? await resolveImportFromPackagePath(packagePath, intermediatePath, { preferSource: true })
74
+ : undefined;
75
+ const potentialTypesPath = path.extname(intermediatePath) === '.js' && intermediatePath.replace('.js', '.d.ts');
76
+ const isTypeScriptSource = sourcePath && ['.ts', '.tsx', '.mts', '.cts'].indexOf(path.extname(sourcePath)) >= 0;
77
+ // Discover d.ts if available.
78
+ if (!typesPath &&
79
+ potentialTypesPath &&
80
+ ((isInternal && isTypeScriptSource) || (!isInternal && isFile(path.join(packagePath, potentialTypesPath))))) {
81
+ typesPath = potentialTypesPath;
82
+ }
83
+ importPath = importPath || '.';
84
+ const exportSet = (packageExports[importPath] || (packageExports[importPath] = {}));
85
+ if (typesPath) {
86
+ exportSet.types = safeRelativePath(typesPath);
87
+ }
88
+ exportSet[condition] = intermediatePath;
89
+ if (sourcePath && sourcePath !== intermediatePath) {
90
+ exportSet.source = safeRelativePath(sourcePath);
91
+ }
92
+ }
93
+ function makeSafeImportKey(key) {
94
+ // if the key starts with a slash, add a dot
95
+ if (key.startsWith('/')) {
96
+ return '.' + key;
97
+ }
98
+ // if the key doesn't start with "./", add it
99
+ if (!key.startsWith('./')) {
100
+ key = './' + key;
101
+ }
102
+ // Remove the .js extension.
103
+ return key.replace(/\.js$/, '');
104
+ }
105
+ //# sourceMappingURL=createExportsMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createExportsMap.js","sourceRoot":"","sources":["../src/createExportsMap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import { describe, it, expect } from '@jest/globals';
2
+ import { createExportsMap } from './createExportsMap.js';
3
+ import { testScenariosPath } from './testPaths.js';
4
+ import path from 'path';
5
+ import { PackageDefinitions } from './PackageDefinitions.js';
6
+ const testGenerateExportsPath = path.join(testScenariosPath, 'test-generate-exports');
7
+ describe('generateExportsMap', () => {
8
+ it('can return a blank import map for something with nothing to export', async () => {
9
+ expect(await createExportsMap(path.join(testGenerateExportsPath, 'no-exports'))).toEqual({});
10
+ });
11
+ it('can generate an exports map for a package with an implicit index.js file', async () => {
12
+ expect(await createExportsMap(path.join(testGenerateExportsPath, 'implicit-export'))).toMatchInlineSnapshot(`
13
+ {
14
+ ".": {
15
+ "default": "./index.js",
16
+ },
17
+ }
18
+ `);
19
+ });
20
+ it('can generate an exports map for a package with a main export as esm', async () => {
21
+ expect(await createExportsMap(path.join(testGenerateExportsPath, 'main-export-esm'))).toMatchInlineSnapshot(`
22
+ {
23
+ ".": {
24
+ "default": "./main.js",
25
+ },
26
+ }
27
+ `);
28
+ });
29
+ it('can generate an exports map for a package with a main export as cjs', async () => {
30
+ expect(await createExportsMap(path.join(testGenerateExportsPath, 'main-export-cjs'))).toMatchInlineSnapshot(`
31
+ {
32
+ ".": {
33
+ "default": "./main.js",
34
+ },
35
+ }
36
+ `);
37
+ });
38
+ it('can generate an exports map for a package with a main export as cjs and types', async () => {
39
+ expect(await createExportsMap(path.join(testGenerateExportsPath, 'main-export-cjs-types'))).toMatchInlineSnapshot(`
40
+ {
41
+ ".": {
42
+ "default": "./main.js",
43
+ "types": "./index.d.ts",
44
+ },
45
+ }
46
+ `);
47
+ });
48
+ it('can generate an exports map for a package with a module export', async () => {
49
+ expect(await createExportsMap(path.join(testGenerateExportsPath, 'module-export'))).toMatchInlineSnapshot(`
50
+ {
51
+ ".": {
52
+ "default": "./main.js",
53
+ "import": "./module.js",
54
+ },
55
+ }
56
+ `);
57
+ });
58
+ it('can generate an exports map for a package with a browser export', async () => {
59
+ expect(await createExportsMap(path.join(testGenerateExportsPath, 'browser-export'))).toMatchInlineSnapshot(`
60
+ {
61
+ ".": {
62
+ "browser": "./browser.js",
63
+ "default": "./main.js",
64
+ "import": "./module.js",
65
+ },
66
+ }
67
+ `);
68
+ });
69
+ it('can generate an exports map for a package with a type/source exports', async () => {
70
+ expect(await createExportsMap(path.join(testGenerateExportsPath, 'sources-export'))).toMatchInlineSnapshot(`
71
+ {
72
+ ".": {
73
+ "default": "./lib/index.js",
74
+ "source": "./src/index.tsx",
75
+ "types": "./lib/index.d.ts",
76
+ },
77
+ }
78
+ `);
79
+ });
80
+ it('can generate an exports map for an internal unbuilt package', async () => {
81
+ expect(await createExportsMap(path.join(testGenerateExportsPath, 'main-export-unbuilt'))).toMatchInlineSnapshot(`
82
+ {
83
+ ".": {
84
+ "default": "./lib/index.js",
85
+ "source": "./src/index.ts",
86
+ "types": "./lib/index.d.ts",
87
+ },
88
+ }
89
+ `);
90
+ });
91
+ it('can generate an exports map for an external package with implicit type exports', async () => {
92
+ expect(await createExportsMap(path.join(testGenerateExportsPath, 'node_modules/ext-esm-types')))
93
+ .toMatchInlineSnapshot(`
94
+ {
95
+ ".": {
96
+ "default": "./lib/main.js",
97
+ "types": "./lib/main.d.ts",
98
+ },
99
+ }
100
+ `);
101
+ });
102
+ it(`can find exports from browser-only packages like uuid@3.4.0`, async () => {
103
+ // https://unpkg.com/browse/uuid@3.4.0/package.json
104
+ const packages = new PackageDefinitions({
105
+ 'node_modules/uuid': {
106
+ name: 'uuid',
107
+ browser: {
108
+ './lib/rng.js': './lib/rng-browser.js',
109
+ './lib/sha1.js': './lib/sha1-browser.js',
110
+ './lib/md5.js': './lib/md5-browser.js',
111
+ },
112
+ },
113
+ });
114
+ const exportsMap = await createExportsMap('node_modules/uuid', { packages });
115
+ expect(exportsMap).toMatchInlineSnapshot(`
116
+ {
117
+ "./lib/md5": {
118
+ "browser": "./lib/md5-browser.js",
119
+ },
120
+ "./lib/rng": {
121
+ "browser": "./lib/rng-browser.js",
122
+ },
123
+ "./lib/sha1": {
124
+ "browser": "./lib/sha1-browser.js",
125
+ },
126
+ }
127
+ `);
128
+ expect(Object.keys(exportsMap).length).toBeGreaterThan(0);
129
+ });
130
+ });
131
+ //# sourceMappingURL=createExportsMap.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createExportsMap.test.js","sourceRoot":"","sources":["../src/createExportsMap.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,MAAM,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;AAEtF,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;KAM3G,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;KAM3G,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;KAM3G,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;KAOjH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;KAOzG,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;KAQ1G,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;KAQ1G,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;KAQ/G,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,4BAA4B,CAAC,CAAC,CAAC;aAC7F,qBAAqB,CAAC;;;;;;;KAOxB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,mDAAmD;QACnD,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC;YACtC,mBAAmB,EAAE;gBACnB,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,cAAc,EAAE,sBAAsB;oBACtC,eAAe,EAAE,uBAAuB;oBACxC,cAAc,EAAE,sBAAsB;iBACvC;aACF;SACF,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7E,MAAM,CAAC,UAAU,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;KAYxC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAA0D,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,7 +1,12 @@
1
1
  import type { ResolveMap } from './createResolveMap.js';
2
- import type { PackageJson } from 'type-fest';
2
+ import { PackageDefinitions } from './PackageDefinitions.js';
3
3
  export interface ImportMap {
4
4
  imports: Record<string, string>;
5
5
  scopes?: Record<string, Record<string, string>>;
6
6
  }
7
- export declare function createImportMap(resolveMap: ResolveMap, bundleServerUrl: string, packageDefinitions?: Record<string, PackageJson>): Promise<ImportMap>;
7
+ /**
8
+ * Given a resolve ma and a bundleServerUrl, returns an import map to be used in the browser.
9
+ */
10
+ export declare function createImportMap(resolveMap: ResolveMap, bundleServerUrl: string, options?: {
11
+ packages?: PackageDefinitions;
12
+ }): Promise<ImportMap>;
@@ -1,20 +1,25 @@
1
1
  import { PackageDefinitions } from './PackageDefinitions.js';
2
2
  import { merge } from 'merge';
3
- import { getFlattenedExportsMap } from './getFlattenedExportsMap.js';
4
- import fs from 'fs';
3
+ import { flattenExportsMap } from './flattenExportsMap.js';
5
4
  import path from 'path';
6
- export async function createImportMap(resolveMap, bundleServerUrl, packageDefinitions) {
5
+ import { getExportsMap } from './getExportsMap.js';
6
+ import { isExternalPackage } from './isExternalPackage.js';
7
+ /**
8
+ * Given a resolve ma and a bundleServerUrl, returns an import map to be used in the browser.
9
+ */
10
+ export async function createImportMap(resolveMap, bundleServerUrl, options = {}) {
7
11
  var _a, _b;
12
+ const { packages = PackageDefinitions.getInstance() } = options;
8
13
  const importMap = {
9
14
  imports: {},
10
15
  };
11
16
  for (const resolveEntry of Object.values(resolveMap)) {
12
- merge(importMap.imports, await getImportMapFromEntry(resolveEntry, bundleServerUrl, packageDefinitions));
17
+ merge(importMap.imports, await getImportMapFromEntry(resolveEntry, bundleServerUrl, packages));
13
18
  if (resolveEntry.scopedVersions) {
14
19
  // Initialize scopes
15
20
  importMap.scopes ?? (importMap.scopes = {});
16
21
  for (const scopedEntry of Object.values(resolveEntry.scopedVersions)) {
17
- const importMapForEntry = await getImportMapFromEntry(scopedEntry, bundleServerUrl, packageDefinitions);
22
+ const importMapForEntry = await getImportMapFromEntry(scopedEntry, bundleServerUrl, packages);
18
23
  for (const requiredById of Object.keys(scopedEntry.requiredBy)) {
19
24
  const scopes = ((_a = importMap.scopes)[_b = `${bundleServerUrl}/${requiredById}/`] ?? (_a[_b] = {}));
20
25
  merge(scopes, importMapForEntry);
@@ -24,35 +29,50 @@ export async function createImportMap(resolveMap, bundleServerUrl, packageDefini
24
29
  }
25
30
  return importMap;
26
31
  }
27
- async function getImportMapFromEntry(entry, bundleServerUrl, packageDefinitions) {
32
+ async function getImportMapFromEntry(entry, bundleServerUrl, packages) {
28
33
  const importMap = {};
29
- const definition = packageDefinitions?.[entry.path] || (await PackageDefinitions.getInstance().get(entry.path));
30
- // Only add packages with names that aren't typings packages.
31
- if (definition?.name && definition?.version && !definition.name.startsWith('@types/')) {
32
- const exportsMap = getFlattenedExportsMap(definition);
33
- if (Object.keys(exportsMap).length === 0) {
34
- // Best effort exports map.
35
- if (fs.existsSync(path.join(entry.path, 'index.js'))) {
36
- exportsMap['.'] = './index.js';
37
- }
38
- }
39
- const packagePrefix = `${definition.name}@${definition.version}/`;
40
- const baseUrl = `${bundleServerUrl}/${packagePrefix}`;
41
- for (const [exportName, exportPath] of Object.entries(exportsMap)) {
42
- let ext = path.extname(exportPath);
43
- if (ext === '.mjs') {
44
- ext = '.js';
34
+ const definition = await packages.get(entry.path);
35
+ const exportsMap = await getExportsMap(entry.path, { packages });
36
+ if (!definition ||
37
+ !definition.name ||
38
+ !definition.version ||
39
+ !exportsMap ||
40
+ Object.keys(exportsMap).length === 0 ||
41
+ definition.name.startsWith('@types/')) {
42
+ return importMap;
43
+ }
44
+ // Get both the unbundled entries from the exports map
45
+ const unbundledExportsMap = flattenExportsMap(exportsMap, {
46
+ conditions: ['browser-esm'],
47
+ requiredConditions: ['browser-esm'],
48
+ });
49
+ const bundledExportsMap = flattenExportsMap(exportsMap);
50
+ const packagePrefix = `${definition.name}@${definition.version}/`;
51
+ const baseUrl = `${bundleServerUrl}/${packagePrefix}`;
52
+ // Add the bundled entries to the import map, but prefer unbundled if the entry exists.
53
+ for (const [importPath, bundledFilePath] of Object.entries(bundledExportsMap)) {
54
+ const isExternal = isExternalPackage(entry.path);
55
+ const unbundledFilePath = isExternal ? unbundledExportsMap[importPath] : undefined;
56
+ let resolvedFilePath = unbundledFilePath ? `unbundled/${unbundledFilePath}` : `bundled/${bundledFilePath}`;
57
+ const ext = path.extname(resolvedFilePath);
58
+ // For bundled files:
59
+ if (!unbundledFilePath) {
60
+ // Ignore .d.ts entries
61
+ if (resolvedFilePath.endsWith('.d.ts')) {
62
+ continue;
45
63
  }
46
- else if (ext !== '.js') {
47
- ext += '.js';
64
+ // We always expect responses to come back as javascript (.js extensions.)
65
+ if (ext !== '.js') {
66
+ resolvedFilePath = path.join(path.dirname(resolvedFilePath), path.basename(resolvedFilePath, ext) + (ext === '.mjs' ? '.js' : ext + '.js'));
48
67
  }
49
- // Ensure that things in the import map end with .js
50
- importMap[exportName.replace('.', definition.name)] = new URL(path
51
- .join(path.dirname(exportPath), path.basename(exportPath, path.extname(exportPath)) + ext)
52
- .replace('+', '_'), baseUrl).href;
68
+ // Plus signs should be replaced with underscores.
69
+ resolvedFilePath = resolvedFilePath.replace(/\+/g, '_');
53
70
  }
54
- importMap[definition.name + '/'] = baseUrl;
71
+ importMap[importPath.replace('.', `${definition.name}`)] = new URL(resolvedFilePath, baseUrl).href;
55
72
  }
73
+ // Finally add a fallback for all other unexpected bundle entries. (Note, this should point to a script
74
+ // which logs this as an error to the user and offers a way to add the entry to exports overrides.)
75
+ // importMap[definition.name + '/'] = baseUrl + 'missing/';
56
76
  return importMap;
57
77
  }
58
78
  //# sourceMappingURL=createImportMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createImportMap.js","sourceRoot":"","sources":["../src/createImportMap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createImportMap.js","sourceRoot":"","sources":["../src/createImportMap.ts"],"names":[],"mappings":"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"}