@servicetitan/startup-utils 27.4.0-canary.1 → 34.0.1
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/dist/get-version-mismatches.d.ts +1 -1
- package/dist/get-version-mismatches.d.ts.map +1 -1
- package/dist/get-version-mismatches.js +29 -16
- package/dist/get-version-mismatches.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -19
- package/dist/index.js.map +1 -1
- package/dist/is-compatible.js +22 -12
- package/dist/is-compatible.js.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/package.json +12 -4
- package/src/__tests__/get-version-mismatches.test.ts +26 -52
- package/src/get-version-mismatches.ts +1 -1
- package/src/index.ts +1 -2
- package/dist/get-exposed-dependencies.d.ts +0 -3
- package/dist/get-exposed-dependencies.d.ts.map +0 -1
- package/dist/get-exposed-dependencies.js +0 -13
- package/dist/get-exposed-dependencies.js.map +0 -1
- package/dist/load-shared-dependencies.d.ts +0 -2
- package/dist/load-shared-dependencies.d.ts.map +0 -1
- package/dist/load-shared-dependencies.js +0 -34
- package/dist/load-shared-dependencies.js.map +0 -1
- package/src/__tests__/get-exposed-dependencies.test.ts +0 -39
- package/src/__tests__/load-shared-dependencies.test.ts +0 -108
- package/src/get-exposed-dependencies.ts +0 -19
- package/src/load-shared-dependencies.ts +0 -38
|
@@ -2,5 +2,5 @@ import { ExposedDependencies } from './types';
|
|
|
2
2
|
export declare const getVersionMismatches: (exposedDependencies: ExposedDependencies, dependencies: Record<string, string>, sharedDependencies: Record<string, string>) => Record<string, {
|
|
3
3
|
host: string;
|
|
4
4
|
package: string;
|
|
5
|
-
}
|
|
5
|
+
}> | undefined;
|
|
6
6
|
//# sourceMappingURL=get-version-mismatches.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-version-mismatches.d.ts","sourceRoot":"","sources":["../src/get-version-mismatches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"get-version-mismatches.d.ts","sourceRoot":"","sources":["../src/get-version-mismatches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,oBAAoB,GAC7B,qBAAqB,mBAAmB,EACxC,cAAc,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,oBAAoB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;UAeT,MAAM;aAAW,MAAM;cAc3D,CAAC"}
|
|
@@ -1,27 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "getVersionMismatches", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return getVersionMismatches;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _iscompatible = require("./is-compatible");
|
|
12
|
+
const getVersionMismatches = (exposedDependencies, dependencies, sharedDependencies)=>{
|
|
13
|
+
const mismatch = Object.entries(exposedDependencies).reduce((result, [dependency, { version: hostVersion }])=>{
|
|
7
14
|
const packageVersion = dependencies[dependency];
|
|
8
|
-
if (packageVersion &&
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
15
|
+
if (packageVersion && !!sharedDependencies[dependency] && !(0, _iscompatible.isCompatible)(hostVersion, packageVersion)) {
|
|
16
|
+
result[dependency] = {
|
|
17
|
+
host: hostVersion,
|
|
18
|
+
package: packageVersion
|
|
19
|
+
};
|
|
12
20
|
}
|
|
13
21
|
return result;
|
|
14
22
|
}, {});
|
|
15
|
-
for (const [dependency, variable] of Object.entries(sharedDependencies))
|
|
23
|
+
for (const [dependency, variable] of Object.entries(sharedDependencies)){
|
|
16
24
|
const packageVersion = dependencies[dependency];
|
|
17
25
|
if (!exposedDependencies[dependency]) {
|
|
18
|
-
mismatch[dependency] = {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
26
|
+
mismatch[dependency] = {
|
|
27
|
+
host: 'missing',
|
|
28
|
+
package: packageVersion
|
|
29
|
+
};
|
|
30
|
+
} else if (exposedDependencies[dependency].variable !== variable) {
|
|
31
|
+
mismatch[dependency] = {
|
|
32
|
+
host: 'wrong global variable',
|
|
33
|
+
package: packageVersion
|
|
34
|
+
};
|
|
22
35
|
}
|
|
23
36
|
}
|
|
24
|
-
return mismatch;
|
|
37
|
+
return Object.keys(mismatch).length ? mismatch : undefined;
|
|
25
38
|
};
|
|
26
|
-
|
|
39
|
+
|
|
27
40
|
//# sourceMappingURL=get-version-mismatches.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/get-version-mismatches.ts"],"sourcesContent":["import { isCompatible } from './is-compatible';\nimport { ExposedDependencies } from './types';\n\nexport const getVersionMismatches = (\n exposedDependencies: ExposedDependencies,\n dependencies: Record<string, string>,\n sharedDependencies: Record<string, string>\n) => {\n const mismatch = Object.entries(exposedDependencies).reduce(\n (result, [dependency, { version: hostVersion }]) => {\n const packageVersion = dependencies[dependency];\n if (\n packageVersion &&\n !!sharedDependencies[dependency] &&\n !isCompatible(hostVersion, packageVersion)\n ) {\n result[dependency] = { host: hostVersion, package: packageVersion };\n }\n\n return result;\n },\n {} as Record<string, { host: string; package: string }>\n );\n\n for (const [dependency, variable] of Object.entries(sharedDependencies)) {\n const packageVersion = dependencies[dependency];\n\n if (!exposedDependencies[dependency]) {\n mismatch[dependency] = { host: 'missing', package: packageVersion };\n } else if (exposedDependencies[dependency].variable !== variable) {\n mismatch[dependency] = { host: 'wrong global variable', package: packageVersion };\n }\n }\n\n return Object.keys(mismatch).length ? mismatch : undefined;\n};\n"],"names":["getVersionMismatches","exposedDependencies","dependencies","sharedDependencies","mismatch","Object","entries","reduce","result","dependency","version","hostVersion","packageVersion","isCompatible","host","package","variable","keys","length","undefined"],"mappings":";;;;+BAGaA;;;eAAAA;;;8BAHgB;AAGtB,MAAMA,uBAAuB,CAChCC,qBACAC,cACAC;IAEA,MAAMC,WAAWC,OAAOC,OAAO,CAACL,qBAAqBM,MAAM,CACvD,CAACC,QAAQ,CAACC,YAAY,EAAEC,SAASC,WAAW,EAAE,CAAC;QAC3C,MAAMC,iBAAiBV,YAAY,CAACO,WAAW;QAC/C,IACIG,kBACA,CAAC,CAACT,kBAAkB,CAACM,WAAW,IAChC,CAACI,IAAAA,0BAAY,EAACF,aAAaC,iBAC7B;YACEJ,MAAM,CAACC,WAAW,GAAG;gBAAEK,MAAMH;gBAAaI,SAASH;YAAe;QACtE;QAEA,OAAOJ;IACX,GACA,CAAC;IAGL,KAAK,MAAM,CAACC,YAAYO,SAAS,IAAIX,OAAOC,OAAO,CAACH,oBAAqB;QACrE,MAAMS,iBAAiBV,YAAY,CAACO,WAAW;QAE/C,IAAI,CAACR,mBAAmB,CAACQ,WAAW,EAAE;YAClCL,QAAQ,CAACK,WAAW,GAAG;gBAAEK,MAAM;gBAAWC,SAASH;YAAe;QACtE,OAAO,IAAIX,mBAAmB,CAACQ,WAAW,CAACO,QAAQ,KAAKA,UAAU;YAC9DZ,QAAQ,CAACK,WAAW,GAAG;gBAAEK,MAAM;gBAAyBC,SAASH;YAAe;QACpF;IACJ;IAEA,OAAOP,OAAOY,IAAI,CAACb,UAAUc,MAAM,GAAGd,WAAWe;AACrD"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,mBAAmB,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Object.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
_export_star(require("./get-version-mismatches"), exports);
|
|
6
|
+
_export_star(require("./is-compatible"), exports);
|
|
7
|
+
function _export_star(from, to) {
|
|
8
|
+
Object.keys(from).forEach(function(k) {
|
|
9
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
10
|
+
Object.defineProperty(to, k, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function() {
|
|
13
|
+
return from[k];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return from;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './get-version-mismatches';\nexport * from './is-compatible';\nexport type * from './types';\n"],"names":[],"mappings":";;;;qBAAc;qBACA"}
|
package/dist/is-compatible.js
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "isCompatible", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return isCompatible;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _semver = /*#__PURE__*/ _interop_require_default(require("semver"));
|
|
12
|
+
function _interop_require_default(obj) {
|
|
13
|
+
return obj && obj.__esModule ? obj : {
|
|
14
|
+
default: obj
|
|
15
|
+
};
|
|
16
|
+
}
|
|
8
17
|
function isCompatible(hostVersion, packageVersion) {
|
|
9
18
|
if (hostVersion === packageVersion) {
|
|
10
19
|
return true;
|
|
@@ -16,21 +25,22 @@ function isCompatible(hostVersion, packageVersion) {
|
|
|
16
25
|
return true;
|
|
17
26
|
}
|
|
18
27
|
// host and package have exact non-equal versions
|
|
19
|
-
if (
|
|
28
|
+
if (_semver.default.valid(hostVersion) && _semver.default.valid(packageVersion)) {
|
|
20
29
|
return false;
|
|
21
30
|
}
|
|
22
31
|
// exact package version couldn't be compatible with host range
|
|
23
|
-
if (
|
|
32
|
+
if (_semver.default.validRange(hostVersion) && _semver.default.valid(packageVersion)) {
|
|
24
33
|
return false;
|
|
25
34
|
}
|
|
26
35
|
// exact host version must be in package range
|
|
27
|
-
if (
|
|
28
|
-
return
|
|
36
|
+
if (_semver.default.valid(hostVersion) && _semver.default.validRange(packageVersion)) {
|
|
37
|
+
return _semver.default.satisfies(hostVersion, packageVersion);
|
|
29
38
|
}
|
|
30
39
|
// host range must be fully included in package range
|
|
31
|
-
if (
|
|
32
|
-
return
|
|
40
|
+
if (_semver.default.validRange(hostVersion) && _semver.default.validRange(packageVersion)) {
|
|
41
|
+
return _semver.default.subset(hostVersion, packageVersion);
|
|
33
42
|
}
|
|
34
43
|
return false;
|
|
35
44
|
}
|
|
45
|
+
|
|
36
46
|
//# sourceMappingURL=is-compatible.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/is-compatible.ts"],"sourcesContent":["import semver from 'semver';\n\nexport function isCompatible(hostVersion: string, packageVersion: string) {\n if (hostVersion === packageVersion) {\n return true;\n }\n\n if (hostVersion === '*') {\n return false;\n }\n\n if (packageVersion === '*') {\n return true;\n }\n\n // host and package have exact non-equal versions\n if (semver.valid(hostVersion) && semver.valid(packageVersion)) {\n return false;\n }\n\n // exact package version couldn't be compatible with host range\n if (semver.validRange(hostVersion) && semver.valid(packageVersion)) {\n return false;\n }\n\n // exact host version must be in package range\n if (semver.valid(hostVersion) && semver.validRange(packageVersion)) {\n return semver.satisfies(hostVersion, packageVersion);\n }\n\n // host range must be fully included in package range\n if (semver.validRange(hostVersion) && semver.validRange(packageVersion)) {\n return semver.subset(hostVersion, packageVersion);\n }\n\n return false;\n}\n"],"names":["isCompatible","hostVersion","packageVersion","semver","valid","validRange","satisfies","subset"],"mappings":";;;;+BAEgBA;;;eAAAA;;;+DAFG;;;;;;AAEZ,SAASA,aAAaC,WAAmB,EAAEC,cAAsB;IACpE,IAAID,gBAAgBC,gBAAgB;QAChC,OAAO;IACX;IAEA,IAAID,gBAAgB,KAAK;QACrB,OAAO;IACX;IAEA,IAAIC,mBAAmB,KAAK;QACxB,OAAO;IACX;IAEA,iDAAiD;IACjD,IAAIC,eAAM,CAACC,KAAK,CAACH,gBAAgBE,eAAM,CAACC,KAAK,CAACF,iBAAiB;QAC3D,OAAO;IACX;IAEA,+DAA+D;IAC/D,IAAIC,eAAM,CAACE,UAAU,CAACJ,gBAAgBE,eAAM,CAACC,KAAK,CAACF,iBAAiB;QAChE,OAAO;IACX;IAEA,8CAA8C;IAC9C,IAAIC,eAAM,CAACC,KAAK,CAACH,gBAAgBE,eAAM,CAACE,UAAU,CAACH,iBAAiB;QAChE,OAAOC,eAAM,CAACG,SAAS,CAACL,aAAaC;IACzC;IAEA,qDAAqD;IACrD,IAAIC,eAAM,CAACE,UAAU,CAACJ,gBAAgBE,eAAM,CAACE,UAAU,CAACH,iBAAiB;QACrE,OAAOC,eAAM,CAACI,MAAM,CAACN,aAAaC;IACtC;IAEA,OAAO;AACX"}
|
package/dist/types.js
CHANGED
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,25 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/startup-utils",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "",
|
|
3
|
+
"version": "34.0.1",
|
|
4
|
+
"description": "Reusable utility functions and helpers for uikit packages",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/servicetitan/uikit.git",
|
|
8
8
|
"directory": "packages/startup-utils"
|
|
9
9
|
},
|
|
10
|
+
"sideEffects": false,
|
|
10
11
|
"main": "./dist/index.js",
|
|
11
12
|
"typings": "./dist/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"default": "./dist/index.js",
|
|
16
|
+
"types": "./dist/index.d.ts"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
12
19
|
"files": [
|
|
13
20
|
"dist",
|
|
14
21
|
"src"
|
|
15
22
|
],
|
|
16
23
|
"dependencies": {
|
|
17
|
-
"semver": "
|
|
24
|
+
"semver": "~7.7.3"
|
|
18
25
|
},
|
|
19
26
|
"publishConfig": {
|
|
20
27
|
"access": "public"
|
|
21
28
|
},
|
|
22
29
|
"cli": {
|
|
23
30
|
"webpack": false
|
|
24
|
-
}
|
|
31
|
+
},
|
|
32
|
+
"gitHead": "e42375d199bbc11b2f0b8881c26a8f0229446256"
|
|
25
33
|
}
|
|
@@ -8,78 +8,52 @@ describe(`[startup-utils] ${getVersionMismatches.name}`, () => {
|
|
|
8
8
|
|
|
9
9
|
beforeEach(() => {
|
|
10
10
|
sharedDependencies = {
|
|
11
|
-
|
|
11
|
+
foo: 'SharedDependencies.Foo',
|
|
12
|
+
bar: 'SharedDependencies.Bar',
|
|
12
13
|
};
|
|
13
|
-
|
|
14
14
|
dependencies = {
|
|
15
|
-
|
|
15
|
+
foo: '1.0.0',
|
|
16
|
+
bar: '2.0.0',
|
|
16
17
|
};
|
|
17
|
-
|
|
18
18
|
exposedDependencies = {
|
|
19
|
-
'
|
|
20
|
-
|
|
21
|
-
variable: 'SharedDependencies.ServiceTitan.DesignSystem',
|
|
22
|
-
},
|
|
19
|
+
foo: { version: '1.0.0', variable: 'SharedDependencies.Foo' },
|
|
20
|
+
bar: { version: '2.0.0', variable: 'SharedDependencies.Bar' },
|
|
23
21
|
};
|
|
24
22
|
});
|
|
25
23
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
expect(
|
|
29
|
-
getVersionMismatches(exposedDependencies, dependencies, sharedDependencies)
|
|
30
|
-
).toEqual({});
|
|
31
|
-
});
|
|
32
|
-
}
|
|
24
|
+
const subject = () =>
|
|
25
|
+
getVersionMismatches(exposedDependencies, dependencies, sharedDependencies);
|
|
33
26
|
|
|
34
|
-
|
|
27
|
+
test('returns undefined', () => {
|
|
28
|
+
expect(subject()).toBeUndefined();
|
|
29
|
+
});
|
|
35
30
|
|
|
36
|
-
describe('when
|
|
37
|
-
beforeEach(() => (dependencies
|
|
31
|
+
describe('when host exposes different version', () => {
|
|
32
|
+
beforeEach(() => (dependencies.foo = '2.0.0'));
|
|
38
33
|
|
|
39
|
-
test('returns
|
|
40
|
-
expect(
|
|
41
|
-
|
|
42
|
-
).toEqual({
|
|
43
|
-
'@servicetitan/design-system': {
|
|
44
|
-
host: '~11.8.0',
|
|
45
|
-
package: '~12.0.0',
|
|
46
|
-
},
|
|
34
|
+
test('returns mismatches', () => {
|
|
35
|
+
expect(subject()).toEqual({
|
|
36
|
+
foo: { host: '1.0.0', package: '2.0.0' },
|
|
47
37
|
});
|
|
48
38
|
});
|
|
49
|
-
|
|
50
|
-
describe('when the mismatch is not a shared dependency', () => {
|
|
51
|
-
beforeEach(() => (sharedDependencies = {}));
|
|
52
|
-
|
|
53
|
-
itReturnsNoMismatches();
|
|
54
|
-
});
|
|
55
39
|
});
|
|
56
40
|
|
|
57
|
-
describe('when
|
|
58
|
-
beforeEach(() => delete exposedDependencies
|
|
41
|
+
describe('when host omits dependency', () => {
|
|
42
|
+
beforeEach(() => delete exposedDependencies.foo);
|
|
59
43
|
|
|
60
|
-
test('returns
|
|
61
|
-
expect(
|
|
62
|
-
|
|
63
|
-
).toEqual({
|
|
64
|
-
'@servicetitan/design-system': {
|
|
65
|
-
host: 'missing',
|
|
66
|
-
package: '~11.8.0',
|
|
67
|
-
},
|
|
44
|
+
test('returns missing dependency', () => {
|
|
45
|
+
expect(subject()).toEqual({
|
|
46
|
+
foo: { host: 'missing', package: '1.0.0' },
|
|
68
47
|
});
|
|
69
48
|
});
|
|
70
49
|
});
|
|
71
50
|
|
|
72
|
-
describe('when
|
|
73
|
-
beforeEach(() => (exposedDependencies
|
|
51
|
+
describe('when host exposes different variable', () => {
|
|
52
|
+
beforeEach(() => (exposedDependencies.foo.variable = 'WrongVariable'));
|
|
74
53
|
|
|
75
|
-
test('returns
|
|
76
|
-
expect(
|
|
77
|
-
|
|
78
|
-
).toEqual({
|
|
79
|
-
'@servicetitan/design-system': {
|
|
80
|
-
host: 'wrong global variable',
|
|
81
|
-
package: '~11.8.0',
|
|
82
|
-
},
|
|
54
|
+
test('returns "wrong global"', () => {
|
|
55
|
+
expect(subject()).toEqual({
|
|
56
|
+
foo: { host: 'wrong global variable', package: '1.0.0' },
|
|
83
57
|
});
|
|
84
58
|
});
|
|
85
59
|
});
|
package/src/index.ts
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { ExposedDependencies } from './types';
|
|
2
|
-
export declare function getExposedDependencies(sharedDependencies: Record<string, string>, dependenciesOrCallback: Record<string, string> | ((dependency: string) => string)): ExposedDependencies;
|
|
3
|
-
//# sourceMappingURL=get-exposed-dependencies.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-exposed-dependencies.d.ts","sourceRoot":"","sources":["../src/get-exposed-dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,wBAAgB,sBAAsB,CAClC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1C,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,uBAcpF"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getExposedDependencies = getExposedDependencies;
|
|
4
|
-
function getExposedDependencies(sharedDependencies, dependenciesOrCallback) {
|
|
5
|
-
const getVersion = typeof dependenciesOrCallback === 'function'
|
|
6
|
-
? dependenciesOrCallback
|
|
7
|
-
: (dependency) => dependenciesOrCallback[dependency];
|
|
8
|
-
return Object.entries(sharedDependencies).reduce((result, [dependency, variable]) => ({
|
|
9
|
-
...result,
|
|
10
|
-
[dependency]: { version: getVersion(dependency), variable },
|
|
11
|
-
}), {});
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=get-exposed-dependencies.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-exposed-dependencies.js","sourceRoot":"","sources":["../src/get-exposed-dependencies.ts"],"names":[],"mappings":";;AAEA,wDAgBC;AAhBD,SAAgB,sBAAsB,CAClC,kBAA0C,EAC1C,sBAAiF;IAEjF,MAAM,UAAU,GACZ,OAAO,sBAAsB,KAAK,UAAU;QACxC,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,CAAC,UAAkB,EAAE,EAAE,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAErE,OAAO,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAC5C,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,GAAG,MAAM;QACT,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE;KAC9D,CAAC,EACF,EAAyB,CAC5B,CAAC;AACN,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"load-shared-dependencies.d.ts","sourceRoot":"","sources":["../src/load-shared-dependencies.ts"],"names":[],"mappings":"AAaA,wBAAgB,sBAAsB,CAClC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAChD,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GACvD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBxB"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadSharedDependencies = loadSharedDependencies;
|
|
4
|
-
const getDefaultSharedDependencies = () => ({
|
|
5
|
-
'@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
|
|
6
|
-
'@servicetitan/anvil2': 'SharedDependencies.ServiceTitan.Anvil2',
|
|
7
|
-
'classnames': 'SharedDependencies.ClassNames',
|
|
8
|
-
'formstate': 'SharedDependencies.FormState',
|
|
9
|
-
'mobx': 'SharedDependencies.MobX',
|
|
10
|
-
'mobx-react': 'SharedDependencies.MobXReact',
|
|
11
|
-
'mobx-utils': 'SharedDependencies.MobXUtils',
|
|
12
|
-
'react': 'SharedDependencies.React',
|
|
13
|
-
'react-dom': 'SharedDependencies.ReactDOM',
|
|
14
|
-
});
|
|
15
|
-
const defaultsKey = 'defaults';
|
|
16
|
-
function loadSharedDependencies(dependencies, sharedDependencies) {
|
|
17
|
-
if (!dependencies) {
|
|
18
|
-
return {};
|
|
19
|
-
}
|
|
20
|
-
const out = {
|
|
21
|
-
...(!sharedDependencies || sharedDependencies[defaultsKey] !== undefined
|
|
22
|
-
? getDefaultSharedDependencies()
|
|
23
|
-
: {}),
|
|
24
|
-
...(sharedDependencies !== null && sharedDependencies !== void 0 ? sharedDependencies : {}),
|
|
25
|
-
};
|
|
26
|
-
delete out[defaultsKey];
|
|
27
|
-
for (const [dependency, value] of Object.entries(out)) {
|
|
28
|
-
if (!value || !dependencies[dependency]) {
|
|
29
|
-
delete out[dependency];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return out;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=load-shared-dependencies.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"load-shared-dependencies.js","sourceRoot":"","sources":["../src/load-shared-dependencies.ts"],"names":[],"mappings":";;AAaA,wDAwBC;AArCD,MAAM,4BAA4B,GAAG,GAAG,EAAE,CAAC,CAAC;IACxC,6BAA6B,EAAE,8CAA8C;IAC7E,sBAAsB,EAAE,wCAAwC;IAChE,YAAY,EAAE,+BAA+B;IAC7C,WAAW,EAAE,8BAA8B;IAC3C,MAAM,EAAE,yBAAyB;IACjC,YAAY,EAAE,8BAA8B;IAC5C,YAAY,EAAE,8BAA8B;IAC5C,OAAO,EAAE,0BAA0B;IACnC,WAAW,EAAE,6BAA6B;CAC7C,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,UAAU,CAAC;AAE/B,SAAgB,sBAAsB,CAClC,YAAgD,EAChD,kBAAsD;IAEtD,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAA2B;QAChC,GAAG,CAAC,CAAC,kBAAkB,IAAI,kBAAkB,CAAC,WAAW,CAAC,KAAK,SAAS;YACpE,CAAC,CAAC,4BAA4B,EAAE;YAChC,CAAC,CAAC,EAAE,CAAC;QACT,GAAG,CAAC,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,EAAE,CAAC;KAChC,CAAC;IAEF,OAAO,GAAG,CAAC,WAAW,CAAC,CAAC;IAExB,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { getExposedDependencies } from '../get-exposed-dependencies';
|
|
2
|
-
|
|
3
|
-
describe(`[startup-utils] ${getExposedDependencies.name}`, () => {
|
|
4
|
-
let sharedDependencies: Record<string, string>;
|
|
5
|
-
let dependencies: Record<string, string>;
|
|
6
|
-
let callback: ((dependency: string) => string) | undefined;
|
|
7
|
-
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
sharedDependencies = {
|
|
10
|
-
foo: 'SharedDependencies.Foo',
|
|
11
|
-
bar: 'SharedDependencies.Bar',
|
|
12
|
-
};
|
|
13
|
-
dependencies = {
|
|
14
|
-
foo: '1.0.0',
|
|
15
|
-
bar: '2.0.0',
|
|
16
|
-
};
|
|
17
|
-
callback = undefined;
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
const subject = () => getExposedDependencies(sharedDependencies, callback ?? dependencies);
|
|
21
|
-
|
|
22
|
-
test('returns exposed dependencies', () => {
|
|
23
|
-
expect(subject()).toEqual({
|
|
24
|
-
foo: { version: '1.0.0', variable: 'SharedDependencies.Foo' },
|
|
25
|
-
bar: { version: '2.0.0', variable: 'SharedDependencies.Bar' },
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
describe('when passed a callback', () => {
|
|
30
|
-
beforeEach(() => (callback = name => `callback(${name})`));
|
|
31
|
-
|
|
32
|
-
test('uses version returned by callback', () => {
|
|
33
|
-
expect(subject()).toEqual({
|
|
34
|
-
foo: { version: 'callback(foo)', variable: 'SharedDependencies.Foo' },
|
|
35
|
-
bar: { version: 'callback(bar)', variable: 'SharedDependencies.Bar' },
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
});
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { loadSharedDependencies } from '../load-shared-dependencies';
|
|
2
|
-
|
|
3
|
-
describe(`[startup-utils] ${loadSharedDependencies.name}`, () => {
|
|
4
|
-
const defaultSharedDependencies = {
|
|
5
|
-
'@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
|
|
6
|
-
'@servicetitan/anvil2': 'SharedDependencies.ServiceTitan.Anvil2',
|
|
7
|
-
'classnames': 'SharedDependencies.ClassNames',
|
|
8
|
-
'formstate': 'SharedDependencies.FormState',
|
|
9
|
-
'mobx': 'SharedDependencies.MobX',
|
|
10
|
-
'mobx-react': 'SharedDependencies.MobXReact',
|
|
11
|
-
'mobx-utils': 'SharedDependencies.MobXUtils',
|
|
12
|
-
'react': 'SharedDependencies.React',
|
|
13
|
-
'react-dom': 'SharedDependencies.ReactDOM',
|
|
14
|
-
};
|
|
15
|
-
let packageDependencies: Record<string, string> | undefined;
|
|
16
|
-
let sharedDependencies: Record<string, string> | undefined;
|
|
17
|
-
|
|
18
|
-
beforeEach(() => {
|
|
19
|
-
packageDependencies = {
|
|
20
|
-
// Default shared dependencies
|
|
21
|
-
'@servicetitan/design-system': '^0.0.0',
|
|
22
|
-
'@servicetitan/anvil2': '^0.0.0',
|
|
23
|
-
'classnames': '^0.0.0',
|
|
24
|
-
'formstate': '^0.0.0',
|
|
25
|
-
'mobx': '^0.0.0',
|
|
26
|
-
'mobx-react': '^0.0.0',
|
|
27
|
-
'mobx-utils': '^0.0.0',
|
|
28
|
-
'react': '^0.0.0',
|
|
29
|
-
'react-dom': '^0.0.0',
|
|
30
|
-
// Other dependencies
|
|
31
|
-
'@servicetitan/confirm': '^0.0.0',
|
|
32
|
-
'react-input-mask': '^0.0.0',
|
|
33
|
-
};
|
|
34
|
-
sharedDependencies = undefined;
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
const subject = () => loadSharedDependencies(packageDependencies, sharedDependencies);
|
|
38
|
-
|
|
39
|
-
function omit(obj: Record<string, string>, ...exclude: string[]) {
|
|
40
|
-
return Object.fromEntries(Object.entries(obj).filter(([key]) => !exclude.includes(key)));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
test('returns default shared dependencies', () => {
|
|
44
|
-
expect(subject()).toEqual(defaultSharedDependencies);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
describe('when package does not depend on default shared dependency', () => {
|
|
48
|
-
beforeEach(() => delete packageDependencies!['@servicetitan/design-system']);
|
|
49
|
-
|
|
50
|
-
test('omits the default shared dependency', () => {
|
|
51
|
-
expect(subject()).toEqual(
|
|
52
|
-
omit(defaultSharedDependencies, '@servicetitan/design-system')
|
|
53
|
-
);
|
|
54
|
-
});
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
describe('with explicit shared dependencies', () => {
|
|
58
|
-
beforeEach(() => (sharedDependencies = {}));
|
|
59
|
-
|
|
60
|
-
test('returns specified dependencies', () => {
|
|
61
|
-
expect(subject()).toEqual(sharedDependencies);
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
describe('when explicit shared dependencies includes "defaults"', () => {
|
|
65
|
-
beforeEach(() => (sharedDependencies!.defaults = ''));
|
|
66
|
-
|
|
67
|
-
test('returns default shared dependencies', () => {
|
|
68
|
-
expect(subject()).toEqual(defaultSharedDependencies);
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
describe('when explicit shared dependency has falsy value', () => {
|
|
72
|
-
beforeEach(() => {
|
|
73
|
-
Object.assign(sharedDependencies!, { 'classnames': false, 'mobx-utils': '' });
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
test('omits the falsy dependency', () => {
|
|
77
|
-
expect(subject()).toEqual(
|
|
78
|
-
omit(defaultSharedDependencies, 'classnames', 'mobx-utils')
|
|
79
|
-
);
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
describe('when explicit shared dependency has non-default packages', () => {
|
|
84
|
-
beforeEach(() => {
|
|
85
|
-
Object.assign(sharedDependencies!, {
|
|
86
|
-
'@servicetitan/confirm': 'SharedDependencies.ServiceTitan.Confirm',
|
|
87
|
-
'react-input-mask': 'SharedDependencies.ReactInputMask',
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
test('adds the non-default packages', () => {
|
|
92
|
-
expect(subject()).toEqual({
|
|
93
|
-
...defaultSharedDependencies,
|
|
94
|
-
...omit(sharedDependencies!, 'defaults'),
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
describe('with no package dependencies', () => {
|
|
102
|
-
beforeEach(() => (packageDependencies = undefined));
|
|
103
|
-
|
|
104
|
-
test('returns empty object', () => {
|
|
105
|
-
expect(subject()).toEqual({});
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
});
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ExposedDependencies } from './types';
|
|
2
|
-
|
|
3
|
-
export function getExposedDependencies(
|
|
4
|
-
sharedDependencies: Record<string, string>,
|
|
5
|
-
dependenciesOrCallback: Record<string, string> | ((dependency: string) => string)
|
|
6
|
-
) {
|
|
7
|
-
const getVersion =
|
|
8
|
-
typeof dependenciesOrCallback === 'function'
|
|
9
|
-
? dependenciesOrCallback
|
|
10
|
-
: (dependency: string) => dependenciesOrCallback[dependency];
|
|
11
|
-
|
|
12
|
-
return Object.entries(sharedDependencies).reduce(
|
|
13
|
-
(result, [dependency, variable]) => ({
|
|
14
|
-
...result,
|
|
15
|
-
[dependency]: { version: getVersion(dependency), variable },
|
|
16
|
-
}),
|
|
17
|
-
{} as ExposedDependencies
|
|
18
|
-
);
|
|
19
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
const getDefaultSharedDependencies = () => ({
|
|
2
|
-
'@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
|
|
3
|
-
'@servicetitan/anvil2': 'SharedDependencies.ServiceTitan.Anvil2',
|
|
4
|
-
'classnames': 'SharedDependencies.ClassNames',
|
|
5
|
-
'formstate': 'SharedDependencies.FormState',
|
|
6
|
-
'mobx': 'SharedDependencies.MobX',
|
|
7
|
-
'mobx-react': 'SharedDependencies.MobXReact',
|
|
8
|
-
'mobx-utils': 'SharedDependencies.MobXUtils',
|
|
9
|
-
'react': 'SharedDependencies.React',
|
|
10
|
-
'react-dom': 'SharedDependencies.ReactDOM',
|
|
11
|
-
});
|
|
12
|
-
const defaultsKey = 'defaults';
|
|
13
|
-
|
|
14
|
-
export function loadSharedDependencies(
|
|
15
|
-
dependencies: Record<string, string> | undefined,
|
|
16
|
-
sharedDependencies: Record<string, string> | undefined
|
|
17
|
-
): Record<string, string> {
|
|
18
|
-
if (!dependencies) {
|
|
19
|
-
return {};
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const out: Record<string, string> = {
|
|
23
|
-
...(!sharedDependencies || sharedDependencies[defaultsKey] !== undefined
|
|
24
|
-
? getDefaultSharedDependencies()
|
|
25
|
-
: {}),
|
|
26
|
-
...(sharedDependencies ?? {}),
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
delete out[defaultsKey];
|
|
30
|
-
|
|
31
|
-
for (const [dependency, value] of Object.entries(out)) {
|
|
32
|
-
if (!value || !dependencies[dependency]) {
|
|
33
|
-
delete out[dependency];
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return out;
|
|
38
|
-
}
|