@ms-cloudpack/package-utilities 0.8.1 → 0.9.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 +16 -1
- package/CHANGELOG.md +10 -2
- package/lib/PackageDefinitions.d.ts +12 -0
- package/lib/PackageDefinitions.js +41 -0
- package/lib/PackageDefinitions.js.map +1 -0
- package/lib/PackageDefinitions.test.d.ts +1 -0
- package/lib/PackageDefinitions.test.js +89 -0
- package/lib/PackageDefinitions.test.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,22 @@
|
|
|
2
2
|
"name": "@ms-cloudpack/package-utilities",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "
|
|
5
|
+
"date": "Sun, 04 Sep 2022 08:14:28 GMT",
|
|
6
|
+
"tag": "@ms-cloudpack/package-utilities_v0.9.0",
|
|
7
|
+
"version": "0.9.0",
|
|
8
|
+
"comments": {
|
|
9
|
+
"minor": [
|
|
10
|
+
{
|
|
11
|
+
"author": "dzearing@microsoft.com",
|
|
12
|
+
"package": "@ms-cloudpack/package-utilities",
|
|
13
|
+
"commit": "33c2ca948b1ea905fa5a09f56bd443724d638fe3",
|
|
14
|
+
"comment": "Adding PackageDefinitions implementation."
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"date": "Sat, 03 Sep 2022 08:15:29 GMT",
|
|
6
21
|
"tag": "@ms-cloudpack/package-utilities_v0.8.1",
|
|
7
22
|
"version": "0.8.1",
|
|
8
23
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
# Change Log - @ms-cloudpack/package-utilities
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Sun, 04 Sep 2022 08:14:28 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 0.9.0
|
|
8
|
+
|
|
9
|
+
Sun, 04 Sep 2022 08:14:28 GMT
|
|
10
|
+
|
|
11
|
+
### Minor changes
|
|
12
|
+
|
|
13
|
+
- Adding PackageDefinitions implementation. (dzearing@microsoft.com)
|
|
14
|
+
|
|
7
15
|
## 0.8.1
|
|
8
16
|
|
|
9
|
-
Sat, 03 Sep 2022 08:15:
|
|
17
|
+
Sat, 03 Sep 2022 08:15:29 GMT
|
|
10
18
|
|
|
11
19
|
### Patches
|
|
12
20
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PackageJson } from 'type-fest';
|
|
2
|
+
export declare type PackageDefinitionTransform = (definition: PackageJson) => PackageJson | undefined;
|
|
3
|
+
export declare class PackageDefinitions {
|
|
4
|
+
static getInstance(): PackageDefinitions;
|
|
5
|
+
private _cache;
|
|
6
|
+
private _transforms;
|
|
7
|
+
get(packagePath: string, options?: {
|
|
8
|
+
refresh: boolean;
|
|
9
|
+
}): Promise<PackageJson | undefined>;
|
|
10
|
+
registerTransform(callback: PackageDefinitionTransform): void;
|
|
11
|
+
clear(): void;
|
|
12
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { applyOverrides } from '@ms-cloudpack/package-overrides';
|
|
3
|
+
import { readJson } from '@ms-cloudpack/json-utilities';
|
|
4
|
+
let _singleton;
|
|
5
|
+
export class PackageDefinitions {
|
|
6
|
+
constructor() {
|
|
7
|
+
this._cache = {};
|
|
8
|
+
this._transforms = [applyOverrides];
|
|
9
|
+
}
|
|
10
|
+
static getInstance() {
|
|
11
|
+
if (!_singleton) {
|
|
12
|
+
_singleton = new PackageDefinitions();
|
|
13
|
+
}
|
|
14
|
+
return _singleton;
|
|
15
|
+
}
|
|
16
|
+
async get(packagePath, options) {
|
|
17
|
+
let existingDefinition = this._cache[packagePath];
|
|
18
|
+
if (!existingDefinition || options?.refresh) {
|
|
19
|
+
try {
|
|
20
|
+
// Load the package and apply transforms.
|
|
21
|
+
const definition = await readJson(path.join(packagePath, 'package.json'));
|
|
22
|
+
// If we have loaded a definition, apply transforms and cache/return the result.
|
|
23
|
+
if (definition) {
|
|
24
|
+
existingDefinition = this._cache[packagePath] = this._transforms.reduce((def, transform) => transform(def) || def, definition);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
/* no-op */
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return existingDefinition;
|
|
32
|
+
}
|
|
33
|
+
registerTransform(callback) {
|
|
34
|
+
this._transforms.push(callback);
|
|
35
|
+
this.clear();
|
|
36
|
+
}
|
|
37
|
+
clear() {
|
|
38
|
+
this._cache = {};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=PackageDefinitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackageDefinitions.js","sourceRoot":"","sources":["../src/PackageDefinitions.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,IAAI,UAA0C,CAAC;AAG/C,MAAM,OAAO,kBAAkB;IAA/B;QAQU,WAAM,GAAgC,EAAE,CAAC;QACzC,gBAAW,GAAiC,CAAC,cAAc,CAAC,CAAC;IAiCvE,CAAC;IAzCC,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,GAAG,IAAI,kBAAkB,EAAE,CAAC;SACvC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAKD,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,OAA8B;QAC3D,IAAI,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAElD,IAAI,CAAC,kBAAkB,IAAI,OAAO,EAAE,OAAO,EAAE;YAC3C,IAAI;gBACF,yCAAyC;gBACzC,MAAM,UAAU,GAA4B,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;gBAEnG,gFAAgF;gBAChF,IAAI,UAAU,EAAE;oBACd,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CACrE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,EACzC,UAAU,CACX,CAAC;iBACH;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,WAAW;aACZ;SACF;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,iBAAiB,CAAC,QAAoC;QACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { PackageDefinitions } from './PackageDefinitions.js';
|
|
2
|
+
import { testProject1Path } from './testPaths.js';
|
|
3
|
+
import { describe, it, expect } from '@jest/globals';
|
|
4
|
+
describe('PackageDefinitions', () => {
|
|
5
|
+
it('can get a package definition', async () => {
|
|
6
|
+
const definitions = new PackageDefinitions();
|
|
7
|
+
expect(await definitions.get(testProject1Path)).toMatchInlineSnapshot(`
|
|
8
|
+
{
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"b": "^1.0.0",
|
|
11
|
+
"c": "^1.0.0",
|
|
12
|
+
},
|
|
13
|
+
"exports": {
|
|
14
|
+
".": "./lib/index.js",
|
|
15
|
+
"./foo": "./lib/foo.js",
|
|
16
|
+
},
|
|
17
|
+
"name": "test-project-1",
|
|
18
|
+
"type": "module",
|
|
19
|
+
"version": "0.0.1",
|
|
20
|
+
}
|
|
21
|
+
`);
|
|
22
|
+
});
|
|
23
|
+
it('can return undefined when the package definition is missing', async () => {
|
|
24
|
+
const definitions = new PackageDefinitions();
|
|
25
|
+
expect(await definitions.get('./missing')).toBeUndefined();
|
|
26
|
+
});
|
|
27
|
+
it('can get package definitions with transforms', async () => {
|
|
28
|
+
const definitions = new PackageDefinitions();
|
|
29
|
+
definitions.registerTransform((definition) => ({
|
|
30
|
+
...definition,
|
|
31
|
+
name: 'transformed',
|
|
32
|
+
}));
|
|
33
|
+
expect(await definitions.get(testProject1Path)).toMatchInlineSnapshot(`
|
|
34
|
+
{
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"b": "^1.0.0",
|
|
37
|
+
"c": "^1.0.0",
|
|
38
|
+
},
|
|
39
|
+
"exports": {
|
|
40
|
+
".": "./lib/index.js",
|
|
41
|
+
"./foo": "./lib/foo.js",
|
|
42
|
+
},
|
|
43
|
+
"name": "transformed",
|
|
44
|
+
"type": "module",
|
|
45
|
+
"version": "0.0.1",
|
|
46
|
+
}
|
|
47
|
+
`);
|
|
48
|
+
});
|
|
49
|
+
it('can get package definitions with transforms and refresh', async () => {
|
|
50
|
+
const definitions = new PackageDefinitions();
|
|
51
|
+
let transformName = 'transformed';
|
|
52
|
+
let definition = await definitions.get(testProject1Path);
|
|
53
|
+
expect(definition?.name).toBe('test-project-1');
|
|
54
|
+
definitions.registerTransform((definition) => ({
|
|
55
|
+
...definition,
|
|
56
|
+
name: transformName,
|
|
57
|
+
}));
|
|
58
|
+
definition = await definitions.get(testProject1Path);
|
|
59
|
+
expect(definition?.name).toBe('transformed');
|
|
60
|
+
transformName = 'transformed2';
|
|
61
|
+
// This should return a cached version.
|
|
62
|
+
definition = await definitions.get(testProject1Path);
|
|
63
|
+
expect(definition?.name).toBe('transformed');
|
|
64
|
+
// Passing in refresh:true should reset.
|
|
65
|
+
definition = await definitions.get(testProject1Path, { refresh: true });
|
|
66
|
+
expect(definition?.name).toBe('transformed2');
|
|
67
|
+
});
|
|
68
|
+
it('can get package definitions with transforms and clear', async () => {
|
|
69
|
+
const definitions = new PackageDefinitions();
|
|
70
|
+
let transformName = 'transformed';
|
|
71
|
+
let definition = await definitions.get(testProject1Path);
|
|
72
|
+
expect(definition?.name).toBe('test-project-1');
|
|
73
|
+
definitions.registerTransform((definition) => ({
|
|
74
|
+
...definition,
|
|
75
|
+
name: transformName,
|
|
76
|
+
}));
|
|
77
|
+
definition = await definitions.get(testProject1Path);
|
|
78
|
+
expect(definition?.name).toBe('transformed');
|
|
79
|
+
transformName = 'transformed2';
|
|
80
|
+
// This should return a cached version.
|
|
81
|
+
definition = await definitions.get(testProject1Path);
|
|
82
|
+
expect(definition?.name).toBe('transformed');
|
|
83
|
+
// Clearing should reset.
|
|
84
|
+
definitions.clear();
|
|
85
|
+
definition = await definitions.get(testProject1Path);
|
|
86
|
+
expect(definition?.name).toBe('transformed2');
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=PackageDefinitions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PackageDefinitions.test.js","sourceRoot":"","sources":["../src/PackageDefinitions.test.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { createResolveMap } from './createResolveMap.js';
|
|
2
2
|
export { evaluateImportsFromEntries } from './evaluateImportsFromEntries.js';
|
|
3
|
+
export { PackageDefinitions, type PackageDefinitionTransform } from './PackageDefinitions.js';
|
|
3
4
|
export { getPackageDefinition } from './getPackageDefinition.js';
|
|
4
5
|
export { resolve } from './resolve.js';
|
|
5
6
|
export { resolveImportFromPackage, resolveImportFromPackagePath, type ResolveImportFromPackageOptions, } from './resolveImportFromPackagePath.js';
|
package/lib/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { createResolveMap } from './createResolveMap.js';
|
|
2
2
|
export { evaluateImportsFromEntries } from './evaluateImportsFromEntries.js';
|
|
3
|
+
export { PackageDefinitions } from './PackageDefinitions.js';
|
|
3
4
|
export { getPackageDefinition } from './getPackageDefinition.js';
|
|
4
5
|
export { resolve } from './resolve.js';
|
|
5
6
|
export { resolveImportFromPackage, resolveImportFromPackagePath, } from './resolveImportFromPackagePath.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,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,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,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAmC,MAAM,yBAAyB,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,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"}
|