@servicetitan/web-components 18.0.0 → 19.2.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 +7 -8
- package/dist/common.d.ts.map +1 -1
- package/dist/common.js +2 -41
- package/dist/common.js.map +1 -1
- package/dist/event-bus.d.ts +18 -0
- package/dist/event-bus.d.ts.map +1 -0
- package/dist/event-bus.js +76 -0
- package/dist/event-bus.js.map +1 -0
- package/dist/globals.d.ts +10 -0
- package/dist/globals.d.ts.map +1 -0
- package/dist/globals.js +20 -0
- package/dist/globals.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +1 -7
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +16 -9
- package/dist/loader.js.map +1 -1
- package/dist/register.d.ts +0 -3
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +25 -3
- package/dist/register.js.map +1 -1
- package/package.json +6 -6
- package/src/common.ts +13 -24
- package/src/event-bus.ts +52 -0
- package/src/globals.ts +25 -0
- package/src/index.ts +1 -0
- package/src/loader.tsx +26 -16
- package/src/register.tsx +26 -24
- package/dist/optional-value-provider.d.ts +0 -9
- package/dist/optional-value-provider.d.ts.map +0 -1
- package/dist/optional-value-provider.js +0 -13
- package/dist/optional-value-provider.js.map +0 -1
- package/src/optional-value-provider.tsx +0 -19
package/dist/common.d.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { Log } from '@servicetitan/log-service';
|
|
2
|
+
import { EventBus } from './event-bus';
|
|
2
3
|
import { HistoryManager } from './history-manager';
|
|
4
|
+
export declare type ExposedDependencies = Record<string, {
|
|
5
|
+
version: string;
|
|
6
|
+
variable: string;
|
|
7
|
+
}>;
|
|
3
8
|
export declare const BASENAME_TOKEN: import("@servicetitan/react-ioc").SymbolToken<string>;
|
|
9
|
+
export declare const EXPOSED_DEPENDENCIES_TOKEN: import("@servicetitan/react-ioc").SymbolToken<ExposedDependencies>;
|
|
4
10
|
export declare const IS_WEB_COMPONENT_TOKEN: import("@servicetitan/react-ioc").SymbolToken<boolean>;
|
|
5
11
|
export declare const RENDER_ROOT_TOKEN: import("@servicetitan/react-ioc").SymbolToken<ShadowRoot>;
|
|
6
12
|
export interface Entries {
|
|
7
13
|
logService?: Log;
|
|
8
14
|
historyManager?: HistoryManager;
|
|
15
|
+
exposedDependencies?: ExposedDependencies;
|
|
9
16
|
eventBus?: EventBus;
|
|
10
17
|
basename?: string;
|
|
11
18
|
onReady: () => void;
|
|
@@ -24,13 +31,5 @@ export declare function getJson<T = any>(url: string, { retries, retryDelay, ...
|
|
|
24
31
|
headers: Headers;
|
|
25
32
|
}>;
|
|
26
33
|
export declare function useCancelation(): AbortController;
|
|
27
|
-
export declare type EventHandler = () => void;
|
|
28
|
-
export declare class EventBus {
|
|
29
|
-
private emitter;
|
|
30
|
-
on: (type: string, handler: EventHandler) => void;
|
|
31
|
-
off: (type: string, handler: EventHandler) => void;
|
|
32
|
-
emit: (type: string) => void;
|
|
33
|
-
}
|
|
34
|
-
export declare function useEventBus(): EventBus;
|
|
35
34
|
export {};
|
|
36
35
|
//# sourceMappingURL=common.d.ts.map
|
package/dist/common.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"
|
|
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,oBAAY,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,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"}
|
package/dist/common.js
CHANGED
|
@@ -23,12 +23,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
23
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.useCancelation = exports.getJson = exports.isCompatible = exports.RENDER_ROOT_TOKEN = exports.IS_WEB_COMPONENT_TOKEN = exports.EXPOSED_DEPENDENCIES_TOKEN = exports.BASENAME_TOKEN = void 0;
|
|
27
27
|
const semver_1 = __importDefault(require("semver"));
|
|
28
|
-
const mitt_1 = __importDefault(require("mitt"));
|
|
29
28
|
const react_1 = require("react");
|
|
30
29
|
const react_ioc_1 = require("@servicetitan/react-ioc");
|
|
31
30
|
exports.BASENAME_TOKEN = (0, react_ioc_1.symbolToken)('BASENAME_TOKEN');
|
|
31
|
+
exports.EXPOSED_DEPENDENCIES_TOKEN = (0, react_ioc_1.symbolToken)('EXPOSED_DEPENDENCIES_TOKEN');
|
|
32
32
|
exports.IS_WEB_COMPONENT_TOKEN = (0, react_ioc_1.symbolToken)('IS_WEB_COMPONENT_TOKEN');
|
|
33
33
|
exports.RENDER_ROOT_TOKEN = (0, react_ioc_1.symbolToken)('RENDER_ROOT_TOKEN');
|
|
34
34
|
function isCompatible(hostVersion, packageVersion) {
|
|
@@ -95,43 +95,4 @@ function useCancelation() {
|
|
|
95
95
|
return (0, react_1.useRef)(new AbortController()).current;
|
|
96
96
|
}
|
|
97
97
|
exports.useCancelation = useCancelation;
|
|
98
|
-
class EventBus {
|
|
99
|
-
constructor() {
|
|
100
|
-
Object.defineProperty(this, "emitter", {
|
|
101
|
-
enumerable: true,
|
|
102
|
-
configurable: true,
|
|
103
|
-
writable: true,
|
|
104
|
-
value: (0, mitt_1.default)()
|
|
105
|
-
});
|
|
106
|
-
Object.defineProperty(this, "on", {
|
|
107
|
-
enumerable: true,
|
|
108
|
-
configurable: true,
|
|
109
|
-
writable: true,
|
|
110
|
-
value: (type, handler) => {
|
|
111
|
-
this.emitter.on(type, handler);
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
Object.defineProperty(this, "off", {
|
|
115
|
-
enumerable: true,
|
|
116
|
-
configurable: true,
|
|
117
|
-
writable: true,
|
|
118
|
-
value: (type, handler) => {
|
|
119
|
-
this.emitter.off(type, handler);
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
Object.defineProperty(this, "emit", {
|
|
123
|
-
enumerable: true,
|
|
124
|
-
configurable: true,
|
|
125
|
-
writable: true,
|
|
126
|
-
value: (type) => {
|
|
127
|
-
this.emitter.emit(type);
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
exports.EventBus = EventBus;
|
|
133
|
-
function useEventBus() {
|
|
134
|
-
return (0, react_1.useRef)(new EventBus()).current;
|
|
135
|
-
}
|
|
136
|
-
exports.useEventBus = useEventBus;
|
|
137
98
|
//# sourceMappingURL=common.js.map
|
package/dist/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAE5B,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare type EventHandler = () => void;
|
|
2
|
+
export declare type JobEventHandler = (defer: {
|
|
3
|
+
resolve(): void;
|
|
4
|
+
reject(reason?: string | Error): void;
|
|
5
|
+
}) => void;
|
|
6
|
+
export declare class EventBus {
|
|
7
|
+
job: {
|
|
8
|
+
on: (type: string, handler: JobEventHandler) => void;
|
|
9
|
+
off: (type: string, handler: JobEventHandler) => void;
|
|
10
|
+
emit: (type: string) => Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
private emitter;
|
|
13
|
+
on: (type: string, handler: EventHandler) => void;
|
|
14
|
+
off: (type: string, handler: EventHandler) => void;
|
|
15
|
+
emit: (type: string) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function useEventBus(): EventBus;
|
|
18
|
+
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../src/event-bus.ts"],"names":[],"mappings":"AAIA,oBAAY,YAAY,GAAG,MAAM,IAAI,CAAC;AACtC,oBAAY,eAAe,GAAG,CAAC,KAAK,EAAE;IAClC,OAAO,IAAI,IAAI,CAAC;IAChB,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;CACzC,KAAK,IAAI,CAAC;AAEX,qBAAa,QAAQ;IACjB,GAAG;mBACY,MAAM,WAAW,eAAe;oBAG/B,MAAM,WAAW,eAAe;qBAG/B,MAAM;MAcrB;IAEF,OAAO,CAAC,OAAO,CAAe;IAE9B,EAAE,SAAU,MAAM,WAAW,YAAY,UAEvC;IAEF,GAAG,SAAU,MAAM,WAAW,YAAY,UAExC;IAEF,IAAI,SAAU,MAAM,UAElB;CACL;AAED,wBAAgB,WAAW,aAE1B"}
|
|
@@ -0,0 +1,76 @@
|
|
|
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.useEventBus = exports.EventBus = void 0;
|
|
7
|
+
const mitt_1 = __importDefault(require("mitt"));
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
class EventBus {
|
|
10
|
+
constructor() {
|
|
11
|
+
Object.defineProperty(this, "job", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
configurable: true,
|
|
14
|
+
writable: true,
|
|
15
|
+
value: {
|
|
16
|
+
on: (type, handler) => {
|
|
17
|
+
this.emitter.on(type, handler);
|
|
18
|
+
},
|
|
19
|
+
off: (type, handler) => {
|
|
20
|
+
this.emitter.off(type, handler);
|
|
21
|
+
},
|
|
22
|
+
emit: (type) => {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
this.emitter.emit(type, {
|
|
25
|
+
resolve: () => resolve(),
|
|
26
|
+
reject: (reason) => {
|
|
27
|
+
if (typeof reason === 'string' || reason instanceof Error) {
|
|
28
|
+
reject(reason);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
reject();
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
Object.defineProperty(this, "emitter", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true,
|
|
42
|
+
writable: true,
|
|
43
|
+
value: (0, mitt_1.default)()
|
|
44
|
+
});
|
|
45
|
+
Object.defineProperty(this, "on", {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
configurable: true,
|
|
48
|
+
writable: true,
|
|
49
|
+
value: (type, handler) => {
|
|
50
|
+
this.emitter.on(type, handler);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
Object.defineProperty(this, "off", {
|
|
54
|
+
enumerable: true,
|
|
55
|
+
configurable: true,
|
|
56
|
+
writable: true,
|
|
57
|
+
value: (type, handler) => {
|
|
58
|
+
this.emitter.off(type, handler);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
Object.defineProperty(this, "emit", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
configurable: true,
|
|
64
|
+
writable: true,
|
|
65
|
+
value: (type) => {
|
|
66
|
+
this.emitter.emit(type);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.EventBus = EventBus;
|
|
72
|
+
function useEventBus() {
|
|
73
|
+
return (0, react_1.useRef)(new EventBus()).current;
|
|
74
|
+
}
|
|
75
|
+
exports.useEventBus = useEventBus;
|
|
76
|
+
//# sourceMappingURL=event-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../src/event-bus.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,iCAA+B;AAQ/B,MAAa,QAAQ;IAArB;QACI;;;;mBAAM;gBACF,EAAE,EAAE,CAAC,IAAY,EAAE,OAAwB,EAAE,EAAE;oBAC3C,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACnC,CAAC;gBACD,GAAG,EAAE,CAAC,IAAY,EAAE,OAAwB,EAAE,EAAE;oBAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACpC,CAAC;gBACD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE;oBACnB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE;4BACpB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE;4BACxB,MAAM,EAAE,CAAC,MAAuB,EAAE,EAAE;gCAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,YAAY,KAAK,EAAE;oCACvD,MAAM,CAAC,MAAM,CAAC,CAAC;iCAClB;qCAAM;oCACH,MAAM,EAAE,CAAC;iCACZ;4BACL,CAAC;yBACJ,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;gBACP,CAAC;aACJ;WAAC;QAEF;;;;mBAAkB,IAAA,cAAI,GAAO;WAAC;QAE9B;;;;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;AArCD,4BAqCC;AAED,SAAgB,WAAW;IACvB,OAAO,IAAA,cAAM,EAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC;AAC1C,CAAC;AAFD,kCAEC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ExposedDependencies } from './common';
|
|
2
|
+
declare global {
|
|
3
|
+
export const EXPOSED_DEPENDENCIES: ExposedDependencies | undefined;
|
|
4
|
+
export const WEB_COMPONENT_NAME: string | undefined;
|
|
5
|
+
}
|
|
6
|
+
declare const _EXPOSED_DEPENDENCIES: ExposedDependencies | undefined;
|
|
7
|
+
export { _EXPOSED_DEPENDENCIES as EXPOSED_DEPENDENCIES };
|
|
8
|
+
declare const _WEB_COMPONENT_NAME: string | undefined;
|
|
9
|
+
export { _WEB_COMPONENT_NAME as WEB_COMPONENT_NAME };
|
|
10
|
+
//# sourceMappingURL=globals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../src/globals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,CAAC,MAAM,CAAC;IACX,MAAM,CAAC,MAAM,oBAAoB,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACnE,MAAM,CAAC,MAAM,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACvD;AAUD,QAAA,MAAM,qBAAqB,iCAEzB,CAAC;AACH,OAAO,EAAE,qBAAqB,IAAI,oBAAoB,EAAE,CAAC;AAEzD,QAAA,MAAM,mBAAmB,oBAEvB,CAAC;AACH,OAAO,EAAE,mBAAmB,IAAI,kBAAkB,EAAE,CAAC"}
|
package/dist/globals.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WEB_COMPONENT_NAME = exports.EXPOSED_DEPENDENCIES = void 0;
|
|
4
|
+
function get(fetch) {
|
|
5
|
+
try {
|
|
6
|
+
return fetch();
|
|
7
|
+
}
|
|
8
|
+
catch (_a) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const _EXPOSED_DEPENDENCIES = get(() => {
|
|
13
|
+
return EXPOSED_DEPENDENCIES;
|
|
14
|
+
});
|
|
15
|
+
exports.EXPOSED_DEPENDENCIES = _EXPOSED_DEPENDENCIES;
|
|
16
|
+
const _WEB_COMPONENT_NAME = get(() => {
|
|
17
|
+
return WEB_COMPONENT_NAME;
|
|
18
|
+
});
|
|
19
|
+
exports.WEB_COMPONENT_NAME = _WEB_COMPONENT_NAME;
|
|
20
|
+
//# sourceMappingURL=globals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globals.js","sourceRoot":"","sources":["../src/globals.ts"],"names":[],"mappings":";;;AAQA,SAAS,GAAG,CAAI,KAAc;IAC1B,IAAI;QACA,OAAO,KAAK,EAAE,CAAC;KAClB;IAAC,WAAM;QACJ,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAED,MAAM,qBAAqB,GAAG,GAAG,CAAC,GAAG,EAAE;IACnC,OAAO,oBAAoB,CAAC;AAChC,CAAC,CAAC,CAAC;AAC+B,qDAAoB;AAEtD,MAAM,mBAAmB,GAAG,GAAG,CAAC,GAAG,EAAE;IACjC,OAAO,kBAAkB,CAAC;AAC9B,CAAC,CAAC,CAAC;AAC6B,iDAAkB"}
|
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,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./common"), exports);
|
|
14
|
+
__exportStar(require("./event-bus"), exports);
|
|
14
15
|
__exportStar(require("./history-manager"), exports);
|
|
15
16
|
__exportStar(require("./register"), exports);
|
|
16
17
|
__exportStar(require("./loader"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,oDAAkC;AAClC,6CAA2B;AAC3B,2CAAyB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB;AACzB,8CAA4B;AAC5B,oDAAkC;AAClC,6CAA2B;AAC3B,2CAAyB"}
|
package/dist/loader.d.ts
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { EventBus } from './
|
|
3
|
-
declare global {
|
|
4
|
-
export const EXPOSED_DEPENDENCIES: Record<string, {
|
|
5
|
-
version: string;
|
|
6
|
-
variable: string;
|
|
7
|
-
}>;
|
|
8
|
-
}
|
|
2
|
+
import { EventBus } from './event-bus';
|
|
9
3
|
export declare type LoaderRef = EventBus;
|
|
10
4
|
export interface LoaderProps {
|
|
11
5
|
src: string;
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":"AAAA,OAAO,EASH,SAAS,EACZ,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":"AAAA,OAAO,EASH,SAAS,EACZ,MAAM,OAAO,CAAC;AAkBf,OAAO,EAAE,QAAQ,EAAe,MAAM,aAAa,CAAC;AAyEpD,oBAAY,SAAS,GAAG,QAAQ,CAAC;AAEjC,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,SAAS,CAAC,GAAG,IAAI,CAAC;IAChD,aAAa,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,MAAM,kGAoKlB,CAAC"}
|
package/dist/loader.js
CHANGED
|
@@ -21,7 +21,9 @@ const error_boundary_1 = require("@servicetitan/error-boundary");
|
|
|
21
21
|
const log_service_1 = require("@servicetitan/log-service");
|
|
22
22
|
const react_ioc_1 = require("@servicetitan/react-ioc");
|
|
23
23
|
const common_1 = require("./common");
|
|
24
|
+
const event_bus_1 = require("./event-bus");
|
|
24
25
|
const history_manager_1 = require("./history-manager");
|
|
26
|
+
const globals_1 = require("./globals");
|
|
25
27
|
function omitPackageVersion(packageUrl) {
|
|
26
28
|
const chunks = packageUrl.split('@');
|
|
27
29
|
if (chunks.length > 2) {
|
|
@@ -29,7 +31,7 @@ function omitPackageVersion(packageUrl) {
|
|
|
29
31
|
}
|
|
30
32
|
return packageUrl;
|
|
31
33
|
}
|
|
32
|
-
function getBundleInfo(packageUrl, signal) {
|
|
34
|
+
function getBundleInfo(packageUrl, exposedDependencies = {}, signal) {
|
|
33
35
|
var _a;
|
|
34
36
|
return __awaiter(this, void 0, void 0, function* () {
|
|
35
37
|
const { data: { dependencies, version }, headers, } = yield (0, common_1.getJson)(`${packageUrl}/package.json`, { cache: 'no-store', signal });
|
|
@@ -37,7 +39,7 @@ function getBundleInfo(packageUrl, signal) {
|
|
|
37
39
|
? `${omitPackageVersion(packageUrl)}@${version}`
|
|
38
40
|
: packageUrl;
|
|
39
41
|
const { data: metadata } = yield (0, common_1.getJson)(`${exactPackageUrl}/dist/metadata.json`, { signal });
|
|
40
|
-
const mismatch = Object.entries(
|
|
42
|
+
const mismatch = Object.entries(exposedDependencies).reduce((result, [dependency, { version: hostVersion }]) => {
|
|
41
43
|
const packageVersion = dependencies[dependency];
|
|
42
44
|
if (packageVersion && !(0, common_1.isCompatible)(hostVersion, packageVersion)) {
|
|
43
45
|
result[dependency] = { host: hostVersion, package: packageVersion };
|
|
@@ -46,10 +48,10 @@ function getBundleInfo(packageUrl, signal) {
|
|
|
46
48
|
}, {});
|
|
47
49
|
for (const [dependency, variable] of Object.entries(metadata.sharedDependencies)) {
|
|
48
50
|
const packageVersion = dependencies[dependency];
|
|
49
|
-
if (!
|
|
51
|
+
if (!exposedDependencies[dependency]) {
|
|
50
52
|
mismatch[dependency] = { host: 'missing', package: packageVersion };
|
|
51
53
|
}
|
|
52
|
-
else if (
|
|
54
|
+
else if (exposedDependencies[dependency].variable !== variable) {
|
|
53
55
|
mismatch[dependency] = { host: 'wrong global variable', package: packageVersion };
|
|
54
56
|
}
|
|
55
57
|
}
|
|
@@ -74,7 +76,7 @@ function getBundleInfo(packageUrl, signal) {
|
|
|
74
76
|
}
|
|
75
77
|
exports.Loader = (0, react_1.forwardRef)(({ src, data = {}, basename, loadingFallback, errorFallback, className }, ref) => {
|
|
76
78
|
const [isLoading, setIsLoading] = (0, react_1.useState)(true);
|
|
77
|
-
const [logService, historyManager] = (0, react_ioc_1.useOptionalDependencies)(log_service_1.Log, history_manager_1.HistoryManager);
|
|
79
|
+
const [logService, historyManager, exposedDependencies = globals_1.EXPOSED_DEPENDENCIES] = (0, react_ioc_1.useOptionalDependencies)(log_service_1.Log, history_manager_1.HistoryManager, common_1.EXPOSED_DEPENDENCIES_TOKEN);
|
|
78
80
|
const dataAttrs = (0, react_1.useMemo)(() => Object.fromEntries(Object.entries(data).map(([key, value]) => [
|
|
79
81
|
'data-' + key.replace(/[A-Z]/g, letter => '-' + letter.toLowerCase()),
|
|
80
82
|
value,
|
|
@@ -83,7 +85,7 @@ exports.Loader = (0, react_1.forwardRef)(({ src, data = {}, basename, loadingFal
|
|
|
83
85
|
const Loader = (0, react_1.useMemo)(() => {
|
|
84
86
|
const Component = (0, react_1.forwardRef)((_0, ref) => {
|
|
85
87
|
const cancelation = (0, common_1.useCancelation)();
|
|
86
|
-
const eventBus = (0,
|
|
88
|
+
const eventBus = (0, event_bus_1.useEventBus)();
|
|
87
89
|
(0, react_1.useImperativeHandle)(ref, () => eventBus, [] // eslint-disable-line react-hooks/exhaustive-deps
|
|
88
90
|
);
|
|
89
91
|
(0, react_1.useEffect)(() => {
|
|
@@ -95,7 +97,7 @@ exports.Loader = (0, react_1.forwardRef)(({ src, data = {}, basename, loadingFal
|
|
|
95
97
|
const Lazy = (0, react_1.useMemo)(() => (0, react_1.lazy)(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
96
98
|
let bundleInfo;
|
|
97
99
|
try {
|
|
98
|
-
bundleInfo = yield getBundleInfo(src, cancelation.signal);
|
|
100
|
+
bundleInfo = yield getBundleInfo(src, exposedDependencies, cancelation.signal);
|
|
99
101
|
}
|
|
100
102
|
catch (e) {
|
|
101
103
|
if (cancelation.signal.aborted) {
|
|
@@ -110,13 +112,17 @@ exports.Loader = (0, react_1.forwardRef)(({ src, data = {}, basename, loadingFal
|
|
|
110
112
|
logService === null || logService === void 0 ? void 0 : logService.warning({
|
|
111
113
|
category: 'MicroFrontends.DependenciesMismatch',
|
|
112
114
|
message: 'Some of the package dependencies have incompatible versions.',
|
|
113
|
-
data: {
|
|
115
|
+
data: {
|
|
116
|
+
package: src,
|
|
117
|
+
dependencies: JSON.stringify(mismatch),
|
|
118
|
+
},
|
|
114
119
|
});
|
|
115
120
|
}
|
|
116
121
|
const script = Array.from(document.scripts).find(({ src }) => src === url);
|
|
117
122
|
if (!script) {
|
|
118
123
|
yield new Promise(resolve => {
|
|
119
124
|
const script = document.createElement('script');
|
|
125
|
+
script.crossOrigin = 'anonymous';
|
|
120
126
|
script.onload = () => {
|
|
121
127
|
script.dataset.webComponent = WebComponent;
|
|
122
128
|
resolve();
|
|
@@ -139,6 +145,7 @@ exports.Loader = (0, react_1.forwardRef)(({ src, data = {}, basename, loadingFal
|
|
|
139
145
|
webComponent === null || webComponent === void 0 ? void 0 : webComponent.provide({
|
|
140
146
|
logService,
|
|
141
147
|
historyManager,
|
|
148
|
+
exposedDependencies,
|
|
142
149
|
eventBus,
|
|
143
150
|
basename,
|
|
144
151
|
onReady: () => {
|
|
@@ -157,7 +164,7 @@ exports.Loader = (0, react_1.forwardRef)(({ src, data = {}, basename, loadingFal
|
|
|
157
164
|
return (0, jsx_runtime_1.jsx)(Lazy, {}, void 0);
|
|
158
165
|
});
|
|
159
166
|
return Component;
|
|
160
|
-
}, [src, className, logService, historyManager, basename, dataAttrs]);
|
|
167
|
+
}, [src, className, logService, historyManager, exposedDependencies, basename, dataAttrs]);
|
|
161
168
|
const LoadingFallback = (0, react_1.useMemo)(() => () => {
|
|
162
169
|
if (loadingFallback !== undefined) {
|
|
163
170
|
return loadingFallback;
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iCAUe;AAEf,oDAA4B;AAE5B,4DAA6B;AAE7B,iEAA6D;AAC7D,2DAAgD;AAChD,uDAAkE;AAElE,qCAOkB;AAClB,uDAAmD;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":"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"}
|
package/dist/register.d.ts
CHANGED
package/dist/register.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,aAAa,EAAE,MAAM,OAAO,CAAC;AAkC1C,wBAAgB,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,QAyHhE"}
|
package/dist/register.js
CHANGED
|
@@ -6,13 +6,15 @@ const react_dom_1 = require("react-dom");
|
|
|
6
6
|
const log_service_1 = require("@servicetitan/log-service");
|
|
7
7
|
const design_system_1 = require("@servicetitan/design-system");
|
|
8
8
|
const react_ioc_1 = require("@servicetitan/react-ioc");
|
|
9
|
-
const optional_value_provider_1 = require("./optional-value-provider");
|
|
10
9
|
const common_1 = require("./common");
|
|
10
|
+
const event_bus_1 = require("./event-bus");
|
|
11
11
|
const history_manager_1 = require("./history-manager");
|
|
12
|
+
const globals_1 = require("./globals");
|
|
12
13
|
function createLink(url, onLoad) {
|
|
13
14
|
const element = document.createElement('link');
|
|
14
15
|
element.href = url;
|
|
15
16
|
element.rel = 'stylesheet';
|
|
17
|
+
element.crossOrigin = 'anonymous';
|
|
16
18
|
element.onload = onLoad;
|
|
17
19
|
element.onerror = onLoad;
|
|
18
20
|
return element;
|
|
@@ -64,6 +66,12 @@ function register(Component, light) {
|
|
|
64
66
|
writable: true,
|
|
65
67
|
value: void 0
|
|
66
68
|
});
|
|
69
|
+
Object.defineProperty(this, "exposedDependencies", {
|
|
70
|
+
enumerable: true,
|
|
71
|
+
configurable: true,
|
|
72
|
+
writable: true,
|
|
73
|
+
value: void 0
|
|
74
|
+
});
|
|
67
75
|
Object.defineProperty(this, "eventBus", {
|
|
68
76
|
enumerable: true,
|
|
69
77
|
configurable: true,
|
|
@@ -133,7 +141,16 @@ function register(Component, light) {
|
|
|
133
141
|
(0, react_dom_1.render)((0, jsx_runtime_1.jsx)(react_ioc_1.Provider, Object.assign({ singletons: [
|
|
134
142
|
{ provide: common_1.IS_WEB_COMPONENT_TOKEN, useValue: true },
|
|
135
143
|
{ provide: common_1.RENDER_ROOT_TOKEN, useValue: this.root },
|
|
136
|
-
] }, { children: (0, jsx_runtime_1.jsx)(design_system_1.DefaultPortalContext.Provider, Object.assign({ value: this.portal }, { children: (0, jsx_runtime_1.jsx)(design_system_1.TablePopupPropsContext.Provider, Object.assign({ value: props => (Object.assign(Object.assign({}, props), { appendTo: this.root })) }, { children: (0, jsx_runtime_1.jsx)(
|
|
144
|
+
] }, { children: (0, jsx_runtime_1.jsx)(design_system_1.DefaultPortalContext.Provider, Object.assign({ value: this.portal }, { children: (0, jsx_runtime_1.jsx)(design_system_1.TablePopupPropsContext.Provider, Object.assign({ value: props => (Object.assign(Object.assign({}, props), { appendTo: this.root })) }, { children: (0, jsx_runtime_1.jsx)(react_ioc_1.Provider, Object.assign({ singletons: [
|
|
145
|
+
{ provide: log_service_1.Log, useValue: this.logService },
|
|
146
|
+
{ provide: history_manager_1.HistoryManager, useValue: this.historyManager },
|
|
147
|
+
{
|
|
148
|
+
provide: common_1.EXPOSED_DEPENDENCIES_TOKEN,
|
|
149
|
+
useValue: this.exposedDependencies,
|
|
150
|
+
},
|
|
151
|
+
{ provide: event_bus_1.EventBus, useValue: this.eventBus },
|
|
152
|
+
{ provide: common_1.BASENAME_TOKEN, useValue: this.basename },
|
|
153
|
+
].filter(({ useValue }) => useValue !== undefined) }, { children: (0, jsx_runtime_1.jsx)(Component, Object.assign({}, this.dataset), void 0) }), void 0) }), void 0) }), void 0) }), void 0), this.root, this.onReady);
|
|
137
154
|
}
|
|
138
155
|
});
|
|
139
156
|
}
|
|
@@ -153,7 +170,12 @@ function register(Component, light) {
|
|
|
153
170
|
(_a = this.onDispose) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
154
171
|
}
|
|
155
172
|
}
|
|
156
|
-
|
|
173
|
+
if (!globals_1.WEB_COMPONENT_NAME) {
|
|
174
|
+
// eslint-disable-next-line no-console
|
|
175
|
+
console.error('"WEB_COMPONENT_NAME" is not defined!');
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
window.customElements.define(globals_1.WEB_COMPONENT_NAME, WebComponent);
|
|
157
179
|
}
|
|
158
180
|
exports.register = register;
|
|
159
181
|
//# sourceMappingURL=register.js.map
|
package/dist/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.tsx"],"names":[],"mappings":";;;;AACA,yCAA2D;AAE3D,2DAAgD;AAChD,+DAA2F;AAC3F,uDAAmD;AAEnD,
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.tsx"],"names":[],"mappings":";;;;AACA,yCAA2D;AAE3D,2DAAgD;AAChD,+DAA2F;AAC3F,uDAAmD;AAEnD,qCAQkB;AAClB,2CAAuC;AACvC,uDAAmD;AACnD,uCAA+C;AAE/C,SAAS,UAAU,CAAC,GAAW,EAAE,MAAkB;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAE/C,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC;IACnB,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC;IAC3B,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IAClC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;IAEzB,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,WAAW,GAAO,GAAG,EAAE,CAAC,gCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAI,CAAC;AAElE,SAAgB,QAAQ,CAAC,SAAwB,EAAE,KAAc;;IAC7D,MAAM,UAAU,GAAI,QAAQ,CAAC,aAAmC,CAAC,GAAG;SAC/D,KAAK,CAAC,GAAG,CAAC;SACV,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACZ,IAAI,CAAC,GAAG,CAAC,CAAC;IAEf,MAAM,SAAS,GAAG,GAAG,UAAU,YAAY,CAAC;IAC5C,MAAM,eAAe,GAAG,KAAK;QACzB,CAAC,CAAC,MAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAClD,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,CACvE,0CAAE,IAAI;QACT,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,YAAa,SAAQ,WAAW;QAAtC;;YACI;;;;;eAA0B;YAC1B;;;;;eAA4B;YAE5B;;;;uBAAiB;oBACb,KAAK,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpC,MAAM,EAAE,CAAC;iBACZ;eAAC;YAEF;;;;;eAAyB;YACzB;;;;;eAAwC;YACxC;;;;;eAAkD;YAClD;;;;;eAA4B;YAC5B;;;;;eAA0B;YAC1B;;;;;eAA6B;YAC7B;;;;;eAA+B;YAoB/B;;;;uBAAU,CAAC,OAAgB,EAAE,EAAE;oBAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;wBAChD,IAAI,CAAC,GAA0B,CAAC,GAAG,KAAK,CAAC;qBAC5C;oBAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;wBAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;4BACvC,IAAI,CAAC,MAAM,EAAE,CAAC;yBACjB;qBACJ;gBACL,CAAC;eAAC;YAEF;;;;uBAAqB,GAAG,EAAE;oBACtB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBAErB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;wBAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;qBACjB;gBACL,CAAC;eAAC;YAEF;;;;uBAAe,CAAC,IAAgB,EAAE,EAAE;oBAChC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBAEzD,IAAI,eAAe,EAAE;wBACjB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;qBAClE;gBACL,CAAC;eAAC;YAEF;;;;uBAAiB,GAAG,EAAE;oBAClB,IAAA,kBAAM,EACF,uBAAC,oBAAQ,kBACL,UAAU,EAAE;4BACR,EAAE,OAAO,EAAE,+BAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE;4BACnD,EAAE,OAAO,EAAE,0BAAiB,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE;yBACtD,gBAED,uBAAC,oCAAoB,CAAC,QAAQ,kBAAC,KAAK,EAAE,IAAI,CAAC,MAAgC,gBACvE,uBAAC,sCAAsB,CAAC,QAAQ,kBAC5B,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,iCACT,KAAK,KACR,QAAQ,EAAE,IAAI,CAAC,IAA8B,IAC/C,gBAEF,uBAAC,oBAAQ,kBACL,UAAU,EAAE;wCACR,EAAE,OAAO,EAAE,iBAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE;wCAC3C,EAAE,OAAO,EAAE,gCAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE;wCAC1D;4CACI,OAAO,EAAE,mCAA0B;4CACnC,QAAQ,EAAE,IAAI,CAAC,mBAAmB;yCACrC;wCACD,EAAE,OAAO,EAAE,oBAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;wCAC9C,EAAE,OAAO,EAAE,uBAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;qCACvD,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,gBAElD,uBAAC,SAAS,oBAAK,IAAI,CAAC,OAAO,UAAI,YACxB,YACmB,YACN,YACzB,EACX,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,OAAO,CACf,CAAC;gBACN,CAAC;eAAC;QACN,CAAC;QAlFG,iBAAiB;YACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI;iBACtB,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBAC1C,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAEpC,IAAA,kBAAM,EAAC,uBAAC,WAAW,aAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,oBAAoB;;YAChB,IAAA,kCAAsB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAA,IAAI,CAAC,SAAS,+CAAd,IAAI,CAAc,CAAC;QACvB,CAAC;KAkEJ;IAED,IAAI,CAAC,4BAAkB,EAAE;QACrB,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtD,OAAO;KACV;IAED,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,4BAAkB,EAAE,YAAY,CAAC,CAAC;AACnE,CAAC;AAzHD,4BAyHC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/web-components",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "19.2.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -14,18 +14,18 @@
|
|
|
14
14
|
"src"
|
|
15
15
|
],
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@servicetitan/error-boundary": "^
|
|
17
|
+
"@servicetitan/error-boundary": "^19.2.0",
|
|
18
18
|
"lodash.get": "~4.4.2",
|
|
19
19
|
"mitt": "~3.0.0",
|
|
20
20
|
"semver": "~7.3.5"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@servicetitan/design-system": "~10.6.0",
|
|
24
|
-
"@servicetitan/log-service": "^
|
|
25
|
-
"@servicetitan/react-ioc": "^
|
|
24
|
+
"@servicetitan/log-service": "^19.2.0",
|
|
25
|
+
"@servicetitan/react-ioc": "^19.2.0",
|
|
26
26
|
"@types/history": "~4.7.9",
|
|
27
27
|
"@types/lodash.get": "~4.4.6",
|
|
28
|
-
"@types/react": "~17.0.
|
|
28
|
+
"@types/react": "~17.0.37",
|
|
29
29
|
"@types/react-dom": "~17.0.11",
|
|
30
30
|
"@types/semver": "~7.3.9",
|
|
31
31
|
"history": "~4.10.1",
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"cli": {
|
|
47
47
|
"webpack": false
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "62c48deffc4ed9aba58325fbad1b256ecbfae553"
|
|
50
50
|
}
|
package/src/common.ts
CHANGED
|
@@ -1,21 +1,32 @@
|
|
|
1
1
|
import semver from 'semver';
|
|
2
2
|
|
|
3
|
-
import mitt from 'mitt';
|
|
4
|
-
|
|
5
3
|
import { useRef } from 'react';
|
|
6
4
|
|
|
7
5
|
import { symbolToken } from '@servicetitan/react-ioc';
|
|
8
6
|
import { Log } from '@servicetitan/log-service';
|
|
9
7
|
|
|
8
|
+
import { EventBus } from './event-bus';
|
|
10
9
|
import { HistoryManager } from './history-manager';
|
|
11
10
|
|
|
11
|
+
export type ExposedDependencies = Record<
|
|
12
|
+
string,
|
|
13
|
+
{
|
|
14
|
+
version: string;
|
|
15
|
+
variable: string;
|
|
16
|
+
}
|
|
17
|
+
>;
|
|
18
|
+
|
|
12
19
|
export const BASENAME_TOKEN = symbolToken<string>('BASENAME_TOKEN');
|
|
20
|
+
export const EXPOSED_DEPENDENCIES_TOKEN = symbolToken<ExposedDependencies>(
|
|
21
|
+
'EXPOSED_DEPENDENCIES_TOKEN'
|
|
22
|
+
);
|
|
13
23
|
export const IS_WEB_COMPONENT_TOKEN = symbolToken<boolean>('IS_WEB_COMPONENT_TOKEN');
|
|
14
24
|
export const RENDER_ROOT_TOKEN = symbolToken<ShadowRoot>('RENDER_ROOT_TOKEN');
|
|
15
25
|
|
|
16
26
|
export interface Entries {
|
|
17
27
|
logService?: Log;
|
|
18
28
|
historyManager?: HistoryManager;
|
|
29
|
+
exposedDependencies?: ExposedDependencies;
|
|
19
30
|
eventBus?: EventBus;
|
|
20
31
|
basename?: string;
|
|
21
32
|
onReady: () => void;
|
|
@@ -110,25 +121,3 @@ export async function getJson<T = any>(
|
|
|
110
121
|
export function useCancelation() {
|
|
111
122
|
return useRef(new AbortController()).current;
|
|
112
123
|
}
|
|
113
|
-
|
|
114
|
-
export type EventHandler = () => void;
|
|
115
|
-
|
|
116
|
-
export class EventBus {
|
|
117
|
-
private emitter = mitt();
|
|
118
|
-
|
|
119
|
-
on = (type: string, handler: EventHandler) => {
|
|
120
|
-
this.emitter.on(type, handler);
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
off = (type: string, handler: EventHandler) => {
|
|
124
|
-
this.emitter.off(type, handler);
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
emit = (type: string) => {
|
|
128
|
-
this.emitter.emit(type);
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
export function useEventBus() {
|
|
133
|
-
return useRef(new EventBus()).current;
|
|
134
|
-
}
|
package/src/event-bus.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import mitt from 'mitt';
|
|
2
|
+
|
|
3
|
+
import { useRef } from 'react';
|
|
4
|
+
|
|
5
|
+
export type EventHandler = () => void;
|
|
6
|
+
export type JobEventHandler = (defer: {
|
|
7
|
+
resolve(): void;
|
|
8
|
+
reject(reason?: string | Error): void;
|
|
9
|
+
}) => void;
|
|
10
|
+
|
|
11
|
+
export class EventBus {
|
|
12
|
+
job = {
|
|
13
|
+
on: (type: string, handler: JobEventHandler) => {
|
|
14
|
+
this.emitter.on(type, handler);
|
|
15
|
+
},
|
|
16
|
+
off: (type: string, handler: JobEventHandler) => {
|
|
17
|
+
this.emitter.off(type, handler);
|
|
18
|
+
},
|
|
19
|
+
emit: (type: string) => {
|
|
20
|
+
return new Promise<void>((resolve, reject) => {
|
|
21
|
+
this.emitter.emit(type, {
|
|
22
|
+
resolve: () => resolve(),
|
|
23
|
+
reject: (reason?: string | Error) => {
|
|
24
|
+
if (typeof reason === 'string' || reason instanceof Error) {
|
|
25
|
+
reject(reason);
|
|
26
|
+
} else {
|
|
27
|
+
reject();
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
private emitter = mitt<any>();
|
|
36
|
+
|
|
37
|
+
on = (type: string, handler: EventHandler) => {
|
|
38
|
+
this.emitter.on(type, handler);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
off = (type: string, handler: EventHandler) => {
|
|
42
|
+
this.emitter.off(type, handler);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
emit = (type: string) => {
|
|
46
|
+
this.emitter.emit(type);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function useEventBus() {
|
|
51
|
+
return useRef(new EventBus()).current;
|
|
52
|
+
}
|
package/src/globals.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
2
|
+
import { ExposedDependencies } from './common';
|
|
3
|
+
|
|
4
|
+
declare global {
|
|
5
|
+
export const EXPOSED_DEPENDENCIES: ExposedDependencies | undefined;
|
|
6
|
+
export const WEB_COMPONENT_NAME: string | undefined;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
function get<T>(fetch: () => T) {
|
|
10
|
+
try {
|
|
11
|
+
return fetch();
|
|
12
|
+
} catch {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const _EXPOSED_DEPENDENCIES = get(() => {
|
|
18
|
+
return EXPOSED_DEPENDENCIES;
|
|
19
|
+
});
|
|
20
|
+
export { _EXPOSED_DEPENDENCIES as EXPOSED_DEPENDENCIES };
|
|
21
|
+
|
|
22
|
+
const _WEB_COMPONENT_NAME = get(() => {
|
|
23
|
+
return WEB_COMPONENT_NAME;
|
|
24
|
+
});
|
|
25
|
+
export { _WEB_COMPONENT_NAME as WEB_COMPONENT_NAME };
|
package/src/index.ts
CHANGED
package/src/loader.tsx
CHANGED
|
@@ -19,20 +19,16 @@ import { Log } from '@servicetitan/log-service';
|
|
|
19
19
|
import { useOptionalDependencies } from '@servicetitan/react-ioc';
|
|
20
20
|
|
|
21
21
|
import {
|
|
22
|
+
ExposedDependencies,
|
|
23
|
+
EXPOSED_DEPENDENCIES_TOKEN,
|
|
22
24
|
useCancelation,
|
|
23
|
-
EventBus,
|
|
24
|
-
useEventBus,
|
|
25
25
|
getJson,
|
|
26
26
|
isCompatible,
|
|
27
27
|
IWebComponent,
|
|
28
28
|
} from './common';
|
|
29
|
+
import { EventBus, useEventBus } from './event-bus';
|
|
29
30
|
import { HistoryManager } from './history-manager';
|
|
30
|
-
|
|
31
|
-
declare global {
|
|
32
|
-
export const EXPOSED_DEPENDENCIES: Record<string, { version: string; variable: string }>;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
type Awaited<T> = T extends PromiseLike<infer U> ? Awaited<U> : T;
|
|
31
|
+
import { EXPOSED_DEPENDENCIES } from './globals';
|
|
36
32
|
|
|
37
33
|
function omitPackageVersion(packageUrl: string) {
|
|
38
34
|
const chunks = packageUrl.split('@');
|
|
@@ -44,7 +40,11 @@ function omitPackageVersion(packageUrl: string) {
|
|
|
44
40
|
return packageUrl;
|
|
45
41
|
}
|
|
46
42
|
|
|
47
|
-
async function getBundleInfo(
|
|
43
|
+
async function getBundleInfo(
|
|
44
|
+
packageUrl: string,
|
|
45
|
+
exposedDependencies: ExposedDependencies = {},
|
|
46
|
+
signal?: AbortSignal
|
|
47
|
+
) {
|
|
48
48
|
const {
|
|
49
49
|
data: { dependencies, version },
|
|
50
50
|
headers,
|
|
@@ -57,7 +57,7 @@ async function getBundleInfo(packageUrl: string, signal?: AbortSignal) {
|
|
|
57
57
|
|
|
58
58
|
const { data: metadata } = await getJson(`${exactPackageUrl}/dist/metadata.json`, { signal });
|
|
59
59
|
|
|
60
|
-
const mismatch = Object.entries(
|
|
60
|
+
const mismatch = Object.entries(exposedDependencies).reduce(
|
|
61
61
|
(result, [dependency, { version: hostVersion }]) => {
|
|
62
62
|
const packageVersion = dependencies[dependency];
|
|
63
63
|
|
|
@@ -73,9 +73,9 @@ async function getBundleInfo(packageUrl: string, signal?: AbortSignal) {
|
|
|
73
73
|
for (const [dependency, variable] of Object.entries(metadata.sharedDependencies)) {
|
|
74
74
|
const packageVersion = dependencies[dependency];
|
|
75
75
|
|
|
76
|
-
if (!
|
|
76
|
+
if (!exposedDependencies[dependency]) {
|
|
77
77
|
mismatch[dependency] = { host: 'missing', package: packageVersion };
|
|
78
|
-
} else if (
|
|
78
|
+
} else if (exposedDependencies[dependency].variable !== variable) {
|
|
79
79
|
mismatch[dependency] = { host: 'wrong global variable', package: packageVersion };
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -114,7 +114,8 @@ export const Loader = forwardRef<LoaderRef, LoaderProps>(
|
|
|
114
114
|
({ src, data = {}, basename, loadingFallback, errorFallback, className }, ref) => {
|
|
115
115
|
const [isLoading, setIsLoading] = useState(true);
|
|
116
116
|
|
|
117
|
-
const [logService, historyManager
|
|
117
|
+
const [logService, historyManager, exposedDependencies = EXPOSED_DEPENDENCIES] =
|
|
118
|
+
useOptionalDependencies(Log, HistoryManager, EXPOSED_DEPENDENCIES_TOKEN);
|
|
118
119
|
|
|
119
120
|
const dataAttrs = useMemo(
|
|
120
121
|
() =>
|
|
@@ -151,7 +152,11 @@ export const Loader = forwardRef<LoaderRef, LoaderProps>(
|
|
|
151
152
|
lazy<() => JSX.Element | null>(async () => {
|
|
152
153
|
let bundleInfo: Awaited<ReturnType<typeof getBundleInfo>>;
|
|
153
154
|
try {
|
|
154
|
-
bundleInfo = await getBundleInfo(
|
|
155
|
+
bundleInfo = await getBundleInfo(
|
|
156
|
+
src,
|
|
157
|
+
exposedDependencies,
|
|
158
|
+
cancelation.signal
|
|
159
|
+
);
|
|
155
160
|
} catch (e) {
|
|
156
161
|
if (cancelation.signal.aborted) {
|
|
157
162
|
return {
|
|
@@ -169,7 +174,10 @@ export const Loader = forwardRef<LoaderRef, LoaderProps>(
|
|
|
169
174
|
category: 'MicroFrontends.DependenciesMismatch',
|
|
170
175
|
message:
|
|
171
176
|
'Some of the package dependencies have incompatible versions.',
|
|
172
|
-
data: {
|
|
177
|
+
data: {
|
|
178
|
+
package: src,
|
|
179
|
+
dependencies: JSON.stringify(mismatch),
|
|
180
|
+
},
|
|
173
181
|
});
|
|
174
182
|
}
|
|
175
183
|
|
|
@@ -180,6 +188,7 @@ export const Loader = forwardRef<LoaderRef, LoaderProps>(
|
|
|
180
188
|
await new Promise<void>(resolve => {
|
|
181
189
|
const script = document.createElement('script');
|
|
182
190
|
|
|
191
|
+
script.crossOrigin = 'anonymous';
|
|
183
192
|
script.onload = () => {
|
|
184
193
|
script.dataset.webComponent = WebComponent;
|
|
185
194
|
resolve();
|
|
@@ -203,6 +212,7 @@ export const Loader = forwardRef<LoaderRef, LoaderProps>(
|
|
|
203
212
|
webComponent?.provide({
|
|
204
213
|
logService,
|
|
205
214
|
historyManager,
|
|
215
|
+
exposedDependencies,
|
|
206
216
|
eventBus,
|
|
207
217
|
basename,
|
|
208
218
|
onReady: () => {
|
|
@@ -231,7 +241,7 @@ export const Loader = forwardRef<LoaderRef, LoaderProps>(
|
|
|
231
241
|
});
|
|
232
242
|
|
|
233
243
|
return Component;
|
|
234
|
-
}, [src, className, logService, historyManager, basename, dataAttrs]);
|
|
244
|
+
}, [src, className, logService, historyManager, exposedDependencies, basename, dataAttrs]);
|
|
235
245
|
|
|
236
246
|
const LoadingFallback = useMemo(
|
|
237
247
|
() => () => {
|
package/src/register.tsx
CHANGED
|
@@ -5,26 +5,25 @@ import { Log } from '@servicetitan/log-service';
|
|
|
5
5
|
import { DefaultPortalContext, TablePopupPropsContext } from '@servicetitan/design-system';
|
|
6
6
|
import { Provider } from '@servicetitan/react-ioc';
|
|
7
7
|
|
|
8
|
-
import { OptionalValueProvider } from './optional-value-provider';
|
|
9
8
|
import {
|
|
9
|
+
ExposedDependencies,
|
|
10
|
+
EXPOSED_DEPENDENCIES_TOKEN,
|
|
10
11
|
Entries,
|
|
11
|
-
EventBus,
|
|
12
12
|
IWebComponent,
|
|
13
13
|
BASENAME_TOKEN,
|
|
14
14
|
IS_WEB_COMPONENT_TOKEN,
|
|
15
15
|
RENDER_ROOT_TOKEN,
|
|
16
16
|
} from './common';
|
|
17
|
+
import { EventBus } from './event-bus';
|
|
17
18
|
import { HistoryManager } from './history-manager';
|
|
18
|
-
|
|
19
|
-
declare global {
|
|
20
|
-
export const WEB_COMPONENT_NAME: string;
|
|
21
|
-
}
|
|
19
|
+
import { WEB_COMPONENT_NAME } from './globals';
|
|
22
20
|
|
|
23
21
|
function createLink(url: string, onLoad: () => void) {
|
|
24
22
|
const element = document.createElement('link');
|
|
25
23
|
|
|
26
24
|
element.href = url;
|
|
27
25
|
element.rel = 'stylesheet';
|
|
26
|
+
element.crossOrigin = 'anonymous';
|
|
28
27
|
element.onload = onLoad;
|
|
29
28
|
element.onerror = onLoad;
|
|
30
29
|
|
|
@@ -57,6 +56,7 @@ export function register(Component: ComponentType, light: boolean) {
|
|
|
57
56
|
|
|
58
57
|
private logService?: Log;
|
|
59
58
|
private historyManager?: HistoryManager;
|
|
59
|
+
private exposedDependencies?: ExposedDependencies;
|
|
60
60
|
private eventBus?: EventBus;
|
|
61
61
|
private basename?: string;
|
|
62
62
|
private onReady?: () => void;
|
|
@@ -123,24 +123,20 @@ export function register(Component: ComponentType, light: boolean) {
|
|
|
123
123
|
appendTo: this.root as unknown as HTMLElement,
|
|
124
124
|
})}
|
|
125
125
|
>
|
|
126
|
-
<
|
|
127
|
-
|
|
128
|
-
provide
|
|
129
|
-
useValue
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
</OptionalValueProvider>
|
|
141
|
-
</OptionalValueProvider>
|
|
142
|
-
</OptionalValueProvider>
|
|
143
|
-
</OptionalValueProvider>
|
|
126
|
+
<Provider
|
|
127
|
+
singletons={[
|
|
128
|
+
{ provide: Log, useValue: this.logService },
|
|
129
|
+
{ provide: HistoryManager, useValue: this.historyManager },
|
|
130
|
+
{
|
|
131
|
+
provide: EXPOSED_DEPENDENCIES_TOKEN,
|
|
132
|
+
useValue: this.exposedDependencies,
|
|
133
|
+
},
|
|
134
|
+
{ provide: EventBus, useValue: this.eventBus },
|
|
135
|
+
{ provide: BASENAME_TOKEN, useValue: this.basename },
|
|
136
|
+
].filter(({ useValue }) => useValue !== undefined)}
|
|
137
|
+
>
|
|
138
|
+
<Component {...this.dataset} />
|
|
139
|
+
</Provider>
|
|
144
140
|
</TablePopupPropsContext.Provider>
|
|
145
141
|
</DefaultPortalContext.Provider>
|
|
146
142
|
</Provider>,
|
|
@@ -150,5 +146,11 @@ export function register(Component: ComponentType, light: boolean) {
|
|
|
150
146
|
};
|
|
151
147
|
}
|
|
152
148
|
|
|
149
|
+
if (!WEB_COMPONENT_NAME) {
|
|
150
|
+
// eslint-disable-next-line no-console
|
|
151
|
+
console.error('"WEB_COMPONENT_NAME" is not defined!');
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
153
155
|
window.customElements.define(WEB_COMPONENT_NAME, WebComponent);
|
|
154
156
|
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { SymbolToken, interfaces } from '@servicetitan/react-ioc';
|
|
3
|
-
export interface OptionalValueProviderProps<T> {
|
|
4
|
-
provide: SymbolToken<T> | interfaces.Abstract<T>;
|
|
5
|
-
useValue: T | undefined;
|
|
6
|
-
children: JSX.Element;
|
|
7
|
-
}
|
|
8
|
-
export declare const OptionalValueProvider: <T extends unknown>({ provide, useValue, children, }: OptionalValueProviderProps<T>) => JSX.Element;
|
|
9
|
-
//# sourceMappingURL=optional-value-provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optional-value-provider.d.ts","sourceRoot":"","sources":["../src/optional-value-provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAY,MAAM,yBAAyB,CAAC;AAE5E,MAAM,WAAW,0BAA0B,CAAC,CAAC;IACzC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;IACxB,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,qBAAqB,qGAUjC,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OptionalValueProvider = void 0;
|
|
4
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
-
const react_ioc_1 = require("@servicetitan/react-ioc");
|
|
6
|
-
const OptionalValueProvider = ({ provide, useValue, children, }) => {
|
|
7
|
-
if (useValue) {
|
|
8
|
-
return (0, jsx_runtime_1.jsx)(react_ioc_1.Provider, Object.assign({ singletons: [{ provide, useValue }] }, { children: children }), void 0);
|
|
9
|
-
}
|
|
10
|
-
return children;
|
|
11
|
-
};
|
|
12
|
-
exports.OptionalValueProvider = OptionalValueProvider;
|
|
13
|
-
//# sourceMappingURL=optional-value-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optional-value-provider.js","sourceRoot":"","sources":["../src/optional-value-provider.tsx"],"names":[],"mappings":";;;;AAAA,uDAA4E;AAQrE,MAAM,qBAAqB,GAAG,CAAgB,EACjD,OAAO,EACP,QAAQ,EACR,QAAQ,GACoB,EAAE,EAAE;IAChC,IAAI,QAAQ,EAAE;QACV,OAAO,uBAAC,oBAAQ,kBAAC,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,gBAAG,QAAQ,YAAY,CAAC;KAC/E;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAVW,QAAA,qBAAqB,yBAUhC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { SymbolToken, interfaces, Provider } from '@servicetitan/react-ioc';
|
|
2
|
-
|
|
3
|
-
export interface OptionalValueProviderProps<T> {
|
|
4
|
-
provide: SymbolToken<T> | interfaces.Abstract<T>;
|
|
5
|
-
useValue: T | undefined;
|
|
6
|
-
children: JSX.Element;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export const OptionalValueProvider = <T extends any>({
|
|
10
|
-
provide,
|
|
11
|
-
useValue,
|
|
12
|
-
children,
|
|
13
|
-
}: OptionalValueProviderProps<T>) => {
|
|
14
|
-
if (useValue) {
|
|
15
|
-
return <Provider singletons={[{ provide, useValue }]}>{children}</Provider>;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return children;
|
|
19
|
-
};
|