@servicetitan/startup-utils 27.4.0-canary.0 → 34.0.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.
@@ -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,wBACR,mBAAmB,gBAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,sBAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;UAeT,MAAM;aAAW,MAAM;EAc3D,CAAC"}
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", { value: true });
3
- exports.getVersionMismatches = void 0;
4
- const is_compatible_1 = require("./is-compatible");
5
- const getVersionMismatches = (exposedDependencies, dependencies, sharedDependencies) => {
6
- const mismatch = Object.entries(exposedDependencies).reduce((result, [dependency, { version: hostVersion }]) => {
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
- !!sharedDependencies[dependency] &&
10
- !(0, is_compatible_1.isCompatible)(hostVersion, packageVersion)) {
11
- result[dependency] = { host: hostVersion, package: packageVersion };
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] = { host: 'missing', package: packageVersion };
19
- }
20
- else if (exposedDependencies[dependency].variable !== variable) {
21
- mismatch[dependency] = { host: 'wrong global variable', package: packageVersion };
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
- exports.getVersionMismatches = getVersionMismatches;
39
+
27
40
  //# sourceMappingURL=get-version-mismatches.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-version-mismatches.js","sourceRoot":"","sources":["../src/get-version-mismatches.ts"],"names":[],"mappings":";;;AAAA,mDAA+C;AAGxC,MAAM,oBAAoB,GAAG,CAChC,mBAAwC,EACxC,YAAoC,EACpC,kBAA0C,EAC5C,EAAE;IACA,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,MAAM,CACvD,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;QAC/C,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAChD,IACI,cAAc;YACd,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC;YAChC,CAAC,IAAA,4BAAY,EAAC,WAAW,EAAE,cAAc,CAAC,EAC5C,CAAC;YACC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QACxE,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,EACD,EAAuD,CAC1D,CAAC;IAEF,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACtE,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAEhD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QACxE,CAAC;aAAM,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC/D,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QACtF,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAhCW,QAAA,oBAAoB,wBAgC/B"}
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
@@ -1,5 +1,4 @@
1
- export * from './get-exposed-dependencies';
2
1
  export * from './get-version-mismatches';
3
2
  export * from './is-compatible';
4
- export * from './load-shared-dependencies';
3
+ export type * from './types';
5
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,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
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./get-exposed-dependencies"), exports);
18
- __exportStar(require("./get-version-mismatches"), exports);
19
- __exportStar(require("./is-compatible"), exports);
20
- __exportStar(require("./load-shared-dependencies"), exports);
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,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,2DAAyC;AACzC,kDAAgC;AAChC,6DAA2C"}
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"}
@@ -1,10 +1,19 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isCompatible = isCompatible;
7
- const semver_1 = __importDefault(require("semver"));
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 (semver_1.default.valid(hostVersion) && semver_1.default.valid(packageVersion)) {
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 (semver_1.default.validRange(hostVersion) && semver_1.default.valid(packageVersion)) {
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 (semver_1.default.valid(hostVersion) && semver_1.default.validRange(packageVersion)) {
28
- return semver_1.default.satisfies(hostVersion, packageVersion);
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 (semver_1.default.validRange(hostVersion) && semver_1.default.validRange(packageVersion)) {
32
- return semver_1.default.subset(hostVersion, packageVersion);
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,"file":"is-compatible.js","sourceRoot":"","sources":["../src/is-compatible.ts"],"names":[],"mappings":";;;;;AAEA,oCAkCC;AApCD,oDAA4B;AAE5B,SAAgB,YAAY,CAAC,WAAmB,EAAE,cAAsB;IACpE,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,cAAc,KAAK,GAAG,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iDAAiD;IACjD,IAAI,gBAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,gBAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,+DAA+D;IAC/D,IAAI,gBAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,gBAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,8CAA8C;IAC9C,IAAI,gBAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,gBAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACjE,OAAO,gBAAM,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACzD,CAAC;IAED,qDAAqD;IACrD,IAAI,gBAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,gBAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACtE,OAAO,gBAAM,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
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
@@ -1,3 +1,6 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+
3
6
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
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": "27.4.0-canary.0",
4
- "description": "",
3
+ "version": "34.0.0",
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": "^7.6.3"
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": "e193dc22703963f67099874a24de535d0696b6e2"
25
33
  }
@@ -1,85 +1,59 @@
1
1
  import { getVersionMismatches } from '../get-version-mismatches';
2
2
  import { ExposedDependencies } from '../types';
3
3
 
4
- describe(`[web-components] ${getVersionMismatches.name}`, () => {
4
+ describe(`[startup-utils] ${getVersionMismatches.name}`, () => {
5
5
  let sharedDependencies: Record<string, string> = {};
6
6
  let dependencies: Record<string, string> = {};
7
7
  let exposedDependencies: ExposedDependencies = {};
8
8
 
9
9
  beforeEach(() => {
10
10
  sharedDependencies = {
11
- '@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
11
+ foo: 'SharedDependencies.Foo',
12
+ bar: 'SharedDependencies.Bar',
12
13
  };
13
-
14
14
  dependencies = {
15
- '@servicetitan/design-system': '~11.8.0',
15
+ foo: '1.0.0',
16
+ bar: '2.0.0',
16
17
  };
17
-
18
18
  exposedDependencies = {
19
- '@servicetitan/design-system': {
20
- version: '~11.8.0',
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
- function itReturnsNoMismatches() {
27
- test('returns no mismatches', () => {
28
- expect(
29
- getVersionMismatches(exposedDependencies, dependencies, sharedDependencies)
30
- ).toEqual({});
31
- });
32
- }
24
+ const subject = () =>
25
+ getVersionMismatches(exposedDependencies, dependencies, sharedDependencies);
33
26
 
34
- itReturnsNoMismatches();
27
+ test('returns undefined', () => {
28
+ expect(subject()).toBeUndefined();
29
+ });
35
30
 
36
- describe('when there is a versions mismatch', () => {
37
- beforeEach(() => (dependencies['@servicetitan/design-system'] = '~12.0.0'));
31
+ describe('when host exposes different version', () => {
32
+ beforeEach(() => (dependencies.foo = '2.0.0'));
38
33
 
39
- test('returns the mismatch', () => {
40
- expect(
41
- getVersionMismatches(exposedDependencies, dependencies, sharedDependencies)
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 a dependency is missing from exposed dependencies', () => {
58
- beforeEach(() => delete exposedDependencies['@servicetitan/design-system']);
41
+ describe('when host omits dependency', () => {
42
+ beforeEach(() => delete exposedDependencies.foo);
59
43
 
60
- test('returns an object citing the dependency is missing from the host', () => {
61
- expect(
62
- getVersionMismatches(exposedDependencies, dependencies, sharedDependencies)
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 a variable does not match', () => {
73
- beforeEach(() => (exposedDependencies['@servicetitan/design-system'].variable = 'foo'));
51
+ describe('when host exposes different variable', () => {
52
+ beforeEach(() => (exposedDependencies.foo.variable = 'WrongVariable'));
74
53
 
75
- test('returns an object citing the variable is wrong', () => {
76
- expect(
77
- getVersionMismatches(exposedDependencies, dependencies, sharedDependencies)
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
  });
@@ -1,6 +1,6 @@
1
1
  import { isCompatible } from '../is-compatible';
2
2
 
3
- describe(`[web-components] ${isCompatible.name}`, () => {
3
+ describe(`[startup-utils] ${isCompatible.name}`, () => {
4
4
  let hostVersion: string;
5
5
  let packageVersion: string;
6
6
 
@@ -32,5 +32,5 @@ export const getVersionMismatches = (
32
32
  }
33
33
  }
34
34
 
35
- return mismatch;
35
+ return Object.keys(mismatch).length ? mismatch : undefined;
36
36
  };
package/src/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * from './get-exposed-dependencies';
2
1
  export * from './get-version-mismatches';
3
2
  export * from './is-compatible';
4
- export * from './load-shared-dependencies';
3
+ export type * from './types';
@@ -1,3 +0,0 @@
1
- import { ExposedDependencies } from './types';
2
- export declare function getExposedDependencies(sharedDependencies: Record<string, string>, getVersion: (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,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,uBAS7C"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getExposedDependencies = getExposedDependencies;
4
- function getExposedDependencies(sharedDependencies, getVersion) {
5
- return Object.entries(sharedDependencies).reduce((result, [dependency, variable]) => ({
6
- ...result,
7
- [dependency]: { version: getVersion(dependency), variable },
8
- }), {});
9
- }
10
- //# 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,wDAWC;AAXD,SAAgB,sBAAsB,CAClC,kBAA0C,EAC1C,UAA0C;IAE1C,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,2 +0,0 @@
1
- export declare function loadSharedDependencies(dependencies: Record<string, string> | undefined, sharedDependencies: Record<string, string> | undefined): Record<string, string>;
2
- //# sourceMappingURL=load-shared-dependencies.d.ts.map
@@ -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,114 +0,0 @@
1
- import { loadSharedDependencies } from '../load-shared-dependencies';
2
-
3
- describe('[Startup] utils:loadSharedDependencies', () => {
4
- const getPackageDependencies = (...excluded: string[]) =>
5
- Object.entries({
6
- '@servicetitan/confirm': '^0.0.0',
7
- '@servicetitan/design-system': '^0.0.0',
8
- 'classnames': '^0.0.0',
9
- 'formstate': '^0.0.0',
10
- 'mobx': '^0.0.0',
11
- 'mobx-react': '^0.0.0',
12
- 'mobx-utils': '^0.0.0',
13
- 'react': '^0.0.0',
14
- 'react-dom': '^0.0.0',
15
- 'react-input-mask': '^0.0.0',
16
- }).reduce(
17
- (out, [d, v]) => ({
18
- ...out,
19
- ...(excluded.includes(d) ? {} : { [d]: v }),
20
- }),
21
- {}
22
- );
23
-
24
- test('return default dependencies when manual are not configured', () => {
25
- expect(loadSharedDependencies(getPackageDependencies(), undefined)).toEqual({
26
- '@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
27
- 'classnames': 'SharedDependencies.ClassNames',
28
- 'formstate': 'SharedDependencies.FormState',
29
- 'mobx': 'SharedDependencies.MobX',
30
- 'mobx-react': 'SharedDependencies.MobXReact',
31
- 'mobx-utils': 'SharedDependencies.MobXUtils',
32
- 'react': 'SharedDependencies.React',
33
- 'react-dom': 'SharedDependencies.ReactDOM',
34
- });
35
- });
36
-
37
- test('return default dependencies except not used when manual are not configured', () => {
38
- expect(loadSharedDependencies(getPackageDependencies('mobx-utils'), undefined)).toEqual({
39
- '@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
40
- 'classnames': 'SharedDependencies.ClassNames',
41
- 'formstate': 'SharedDependencies.FormState',
42
- 'mobx': 'SharedDependencies.MobX',
43
- 'mobx-react': 'SharedDependencies.MobXReact',
44
- 'react': 'SharedDependencies.React',
45
- 'react-dom': 'SharedDependencies.ReactDOM',
46
- });
47
- });
48
-
49
- test('return manual dependencies if set', () => {
50
- expect(
51
- loadSharedDependencies(getPackageDependencies(), {
52
- '@servicetitan/confirm': 'SharedDependencies.ServiceTitan.Confirm',
53
- 'react-input-mask': 'SharedDependencies.ReactInputMask',
54
- })
55
- ).toEqual({
56
- '@servicetitan/confirm': 'SharedDependencies.ServiceTitan.Confirm',
57
- 'react-input-mask': 'SharedDependencies.ReactInputMask',
58
- });
59
- });
60
-
61
- test('return default dependencies within manual', () => {
62
- expect(
63
- loadSharedDependencies(getPackageDependencies(), {
64
- defaults: '',
65
- })
66
- ).toEqual({
67
- '@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
68
- 'classnames': 'SharedDependencies.ClassNames',
69
- 'formstate': 'SharedDependencies.FormState',
70
- 'mobx': 'SharedDependencies.MobX',
71
- 'mobx-react': 'SharedDependencies.MobXReact',
72
- 'mobx-utils': 'SharedDependencies.MobXUtils',
73
- 'react': 'SharedDependencies.React',
74
- 'react-dom': 'SharedDependencies.ReactDOM',
75
- });
76
- });
77
-
78
- test('clear default dependencies when configured', () => {
79
- expect(
80
- loadSharedDependencies(getPackageDependencies(), {
81
- 'defaults': '',
82
- 'mobx-utils': '',
83
- })
84
- ).toEqual({
85
- '@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
86
- 'classnames': 'SharedDependencies.ClassNames',
87
- 'formstate': 'SharedDependencies.FormState',
88
- 'mobx': 'SharedDependencies.MobX',
89
- 'mobx-react': 'SharedDependencies.MobXReact',
90
- 'react': 'SharedDependencies.React',
91
- 'react-dom': 'SharedDependencies.ReactDOM',
92
- });
93
- });
94
-
95
- test('mixes default dependencies and configured', () => {
96
- expect(
97
- loadSharedDependencies(getPackageDependencies(), {
98
- 'defaults': '',
99
- 'mobx-utils': '',
100
- 'react-input-mask': 'SharedDependencies.ReactInputMask',
101
- 'react-something': 'SharedDependencies.ReactSomething',
102
- })
103
- ).toEqual({
104
- '@servicetitan/design-system': 'SharedDependencies.ServiceTitan.DesignSystem',
105
- 'classnames': 'SharedDependencies.ClassNames',
106
- 'formstate': 'SharedDependencies.FormState',
107
- 'mobx': 'SharedDependencies.MobX',
108
- 'mobx-react': 'SharedDependencies.MobXReact',
109
- 'react': 'SharedDependencies.React',
110
- 'react-dom': 'SharedDependencies.ReactDOM',
111
- 'react-input-mask': 'SharedDependencies.ReactInputMask',
112
- });
113
- });
114
- });
@@ -1,14 +0,0 @@
1
- import { ExposedDependencies } from './types';
2
-
3
- export function getExposedDependencies(
4
- sharedDependencies: Record<string, string>,
5
- getVersion: (dependency: string) => string
6
- ) {
7
- return Object.entries(sharedDependencies).reduce(
8
- (result, [dependency, variable]) => ({
9
- ...result,
10
- [dependency]: { version: getVersion(dependency), variable },
11
- }),
12
- {} as ExposedDependencies
13
- );
14
- }
@@ -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
- }