@ms-cloudpack/package-utilities 0.1.1 → 0.1.4

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 (76) hide show
  1. package/CHANGELOG.json +92 -1
  2. package/CHANGELOG.md +26 -2
  3. package/lib/createResolveMap.d.ts +19 -0
  4. package/lib/createResolveMap.js +116 -0
  5. package/lib/createResolveMap.js.map +1 -0
  6. package/lib/createResolveMap.test.d.ts +1 -0
  7. package/lib/createResolveMap.test.js +12 -0
  8. package/lib/createResolveMap.test.js.map +1 -0
  9. package/lib/detectModuleType.d.ts +11 -0
  10. package/lib/detectModuleType.js +29 -0
  11. package/lib/detectModuleType.js.map +1 -0
  12. package/lib/detectModuleType.test.d.ts +1 -0
  13. package/lib/detectModuleType.test.js +22 -0
  14. package/lib/detectModuleType.test.js.map +1 -0
  15. package/lib/evaluateImportsFromEntries.d.ts +31 -0
  16. package/lib/evaluateImportsFromEntries.js +158 -0
  17. package/lib/evaluateImportsFromEntries.js.map +1 -0
  18. package/lib/evaluateImportsFromEntries.test.d.ts +1 -0
  19. package/lib/evaluateImportsFromEntries.test.js +9 -0
  20. package/lib/evaluateImportsFromEntries.test.js.map +1 -0
  21. package/lib/filterJson.d.ts +3 -0
  22. package/lib/filterJson.js +21 -0
  23. package/lib/filterJson.js.map +1 -0
  24. package/lib/getExportPathFromEntry.d.ts +5 -0
  25. package/lib/getExportPathFromEntry.js +27 -0
  26. package/lib/getExportPathFromEntry.js.map +1 -0
  27. package/lib/getExportPathFromEntry.test.d.ts +1 -0
  28. package/lib/getExportPathFromEntry.test.js +36 -0
  29. package/lib/getExportPathFromEntry.test.js.map +1 -0
  30. package/lib/getInstalledPackages.d.ts +44 -0
  31. package/lib/getInstalledPackages.js +85 -0
  32. package/lib/getInstalledPackages.js.map +1 -0
  33. package/lib/getInstalledPackages.test.d.ts +1 -0
  34. package/lib/getInstalledPackages.test.js +14 -0
  35. package/lib/getInstalledPackages.test.js.map +1 -0
  36. package/lib/getPackageDefinition.d.ts +22 -0
  37. package/lib/getPackageDefinition.js +26 -0
  38. package/lib/getPackageDefinition.js.map +1 -0
  39. package/lib/index.d.ts +9 -0
  40. package/lib/index.js +9 -0
  41. package/lib/index.js.map +1 -0
  42. package/lib/isExternalPackage.d.ts +1 -0
  43. package/lib/isExternalPackage.js +9 -0
  44. package/lib/isExternalPackage.js.map +1 -0
  45. package/lib/isExternalPackage.test.d.ts +1 -0
  46. package/lib/isExternalPackage.test.js +12 -0
  47. package/lib/isExternalPackage.test.js.map +1 -0
  48. package/lib/parseImportString.d.ts +6 -0
  49. package/lib/parseImportString.js +9 -0
  50. package/lib/parseImportString.js.map +1 -0
  51. package/lib/parseImportString.test.d.ts +1 -0
  52. package/lib/parseImportString.test.js +24 -0
  53. package/lib/parseImportString.test.js.map +1 -0
  54. package/lib/resolve.d.ts +1 -0
  55. package/lib/resolve.js +21 -0
  56. package/lib/resolve.js.map +1 -0
  57. package/lib/resolve.test.d.ts +1 -0
  58. package/lib/resolve.test.js +12 -0
  59. package/lib/resolve.test.js.map +1 -0
  60. package/lib/resolveImportFromPackage.test.d.ts +1 -0
  61. package/lib/resolveImportFromPackage.test.js +167 -0
  62. package/lib/resolveImportFromPackage.test.js.map +1 -0
  63. package/lib/resolveImportFromPackagePath.d.ts +21 -0
  64. package/lib/resolveImportFromPackagePath.js +119 -0
  65. package/lib/resolveImportFromPackagePath.js.map +1 -0
  66. package/lib/resolvePackageEntries.d.ts +2 -0
  67. package/lib/resolvePackageEntries.js +36 -0
  68. package/lib/resolvePackageEntries.js.map +1 -0
  69. package/lib/resolvePackageEntries.test.d.ts +1 -0
  70. package/lib/resolvePackageEntries.test.js +78 -0
  71. package/lib/resolvePackageEntries.test.js.map +1 -0
  72. package/lib/testPaths.d.ts +3 -0
  73. package/lib/testPaths.js +6 -0
  74. package/lib/testPaths.js.map +1 -0
  75. package/lib/tsdoc-metadata.json +11 -0
  76. package/package.json +13 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveImportFromPackage.test.js","sourceRoot":"","sources":["../src/resolveImportFromPackage.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type PackageDefinition } from './getPackageDefinition.js';
2
+ /**
3
+ * Options for the resolveImportFromPackage(Path) apis.
4
+ */
5
+ export interface ResolveImportFromPackageOptions {
6
+ /**
7
+ * Prefer source paths over intermediate paths. For example, if the `main` entry resolves to
8
+ * "lib/index.js", and "src/index.tsx" exists, prefer that.
9
+ */
10
+ preferSource?: boolean;
11
+ }
12
+ /**
13
+ * Resolves a requested import path from a package located at the given path. Gives prescedence
14
+ * to browser/esm options. This may change in a future iteration.
15
+ */
16
+ export declare function resolveImportFromPackagePath(packagePath: string, requestedPath?: string, options?: ResolveImportFromPackageOptions): Promise<string>;
17
+ /**
18
+ * Resolves a requested import path from a package located at the given path. Gives prescedence
19
+ * to browser/esm options. This may change in a future iteration.
20
+ */
21
+ export declare function resolveImportFromPackage(packagePath: string, packageDefinition: PackageDefinition, importPath?: string, options?: ResolveImportFromPackageOptions): Promise<string>;
@@ -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,2 @@
1
+ import type { PackageDefinition } from './getPackageDefinition.js';
2
+ export declare function resolvePackageEntries(packageDefinition: PackageDefinition): string[];
@@ -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"}
@@ -0,0 +1,3 @@
1
+ export declare const testScenariosPath: string;
2
+ export declare const testProject1Path: string;
3
+ export declare const testProject2Path: string;
@@ -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.23.2"
9
+ }
10
+ ]
11
+ }
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/package-utilities",
3
- "version": "0.1.1",
3
+ "version": "0.1.4",
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,
@@ -14,22 +15,25 @@
14
15
  "dependencies": {
15
16
  "@babel/parser": "^7.16.12",
16
17
  "@babel/traverse": "^7.16.10",
17
- "@ms-cloudpack/get-package": "^0.0.1",
18
18
  "@ms-cloudpack/path-utilities": "^0.1.0",
19
19
  "resolve": "^1.22.0"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@ms-cloudpack/scripts": "*",
23
23
  "@ms-cloudpack/eslint-config-base": "*",
24
- "@types/resolve": "^1.20.1"
24
+ "@types/resolve": "1.20.2",
25
+ "@babel/types": "7.17.10"
25
26
  },
26
27
  "scripts": {
27
- "build": "just-scripts build",
28
- "build:watch": "just-scripts build:watch",
29
- "lint": "just-scripts lint",
30
- "lint:fix": "just-scripts lint:fix",
31
- "test": "just-scripts test",
32
- "test:watch": "just-scripts test:watch"
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"