@servicetitan/web-components 27.4.0 → 28.1.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/dist/common.d.ts CHANGED
@@ -21,7 +21,6 @@ export interface Entries {
21
21
  export interface IWebComponent {
22
22
  provide(entries: Entries): void;
23
23
  }
24
- export declare function isCompatible(hostVersion: string, packageVersion: string): boolean;
25
24
  export interface GetJsonError {
26
25
  status: number;
27
26
  body: string;
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACpC,MAAM,EACN;IACI,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB,CACJ,CAAC;AAEF,eAAO,MAAM,cAAc,uDAAwC,CAAC;AACpE,eAAO,MAAM,0BAA0B,oEAEtC,CAAC;AACF,eAAO,MAAM,sBAAsB,wDAAiD,CAAC;AACrF,eAAO,MAAM,iBAAiB,2DAA+C,CAAC;AAE9E,MAAM,WAAW,OAAO;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACnC;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAkCvE;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAe,SAAQ,WAAW;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9C;AAED,wBAAsB,OAAO,CAAC,CAAC,GAAG,GAAG,EACjC,GAAG,EAAE,MAAM,EACX,EAAE,OAAW,EAAE,UAAiB,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAE,cAAmB,GACnF,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAiDrD;AAED,wBAAgB,cAAc,oBAE7B"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACpC,MAAM,EACN;IACI,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB,CACJ,CAAC;AAEF,eAAO,MAAM,cAAc,uDAAwC,CAAC;AACpE,eAAO,MAAM,0BAA0B,oEAEtC,CAAC;AACF,eAAO,MAAM,sBAAsB,wDAAiD,CAAC;AACrF,eAAO,MAAM,iBAAiB,2DAA+C,CAAC;AAE9E,MAAM,WAAW,OAAO;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAe,SAAQ,WAAW;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9C;AAED,wBAAsB,OAAO,CAAC,CAAC,GAAG,GAAG,EACjC,GAAG,EAAE,MAAM,EACX,EAAE,OAAW,EAAE,UAAiB,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAE,cAAmB,GACnF,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAiDrD;AAED,wBAAgB,cAAc,oBAE7B"}
package/dist/common.js CHANGED
@@ -1,38 +1,9 @@
1
- import semver from 'semver';
2
1
  import { useRef } from 'react';
3
2
  import { symbolToken } from '@servicetitan/react-ioc';
4
3
  export const BASENAME_TOKEN = symbolToken('BASENAME_TOKEN');
5
4
  export const EXPOSED_DEPENDENCIES_TOKEN = symbolToken('EXPOSED_DEPENDENCIES_TOKEN');
6
5
  export const IS_WEB_COMPONENT_TOKEN = symbolToken('IS_WEB_COMPONENT_TOKEN');
7
6
  export const RENDER_ROOT_TOKEN = symbolToken('RENDER_ROOT_TOKEN');
8
- export function isCompatible(hostVersion, packageVersion) {
9
- if (hostVersion === packageVersion) {
10
- return true;
11
- }
12
- if (hostVersion === '*') {
13
- return false;
14
- }
15
- if (packageVersion === '*') {
16
- return true;
17
- }
18
- // host and package have exact non-equal versions
19
- if (semver.valid(hostVersion) && semver.valid(packageVersion)) {
20
- return false;
21
- }
22
- // exact package version couldn't be compatible with host range
23
- if (semver.validRange(hostVersion) && semver.valid(packageVersion)) {
24
- return false;
25
- }
26
- // exact host version must be in package range
27
- if (semver.valid(hostVersion) && semver.validRange(packageVersion)) {
28
- return semver.satisfies(hostVersion, packageVersion);
29
- }
30
- // host range must be fully included in package range
31
- if (semver.validRange(hostVersion) && semver.validRange(packageVersion)) {
32
- return semver.subset(hostVersion, packageVersion);
33
- }
34
- return false;
35
- }
36
7
  export async function getJson(url, { retries = 5, retryDelay = 1000, onRequestError, ...config } = {}) {
37
8
  var _a, _b;
38
9
  let response;
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-version-mismatches.d.ts","sourceRoot":"","sources":["../../src/utils/get-version-mismatches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAgB,MAAM,WAAW,CAAC;AAE9D,eAAO,MAAM,oBAAoB,wBACR,mBAAmB,gBAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,sBAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;UAYT,MAAM;aAAW,MAAM;EAc3D,CAAC"}
1
+ {"version":3,"file":"get-version-mismatches.d.ts","sourceRoot":"","sources":["../../src/utils/get-version-mismatches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,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,8 +1,10 @@
1
- import { isCompatible } from '../common';
1
+ import { isCompatible } from './is-compatible';
2
2
  export const getVersionMismatches = (exposedDependencies, dependencies, sharedDependencies) => {
3
3
  const mismatch = Object.entries(exposedDependencies).reduce((result, [dependency, { version: hostVersion }]) => {
4
4
  const packageVersion = dependencies[dependency];
5
- if (packageVersion && !isCompatible(hostVersion, packageVersion)) {
5
+ if (packageVersion &&
6
+ !!sharedDependencies[dependency] &&
7
+ !isCompatible(hostVersion, packageVersion)) {
6
8
  result[dependency] = { host: hostVersion, package: packageVersion };
7
9
  }
8
10
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"get-version-mismatches.js","sourceRoot":"","sources":["../../src/utils/get-version-mismatches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9D,MAAM,CAAC,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;QAEhD,IAAI,cAAc,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC;YAC/D,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"}
1
+ {"version":3,"file":"get-version-mismatches.js","sourceRoot":"","sources":["../../src/utils/get-version-mismatches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,CAAC,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,YAAY,CAAC,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"}
@@ -0,0 +1,2 @@
1
+ export declare function isCompatible(hostVersion: string, packageVersion: string): boolean;
2
+ //# sourceMappingURL=is-compatible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-compatible.d.ts","sourceRoot":"","sources":["../../src/utils/is-compatible.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAkCvE"}
@@ -0,0 +1,30 @@
1
+ import semver from 'semver';
2
+ export function isCompatible(hostVersion, packageVersion) {
3
+ if (hostVersion === packageVersion) {
4
+ return true;
5
+ }
6
+ if (hostVersion === '*') {
7
+ return false;
8
+ }
9
+ if (packageVersion === '*') {
10
+ return true;
11
+ }
12
+ // host and package have exact non-equal versions
13
+ if (semver.valid(hostVersion) && semver.valid(packageVersion)) {
14
+ return false;
15
+ }
16
+ // exact package version couldn't be compatible with host range
17
+ if (semver.validRange(hostVersion) && semver.valid(packageVersion)) {
18
+ return false;
19
+ }
20
+ // exact host version must be in package range
21
+ if (semver.valid(hostVersion) && semver.validRange(packageVersion)) {
22
+ return semver.satisfies(hostVersion, packageVersion);
23
+ }
24
+ // host range must be fully included in package range
25
+ if (semver.validRange(hostVersion) && semver.validRange(packageVersion)) {
26
+ return semver.subset(hostVersion, packageVersion);
27
+ }
28
+ return false;
29
+ }
30
+ //# sourceMappingURL=is-compatible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-compatible.js","sourceRoot":"","sources":["../../src/utils/is-compatible.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,UAAU,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,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,+DAA+D;IAC/D,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,8CAA8C;IAC9C,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACjE,OAAO,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACzD,CAAC;IAED,qDAAqD;IACrD,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACtE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/web-components",
3
- "version": "27.4.0",
3
+ "version": "28.1.0",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,18 +15,18 @@
15
15
  "src"
16
16
  ],
17
17
  "dependencies": {
18
- "@servicetitan/error-boundary": "27.4.0",
18
+ "@servicetitan/error-boundary": "28.1.0",
19
19
  "lodash.get": "~4.4.2",
20
20
  "mitt": "~3.0.1",
21
21
  "semver": "~7.6.3"
22
22
  },
23
23
  "devDependencies": {
24
- "@servicetitan/anvil2": "^1.12.2",
25
- "@servicetitan/design-system": "~14.4.3",
26
- "@servicetitan/log-service": "27.4.0",
27
- "@servicetitan/react-ioc": "27.4.0",
24
+ "@servicetitan/anvil2": "^1.16.7",
25
+ "@servicetitan/design-system": "~14.5.0",
26
+ "@servicetitan/log-service": "28.1.0",
27
+ "@servicetitan/react-ioc": "28.1.0",
28
28
  "@testing-library/dom": "^10.4.0",
29
- "@testing-library/jest-dom": "^6.5.0",
29
+ "@testing-library/jest-dom": "^6.6.3",
30
30
  "@testing-library/react": "^16.0.1",
31
31
  "@types/history": "~4.7.10",
32
32
  "@types/lodash.get": "~4.4.6",
@@ -39,10 +39,10 @@
39
39
  "shadow-dom-testing-library": "^1.11.3"
40
40
  },
41
41
  "peerDependencies": {
42
- "@servicetitan/anvil2": ">=1.12.2",
43
- "@servicetitan/design-system": ">=14.4.3",
44
- "@servicetitan/log-service": "27.4.0",
45
- "@servicetitan/react-ioc": "27.4.0",
42
+ "@servicetitan/anvil2": ">=1.16.7",
43
+ "@servicetitan/design-system": ">=14.5.0",
44
+ "@servicetitan/log-service": "28.1.0",
45
+ "@servicetitan/react-ioc": "28.1.0",
46
46
  "history": "~4.10.1",
47
47
  "react": ">=17.0.2",
48
48
  "react-dom": ">=17.0.2"
@@ -61,5 +61,5 @@
61
61
  "cli": {
62
62
  "webpack": false
63
63
  },
64
- "gitHead": "0d58d7916d659a9617a12df86cdd183b5d49eef2"
64
+ "gitHead": "27d173aad0e016014bed59385886d0fd7ca3fb17"
65
65
  }
@@ -1,4 +1,4 @@
1
- import { isCompatible, getJson } from '../common';
1
+ import { getJson } from '../common';
2
2
 
3
3
  /*
4
4
  * Can be replaced by async timer API available in jest v29.5.0
@@ -17,96 +17,6 @@ async function flushMicrotasksAndRunAllTimersTimes(times: number) {
17
17
  }
18
18
 
19
19
  describe('[web-components] common', () => {
20
- describe(`${isCompatible.name}`, () => {
21
- let hostVersion: string;
22
- let packageVersion: string;
23
-
24
- beforeEach(() => {
25
- hostVersion = 'foo';
26
- packageVersion = 'bar';
27
- });
28
-
29
- function returnsFalse() {
30
- test('returns false', () => {
31
- expect(isCompatible(hostVersion, packageVersion)).toBe(false);
32
- });
33
- }
34
-
35
- function returnsTrue() {
36
- test('returns true', () => {
37
- expect(isCompatible(hostVersion, packageVersion)).toBe(true);
38
- });
39
- }
40
-
41
- returnsFalse();
42
-
43
- describe('when versions are equal', () => {
44
- beforeEach(() => {
45
- hostVersion = '1.0.0';
46
- packageVersion = '1.0.0';
47
- });
48
- returnsTrue();
49
- });
50
-
51
- describe("when hostVersion is '*'", () => {
52
- beforeEach(() => (hostVersion = '*'));
53
- returnsFalse();
54
- });
55
-
56
- describe("when packageVersion is '*'", () => {
57
- beforeEach(() => (packageVersion = '*'));
58
- returnsTrue();
59
- });
60
-
61
- describe('when versions are both exact SemVers and not equal', () => {
62
- beforeEach(() => {
63
- hostVersion = '1.0.0';
64
- packageVersion = '1.2.0';
65
- });
66
- returnsFalse();
67
- });
68
-
69
- describe('when hostVersion is a SemVer range and packageVersion is an exact SemVer', () => {
70
- beforeEach(() => {
71
- hostVersion = '^1.0.0';
72
- packageVersion = '1.2.0';
73
- });
74
- returnsFalse();
75
- });
76
-
77
- describe('when hostVersion is an exact SemVer that falls within the packageVersion SemVer range', () => {
78
- beforeEach(() => {
79
- hostVersion = '1.2.0';
80
- packageVersion = '^1.0.0';
81
- });
82
- returnsTrue();
83
- });
84
-
85
- describe('when hostVersion is an exact SemVer that does not fall within the packageVersion SemVer range', () => {
86
- beforeEach(() => {
87
- hostVersion = '1.2.0';
88
- packageVersion = '~1.0.0';
89
- });
90
- returnsFalse();
91
- });
92
-
93
- describe('when hostVersion is a SemVer range that falls within the packageVersion SemVer range', () => {
94
- beforeEach(() => {
95
- hostVersion = '~1.2.0';
96
- packageVersion = '^1.0.0';
97
- });
98
- returnsTrue();
99
- });
100
-
101
- describe('when hostVersion is an exact SemVer that does not fall within the packageVersion SemVer range', () => {
102
- beforeEach(() => {
103
- hostVersion = '^1.2.0';
104
- packageVersion = '~1.0.0';
105
- });
106
- returnsFalse();
107
- });
108
- });
109
-
110
20
  describe(`${getJson.name}`, () => {
111
21
  const mockUrl = 'fake://url';
112
22
  const fetchResponseJson = { data: 'test' };
package/src/common.ts CHANGED
@@ -1,5 +1,3 @@
1
- import semver from 'semver';
2
-
3
1
  import { useRef } from 'react';
4
2
 
5
3
  import { symbolToken } from '@servicetitan/react-ioc';
@@ -37,42 +35,6 @@ export interface IWebComponent {
37
35
  provide(entries: Entries): void;
38
36
  }
39
37
 
40
- export function isCompatible(hostVersion: string, packageVersion: string) {
41
- if (hostVersion === packageVersion) {
42
- return true;
43
- }
44
-
45
- if (hostVersion === '*') {
46
- return false;
47
- }
48
-
49
- if (packageVersion === '*') {
50
- return true;
51
- }
52
-
53
- // host and package have exact non-equal versions
54
- if (semver.valid(hostVersion) && semver.valid(packageVersion)) {
55
- return false;
56
- }
57
-
58
- // exact package version couldn't be compatible with host range
59
- if (semver.validRange(hostVersion) && semver.valid(packageVersion)) {
60
- return false;
61
- }
62
-
63
- // exact host version must be in package range
64
- if (semver.valid(hostVersion) && semver.validRange(packageVersion)) {
65
- return semver.satisfies(hostVersion, packageVersion);
66
- }
67
-
68
- // host range must be fully included in package range
69
- if (semver.validRange(hostVersion) && semver.validRange(packageVersion)) {
70
- return semver.subset(hostVersion, packageVersion);
71
- }
72
-
73
- return false;
74
- }
75
-
76
38
  export interface GetJsonError {
77
39
  status: number;
78
40
  body: string;
@@ -23,16 +23,20 @@ describe(`[web-components] ${getVersionMismatches.name}`, () => {
23
23
  };
24
24
  });
25
25
 
26
- test('returns no mismatches', () => {
27
- expect(getVersionMismatches(exposedDependencies, dependencies, sharedDependencies)).toEqual(
28
- {}
29
- );
30
- });
26
+ function itReturnsNoMismatches() {
27
+ test('returns no mismatches', () => {
28
+ expect(
29
+ getVersionMismatches(exposedDependencies, dependencies, sharedDependencies)
30
+ ).toEqual({});
31
+ });
32
+ }
33
+
34
+ itReturnsNoMismatches();
31
35
 
32
36
  describe('when there is a versions mismatch', () => {
33
37
  beforeEach(() => (dependencies['@servicetitan/design-system'] = '~12.0.0'));
34
38
 
35
- test('returns one mismatch', () => {
39
+ test('returns the mismatch', () => {
36
40
  expect(
37
41
  getVersionMismatches(exposedDependencies, dependencies, sharedDependencies)
38
42
  ).toEqual({
@@ -42,6 +46,12 @@ describe(`[web-components] ${getVersionMismatches.name}`, () => {
42
46
  },
43
47
  });
44
48
  });
49
+
50
+ describe('when the mismatch is not a shared dependency', () => {
51
+ beforeEach(() => (sharedDependencies = {}));
52
+
53
+ itReturnsNoMismatches();
54
+ });
45
55
  });
46
56
 
47
57
  describe('when a dependency is missing from exposed dependencies', () => {
@@ -0,0 +1,91 @@
1
+ import { isCompatible } from '../is-compatible';
2
+
3
+ describe(`[web-components] ${isCompatible.name}`, () => {
4
+ let hostVersion: string;
5
+ let packageVersion: string;
6
+
7
+ beforeEach(() => {
8
+ hostVersion = 'foo';
9
+ packageVersion = 'bar';
10
+ });
11
+
12
+ function returnsFalse() {
13
+ test('returns false', () => {
14
+ expect(isCompatible(hostVersion, packageVersion)).toBe(false);
15
+ });
16
+ }
17
+
18
+ function returnsTrue() {
19
+ test('returns true', () => {
20
+ expect(isCompatible(hostVersion, packageVersion)).toBe(true);
21
+ });
22
+ }
23
+
24
+ returnsFalse();
25
+
26
+ describe('when versions are equal', () => {
27
+ beforeEach(() => {
28
+ hostVersion = '1.0.0';
29
+ packageVersion = '1.0.0';
30
+ });
31
+ returnsTrue();
32
+ });
33
+
34
+ describe("when hostVersion is '*'", () => {
35
+ beforeEach(() => (hostVersion = '*'));
36
+ returnsFalse();
37
+ });
38
+
39
+ describe("when packageVersion is '*'", () => {
40
+ beforeEach(() => (packageVersion = '*'));
41
+ returnsTrue();
42
+ });
43
+
44
+ describe('when versions are both exact SemVers and not equal', () => {
45
+ beforeEach(() => {
46
+ hostVersion = '1.0.0';
47
+ packageVersion = '1.2.0';
48
+ });
49
+ returnsFalse();
50
+ });
51
+
52
+ describe('when hostVersion is a SemVer range and packageVersion is an exact SemVer', () => {
53
+ beforeEach(() => {
54
+ hostVersion = '^1.0.0';
55
+ packageVersion = '1.2.0';
56
+ });
57
+ returnsFalse();
58
+ });
59
+
60
+ describe('when hostVersion is an exact SemVer that falls within the packageVersion SemVer range', () => {
61
+ beforeEach(() => {
62
+ hostVersion = '1.2.0';
63
+ packageVersion = '^1.0.0';
64
+ });
65
+ returnsTrue();
66
+ });
67
+
68
+ describe('when hostVersion is an exact SemVer that does not fall within the packageVersion SemVer range', () => {
69
+ beforeEach(() => {
70
+ hostVersion = '1.2.0';
71
+ packageVersion = '~1.0.0';
72
+ });
73
+ returnsFalse();
74
+ });
75
+
76
+ describe('when hostVersion is a SemVer range that falls within the packageVersion SemVer range', () => {
77
+ beforeEach(() => {
78
+ hostVersion = '~1.2.0';
79
+ packageVersion = '^1.0.0';
80
+ });
81
+ returnsTrue();
82
+ });
83
+
84
+ describe('when hostVersion is an exact SemVer that does not fall within the packageVersion SemVer range', () => {
85
+ beforeEach(() => {
86
+ hostVersion = '^1.2.0';
87
+ packageVersion = '~1.0.0';
88
+ });
89
+ returnsFalse();
90
+ });
91
+ });
@@ -1,4 +1,5 @@
1
- import { ExposedDependencies, isCompatible } from '../common';
1
+ import { ExposedDependencies } from '../common';
2
+ import { isCompatible } from './is-compatible';
2
3
 
3
4
  export const getVersionMismatches = (
4
5
  exposedDependencies: ExposedDependencies,
@@ -8,8 +9,11 @@ export const getVersionMismatches = (
8
9
  const mismatch = Object.entries(exposedDependencies).reduce(
9
10
  (result, [dependency, { version: hostVersion }]) => {
10
11
  const packageVersion = dependencies[dependency];
11
-
12
- if (packageVersion && !isCompatible(hostVersion, packageVersion)) {
12
+ if (
13
+ packageVersion &&
14
+ !!sharedDependencies[dependency] &&
15
+ !isCompatible(hostVersion, packageVersion)
16
+ ) {
13
17
  result[dependency] = { host: hostVersion, package: packageVersion };
14
18
  }
15
19
 
@@ -0,0 +1,37 @@
1
+ import semver from 'semver';
2
+
3
+ export function isCompatible(hostVersion: string, packageVersion: string) {
4
+ if (hostVersion === packageVersion) {
5
+ return true;
6
+ }
7
+
8
+ if (hostVersion === '*') {
9
+ return false;
10
+ }
11
+
12
+ if (packageVersion === '*') {
13
+ return true;
14
+ }
15
+
16
+ // host and package have exact non-equal versions
17
+ if (semver.valid(hostVersion) && semver.valid(packageVersion)) {
18
+ return false;
19
+ }
20
+
21
+ // exact package version couldn't be compatible with host range
22
+ if (semver.validRange(hostVersion) && semver.valid(packageVersion)) {
23
+ return false;
24
+ }
25
+
26
+ // exact host version must be in package range
27
+ if (semver.valid(hostVersion) && semver.validRange(packageVersion)) {
28
+ return semver.satisfies(hostVersion, packageVersion);
29
+ }
30
+
31
+ // host range must be fully included in package range
32
+ if (semver.validRange(hostVersion) && semver.validRange(packageVersion)) {
33
+ return semver.subset(hostVersion, packageVersion);
34
+ }
35
+
36
+ return false;
37
+ }