@ms-cloudpack/package-utilities 0.13.0 → 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 +31 -1
  2. package/CHANGELOG.md +18 -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 +2 -2
  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
@@ -1 +1 @@
1
- {"version":3,"file":"getExportPathFromEntry.test.js","sourceRoot":"","sources":["../src/getExportPathFromEntry.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CACJ,sBAAsB,CAAC;YACrB,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;SACnB,CAAC,CACH,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CACJ,sBAAsB,CAAC;YACrB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;SACnB,CAAC,CACH,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CACJ,sBAAsB,CAAC;YACrB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;SACnB,CAAC,CACH,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CACJ,sBAAsB,CAAC;YACrB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;SACnB,CAAC,CACH,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CACJ,sBAAsB,CACpB;YACE,GAAG,EAAE;gBACH,MAAM,EAAE,gBAAgB;aACzB;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,cAAc;aACvB;SACF,EACD,OAAO,CACR,CACF,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"getExportPathFromEntry.test.js","sourceRoot":"","sources":["../src/getExportPathFromEntry.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CACJ,sBAAsB,CAAC;YACrB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;SACnB,CAAC,CACH,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CACJ,sBAAsB,CAAC;YACrB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;SACnB,CAAC,CACH,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CACJ,sBAAsB,CAAC;YACrB,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;SACnB,CAAC,CACH,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CACJ,sBAAsB,CACpB;YACE,GAAG,EAAE;gBACH,MAAM,EAAE,gBAAgB;aACzB;YACD,OAAO,EAAE;gBACP,MAAM,EAAE,cAAc;aACvB;SACF,EACD,OAAO,CACR,CACF,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { PackageJson } from 'type-fest';
2
+ import { PackageDefinitions } from './PackageDefinitions.js';
3
+ export declare function getExportsMap(packagePath: string, options?: {
4
+ packages?: PackageDefinitions;
5
+ }): Promise<PackageJson.Exports>;
@@ -0,0 +1,11 @@
1
+ import { PackageDefinitions } from './PackageDefinitions.js';
2
+ import { createExportsMap } from './createExportsMap.js';
3
+ export async function getExportsMap(packagePath, options = {}) {
4
+ const { packages = PackageDefinitions.getInstance() } = options;
5
+ const packageDefinition = await packages.get(packagePath);
6
+ if (!packageDefinition) {
7
+ throw new Error(`Package definition not found for ${packagePath}`);
8
+ }
9
+ return packageDefinition.exports || (await createExportsMap(packagePath, options));
10
+ }
11
+ //# sourceMappingURL=getExportsMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExportsMap.js","sourceRoot":"","sources":["../src/getExportsMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,UAA6C,EAAE;IAE/C,MAAM,EAAE,QAAQ,GAAG,kBAAkB,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,CAAC;IAChE,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE1D,IAAI,CAAC,iBAAiB,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAC;KACpE;IAED,OAAO,iBAAiB,CAAC,OAAO,IAAI,CAAC,MAAM,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AACrF,CAAC"}
package/lib/index.d.ts CHANGED
@@ -1,8 +1,7 @@
1
1
  export { createResolveMap } from './createResolveMap.js';
2
- export { evaluateImportsFromEntries } from './evaluateImportsFromEntries.js';
3
2
  export { PackageDefinitions, type PackageDefinitionTransform } from './PackageDefinitions.js';
4
- export { getFlattenedExportsMap } from './getFlattenedExportsMap.js';
5
- export { generateExportsMap, addExportsMapEntry } from './generateExportsMap.js';
3
+ export { flattenExportsMap } from './flattenExportsMap.js';
4
+ export { createExportsMap, addExportsMapEntry } from './createExportsMap.js';
6
5
  export { resolve } from './resolve.js';
7
6
  export { resolveImportFromPackage, resolveImportFromPackagePath, type ResolveImportFromPackageOptions, } from './resolveImportFromPackagePath.js';
8
7
  export { detectModuleType, type ModuleType } from './detectModuleType.js';
package/lib/index.js CHANGED
@@ -1,8 +1,7 @@
1
1
  export { createResolveMap } from './createResolveMap.js';
2
- export { evaluateImportsFromEntries } from './evaluateImportsFromEntries.js';
3
2
  export { PackageDefinitions } from './PackageDefinitions.js';
4
- export { getFlattenedExportsMap } from './getFlattenedExportsMap.js';
5
- export { generateExportsMap, addExportsMapEntry } from './generateExportsMap.js';
3
+ export { flattenExportsMap } from './flattenExportsMap.js';
4
+ export { createExportsMap, addExportsMapEntry } from './createExportsMap.js';
6
5
  export { resolve } from './resolve.js';
7
6
  export { resolveImportFromPackage, resolveImportFromPackagePath, } from './resolveImportFromPackagePath.js';
8
7
  export { detectModuleType } from './detectModuleType.js';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAmC,MAAM,yBAAyB,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAE7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAmB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAmC,MAAM,yBAAyB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAE7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAmB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAkB,MAAM,sBAAsB,CAAC"}
@@ -124,23 +124,32 @@ describe('resolveImportFromPackage', () => {
124
124
  exports: './lib/tsx.js',
125
125
  }, '', { preferSource: true })).toEqual('./src/tsx.tsx');
126
126
  });
127
- it('can remap imports using browser overrides', async () => {
127
+ it('can ignore browser remapping without browserOnly setting', async () => {
128
128
  expect(await resolveImportFromPackage(testProject2Path, {
129
129
  ...defaultPackageDefinition,
130
130
  browser: {
131
131
  'lib/main.js': './lib/tsx.js',
132
132
  },
133
133
  main: 'lib/main.js',
134
- }, '')).toEqual('./lib/tsx.js');
134
+ }, '')).toEqual('./lib/main.js');
135
+ });
136
+ it('can return browser remapping (browserOnly)', async () => {
137
+ expect(await resolveImportFromPackage(testProject2Path, {
138
+ ...defaultPackageDefinition,
139
+ browser: {
140
+ 'lib/main.js': './lib/tsx.js',
141
+ },
142
+ main: 'lib/main.js',
143
+ }, '', { browserOnly: true })).toEqual('./lib/tsx.js');
135
144
  });
136
- it('can remap imports using browser overrides (preferSource)', async () => {
145
+ it('can remap imports using browser overrides (preferSource, browserOnly)', async () => {
137
146
  expect(await resolveImportFromPackage(testProject2Path, {
138
147
  ...defaultPackageDefinition,
139
148
  browser: {
140
149
  './lib/main.js': './lib/tsx.js',
141
150
  },
142
151
  main: 'lib/main.js',
143
- }, '', { preferSource: true })).toEqual('./src/tsx.tsx');
152
+ }, '', { preferSource: true, browserOnly: true })).toEqual('./src/tsx.tsx');
144
153
  });
145
154
  it('can remap deep imports (preferSource)', async () => {
146
155
  expect(await resolveImportFromPackage(testProject2Path, {
@@ -161,14 +170,20 @@ describe('resolveImportFromPackage', () => {
161
170
  ...defaultPackageDefinition,
162
171
  browser: './lib/tsx',
163
172
  main: 'lib/main',
164
- }, '')).toEqual('./lib/tsx.js');
173
+ }, '', { browserOnly: true })).toEqual('./lib/tsx.js');
174
+ });
175
+ it('can handle a package with only a browser entry without browserOnly set', async () => {
176
+ expect(await resolveImportFromPackage(testProject2Path, {
177
+ ...defaultPackageDefinition,
178
+ browser: './lib/main',
179
+ }, '')).toBe(undefined);
165
180
  });
166
181
  // package example: supports color
167
- it('can handle a package with only a browser entry', async () => {
182
+ it('can return a browser entry if browserOnly is set', async () => {
168
183
  expect(await resolveImportFromPackage(testProject2Path, {
169
184
  ...defaultPackageDefinition,
170
185
  browser: './lib/main',
171
- }, '')).toEqual('./lib/main.js');
186
+ }, '', { browserOnly: true })).toEqual('./lib/main.js');
172
187
  });
173
188
  });
174
189
  //# sourceMappingURL=resolveImportFromPackage.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveImportFromPackage.test.js","sourceRoot":"","sources":["../src/resolveImportFromPackage.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolveImportFromPackage.test.js","sourceRoot":"","sources":["../src/resolveImportFromPackage.test.ts"],"names":[],"mappings":"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"}
@@ -8,15 +8,18 @@ export interface ResolveImportFromPackageOptions {
8
8
  * "lib/index.js", and "src/index.tsx" exists, prefer that.
9
9
  */
10
10
  preferSource?: boolean;
11
+ /**
12
+ * Use only browser-friendly entries to resolve the import.
13
+ */
14
+ browserOnly?: boolean;
11
15
  }
12
16
  /**
13
- * Resolves a requested import path from a package located at the given path. Gives precedence
14
- * to browser/esm options, but will fall back to discover exact path matches, and will fall back
15
- * to source paths (lib to src translation) if the option is provided.
17
+ * Resolves a requested import path from a package located at the given path, returns a path relative
18
+ * to the package, or undefined if no match was found.
16
19
  */
17
20
  export declare function resolveImportFromPackagePath(packagePath: string, requestedPath?: string, options?: ResolveImportFromPackageOptions): Promise<string | undefined>;
18
21
  /**
19
- * Resolves a requested import path from a package located at the given path. Gives precedence
20
- * to browser/esm options. This may change in a future iteration.
22
+ * Resolves a requested import path from a package. Note that this is not a full import path, but rather
23
+ * a path relative to the package. This is used to resolve the path to a file within a package.
21
24
  */
22
25
  export declare function resolveImportFromPackage(packagePath: string, packageDefinition: PackageJson, importPath?: string, options?: ResolveImportFromPackageOptions): Promise<string | undefined>;
@@ -3,11 +3,12 @@ import { intermediateToSourcePath, isFile, isFolder, slash } from '@ms-cloudpack
3
3
  import { PackageDefinitions } from './PackageDefinitions.js';
4
4
  import { getExportPathFromEntry } from './getExportPathFromEntry.js';
5
5
  import { isExternalPackage } from './isExternalPackage.js';
6
+ import { safeRelativePath } from './safeRelativePath.js';
6
7
  const definitions = PackageDefinitions.getInstance();
8
+ const defaultIndexPath = './index.js';
7
9
  /**
8
- * Resolves a requested import path from a package located at the given path. Gives precedence
9
- * to browser/esm options, but will fall back to discover exact path matches, and will fall back
10
- * to source paths (lib to src translation) if the option is provided.
10
+ * Resolves a requested import path from a package located at the given path, returns a path relative
11
+ * to the package, or undefined if no match was found.
11
12
  */
12
13
  export async function resolveImportFromPackagePath(packagePath, requestedPath, options = {}) {
13
14
  const packageDefinition = await definitions.get(packagePath);
@@ -17,17 +18,22 @@ export async function resolveImportFromPackagePath(packagePath, requestedPath, o
17
18
  return resolveImportFromPackage(packagePath, packageDefinition, requestedPath, options);
18
19
  }
19
20
  /**
20
- * Resolves a requested import path from a package located at the given path. Gives precedence
21
- * to browser/esm options. This may change in a future iteration.
21
+ * Resolves a requested import path from a package. Note that this is not a full import path, but rather
22
+ * a path relative to the package. This is used to resolve the path to a file within a package.
22
23
  */
23
24
  export async function resolveImportFromPackage(packagePath, packageDefinition, importPath, options = {}) {
24
- // If the caller passes a period in for the import path, assume it's a package import.
25
- if (importPath === '.') {
25
+ // Normalize import path
26
+ if (importPath && importPath !== '.') {
27
+ importPath = safeRelativePath(importPath);
28
+ }
29
+ else {
26
30
  importPath = undefined;
27
31
  }
32
+ const { browserOnly } = options;
28
33
  const originalPackagePath = packagePath;
29
34
  const fullRequestedPath = path.join(packagePath, importPath || '');
30
- // If the requested subfolder has a package.json, treat it as a sub-package. (some npm packages have nested package.jsons!)
35
+ // If the requested subfolder has a package.json, treat it as a sub-package.
36
+ // (some npm packages have nested package.json files!)
31
37
  if (importPath && isFolder(fullRequestedPath)) {
32
38
  const subPackageDefinition = await definitions.get(fullRequestedPath);
33
39
  if (subPackageDefinition) {
@@ -36,55 +42,58 @@ export async function resolveImportFromPackage(packagePath, packageDefinition, i
36
42
  importPath = undefined;
37
43
  }
38
44
  }
39
- // Normalize path
40
- if (importPath) {
41
- importPath = './' + slash(path.normalize(importPath || ''));
42
- }
43
- else {
44
- importPath = undefined;
45
- }
46
45
  // Build a list of intermediate file candidates.
47
46
  let candidates = [];
48
47
  const { exports } = packageDefinition;
49
48
  // If we have an exports map, this takes priority in resolution.
50
49
  if (exports) {
51
- const exportPath = getExportPathFromEntry(exports, importPath);
50
+ let exportPath;
51
+ if (browserOnly) {
52
+ getExportPathFromEntry(exports, importPath, ['browser']);
53
+ }
54
+ if (!exportPath) {
55
+ exportPath = getExportPathFromEntry(exports, importPath);
56
+ }
52
57
  if (exportPath) {
53
58
  candidates.push(exportPath);
54
59
  }
55
60
  }
56
- if (!importPath) {
57
- candidates.push(packageDefinition.module);
58
- candidates.push(packageDefinition.main);
59
- }
60
61
  else {
61
- candidates.push(importPath);
62
- }
63
- // Fallback to index.js
64
- if (!packageDefinition.main && !packageDefinition.module && !importPath) {
65
- candidates.push('index.js');
66
- }
67
- // If the package has browser re-mappings, respect them.
68
- let { browser } = packageDefinition;
69
- // If the browser entry is a string, convert it into an object.
70
- if (typeof browser === 'string') {
71
- const mainOrModule = packageDefinition.module || packageDefinition.main;
72
- if (mainOrModule) {
73
- browser = { [mainOrModule]: browser };
62
+ // We don't have an exports map. Consider main entries.
63
+ if (!importPath) {
64
+ candidates.push(packageDefinition.module, packageDefinition.main, defaultIndexPath);
74
65
  }
75
66
  else {
76
- candidates.push(packageDefinition.browser);
67
+ candidates.push(importPath);
77
68
  }
78
- }
79
- if (typeof browser === 'object') {
80
- for (const browserMapping of Object.keys(browser)) {
81
- for (let i = 0; i < candidates.length; i++) {
82
- const candidateEntry = candidates[i];
83
- const mappingEntry = browser[browserMapping];
84
- if (mappingEntry && candidateEntry && path.relative(browserMapping, candidateEntry) === '') {
85
- candidates[i] = mappingEntry;
86
- }
69
+ const { browser } = packageDefinition;
70
+ if (browserOnly && browser) {
71
+ // If the package has browser re-mappings, respect them.
72
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
73
+ let safeBrowser = {};
74
+ if (typeof browser === 'object') {
75
+ safeBrowser = Object.keys(browser || {}).reduce((acc, key) => {
76
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
77
+ acc[safeRelativePath(key)] = safeRelativePath(browser[key]);
78
+ return acc;
79
+ }, {});
80
+ }
81
+ else if (typeof browser === 'string') {
82
+ safeBrowser = {
83
+ [safeRelativePath(packageDefinition.module || packageDefinition.main || defaultIndexPath)]: safeRelativePath(browser),
84
+ };
87
85
  }
86
+ // For "browserOnly", we only return browser entries. In the case where we're relying on main, module, index.js,
87
+ // or a direct import, only respect it as a valid candidate if it has a browser re-mapping.
88
+ candidates = candidates.reduce((p, n) => {
89
+ if (n) {
90
+ const candidate = safeRelativePath(n);
91
+ if (safeBrowser[candidate]) {
92
+ p.push(safeBrowser[candidate]);
93
+ }
94
+ }
95
+ return p;
96
+ }, []);
88
97
  }
89
98
  }
90
99
  // Ensure we can handle missing extensions and fall back to js
@@ -110,6 +119,9 @@ export async function resolveImportFromPackage(packagePath, packageDefinition, i
110
119
  .map((c) => ` "${c}"`)
111
120
  .join('\n')}`);
112
121
  }
122
+ if (!foundPath) {
123
+ return undefined;
124
+ }
113
125
  return './' + slash(path.relative(originalPackagePath, path.join(packagePath, foundPath || importPath || '')));
114
126
  }
115
127
  //# sourceMappingURL=resolveImportFromPackagePath.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveImportFromPackagePath.js","sourceRoot":"","sources":["../src/resolveImportFromPackagePath.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolveImportFromPackagePath.js","sourceRoot":"","sources":["../src/resolveImportFromPackagePath.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,8 @@
1
- import type { PackageJson } from 'type-fest';
2
- export declare function resolvePackageEntries(packageDefinition: PackageJson): string[];
1
+ import type { PackageDefinitions } from './PackageDefinitions.js';
2
+ /**
3
+ * Given a package path, reads the exports from the package.json and returns a flattened array of entry files
4
+ * for bundling.
5
+ */
6
+ export declare function resolvePackageEntries(packagePath: string, options?: {
7
+ packages?: PackageDefinitions;
8
+ }): Promise<string[]>;
@@ -1,40 +1,11 @@
1
- import { getExportPathFromEntry } from './getExportPathFromEntry.js';
2
- import { cleanEntry } from './cleanEntry.js';
3
- export function resolvePackageEntries(packageDefinition) {
4
- const entries = new Set();
5
- const { browser, exports } = packageDefinition;
6
- // if exports are available, leverage them.
7
- if (exports) {
8
- if (typeof exports === 'object') {
9
- for (const [key, entry] of Object.entries(exports)) {
10
- if (key.indexOf('*') < 0) {
11
- const entryPath = getExportPathFromEntry(entry);
12
- if (entryPath) {
13
- entries.add(cleanEntry(entryPath));
14
- }
15
- }
16
- }
17
- }
18
- else if (typeof exports === 'string') {
19
- entries.add(cleanEntry(exports));
20
- }
21
- }
22
- else if (typeof browser === 'string') {
23
- entries.add(browser);
24
- }
25
- else {
26
- const defaultEntryPath = packageDefinition.module || packageDefinition.main || './index.js';
27
- if (defaultEntryPath) {
28
- entries.add(cleanEntry(defaultEntryPath));
29
- }
30
- }
31
- if (typeof browser === 'object') {
32
- for (const [fromPath, toPath] of Object.entries(browser)) {
33
- if (entries.has(fromPath) && toPath) {
34
- entries.add(cleanEntry(toPath));
35
- }
36
- }
37
- }
1
+ import { getExportsMap } from './getExportsMap.js';
2
+ import { flattenExportsMap } from './flattenExportsMap.js';
3
+ /**
4
+ * Given a package path, reads the exports from the package.json and returns a flattened array of entry files
5
+ * for bundling.
6
+ */
7
+ export async function resolvePackageEntries(packagePath, options = {}) {
8
+ const entries = new Set(Object.values(flattenExportsMap(await getExportsMap(packagePath, options))));
38
9
  return Array.from(entries);
39
10
  }
40
11
  //# sourceMappingURL=resolvePackageEntries.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolvePackageEntries.js","sourceRoot":"","sources":["../src/resolvePackageEntries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,UAAU,qBAAqB,CAAC,iBAA8B;IAClE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC;IAE/C,2CAA2C;IAC3C,IAAI,OAAO,EAAE;QACX,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAClD,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBACxB,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;oBAEhD,IAAI,SAAS,EAAE;wBACb,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;qBACpC;iBACF;aACF;SACF;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YACtC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;SAClC;KACF;SAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACtB;SAAM;QACL,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,IAAI,iBAAiB,CAAC,IAAI,IAAI,YAAY,CAAC;QAE5F,IAAI,gBAAgB,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;SAC3C;KACF;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACxD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE;gBACnC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;aACjC;SACF;KACF;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"resolvePackageEntries.js","sourceRoot":"","sources":["../src/resolvePackageEntries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,UAEI,EAAE;IAEN,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7G,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
@@ -1,102 +1,101 @@
1
1
  import { describe, it, expect } from '@jest/globals';
2
2
  import { PackageDefinitions } from './PackageDefinitions.js';
3
3
  import { resolvePackageEntries } from './resolvePackageEntries.js';
4
- import { testNodeFetchPath } from './testPaths.js';
5
- const defaultPackage = {
6
- name: 'default',
7
- version: '1.0.0',
8
- };
9
4
  describe('resolvePackageEntries', () => {
10
- it('can resolve an exports map (default)', () => {
11
- expect(resolvePackageEntries({
12
- ...defaultPackage,
13
- exports: {
14
- '.': {
15
- default: './lib/index.js',
5
+ it('can resolve an exports map (default)', async () => {
6
+ const packages = new PackageDefinitions({
7
+ 'node_modules/default': {
8
+ exports: {
9
+ '.': {
10
+ default: './lib/index.js',
11
+ },
16
12
  },
17
13
  },
18
- })).toEqual(['./lib/index.js']);
14
+ });
15
+ expect(await resolvePackageEntries('node_modules/default', { packages })).toEqual(['./lib/index.js']);
19
16
  });
20
- it('can resolve an exports map (import)', () => {
21
- expect(resolvePackageEntries({
22
- ...defaultPackage,
23
- exports: {
24
- '.': {
25
- import: './lib/index.js',
17
+ it('can resolve an exports map (import)', async () => {
18
+ const packages = new PackageDefinitions({
19
+ 'node_modules/default': {
20
+ exports: {
21
+ '.': {
22
+ import: './lib/index.js',
23
+ },
26
24
  },
27
25
  },
28
- })).toEqual(['./lib/index.js']);
26
+ });
27
+ expect(await resolvePackageEntries('node_modules/default', { packages })).toEqual(['./lib/index.js']);
29
28
  });
30
- it('can resolve an exports map (string)', () => {
31
- expect(resolvePackageEntries({
32
- ...defaultPackage,
33
- exports: {
34
- '.': './lib/index.js',
29
+ it('can resolve an exports map (string)', async () => {
30
+ const packages = new PackageDefinitions({
31
+ 'node_modules/default': {
32
+ exports: {
33
+ '.': './lib/index.js',
34
+ },
35
35
  },
36
- })).toEqual(['./lib/index.js']);
36
+ });
37
+ expect(await resolvePackageEntries('node_modules/default', { packages })).toEqual(['./lib/index.js']);
37
38
  });
38
- it('can resolve an exports map (no source)', () => {
39
- expect(resolvePackageEntries({
40
- ...defaultPackage,
41
- exports: {
42
- '.': {
43
- types: './lib/index.d.ts',
44
- source: './lib/index.ts',
39
+ it('can resolve an exports map (multiple)', async () => {
40
+ const packages = new PackageDefinitions({
41
+ 'node_modules/default': {
42
+ exports: {
43
+ '.': './lib/index.js',
44
+ './foo': './lib/foo.js',
45
45
  },
46
46
  },
47
- })).toEqual([]);
47
+ });
48
+ expect(await resolvePackageEntries('node_modules/default', { packages })).toEqual([
49
+ './lib/index.js',
50
+ './lib/foo.js',
51
+ ]);
48
52
  });
49
- it('can resolve an exports map (multiple)', () => {
50
- expect(resolvePackageEntries({
51
- ...defaultPackage,
52
- exports: {
53
- '.': './lib/index.js',
54
- './foo': './lib/foo.js',
53
+ it('can prefer module over main', async () => {
54
+ const packages = new PackageDefinitions({
55
+ 'node_modules/default': {
56
+ main: 'main.js',
57
+ module: 'module.js',
55
58
  },
56
- })).toEqual(['./lib/index.js', './lib/foo.js']);
57
- });
58
- it('can prefer module over main', () => {
59
- expect(resolvePackageEntries({
60
- ...defaultPackage,
61
- module: './lib/module.js',
62
- main: './lib/main.js',
63
- })).toEqual(['./lib/module.js']);
59
+ });
60
+ expect(await resolvePackageEntries('node_modules/default', { packages })).toEqual(['./module.js']);
64
61
  });
65
- it('can fall back to main', () => {
66
- expect(resolvePackageEntries({
67
- ...defaultPackage,
68
- main: './lib/main.js',
69
- })).toEqual(['./lib/main.js']);
70
- });
71
- it('can dedupe redundant entries', () => {
72
- expect(resolvePackageEntries({
73
- ...defaultPackage,
74
- exports: {
75
- '.': './lib/index.js',
76
- './foo': './lib/index.js',
62
+ it('can fall back to main', async () => {
63
+ const packages = new PackageDefinitions({
64
+ 'node_modules/default': {
65
+ main: 'main.js',
77
66
  },
78
- })).toEqual(['./lib/index.js']);
79
- });
80
- it('can resolve node-fetch entries', async () => {
81
- expect(resolvePackageEntries((await PackageDefinitions.getInstance().get(testNodeFetchPath)))).toEqual(['./browser.js']);
67
+ });
68
+ expect(await resolvePackageEntries('node_modules/default', { packages })).toEqual(['./main.js']);
82
69
  });
83
- it('can resolve an entry without an extension', () => {
84
- expect(resolvePackageEntries({
85
- main: 'index',
86
- })).toEqual(['./index.js']);
70
+ it('can dedupe redundant entries', async () => {
71
+ const packages = new PackageDefinitions({
72
+ 'node_modules/default': {
73
+ exports: {
74
+ '.': './lib/index.js',
75
+ './foo': './lib/index.js',
76
+ },
77
+ },
78
+ });
79
+ expect(await resolvePackageEntries('node_modules/default', { packages })).toEqual(['./lib/index.js']);
87
80
  });
88
- it('ignores entries with astrisks', () => {
89
- expect(resolvePackageEntries({
90
- exports: {
91
- '.': './lib/index.js',
92
- './foo/*': './lib/foo.js',
81
+ it('can resolve an entry without an extension', async () => {
82
+ const packages = new PackageDefinitions({
83
+ 'node_modules/default': {
84
+ main: 'main',
93
85
  },
94
- })).toEqual(['./lib/index.js']);
86
+ });
87
+ expect(await resolvePackageEntries('node_modules/default', { packages })).toEqual(['./main.js']);
95
88
  });
96
- it('can handle entries with exports as string', () => {
97
- expect(resolvePackageEntries({
98
- exports: './lib/index.js',
99
- })).toEqual(['./lib/index.js']);
89
+ it('ignores entries with trailing slashes', async () => {
90
+ const packages = new PackageDefinitions({
91
+ 'node_modules/default': {
92
+ exports: {
93
+ '.': './lib/index.js',
94
+ './': './',
95
+ },
96
+ },
97
+ });
98
+ expect(await resolvePackageEntries('node_modules/default', { packages })).toEqual(['./lib/index.js']);
100
99
  });
101
100
  });
102
101
  //# sourceMappingURL=resolvePackageEntries.test.js.map