@ms-cloudpack/package-utilities 0.1.3 → 0.1.6
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 +24 -1
- package/CHANGELOG.md +10 -2
- package/lib/createResolveMap.d.ts +19 -0
- package/lib/createResolveMap.js +116 -0
- package/lib/createResolveMap.js.map +1 -0
- package/lib/createResolveMap.test.d.ts +1 -0
- package/lib/createResolveMap.test.js +12 -0
- package/lib/createResolveMap.test.js.map +1 -0
- package/lib/detectModuleType.d.ts +11 -0
- package/lib/detectModuleType.js +29 -0
- package/lib/detectModuleType.js.map +1 -0
- package/lib/detectModuleType.test.d.ts +1 -0
- package/lib/detectModuleType.test.js +22 -0
- package/lib/detectModuleType.test.js.map +1 -0
- package/lib/evaluateImportsFromEntries.d.ts +31 -0
- package/lib/evaluateImportsFromEntries.js +158 -0
- package/lib/evaluateImportsFromEntries.js.map +1 -0
- package/lib/evaluateImportsFromEntries.test.d.ts +1 -0
- package/lib/evaluateImportsFromEntries.test.js +9 -0
- package/lib/evaluateImportsFromEntries.test.js.map +1 -0
- package/lib/filterJson.d.ts +3 -0
- package/lib/filterJson.js +21 -0
- package/lib/filterJson.js.map +1 -0
- package/lib/getExportPathFromEntry.d.ts +5 -0
- package/lib/getExportPathFromEntry.js +27 -0
- package/lib/getExportPathFromEntry.js.map +1 -0
- package/lib/getExportPathFromEntry.test.d.ts +1 -0
- package/lib/getExportPathFromEntry.test.js +36 -0
- package/lib/getExportPathFromEntry.test.js.map +1 -0
- package/lib/getInstalledPackages.d.ts +44 -0
- package/lib/getInstalledPackages.js +85 -0
- package/lib/getInstalledPackages.js.map +1 -0
- package/lib/getInstalledPackages.test.d.ts +1 -0
- package/lib/getInstalledPackages.test.js +14 -0
- package/lib/getInstalledPackages.test.js.map +1 -0
- package/lib/getPackageDefinition.d.ts +22 -0
- package/lib/getPackageDefinition.js +26 -0
- package/lib/getPackageDefinition.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +9 -0
- package/lib/index.js.map +1 -0
- package/lib/isExternalPackage.d.ts +1 -0
- package/lib/isExternalPackage.js +9 -0
- package/lib/isExternalPackage.js.map +1 -0
- package/lib/isExternalPackage.test.d.ts +1 -0
- package/lib/isExternalPackage.test.js +12 -0
- package/lib/isExternalPackage.test.js.map +1 -0
- package/lib/parseImportString.d.ts +6 -0
- package/lib/parseImportString.js +9 -0
- package/lib/parseImportString.js.map +1 -0
- package/lib/parseImportString.test.d.ts +1 -0
- package/lib/parseImportString.test.js +24 -0
- package/lib/parseImportString.test.js.map +1 -0
- package/lib/resolve.d.ts +1 -0
- package/lib/resolve.js +21 -0
- package/lib/resolve.js.map +1 -0
- package/lib/resolve.test.d.ts +1 -0
- package/lib/resolve.test.js +12 -0
- package/lib/resolve.test.js.map +1 -0
- package/lib/resolveImportFromPackage.test.d.ts +1 -0
- package/lib/resolveImportFromPackage.test.js +167 -0
- package/lib/resolveImportFromPackage.test.js.map +1 -0
- package/lib/resolveImportFromPackagePath.d.ts +21 -0
- package/lib/resolveImportFromPackagePath.js +119 -0
- package/lib/resolveImportFromPackagePath.js.map +1 -0
- package/lib/resolvePackageEntries.d.ts +2 -0
- package/lib/resolvePackageEntries.js +36 -0
- package/lib/resolvePackageEntries.js.map +1 -0
- package/lib/resolvePackageEntries.test.d.ts +1 -0
- package/lib/resolvePackageEntries.test.js +78 -0
- package/lib/resolvePackageEntries.test.js.map +1 -0
- package/lib/testPaths.d.ts +3 -0
- package/lib/testPaths.js +6 -0
- package/lib/testPaths.js.map +1 -0
- package/lib/tsdoc-metadata.json +11 -0
- package/package.json +11 -7
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { intermediateToSourcePath, isFile, isFolder, slash } from '@ms-cloudpack/path-utilities';
|
|
3
|
+
import { getPackageDefinition } from './getPackageDefinition.js';
|
|
4
|
+
import { getExportPathFromEntry } from './getExportPathFromEntry.js';
|
|
5
|
+
import { isExternalPackage } from './isExternalPackage.js';
|
|
6
|
+
/**
|
|
7
|
+
* Resolves a requested import path from a package located at the given path. Gives prescedence
|
|
8
|
+
* to browser/esm options. This may change in a future iteration.
|
|
9
|
+
*/
|
|
10
|
+
export async function resolveImportFromPackagePath(packagePath, requestedPath = '', options = {}) {
|
|
11
|
+
const packageDefinition = await getPackageDefinition(packagePath);
|
|
12
|
+
if (!packageDefinition) {
|
|
13
|
+
console.log(`Couldn't load definition for "${packagePath}"`);
|
|
14
|
+
return requestedPath;
|
|
15
|
+
}
|
|
16
|
+
return resolveImportFromPackage(packagePath, packageDefinition, requestedPath, options);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolves a requested import path from a package located at the given path. Gives prescedence
|
|
20
|
+
* to browser/esm options. This may change in a future iteration.
|
|
21
|
+
*/
|
|
22
|
+
export async function resolveImportFromPackage(packagePath, packageDefinition, importPath = '', options = {}) {
|
|
23
|
+
const originalPackagePath = packagePath;
|
|
24
|
+
const fullRequestedPath = path.join(packagePath, importPath);
|
|
25
|
+
// If the requested subfolder has a package.json, treat it as a sub-package. (some npm packages have nested package.jsons!)
|
|
26
|
+
if (importPath && isFolder(fullRequestedPath)) {
|
|
27
|
+
const subPackageDefinition = await getPackageDefinition(fullRequestedPath);
|
|
28
|
+
if (subPackageDefinition) {
|
|
29
|
+
packageDefinition = subPackageDefinition;
|
|
30
|
+
packagePath = fullRequestedPath;
|
|
31
|
+
importPath = '';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Remove leading slashes if needed.
|
|
35
|
+
if (importPath[0] === '/') {
|
|
36
|
+
importPath = importPath.substring(1);
|
|
37
|
+
}
|
|
38
|
+
// Build a list of intermediate file candidates.
|
|
39
|
+
let candidates = [];
|
|
40
|
+
const { exports } = packageDefinition;
|
|
41
|
+
// If we have an exports map, this takes priority in resolution.
|
|
42
|
+
if (exports) {
|
|
43
|
+
// If the requested path is null, we can use the default exports from the exports map.
|
|
44
|
+
if (typeof exports === 'string') {
|
|
45
|
+
if (!importPath) {
|
|
46
|
+
candidates.push(exports);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (Array.isArray(exports)) {
|
|
50
|
+
candidates.push(getExportPathFromEntry(exports));
|
|
51
|
+
}
|
|
52
|
+
else if (!importPath) {
|
|
53
|
+
candidates.push(getExportPathFromEntry(exports['.'] || exports));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
candidates.push(getExportPathFromEntry(exports['./' + importPath]));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (!importPath) {
|
|
60
|
+
candidates.push(packageDefinition.module);
|
|
61
|
+
candidates.push(packageDefinition.main);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
candidates.push(importPath);
|
|
65
|
+
}
|
|
66
|
+
// Fallback to index.js
|
|
67
|
+
if (!packageDefinition.main && !packageDefinition.module && !importPath) {
|
|
68
|
+
candidates.push('index.js');
|
|
69
|
+
}
|
|
70
|
+
// If the package has browser remappings, respect them.
|
|
71
|
+
// eslint-disable-next-line etc/no-deprecated
|
|
72
|
+
let { browser } = packageDefinition;
|
|
73
|
+
// If the browser entry is a string, convert it into an object.
|
|
74
|
+
if (typeof browser === 'string') {
|
|
75
|
+
const mainOrModule = packageDefinition.module || packageDefinition.main;
|
|
76
|
+
if (mainOrModule) {
|
|
77
|
+
browser = { [mainOrModule]: browser };
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// eslint-disable-next-line etc/no-deprecated
|
|
81
|
+
candidates.push(packageDefinition.browser);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (typeof browser === 'object') {
|
|
85
|
+
for (const browserMapping of Object.keys(browser)) {
|
|
86
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
87
|
+
const candidateEntry = candidates[i];
|
|
88
|
+
if (candidateEntry && path.relative(browserMapping, candidateEntry) === '') {
|
|
89
|
+
candidates[i] = browser[browserMapping];
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Ensure we can handle missing extensions and fall back to js
|
|
95
|
+
for (let i = 0; i < candidates.length; i++) {
|
|
96
|
+
const candidate = candidates[i];
|
|
97
|
+
if (candidate && path.extname(candidate) !== '.js') {
|
|
98
|
+
candidates.splice(i + 1, 0, candidate + '.js');
|
|
99
|
+
candidates.splice(i + 2, 0, candidate + '/index.js');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// (optional) Add source paths if we prefer source files to intermediate files.
|
|
103
|
+
const preferSource = options.preferSource && !isExternalPackage(packagePath);
|
|
104
|
+
if (preferSource) {
|
|
105
|
+
candidates = [
|
|
106
|
+
...candidates.map((c) => c && intermediateToSourcePath(c, packagePath)).filter(Boolean),
|
|
107
|
+
...candidates,
|
|
108
|
+
];
|
|
109
|
+
}
|
|
110
|
+
// Search candidates for first match.
|
|
111
|
+
const foundPath = candidates.find((candidatePath) => candidatePath && isFile(path.join(packagePath, candidatePath)));
|
|
112
|
+
if (!foundPath && path.basename(importPath).indexOf('chunk-') !== 0) {
|
|
113
|
+
console.log(`Couldn't resolve import ("${packagePath}", importPath="${importPath}", preferSource=${!!preferSource}), Tried:\n${candidates
|
|
114
|
+
.map((c) => ' "' + c + '"')
|
|
115
|
+
.join('\n')}`);
|
|
116
|
+
}
|
|
117
|
+
return slash(path.relative(originalPackagePath, path.join(packagePath, foundPath || importPath)));
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=resolveImportFromPackagePath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveImportFromPackagePath.js","sourceRoot":"","sources":["../src/resolveImportFromPackagePath.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { getExportPathFromEntry } from './getExportPathFromEntry.js';
|
|
2
|
+
export function resolvePackageEntries(packageDefinition) {
|
|
3
|
+
const entries = new Set();
|
|
4
|
+
// if exports are available, leverage them.
|
|
5
|
+
if (packageDefinition.exports) {
|
|
6
|
+
for (const entry of Object.values(packageDefinition.exports)) {
|
|
7
|
+
const entryPath = getExportPathFromEntry(entry);
|
|
8
|
+
if (entryPath) {
|
|
9
|
+
entries.add(entryPath);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
const defaultEntryPath = packageDefinition.module || packageDefinition.main;
|
|
15
|
+
if (defaultEntryPath) {
|
|
16
|
+
entries.add(defaultEntryPath);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// filter based on browser mapping if available
|
|
20
|
+
// eslint-disable-next-line etc/no-deprecated
|
|
21
|
+
const browser = packageDefinition.browser;
|
|
22
|
+
switch (typeof browser) {
|
|
23
|
+
case 'string':
|
|
24
|
+
entries.add(browser);
|
|
25
|
+
break;
|
|
26
|
+
case 'object':
|
|
27
|
+
for (const [fromPath, toPath] of Object.entries(browser)) {
|
|
28
|
+
if (entries.has(fromPath)) {
|
|
29
|
+
entries.add(toPath);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
return Array.from(entries);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=resolvePackageEntries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvePackageEntries.js","sourceRoot":"","sources":["../src/resolvePackageEntries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,UAAU,qBAAqB,CAAC,iBAAoC;IACxE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,2CAA2C;IAC3C,IAAI,iBAAiB,CAAC,OAAO,EAAE;QAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;YAC5D,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAEhD,IAAI,SAAS,EAAE;gBACb,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aACxB;SACF;KACF;SAAM;QACL,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC;QAC5E,IAAI,gBAAgB,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;SAC/B;KACF;IAED,+CAA+C;IAC/C,6CAA6C;IAC7C,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC;IAC1C,QAAQ,OAAO,OAAO,EAAE;QACtB,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,MAAM;QAER,KAAK,QAAQ;YACX,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACxD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;oBACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACrB;aACF;YAED,MAAM;KACT;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { resolvePackageEntries } from './resolvePackageEntries.js';
|
|
2
|
+
const defaultPackage = {
|
|
3
|
+
name: 'default',
|
|
4
|
+
version: '1.0.0',
|
|
5
|
+
};
|
|
6
|
+
describe('resolvePackageEntries', () => {
|
|
7
|
+
it('can resolve an exports map (default)', () => {
|
|
8
|
+
expect(resolvePackageEntries({
|
|
9
|
+
...defaultPackage,
|
|
10
|
+
exports: {
|
|
11
|
+
'.': {
|
|
12
|
+
default: './lib/index.js',
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
})).toEqual(['./lib/index.js']);
|
|
16
|
+
});
|
|
17
|
+
it('can resolve an exports map (import)', () => {
|
|
18
|
+
expect(resolvePackageEntries({
|
|
19
|
+
...defaultPackage,
|
|
20
|
+
exports: {
|
|
21
|
+
'.': {
|
|
22
|
+
import: './lib/index.js',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
})).toEqual(['./lib/index.js']);
|
|
26
|
+
});
|
|
27
|
+
it('can resolve an exports map (string)', () => {
|
|
28
|
+
expect(resolvePackageEntries({
|
|
29
|
+
...defaultPackage,
|
|
30
|
+
exports: {
|
|
31
|
+
'.': './lib/index.js',
|
|
32
|
+
},
|
|
33
|
+
})).toEqual(['./lib/index.js']);
|
|
34
|
+
});
|
|
35
|
+
it('can resolve an exports map (no source)', () => {
|
|
36
|
+
expect(resolvePackageEntries({
|
|
37
|
+
...defaultPackage,
|
|
38
|
+
exports: {
|
|
39
|
+
'.': {
|
|
40
|
+
types: './lib/index.d.ts',
|
|
41
|
+
source: './lib/index.ts',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
})).toEqual([]);
|
|
45
|
+
});
|
|
46
|
+
it('can resolve an exports map (multiple)', () => {
|
|
47
|
+
expect(resolvePackageEntries({
|
|
48
|
+
...defaultPackage,
|
|
49
|
+
exports: {
|
|
50
|
+
'.': './lib/index.js',
|
|
51
|
+
'./foo': './lib/foo.js',
|
|
52
|
+
},
|
|
53
|
+
})).toEqual(['./lib/index.js', './lib/foo.js']);
|
|
54
|
+
});
|
|
55
|
+
it('can prefer module over main', () => {
|
|
56
|
+
expect(resolvePackageEntries({
|
|
57
|
+
...defaultPackage,
|
|
58
|
+
module: './lib/module.js',
|
|
59
|
+
main: './lib/main.js',
|
|
60
|
+
})).toEqual(['./lib/module.js']);
|
|
61
|
+
});
|
|
62
|
+
it('can fall back to main', () => {
|
|
63
|
+
expect(resolvePackageEntries({
|
|
64
|
+
...defaultPackage,
|
|
65
|
+
main: './lib/main.js',
|
|
66
|
+
})).toEqual(['./lib/main.js']);
|
|
67
|
+
});
|
|
68
|
+
it('can dedupe redundant entries', () => {
|
|
69
|
+
expect(resolvePackageEntries({
|
|
70
|
+
...defaultPackage,
|
|
71
|
+
exports: {
|
|
72
|
+
'.': './lib/index.js',
|
|
73
|
+
'./foo': './lib/index.js',
|
|
74
|
+
},
|
|
75
|
+
})).toEqual(['./lib/index.js']);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=resolvePackageEntries.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvePackageEntries.test.js","sourceRoot":"","sources":["../src/resolvePackageEntries.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CACJ,qBAAqB,CAAC;YACpB,GAAG,cAAc;YACjB,OAAO,EAAE;gBACP,GAAG,EAAE;oBACH,OAAO,EAAE,gBAAgB;iBAC1B;aACF;SACF,CAAC,CACH,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CACJ,qBAAqB,CAAC;YACpB,GAAG,cAAc;YACjB,OAAO,EAAE;gBACP,GAAG,EAAE;oBACH,MAAM,EAAE,gBAAgB;iBACzB;aACF;SACF,CAAC,CACH,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CACJ,qBAAqB,CAAC;YACpB,GAAG,cAAc;YACjB,OAAO,EAAE;gBACP,GAAG,EAAE,gBAAgB;aACtB;SACF,CAAC,CACH,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CACJ,qBAAqB,CAAC;YACpB,GAAG,cAAc;YACjB,OAAO,EAAE;gBACP,GAAG,EAAE;oBACH,KAAK,EAAE,kBAAkB;oBACzB,MAAM,EAAE,gBAAgB;iBACzB;aACF;SACF,CAAC,CACH,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CACJ,qBAAqB,CAAC;YACpB,GAAG,cAAc;YACjB,OAAO,EAAE;gBACP,GAAG,EAAE,gBAAgB;gBACrB,OAAO,EAAE,cAAc;aACxB;SACF,CAAC,CACH,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CACJ,qBAAqB,CAAC;YACpB,GAAG,cAAc;YACjB,MAAM,EAAE,iBAAiB;YACzB,IAAI,EAAE,eAAe;SACtB,CAAC,CACH,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CACJ,qBAAqB,CAAC;YACpB,GAAG,cAAc;YACjB,IAAI,EAAE,eAAe;SACtB,CAAC,CACH,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CACJ,qBAAqB,CAAC;YACpB,GAAG,cAAc;YACjB,OAAO,EAAE;gBACP,GAAG,EAAE,gBAAgB;gBACrB,OAAO,EAAE,gBAAgB;aAC1B;SACF,CAAC,CACH,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/lib/testPaths.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { fileURLToPath } from 'url';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
export const testScenariosPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../test-scenarios');
|
|
4
|
+
export const testProject1Path = path.resolve(testScenariosPath, 'test-project-1');
|
|
5
|
+
export const testProject2Path = path.join(testScenariosPath, 'test-project-2');
|
|
6
|
+
//# sourceMappingURL=testPaths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testPaths.js","sourceRoot":"","sources":["../src/testPaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AACjH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AAClF,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// This file is read by tools that parse documentation comments conforming to the TSDoc standard.
|
|
2
|
+
// It should be published with your NPM package. It should not be tracked by Git.
|
|
3
|
+
{
|
|
4
|
+
"tsdocVersion": "0.12",
|
|
5
|
+
"toolPackages": [
|
|
6
|
+
{
|
|
7
|
+
"packageName": "@microsoft/api-extractor",
|
|
8
|
+
"packageVersion": "7.24.0"
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/package-utilities",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Utilities for resolving/parsing packages and their imports.",
|
|
5
|
+
"license": "MIT",
|
|
5
6
|
"type": "module",
|
|
6
7
|
"types": "./lib/index.d.ts",
|
|
7
8
|
"sideEffects": false,
|
|
@@ -24,12 +25,15 @@
|
|
|
24
25
|
"@babel/types": "7.17.10"
|
|
25
26
|
},
|
|
26
27
|
"scripts": {
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
28
|
+
"api:update": "cloudpack-scripts api-update",
|
|
29
|
+
"api": "cloudpack-scripts api",
|
|
30
|
+
"build:watch": "cloudpack-scripts build-watch",
|
|
31
|
+
"build": "cloudpack-scripts build",
|
|
32
|
+
"lint:update": "cloudpack-scripts lint-update",
|
|
33
|
+
"lint": "cloudpack-scripts lint",
|
|
34
|
+
"test:update": "cloudpack-scripts test-update",
|
|
35
|
+
"test:watch": "cloudpack-scripts test-watch",
|
|
36
|
+
"test": "cloudpack-scripts test"
|
|
33
37
|
},
|
|
34
38
|
"files": [
|
|
35
39
|
"/lib"
|