@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.
- package/CHANGELOG.json +31 -1
- package/CHANGELOG.md +18 -2
- package/lib/PackageDefinitions.d.ts +1 -0
- package/lib/PackageDefinitions.js +2 -1
- package/lib/PackageDefinitions.js.map +1 -1
- package/lib/createExportsMap.d.ts +12 -0
- package/lib/createExportsMap.js +105 -0
- package/lib/createExportsMap.js.map +1 -0
- package/lib/{evaluateImportsFromEntries.test.d.ts → createExportsMap.test.d.ts} +0 -0
- package/lib/createExportsMap.test.js +131 -0
- package/lib/createExportsMap.test.js.map +1 -0
- package/lib/createImportMap.d.ts +7 -2
- package/lib/createImportMap.js +49 -29
- package/lib/createImportMap.js.map +1 -1
- package/lib/createImportMap.test.js +44 -157
- package/lib/createImportMap.test.js.map +1 -1
- package/lib/createResolveMap.test.js +6 -5
- package/lib/createResolveMap.test.js.map +1 -1
- package/lib/{getFlattenedExportsMap.d.ts → flattenExportsMap.d.ts} +4 -1
- package/lib/flattenExportsMap.js +67 -0
- package/lib/flattenExportsMap.js.map +1 -0
- package/lib/{generateExportsMap.test.d.ts → flattenExportsMap.test.d.ts} +0 -0
- package/lib/flattenExportsMap.test.js +185 -0
- package/lib/flattenExportsMap.test.js.map +1 -0
- package/lib/getExportPathFromEntry.js +2 -1
- package/lib/getExportPathFromEntry.js.map +1 -1
- package/lib/getExportPathFromEntry.test.js +0 -8
- package/lib/getExportPathFromEntry.test.js.map +1 -1
- package/lib/getExportsMap.d.ts +5 -0
- package/lib/getExportsMap.js +11 -0
- package/lib/getExportsMap.js.map +1 -0
- package/lib/index.d.ts +2 -3
- package/lib/index.js +2 -3
- package/lib/index.js.map +1 -1
- package/lib/resolveImportFromPackage.test.js +22 -7
- package/lib/resolveImportFromPackage.test.js.map +1 -1
- package/lib/resolveImportFromPackagePath.d.ts +8 -5
- package/lib/resolveImportFromPackagePath.js +55 -43
- package/lib/resolveImportFromPackagePath.js.map +1 -1
- package/lib/resolvePackageEntries.d.ts +8 -2
- package/lib/resolvePackageEntries.js +8 -37
- package/lib/resolvePackageEntries.js.map +1 -1
- package/lib/resolvePackageEntries.test.js +76 -77
- package/lib/resolvePackageEntries.test.js.map +1 -1
- package/lib/safeRelativePath.d.ts +4 -0
- package/lib/safeRelativePath.js +19 -0
- package/lib/safeRelativePath.js.map +1 -0
- package/lib/{getFlattenedExportsMap.test.d.ts → safeRelativePath.test.d.ts} +0 -0
- package/lib/safeRelativePath.test.js +17 -0
- package/lib/safeRelativePath.test.js.map +1 -0
- package/package.json +2 -2
- package/lib/evaluateImportsFromEntries.d.ts +0 -31
- package/lib/evaluateImportsFromEntries.js +0 -151
- package/lib/evaluateImportsFromEntries.js.map +0 -1
- package/lib/evaluateImportsFromEntries.test.js +0 -39
- package/lib/evaluateImportsFromEntries.test.js.map +0 -1
- package/lib/generateExportsMap.d.ts +0 -9
- package/lib/generateExportsMap.js +0 -80
- package/lib/generateExportsMap.js.map +0 -1
- package/lib/generateExportsMap.test.js +0 -100
- package/lib/generateExportsMap.test.js.map +0 -1
- package/lib/getFlattenedExportsMap.js +0 -77
- package/lib/getFlattenedExportsMap.js.map +0 -1
- package/lib/getFlattenedExportsMap.test.js +0 -270
- package/lib/getFlattenedExportsMap.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvePackageEntries.test.js","sourceRoot":"","sources":["../src/resolvePackageEntries.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"resolvePackageEntries.test.js","sourceRoot":"","sources":["../src/resolvePackageEntries.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { slash } from '@ms-cloudpack/path-utilities';
|
|
2
|
+
/**
|
|
3
|
+
* Ensures the give relative path starts with a ./
|
|
4
|
+
*/
|
|
5
|
+
export function safeRelativePath(originalPath) {
|
|
6
|
+
if (!originalPath) {
|
|
7
|
+
return '.';
|
|
8
|
+
}
|
|
9
|
+
// Ensure we have the right slashes.
|
|
10
|
+
originalPath = slash(originalPath);
|
|
11
|
+
if (originalPath.startsWith('/')) {
|
|
12
|
+
return '.' + originalPath;
|
|
13
|
+
}
|
|
14
|
+
else if (originalPath.startsWith('./')) {
|
|
15
|
+
return originalPath;
|
|
16
|
+
}
|
|
17
|
+
return `./${originalPath}`;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=safeRelativePath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safeRelativePath.js","sourceRoot":"","sources":["../src/safeRelativePath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAgC;IAC/D,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,GAAG,CAAC;KACZ;IAED,oCAAoC;IACpC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IAEnC,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QAChC,OAAO,GAAG,GAAG,YAAY,CAAC;KAC3B;SAAM,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACxC,OAAO,YAAY,CAAC;KACrB;IAED,OAAO,KAAK,YAAY,EAAE,CAAC;AAC7B,CAAC"}
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { describe, it, expect } from '@jest/globals';
|
|
2
|
+
import { safeRelativePath } from './safeRelativePath.js';
|
|
3
|
+
describe('safeRelativePath', () => {
|
|
4
|
+
it('can handle undefined', () => {
|
|
5
|
+
expect(safeRelativePath(undefined)).toEqual('.');
|
|
6
|
+
});
|
|
7
|
+
it('can handle an absolute path', () => {
|
|
8
|
+
expect(safeRelativePath('/foo/bar')).toEqual('./foo/bar');
|
|
9
|
+
});
|
|
10
|
+
it('can handle a relative path', () => {
|
|
11
|
+
expect(safeRelativePath('./foo/bar')).toEqual('./foo/bar');
|
|
12
|
+
});
|
|
13
|
+
it('can handle a relative path without a leading slash', () => {
|
|
14
|
+
expect(safeRelativePath('foo/bar')).toEqual('./foo/bar');
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=safeRelativePath.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safeRelativePath.test.js","sourceRoot":"","sources":["../src/safeRelativePath.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/package-utilities",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Utilities for resolving/parsing packages and their imports.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@babel/parser": "^7.16.12",
|
|
17
17
|
"@babel/traverse": "^7.16.10",
|
|
18
|
-
"@ms-cloudpack/json-utilities": "^0.0.
|
|
18
|
+
"@ms-cloudpack/json-utilities": "^0.0.4",
|
|
19
19
|
"@ms-cloudpack/package-overrides": "^0.2.0",
|
|
20
20
|
"@ms-cloudpack/path-utilities": "^0.5.0",
|
|
21
21
|
"resolve": "^1.22.0"
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { ResolveMap } from './createResolveMap.js';
|
|
2
|
-
declare type PackageExports = {
|
|
3
|
-
[packageName: string]: {
|
|
4
|
-
[version: string]: {
|
|
5
|
-
[importPath: string]: {
|
|
6
|
-
count: number;
|
|
7
|
-
import: string | undefined;
|
|
8
|
-
};
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
export interface EvaluateImportsFromEntriesStats {
|
|
13
|
-
parsedSourceFiles: number;
|
|
14
|
-
parseErrors: string[];
|
|
15
|
-
uniqueImports: number;
|
|
16
|
-
uniquePackages: number;
|
|
17
|
-
unresolvedPackages: {
|
|
18
|
-
name: string;
|
|
19
|
-
from: string;
|
|
20
|
-
}[];
|
|
21
|
-
unresolvedPackageImports: {
|
|
22
|
-
name: string;
|
|
23
|
-
path: string;
|
|
24
|
-
from: string;
|
|
25
|
-
}[];
|
|
26
|
-
}
|
|
27
|
-
export declare function evaluateImportsFromEntries(entries: string[], resolveMap?: ResolveMap, allExports?: PackageExports): Promise<{
|
|
28
|
-
exports: PackageExports;
|
|
29
|
-
stats: EvaluateImportsFromEntriesStats;
|
|
30
|
-
}>;
|
|
31
|
-
export {};
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { parseImportString } from './parseImportString.js';
|
|
4
|
-
import { resolveImportFromPackagePath } from './resolveImportFromPackagePath.js';
|
|
5
|
-
import { resolve } from './resolve.js';
|
|
6
|
-
import babelParser, {} from '@babel/parser';
|
|
7
|
-
import traverseAPI, {} from '@babel/traverse';
|
|
8
|
-
import { PackageDefinitions } from './PackageDefinitions.js';
|
|
9
|
-
const { readFile } = fs.promises;
|
|
10
|
-
const traverse = traverseAPI.default;
|
|
11
|
-
const sourceExtensions = ['.ts', '.tsx', '.js', '.cjs', '.mjs', '.jsx'];
|
|
12
|
-
function resolveSource(sourcePath) {
|
|
13
|
-
const originalExt = path.extname(sourcePath);
|
|
14
|
-
if (!originalExt) {
|
|
15
|
-
for (const ext of sourceExtensions) {
|
|
16
|
-
if (fs.existsSync(sourcePath + ext)) {
|
|
17
|
-
return sourcePath + ext;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
else if (sourceExtensions.indexOf(originalExt) >= 0) {
|
|
22
|
-
return sourcePath;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export async function evaluateImportsFromEntries(entries, resolveMap, allExports = {}) {
|
|
26
|
-
const entriesToEvaluate = [...entries];
|
|
27
|
-
const visitedPaths = new Set();
|
|
28
|
-
const addEntry = (newEntry) => {
|
|
29
|
-
const ext = path.extname(newEntry);
|
|
30
|
-
if (!visitedPaths.has(newEntry) && (!ext || sourceExtensions.indexOf(ext) >= 0)) {
|
|
31
|
-
entriesToEvaluate.push(newEntry);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
const stats = {
|
|
35
|
-
parsedSourceFiles: 0,
|
|
36
|
-
parseErrors: [],
|
|
37
|
-
uniqueImports: 0,
|
|
38
|
-
uniquePackages: 0,
|
|
39
|
-
unresolvedPackages: [],
|
|
40
|
-
unresolvedPackageImports: [],
|
|
41
|
-
};
|
|
42
|
-
// Skip entry file paths we've already visited.
|
|
43
|
-
while (entriesToEvaluate.length) {
|
|
44
|
-
const entry = entriesToEvaluate.shift();
|
|
45
|
-
if (visitedPaths.has(entry)) {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
visitedPaths.add(entry);
|
|
49
|
-
// Get imports in entry file.
|
|
50
|
-
const content = await readFile(entry, 'utf8');
|
|
51
|
-
const importValues = [];
|
|
52
|
-
try {
|
|
53
|
-
const plugins = [
|
|
54
|
-
'typescript',
|
|
55
|
-
'decorators-legacy',
|
|
56
|
-
'objectRestSpread',
|
|
57
|
-
'optionalChaining',
|
|
58
|
-
'nullishCoalescingOperator',
|
|
59
|
-
];
|
|
60
|
-
const isJsx = ['.jsx', '.tsx'].indexOf(path.extname(entry)) >= 0;
|
|
61
|
-
if (isJsx) {
|
|
62
|
-
plugins.push('jsx');
|
|
63
|
-
}
|
|
64
|
-
const ast = babelParser.parse(content, {
|
|
65
|
-
sourceType: 'unambiguous',
|
|
66
|
-
plugins,
|
|
67
|
-
});
|
|
68
|
-
traverse(ast, {
|
|
69
|
-
ImportDeclaration(astPath) {
|
|
70
|
-
if (astPath.node.source) {
|
|
71
|
-
importValues.push(astPath.node.source?.value);
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
ExportDeclaration(astPath) {
|
|
75
|
-
const source = astPath.node.source;
|
|
76
|
-
if (source) {
|
|
77
|
-
importValues.push(source.value);
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
CallExpression(astPath) {
|
|
81
|
-
if (astPath.node.callee.type === 'Import') {
|
|
82
|
-
importValues.push(astPath.node.arguments[0].value);
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
});
|
|
86
|
-
stats.parsedSourceFiles++;
|
|
87
|
-
}
|
|
88
|
-
catch (e) {
|
|
89
|
-
stats.parseErrors.push(entry);
|
|
90
|
-
console.log(`Failed: "${entry}"`, String(e));
|
|
91
|
-
}
|
|
92
|
-
for (const importValue of importValues) {
|
|
93
|
-
if (importValue) {
|
|
94
|
-
if (importValue[0] !== '.') {
|
|
95
|
-
const { packageName, importPath } = parseImportString(importValue);
|
|
96
|
-
let packagePath;
|
|
97
|
-
// Fix import path
|
|
98
|
-
const fixedImportPath = !importPath ? '.' : './' + importPath;
|
|
99
|
-
// Get package path
|
|
100
|
-
try {
|
|
101
|
-
packagePath = await resolve(packageName, path.dirname(entry));
|
|
102
|
-
}
|
|
103
|
-
catch (e) {
|
|
104
|
-
stats.unresolvedPackages.push({ name: packageName, from: entry });
|
|
105
|
-
console.log(`Unable to resolve "${packageName}" from "${entry}"`);
|
|
106
|
-
}
|
|
107
|
-
if (packagePath) {
|
|
108
|
-
const version = (await PackageDefinitions.getInstance().get(packagePath))?.version || 'unknown';
|
|
109
|
-
if (!allExports[packageName]?.[version]) {
|
|
110
|
-
stats.uniquePackages++;
|
|
111
|
-
}
|
|
112
|
-
const packageMap = (allExports[packageName] = allExports[packageName] || {});
|
|
113
|
-
const versionMap = (packageMap[version] = packageMap[version] || {});
|
|
114
|
-
// TODO: resolve should take in resolveMap to support resolution overrides
|
|
115
|
-
const relativeImportPath = await resolveImportFromPackagePath(packagePath, importPath, {
|
|
116
|
-
preferSource: true,
|
|
117
|
-
});
|
|
118
|
-
const fullPath = relativeImportPath && path.join(packagePath, relativeImportPath);
|
|
119
|
-
let importDefinition = versionMap[fixedImportPath];
|
|
120
|
-
if (!importDefinition) {
|
|
121
|
-
stats.uniqueImports++;
|
|
122
|
-
importDefinition = versionMap[fixedImportPath] = {
|
|
123
|
-
import: undefined,
|
|
124
|
-
count: 0,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
if (fullPath && fs.existsSync(fullPath)) {
|
|
128
|
-
importDefinition.import = relativeImportPath;
|
|
129
|
-
addEntry(fullPath);
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
stats.unresolvedPackageImports.push({ name: packageName, path: importPath, from: entry });
|
|
133
|
-
console.log(`Unable to resolve "${packageName}"${importPath ? ` (${importPath})` : ''} from "${entry}"`);
|
|
134
|
-
}
|
|
135
|
-
importDefinition.count++;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
// relative path
|
|
140
|
-
// Not a package. Traverse source if needed.
|
|
141
|
-
const relativeSourcePath = resolveSource(path.resolve(path.dirname(entry), importValue));
|
|
142
|
-
if (relativeSourcePath) {
|
|
143
|
-
addEntry(relativeSourcePath);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
return { exports: allExports, stats };
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=evaluateImportsFromEntries.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateImportsFromEntries.js","sourceRoot":"","sources":["../src/evaluateImportsFromEntries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from '@jest/globals';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { evaluateImportsFromEntries } from './evaluateImportsFromEntries.js';
|
|
4
|
-
import { testProject1Path } from '../src/testPaths.js';
|
|
5
|
-
describe('evaluateImportsFromEntries', () => {
|
|
6
|
-
it('can evaluate exports map', async () => {
|
|
7
|
-
expect(await evaluateImportsFromEntries([path.join(testProject1Path, 'src/index.ts')])).toMatchInlineSnapshot(`
|
|
8
|
-
{
|
|
9
|
-
"exports": {
|
|
10
|
-
"b": {
|
|
11
|
-
"1.0.0": {
|
|
12
|
-
".": {
|
|
13
|
-
"count": 1,
|
|
14
|
-
"import": "./index.js",
|
|
15
|
-
},
|
|
16
|
-
"./subpath": {
|
|
17
|
-
"count": 1,
|
|
18
|
-
"import": "./subpath.js",
|
|
19
|
-
},
|
|
20
|
-
"./subpath2": {
|
|
21
|
-
"count": 1,
|
|
22
|
-
"import": "./subpath2.js",
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
"stats": {
|
|
28
|
-
"parseErrors": [],
|
|
29
|
-
"parsedSourceFiles": 6,
|
|
30
|
-
"uniqueImports": 3,
|
|
31
|
-
"uniquePackages": 1,
|
|
32
|
-
"unresolvedPackageImports": [],
|
|
33
|
-
"unresolvedPackages": [],
|
|
34
|
-
},
|
|
35
|
-
}
|
|
36
|
-
`);
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
//# sourceMappingURL=evaluateImportsFromEntries.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evaluateImportsFromEntries.test.js","sourceRoot":"","sources":["../src/evaluateImportsFromEntries.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,CAAC,MAAM,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6B7G,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { PackageJson } from 'type-fest';
|
|
2
|
-
/**
|
|
3
|
-
* Given a package path, generates an export map for the package.
|
|
4
|
-
*/
|
|
5
|
-
export declare function generateExportsMap(packagePath: string): Promise<PackageJson.Exports>;
|
|
6
|
-
/**
|
|
7
|
-
* Given an exports map and details about an import path, adds the entry.
|
|
8
|
-
*/
|
|
9
|
-
export declare function addExportsMapEntry(exports: PackageJson.Exports, importPath: string | undefined, packagePath: string, entryPath: string | undefined, typesPath?: string): Promise<void>;
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import { isFile, slash } from '@ms-cloudpack/path-utilities';
|
|
3
|
-
import { PackageDefinitions } from './PackageDefinitions.js';
|
|
4
|
-
import { isExternalPackage } from './isExternalPackage.js';
|
|
5
|
-
import { resolveImportFromPackagePath } from './resolveImportFromPackagePath.js';
|
|
6
|
-
/**
|
|
7
|
-
* Given a package path, generates an export map for the package.
|
|
8
|
-
*/
|
|
9
|
-
export async function generateExportsMap(packagePath) {
|
|
10
|
-
const definition = await PackageDefinitions.getInstance().get(packagePath);
|
|
11
|
-
if (!definition) {
|
|
12
|
-
throw new Error(`Package definition not found for ${packagePath}`);
|
|
13
|
-
}
|
|
14
|
-
const { main, module, browser } = definition;
|
|
15
|
-
const hasRootIndexJs = isFile(path.join(packagePath, 'index.js'));
|
|
16
|
-
const exports = definition.exports || {};
|
|
17
|
-
const types = definition.types || definition.typings;
|
|
18
|
-
if (!(main || module || browser || hasRootIndexJs)) {
|
|
19
|
-
return exports;
|
|
20
|
-
}
|
|
21
|
-
if (hasRootIndexJs) {
|
|
22
|
-
await addExportsMapEntry(exports, undefined, packagePath, 'index.js', types);
|
|
23
|
-
}
|
|
24
|
-
await addExportsMapEntry(exports, undefined, packagePath, main, types);
|
|
25
|
-
await addExportsMapEntry(exports, undefined, packagePath, module, types);
|
|
26
|
-
if (browser && typeof browser === 'string') {
|
|
27
|
-
await addExportsMapEntry(exports, undefined, packagePath, browser, types);
|
|
28
|
-
}
|
|
29
|
-
return exports;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Given an exports map and details about an import path, adds the entry.
|
|
33
|
-
*/
|
|
34
|
-
export async function addExportsMapEntry(exports, importPath, packagePath, entryPath, typesPath) {
|
|
35
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
-
const packageExports = exports;
|
|
37
|
-
if (!entryPath) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
entryPath = safeRelativePath(entryPath);
|
|
41
|
-
const intermediatePath = await resolveImportFromPackagePath(packagePath, importPath || entryPath);
|
|
42
|
-
if (!intermediatePath) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
const isInternal = !isExternalPackage(packagePath);
|
|
46
|
-
const sourcePath = isInternal
|
|
47
|
-
? await resolveImportFromPackagePath(packagePath, importPath, { preferSource: true })
|
|
48
|
-
: undefined;
|
|
49
|
-
const potentialTypesPath = path.extname(intermediatePath) === '.js' && intermediatePath.replace('.js', '.d.ts');
|
|
50
|
-
const isTypeScriptSource = sourcePath && ['.ts', '.tsx', '.mts', '.cts'].indexOf(path.extname(sourcePath)) >= 0;
|
|
51
|
-
if (!typesPath &&
|
|
52
|
-
potentialTypesPath &&
|
|
53
|
-
((isInternal && isTypeScriptSource) || (!isInternal && isFile(path.join(packagePath, potentialTypesPath))))) {
|
|
54
|
-
typesPath = potentialTypesPath;
|
|
55
|
-
}
|
|
56
|
-
packageExports[importPath || '.'] = {
|
|
57
|
-
...(typesPath && { types: safeRelativePath(typesPath) }),
|
|
58
|
-
default: intermediatePath,
|
|
59
|
-
...(sourcePath && sourcePath !== intermediatePath && { source: sourcePath }),
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Ensures the give relative path starts with a ./
|
|
64
|
-
*/
|
|
65
|
-
function safeRelativePath(originalPath) {
|
|
66
|
-
if (!originalPath) {
|
|
67
|
-
return '.';
|
|
68
|
-
}
|
|
69
|
-
// Don't modify absolute paths.
|
|
70
|
-
if (path.isAbsolute(originalPath)) {
|
|
71
|
-
return originalPath;
|
|
72
|
-
}
|
|
73
|
-
// Ensure we have the right slashes.
|
|
74
|
-
originalPath = slash(originalPath);
|
|
75
|
-
if (originalPath.startsWith('./')) {
|
|
76
|
-
return originalPath;
|
|
77
|
-
}
|
|
78
|
-
return `./${originalPath}`;
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=generateExportsMap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateExportsMap.js","sourceRoot":"","sources":["../src/generateExportsMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from '@jest/globals';
|
|
2
|
-
import { generateExportsMap } from './generateExportsMap.js';
|
|
3
|
-
import { testScenariosPath } from './testPaths.js';
|
|
4
|
-
import path from 'path';
|
|
5
|
-
const testGenerateExportsPath = path.join(testScenariosPath, 'test-generate-exports');
|
|
6
|
-
describe('generateExportsMap', () => {
|
|
7
|
-
it('can return a blank import map for something with nothing to export', async () => {
|
|
8
|
-
expect(await generateExportsMap(path.join(testGenerateExportsPath, 'no-exports'))).toEqual({});
|
|
9
|
-
});
|
|
10
|
-
it('can generate an exports map for a package with an implicit index.js file', async () => {
|
|
11
|
-
expect(await generateExportsMap(path.join(testGenerateExportsPath, 'implicit-export'))).toMatchInlineSnapshot(`
|
|
12
|
-
{
|
|
13
|
-
".": {
|
|
14
|
-
"default": "./index.js",
|
|
15
|
-
},
|
|
16
|
-
}
|
|
17
|
-
`);
|
|
18
|
-
});
|
|
19
|
-
it('can generate an exports map for a package with a main export as esm', async () => {
|
|
20
|
-
expect(await generateExportsMap(path.join(testGenerateExportsPath, 'main-export-esm'))).toMatchInlineSnapshot(`
|
|
21
|
-
{
|
|
22
|
-
".": {
|
|
23
|
-
"default": "./main.js",
|
|
24
|
-
},
|
|
25
|
-
}
|
|
26
|
-
`);
|
|
27
|
-
});
|
|
28
|
-
it('can generate an exports map for a package with a main export as cjs', async () => {
|
|
29
|
-
expect(await generateExportsMap(path.join(testGenerateExportsPath, 'main-export-cjs'))).toMatchInlineSnapshot(`
|
|
30
|
-
{
|
|
31
|
-
".": {
|
|
32
|
-
"default": "./main.js",
|
|
33
|
-
},
|
|
34
|
-
}
|
|
35
|
-
`);
|
|
36
|
-
});
|
|
37
|
-
it('can generate an exports map for a package with a main export as cjs and types', async () => {
|
|
38
|
-
expect(await generateExportsMap(path.join(testGenerateExportsPath, 'main-export-cjs-types')))
|
|
39
|
-
.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 generateExportsMap(path.join(testGenerateExportsPath, 'module-export'))).toMatchInlineSnapshot(`
|
|
50
|
-
{
|
|
51
|
-
".": {
|
|
52
|
-
"default": "./module.js",
|
|
53
|
-
},
|
|
54
|
-
}
|
|
55
|
-
`);
|
|
56
|
-
});
|
|
57
|
-
it('can generate an exports map for a package with a browser export', async () => {
|
|
58
|
-
expect(await generateExportsMap(path.join(testGenerateExportsPath, 'browser-export'))).toMatchInlineSnapshot(`
|
|
59
|
-
{
|
|
60
|
-
".": {
|
|
61
|
-
"default": "./browser.js",
|
|
62
|
-
},
|
|
63
|
-
}
|
|
64
|
-
`);
|
|
65
|
-
});
|
|
66
|
-
it('can generate an exports map for a package with a type/source exports', async () => {
|
|
67
|
-
expect(await generateExportsMap(path.join(testGenerateExportsPath, 'sources-export'))).toMatchInlineSnapshot(`
|
|
68
|
-
{
|
|
69
|
-
".": {
|
|
70
|
-
"default": "./lib/index.js",
|
|
71
|
-
"source": "./src/index.tsx",
|
|
72
|
-
"types": "./lib/index.d.ts",
|
|
73
|
-
},
|
|
74
|
-
}
|
|
75
|
-
`);
|
|
76
|
-
});
|
|
77
|
-
it('can generate an exports map for an internal unbuilt package', async () => {
|
|
78
|
-
expect(await generateExportsMap(path.join(testGenerateExportsPath, 'main-export-unbuilt'))).toMatchInlineSnapshot(`
|
|
79
|
-
{
|
|
80
|
-
".": {
|
|
81
|
-
"default": "./lib/index.js",
|
|
82
|
-
"source": "./src/index.ts",
|
|
83
|
-
"types": "./lib/index.d.ts",
|
|
84
|
-
},
|
|
85
|
-
}
|
|
86
|
-
`);
|
|
87
|
-
});
|
|
88
|
-
it('can generate an exports map for an external package with implicit type exports', async () => {
|
|
89
|
-
expect(await generateExportsMap(path.join(testGenerateExportsPath, 'node_modules/ext-esm-types')))
|
|
90
|
-
.toMatchInlineSnapshot(`
|
|
91
|
-
{
|
|
92
|
-
".": {
|
|
93
|
-
"default": "./lib/main.js",
|
|
94
|
-
"types": "./lib/main.d.ts",
|
|
95
|
-
},
|
|
96
|
-
}
|
|
97
|
-
`);
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
//# sourceMappingURL=generateExportsMap.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generateExportsMap.test.js","sourceRoot":"","sources":["../src/generateExportsMap.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
|
-
import { cleanEntry } from './cleanEntry.js';
|
|
3
|
-
const defaultConditions = ['browser', 'import', 'module', 'default'];
|
|
4
|
-
/**
|
|
5
|
-
* Given a package definition and applicable conditions, return a flat map of package import to physical (relative) path.
|
|
6
|
-
* Optionally return the exports map fully qualified with conditions intact using the `fullExports` option.
|
|
7
|
-
*/
|
|
8
|
-
export function getFlattenedExportsMap(definition, conditions = defaultConditions) {
|
|
9
|
-
const exportsMap = {};
|
|
10
|
-
if (typeof definition.browser === 'string') {
|
|
11
|
-
exportsMap['.'] = cleanEntry(definition.browser);
|
|
12
|
-
}
|
|
13
|
-
extractExports(definition.exports, conditions, exportsMap);
|
|
14
|
-
// if the definition doesn't have an exports map, fall back to module or main
|
|
15
|
-
if (!definition.exports) {
|
|
16
|
-
if (typeof definition.module === 'string') {
|
|
17
|
-
addExportsEntry(exportsMap, '.', definition.module);
|
|
18
|
-
}
|
|
19
|
-
else if (typeof definition.main === 'string') {
|
|
20
|
-
addExportsEntry(exportsMap, '.', definition.main);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
// At this point we should consider browser overrides.
|
|
24
|
-
if (definition.browser && typeof definition.browser === 'object') {
|
|
25
|
-
for (const [fromPath, toPath] of Object.entries(definition.browser)) {
|
|
26
|
-
// NOTE: I'm not sure this is entirely correct; browser overrides should be replacing the keys we've already
|
|
27
|
-
// extracted from exports. But certain packages like uuid@3.4 don't have exports map but do have browser overrides.
|
|
28
|
-
// In this case, the expected behavior is that the consumer deeply imports a file path like "uuid/lib/md5" which would
|
|
29
|
-
// be translated to the browser flavor via the remapping.
|
|
30
|
-
if (toPath) {
|
|
31
|
-
exportsMap[fromPath] = cleanEntry(toPath);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return exportsMap;
|
|
36
|
-
}
|
|
37
|
-
function extractExports(exports, conditions, exportsMap = {}, importMatch = '.') {
|
|
38
|
-
if (exports) {
|
|
39
|
-
if (typeof exports === 'string') {
|
|
40
|
-
addExportsEntry(exportsMap, importMatch, exports);
|
|
41
|
-
}
|
|
42
|
-
else if (typeof exports === 'object') {
|
|
43
|
-
if (Array.isArray(exports)) {
|
|
44
|
-
for (const exportEntry of exports) {
|
|
45
|
-
extractExports(exportEntry, conditions, exportsMap, importMatch);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
for (const [key, value] of Object.entries(exports)) {
|
|
50
|
-
if (key.startsWith('.')) {
|
|
51
|
-
importMatch = key;
|
|
52
|
-
}
|
|
53
|
-
else if (!conditions.includes(key)) {
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
if (typeof value === 'string') {
|
|
57
|
-
if (!exportsMap[importMatch]) {
|
|
58
|
-
addExportsEntry(exportsMap, importMatch, value);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
extractExports(value, conditions, exportsMap, importMatch);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return exportsMap;
|
|
69
|
-
}
|
|
70
|
-
function addExportsEntry(exportsMap, key, value) {
|
|
71
|
-
const basename = path.basename(value);
|
|
72
|
-
const isFilename = basename !== '' && basename !== '.' && !value.endsWith('/');
|
|
73
|
-
if (!exportsMap[key] && isFilename && key.indexOf('*') === -1 && !key.endsWith('/') && value.indexOf('*') === -1) {
|
|
74
|
-
exportsMap[key] = cleanEntry(value);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=getFlattenedExportsMap.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getFlattenedExportsMap.js","sourceRoot":"","sources":["../src/getFlattenedExportsMap.ts"],"names":[],"mappings":"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"}
|