@servicetitan/web-components 12.8.8-patch.2 → 12.8.11

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
@@ -10,6 +10,15 @@ export interface IWebComponent {
10
10
  provide(entries: Entries): void;
11
11
  }
12
12
  export declare function isCompatible(hostVersion: string, packageVersion: string): boolean;
13
+ interface GetJsonOptions extends RequestInit {
14
+ retries?: number;
15
+ retryDelay?: number;
16
+ }
17
+ export declare function getJson<T = any>(url: string, { retries, retryDelay, ...config }?: GetJsonOptions): Promise<{
18
+ data: T;
19
+ headers: Headers;
20
+ }>;
21
+ export declare function useCancelation(): AbortController;
13
22
  export declare type EventHandler = () => void;
14
23
  export declare class EventBus {
15
24
  private emitter;
@@ -18,4 +27,5 @@ export declare class EventBus {
18
27
  emit: (type: string) => void;
19
28
  }
20
29
  export declare function useEventBus(): EventBus;
30
+ export {};
21
31
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEhD,eAAO,MAAM,cAAc,uDAAwC,CAAC;AAEpE,MAAM,WAAW,OAAO;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;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,oBAAY,YAAY,GAAG,MAAM,IAAI,CAAC;AAEtC,qBAAa,QAAQ;IACjB,OAAO,CAAC,OAAO,CAAU;IAEzB,EAAE,SAAU,MAAM,WAAW,YAAY,UAEvC;IAEF,GAAG,SAAU,MAAM,WAAW,YAAY,UAExC;IAEF,IAAI,SAAU,MAAM,UAElB;CACL;AAED,wBAAgB,WAAW,aAE1B"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEhD,eAAO,MAAM,cAAc,uDAAwC,CAAC;AAEpE,MAAM,WAAW,OAAO;IACpB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;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,UAAU,cAAe,SAAQ,WAAW;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,OAAO,CAAC,CAAC,GAAG,GAAG,EACjC,GAAG,EAAE,MAAM,EACX,EAAE,OAAW,EAAE,UAAiB,EAAE,GAAG,MAAM,EAAE,GAAE,cAAmB,GACnE,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAmCxC;AAED,wBAAgB,cAAc,oBAE7B;AAED,oBAAY,YAAY,GAAG,MAAM,IAAI,CAAC;AAEtC,qBAAa,QAAQ;IACjB,OAAO,CAAC,OAAO,CAAU;IAEzB,EAAE,SAAU,MAAM,WAAW,YAAY,UAEvC;IAEF,GAAG,SAAU,MAAM,WAAW,YAAY,UAExC;IAEF,IAAI,SAAU,MAAM,UAElB;CACL;AAED,wBAAgB,WAAW,aAE1B"}
package/dist/common.js CHANGED
@@ -1,9 +1,29 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __rest = (this && this.__rest) || function (s, e) {
12
+ var t = {};
13
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
14
+ t[p] = s[p];
15
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
16
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
17
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
18
+ t[p[i]] = s[p[i]];
19
+ }
20
+ return t;
21
+ };
2
22
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
23
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
24
  };
5
25
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useEventBus = exports.EventBus = exports.isCompatible = exports.BASENAME_TOKEN = void 0;
26
+ exports.useEventBus = exports.EventBus = exports.useCancelation = exports.getJson = exports.isCompatible = exports.BASENAME_TOKEN = void 0;
7
27
  const semver_1 = __importDefault(require("semver"));
8
28
  const mitt_1 = __importDefault(require("mitt"));
9
29
  const react_1 = require("react");
@@ -38,6 +58,41 @@ function isCompatible(hostVersion, packageVersion) {
38
58
  return false;
39
59
  }
40
60
  exports.isCompatible = isCompatible;
61
+ function getJson(url, _a = {}) {
62
+ var { retries = 5, retryDelay = 1000 } = _a, config = __rest(_a, ["retries", "retryDelay"]);
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ let response;
65
+ try {
66
+ response = yield fetch(url, config);
67
+ }
68
+ catch (_b) {
69
+ if (retries > 0) {
70
+ return new Promise((resolve, reject) => {
71
+ const { signal } = config;
72
+ const timeoutId = window.setTimeout(() => {
73
+ getJson(url, Object.assign(Object.assign({}, config), { retries: retries - 1, retryDelay: retryDelay * 4 })).then(resolve, reject);
74
+ }, retryDelay);
75
+ signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', () => window.clearTimeout(timeoutId));
76
+ });
77
+ }
78
+ throw new Error(`Failed to fetch: "${url}".`);
79
+ }
80
+ if (!response.ok) {
81
+ let message = `Requesting "${url}" failed with status code ${response.status}.`;
82
+ try {
83
+ message += ` Details: ${yield response.text()}.`;
84
+ }
85
+ catch (_c) { } // eslint-disable-line no-empty
86
+ throw new Error(message);
87
+ }
88
+ return { data: yield response.json(), headers: response.headers };
89
+ });
90
+ }
91
+ exports.getJson = getJson;
92
+ function useCancelation() {
93
+ return react_1.useRef(new AbortController()).current;
94
+ }
95
+ exports.useCancelation = useCancelation;
41
96
  class EventBus {
42
97
  constructor() {
43
98
  Object.defineProperty(this, "emitter", {
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,gDAAwB;AAExB,iCAA+B;AAE/B,uDAAsD;AAGzC,QAAA,cAAc,GAAG,uBAAW,CAAS,gBAAgB,CAAC,CAAC;AAapE,SAAgB,YAAY,CAAC,WAAmB,EAAE,cAAsB;IACpE,IAAI,WAAW,KAAK,cAAc,EAAE;QAChC,OAAO,IAAI,CAAC;KACf;IAED,IAAI,WAAW,KAAK,GAAG,EAAE;QACrB,OAAO,KAAK,CAAC;KAChB;IAED,IAAI,cAAc,KAAK,GAAG,EAAE;QACxB,OAAO,IAAI,CAAC;KACf;IAED,iDAAiD;IACjD,IAAI,gBAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,gBAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;QAC3D,OAAO,KAAK,CAAC;KAChB;IAED,+DAA+D;IAC/D,IAAI,gBAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,gBAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;QAChE,OAAO,KAAK,CAAC;KAChB;IAED,8CAA8C;IAC9C,IAAI,gBAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,gBAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;QAChE,OAAO,gBAAM,CAAC,SAAS,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;KACxD;IAED,qDAAqD;IACrD,IAAI,gBAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,gBAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;QACrE,OAAO,gBAAM,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;KACrD;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAlCD,oCAkCC;AAID,MAAa,QAAQ;IAArB;QACI;;;;mBAAkB,cAAI,EAAE;WAAC;QAEzB;;;;mBAAK,CAAC,IAAY,EAAE,OAAqB,EAAE,EAAE;gBACzC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;WAAC;QAEF;;;;mBAAM,CAAC,IAAY,EAAE,OAAqB,EAAE,EAAE;gBAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;WAAC;QAEF;;;;mBAAO,CAAC,IAAY,EAAE,EAAE;gBACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;WAAC;IACN,CAAC;CAAA;AAdD,4BAcC;AAED,SAAgB,WAAW;IACvB,OAAO,cAAM,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC;AAC1C,CAAC;AAFD,kCAEC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,CAAC,MAAM,CAAC;IACX,MAAM,CAAC,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5F;AA+ED,MAAM,WAAW,SAAS;IACtB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACtD,aAAa,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,MAAM,+EAyIlB,CAAC"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,CAAC,MAAM,CAAC;IACX,MAAM,CAAC,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5F;AA0DD,MAAM,WAAW,SAAS;IACtB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACtD,aAAa,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,MAAM,+EA2JlB,CAAC"}
package/dist/loader.js CHANGED
@@ -18,26 +18,6 @@ const error_boundary_1 = require("@servicetitan/error-boundary");
18
18
  const log_service_1 = require("@servicetitan/log-service");
19
19
  const react_ioc_1 = require("@servicetitan/react-ioc");
20
20
  const common_1 = require("./common");
21
- function get(url, config) {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- let response;
24
- try {
25
- response = yield fetch(url, config);
26
- }
27
- catch (_a) {
28
- throw new Error(`Failed to fetch: "${url}".`);
29
- }
30
- if (!response.ok) {
31
- let message = `Requesting "${url}" failed with status code ${response.status}.`;
32
- try {
33
- message += ` Details: ${yield response.text()}.`;
34
- }
35
- catch (_b) { } // eslint-disable-line no-empty
36
- throw new Error(message);
37
- }
38
- return { data: yield response.json(), headers: response.headers };
39
- });
40
- }
41
21
  function omitPackageVersion(packageUrl) {
42
22
  const chunks = packageUrl.split('@');
43
23
  if (chunks.length > 2) {
@@ -45,13 +25,13 @@ function omitPackageVersion(packageUrl) {
45
25
  }
46
26
  return packageUrl;
47
27
  }
48
- function getBundleInfo(packageUrl) {
28
+ function getBundleInfo(packageUrl, signal) {
49
29
  return __awaiter(this, void 0, void 0, function* () {
50
- const { data: { dependencies, name, version }, headers, } = yield get(`${packageUrl}/package.json`, { cache: 'no-store' });
30
+ const { data: { dependencies, name, version }, headers, } = yield common_1.getJson(`${packageUrl}/package.json`, { cache: 'no-store', signal });
51
31
  const exactPackageUrl = headers.get('X-Delivered-By') === 'unpkg'
52
32
  ? `${omitPackageVersion(packageUrl)}@${version}`
53
33
  : packageUrl;
54
- const { data: metadata } = yield get(`${exactPackageUrl}/dist/metadata.json`);
34
+ const { data: metadata } = yield common_1.getJson(`${exactPackageUrl}/dist/metadata.json`, { signal });
55
35
  const mismatch = Object.entries(EXPOSED_DEPENDENCIES).reduce((result, [dependency, { version: hostVersion }]) => {
56
36
  const packageVersion = dependencies[dependency];
57
37
  if (packageVersion && !common_1.isCompatible(hostVersion, packageVersion)) {
@@ -82,11 +62,11 @@ exports.Loader = react_1.default.forwardRef(({ src, data = {}, basename, loading
82
62
  const dataAttrs = react_1.default.useMemo(() => Object.fromEntries(Object.entries(data).map(([key, value]) => [
83
63
  'data-' + key.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()),
84
64
  value,
85
- ])),
86
- // eslint-disable-next-line react-hooks/exhaustive-deps
87
- [...Object.entries(data).map(v => v.join())]);
65
+ ])), [...Object.entries(data).map(v => v.join())] // eslint-disable-line react-hooks/exhaustive-deps
66
+ );
88
67
  const Loader = react_1.default.useMemo(() => {
89
68
  const Component = react_1.default.forwardRef((_0, ref) => {
69
+ const cancelation = common_1.useCancelation();
90
70
  const eventBus = common_1.useEventBus();
91
71
  react_1.default.useImperativeHandle(ref, () => ({
92
72
  emit(type) {
@@ -96,9 +76,24 @@ exports.Loader = react_1.default.forwardRef(({ src, data = {}, basename, loading
96
76
  );
97
77
  react_1.default.useEffect(() => {
98
78
  setIsLoading(true);
99
- }, []);
79
+ return () => {
80
+ cancelation.abort();
81
+ };
82
+ }, []); // eslint-disable-line react-hooks/exhaustive-deps
100
83
  const Lazy = react_1.default.useMemo(() => react_1.default.lazy(() => __awaiter(void 0, void 0, void 0, function* () {
101
- const { url, WebComponent, mismatch } = yield getBundleInfo(src);
84
+ let bundleInfo;
85
+ try {
86
+ bundleInfo = yield getBundleInfo(src, cancelation.signal);
87
+ }
88
+ catch (e) {
89
+ if (cancelation.signal.aborted) {
90
+ return {
91
+ default: () => null,
92
+ };
93
+ }
94
+ throw e;
95
+ }
96
+ const { url, WebComponent, mismatch } = bundleInfo;
102
97
  if (mismatch) {
103
98
  logService === null || logService === void 0 ? void 0 : logService.warning({
104
99
  category: 'MicroFrontends.DependenciesMismatch',
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/web-components",
3
- "version": "12.8.8-patch.2",
3
+ "version": "12.8.11",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,9 +19,9 @@
19
19
  },
20
20
  "devDependencies": {
21
21
  "@servicetitan/design-system": "~9.2.1",
22
- "@servicetitan/error-boundary": "^12.8.8-patch.2",
23
- "@servicetitan/log-service": "^12.8.8-patch.2",
24
- "@servicetitan/react-ioc": "^12.8.8-patch.2",
22
+ "@servicetitan/error-boundary": "^12.8.11",
23
+ "@servicetitan/log-service": "^12.8.11",
24
+ "@servicetitan/react-ioc": "^12.8.11",
25
25
  "@types/react": "~17.0.9",
26
26
  "@types/react-dom": "~17.0.6",
27
27
  "@types/semver": "~7.3.6",
@@ -42,5 +42,5 @@
42
42
  "cli": {
43
43
  "webpack": false
44
44
  },
45
- "gitHead": "7efe5150209351d43b6eafd1e20c60e16766713f"
45
+ "gitHead": "9ff574b28f2d078e87772a71403fc3f18c25dd65"
46
46
  }
package/src/common.ts CHANGED
@@ -56,6 +56,55 @@ export function isCompatible(hostVersion: string, packageVersion: string) {
56
56
  return false;
57
57
  }
58
58
 
59
+ interface GetJsonOptions extends RequestInit {
60
+ retries?: number;
61
+ retryDelay?: number;
62
+ }
63
+
64
+ export async function getJson<T = any>(
65
+ url: string,
66
+ { retries = 5, retryDelay = 1000, ...config }: GetJsonOptions = {}
67
+ ): Promise<{ data: T; headers: Headers }> {
68
+ let response: Response;
69
+ try {
70
+ response = await fetch(url, config);
71
+ } catch {
72
+ if (retries > 0) {
73
+ return new Promise((resolve, reject) => {
74
+ const { signal } = config;
75
+
76
+ const timeoutId = window.setTimeout(() => {
77
+ getJson(url, {
78
+ ...config,
79
+ retries: retries - 1,
80
+ retryDelay: retryDelay * 4,
81
+ }).then(resolve, reject);
82
+ }, retryDelay);
83
+
84
+ signal?.addEventListener('abort', () => window.clearTimeout(timeoutId));
85
+ });
86
+ }
87
+
88
+ throw new Error(`Failed to fetch: "${url}".`);
89
+ }
90
+
91
+ if (!response.ok) {
92
+ let message = `Requesting "${url}" failed with status code ${response.status}.`;
93
+
94
+ try {
95
+ message += ` Details: ${await response.text()}.`;
96
+ } catch {} // eslint-disable-line no-empty
97
+
98
+ throw new Error(message);
99
+ }
100
+
101
+ return { data: await response.json(), headers: response.headers };
102
+ }
103
+
104
+ export function useCancelation() {
105
+ return useRef(new AbortController()).current;
106
+ }
107
+
59
108
  export type EventHandler = () => void;
60
109
 
61
110
  export class EventBus {
package/src/loader.tsx CHANGED
@@ -4,33 +4,14 @@ import { ErrorBoundary } from '@servicetitan/error-boundary';
4
4
  import { Log } from '@servicetitan/log-service';
5
5
  import { useOptionalDependencies } from '@servicetitan/react-ioc';
6
6
 
7
- import { useEventBus, IWebComponent, isCompatible } from './common';
7
+ import { useCancelation, useEventBus, getJson, isCompatible, IWebComponent } from './common';
8
+
9
+ type Awaited<T> = T extends PromiseLike<infer U> ? Awaited<U> : T;
8
10
 
9
11
  declare global {
10
12
  export const EXPOSED_DEPENDENCIES: Record<string, { version: string; variable: string }>;
11
13
  }
12
14
 
13
- async function get(url: string, config?: RequestInit) {
14
- let response: Response;
15
- try {
16
- response = await fetch(url, config);
17
- } catch {
18
- throw new Error(`Failed to fetch: "${url}".`);
19
- }
20
-
21
- if (!response.ok) {
22
- let message = `Requesting "${url}" failed with status code ${response.status}.`;
23
-
24
- try {
25
- message += ` Details: ${await response.text()}.`;
26
- } catch {} // eslint-disable-line no-empty
27
-
28
- throw new Error(message);
29
- }
30
-
31
- return { data: await response.json(), headers: response.headers };
32
- }
33
-
34
15
  function omitPackageVersion(packageUrl: string) {
35
16
  const chunks = packageUrl.split('@');
36
17
 
@@ -41,18 +22,18 @@ function omitPackageVersion(packageUrl: string) {
41
22
  return packageUrl;
42
23
  }
43
24
 
44
- async function getBundleInfo(packageUrl: string) {
25
+ async function getBundleInfo(packageUrl: string, signal?: AbortSignal) {
45
26
  const {
46
27
  data: { dependencies, name, version },
47
28
  headers,
48
- } = await get(`${packageUrl}/package.json`, { cache: 'no-store' });
29
+ } = await getJson(`${packageUrl}/package.json`, { cache: 'no-store', signal });
49
30
 
50
31
  const exactPackageUrl =
51
32
  headers.get('X-Delivered-By') === 'unpkg'
52
33
  ? `${omitPackageVersion(packageUrl)}@${version}`
53
34
  : packageUrl;
54
35
 
55
- const { data: metadata } = await get(`${exactPackageUrl}/dist/metadata.json`);
36
+ const { data: metadata } = await getJson(`${exactPackageUrl}/dist/metadata.json`, { signal });
56
37
 
57
38
  const mismatch = Object.entries(EXPOSED_DEPENDENCIES).reduce(
58
39
  (result, [dependency, { version: hostVersion }]) => {
@@ -114,12 +95,13 @@ export const Loader = React.forwardRef<LoaderRef, LoaderProps>(
114
95
  value,
115
96
  ])
116
97
  ),
117
- // eslint-disable-next-line react-hooks/exhaustive-deps
118
- [...Object.entries(data).map(v => v.join())]
98
+
99
+ [...Object.entries(data).map(v => v.join())] // eslint-disable-line react-hooks/exhaustive-deps
119
100
  );
120
101
 
121
102
  const Loader = React.useMemo(() => {
122
103
  const Component = React.forwardRef<LoaderRef>((_0, ref) => {
104
+ const cancelation = useCancelation();
123
105
  const eventBus = useEventBus();
124
106
 
125
107
  React.useImperativeHandle(
@@ -134,12 +116,29 @@ export const Loader = React.forwardRef<LoaderRef, LoaderProps>(
134
116
 
135
117
  React.useEffect(() => {
136
118
  setIsLoading(true);
137
- }, []);
119
+
120
+ return () => {
121
+ cancelation.abort();
122
+ };
123
+ }, []); // eslint-disable-line react-hooks/exhaustive-deps
138
124
 
139
125
  const Lazy = React.useMemo(
140
126
  () =>
141
- React.lazy(async () => {
142
- const { url, WebComponent, mismatch } = await getBundleInfo(src);
127
+ React.lazy<() => JSX.Element | null>(async () => {
128
+ let bundleInfo: Awaited<ReturnType<typeof getBundleInfo>>;
129
+ try {
130
+ bundleInfo = await getBundleInfo(src, cancelation.signal);
131
+ } catch (e) {
132
+ if (cancelation.signal.aborted) {
133
+ return {
134
+ default: () => null,
135
+ };
136
+ }
137
+
138
+ throw e;
139
+ }
140
+
141
+ const { url, WebComponent, mismatch } = bundleInfo;
143
142
 
144
143
  if (mismatch) {
145
144
  logService?.warning({
package/src/register.tsx CHANGED
@@ -6,7 +6,7 @@ import { DefaultPortalContext } from '@servicetitan/design-system';
6
6
 
7
7
  import { IsWebComponentContext } from './is-web-component-context';
8
8
  import { OptionalValueProvider } from './optional-value-provider';
9
- import { EventBus, IWebComponent, Entries, BASENAME_TOKEN } from './common';
9
+ import { Entries, EventBus, IWebComponent, BASENAME_TOKEN } from './common';
10
10
 
11
11
  declare global {
12
12
  export const WEB_COMPONENT_NAME: string;