@servicetitan/web-components 26.0.2 → 26.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/loader.js +11 -2
- package/dist/loader.js.map +1 -1
- package/package.json +7 -7
- package/src/__tests__/loader.test.tsx +36 -3
- package/src/loader.tsx +12 -8
package/dist/loader.js
CHANGED
|
@@ -24,8 +24,14 @@ export const Loader = forwardRef((props, ref) => {
|
|
|
24
24
|
const bus = useEventBus();
|
|
25
25
|
const [logService, exposedDependencies = EXPOSED_DEPENDENCIES, eventBus = bus] = useOptionalDependencies(Log, EXPOSED_DEPENDENCIES_TOKEN, EVENT_BUS_TOKEN);
|
|
26
26
|
const cancelation = useCancelation();
|
|
27
|
-
const LoadingFallback = useMemo(() =>
|
|
28
|
-
|
|
27
|
+
const LoadingFallback = useMemo(() => {
|
|
28
|
+
const message = `Loading${isLocalHost(src) ? ` ${src}` : ''}...`;
|
|
29
|
+
return getFallback(loadingFallback, message, { delayed: loadingFallbackDelayed });
|
|
30
|
+
}, [loadingFallback, loadingFallbackDelayed, src]);
|
|
31
|
+
const ErrorFallback = useMemo(() => {
|
|
32
|
+
const message = `Something went wrong${isLocalHost(src) ? ` loading ${src}` : ''}`;
|
|
33
|
+
return getFallback(props.errorFallback, message);
|
|
34
|
+
}, [props.errorFallback, src]);
|
|
29
35
|
const Loader = useMemo(() => lazyLoader({
|
|
30
36
|
basename,
|
|
31
37
|
cache,
|
|
@@ -101,6 +107,9 @@ function getFallback(node, message, { delayed = false } = {}) {
|
|
|
101
107
|
const fallbackNode = node !== undefined ? node : _jsx("h2", { children: message });
|
|
102
108
|
return delayed ? () => _jsx(Delayed, { children: fallbackNode }) : () => fallbackNode;
|
|
103
109
|
}
|
|
110
|
+
function isLocalHost(source) {
|
|
111
|
+
return ['localhost', '127.0.0.1'].some(host => source.indexOf(host) >= 0);
|
|
112
|
+
}
|
|
104
113
|
const MINUTE = 1000 * 60;
|
|
105
114
|
const bundleCache = new TtlCache({ ttlMs: 15 * MINUTE });
|
|
106
115
|
//# sourceMappingURL=loader.js.map
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAGH,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,SAAS,EACT,mBAAmB,EACnB,OAAO,GACV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EACH,0BAA0B,EAG1B,cAAc,GACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAY,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAEH,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,YAAY,GACf,MAAM,SAAS,CAAC;AAyBjB,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAA6B,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;;IACxE,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACpF,MAAM,EAAE,eAAe,EAAE,sBAAsB,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAEjE,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,MAAM,CAAC,UAAU,EAAE,mBAAmB,GAAG,oBAAoB,EAAE,QAAQ,GAAG,GAAG,CAAC,GAC1E,uBAAuB,CAAC,GAAG,EAAE,0BAA0B,EAAE,eAAe,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,eAAe,GAAG,OAAO,
|
|
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": "26.0
|
|
3
|
+
"version": "26.2.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -15,15 +15,15 @@
|
|
|
15
15
|
"src"
|
|
16
16
|
],
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@servicetitan/error-boundary": "26.0
|
|
18
|
+
"@servicetitan/error-boundary": "26.2.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
24
|
"@servicetitan/design-system": "~14.0.0",
|
|
25
|
-
"@servicetitan/log-service": "26.0
|
|
26
|
-
"@servicetitan/react-ioc": "26.0
|
|
25
|
+
"@servicetitan/log-service": "26.2.0",
|
|
26
|
+
"@servicetitan/react-ioc": "26.2.0",
|
|
27
27
|
"@testing-library/dom": "^10.4.0",
|
|
28
28
|
"@testing-library/jest-dom": "^6.4.8",
|
|
29
29
|
"@testing-library/react": "^16.0.0",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@servicetitan/design-system": ">=12.6.2",
|
|
42
|
-
"@servicetitan/log-service": "26.0
|
|
43
|
-
"@servicetitan/react-ioc": "26.0
|
|
42
|
+
"@servicetitan/log-service": "26.2.0",
|
|
43
|
+
"@servicetitan/react-ioc": "26.2.0",
|
|
44
44
|
"history": "~4.10.1",
|
|
45
45
|
"react": ">=17.0.2",
|
|
46
46
|
"react-dom": ">=17.0.2"
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"cli": {
|
|
52
52
|
"webpack": false
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "db962a72024497a2c475d3bbf9aab5f9c7aae223"
|
|
55
55
|
}
|
|
@@ -17,7 +17,8 @@ jest.mock('../utils/get-version-mismatches', () => ({
|
|
|
17
17
|
}));
|
|
18
18
|
|
|
19
19
|
describe('[web-components] Loader', () => {
|
|
20
|
-
const
|
|
20
|
+
const localHosts = ['localhost', '127.0.0.1'];
|
|
21
|
+
const baseUrl = 'http://unpkg.servicetitan.com/mfe';
|
|
21
22
|
const baseName = 'mfe-component';
|
|
22
23
|
const WEB_COMPONENT_NAME = `${baseName}-abc123`;
|
|
23
24
|
let webComponentState: Partial<Entries>;
|
|
@@ -127,7 +128,22 @@ describe('[web-components] Loader', () => {
|
|
|
127
128
|
test('renders default loading fallback', async () => {
|
|
128
129
|
subject();
|
|
129
130
|
|
|
130
|
-
await waitFor(() => expect(screen.getByText(
|
|
131
|
+
await waitFor(() => expect(screen.getByText('Loading...')).toBeInTheDocument());
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
describe.each(localHosts)('when src contains "%s"', host => {
|
|
135
|
+
beforeEach(() => {
|
|
136
|
+
props.src = `http://${host}/mfe`;
|
|
137
|
+
initializeGetJsonMockFns(props.src);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
test('appends src to lading fallback', async () => {
|
|
141
|
+
subject();
|
|
142
|
+
|
|
143
|
+
await waitFor(() =>
|
|
144
|
+
expect(screen.getByText(`Loading ${props.src}...`)).toBeInTheDocument()
|
|
145
|
+
);
|
|
146
|
+
});
|
|
131
147
|
});
|
|
132
148
|
|
|
133
149
|
describe('with ref parameter', () => {
|
|
@@ -189,10 +205,27 @@ describe('[web-components] Loader', () => {
|
|
|
189
205
|
subject();
|
|
190
206
|
|
|
191
207
|
await waitFor(() =>
|
|
192
|
-
expect(screen.getByText(
|
|
208
|
+
expect(screen.getByText('Something went wrong')).toBeInTheDocument()
|
|
193
209
|
);
|
|
194
210
|
});
|
|
195
211
|
|
|
212
|
+
describe.each(localHosts)('when src contains "%s"', host => {
|
|
213
|
+
beforeEach(() => {
|
|
214
|
+
props.src = `http://${host}/mfe`;
|
|
215
|
+
initializeGetJsonMockFns(props.src);
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
test('appends src to error fallback', async () => {
|
|
219
|
+
subject();
|
|
220
|
+
|
|
221
|
+
await waitFor(() =>
|
|
222
|
+
expect(
|
|
223
|
+
screen.getByText(`Something went wrong loading ${props.src}`)
|
|
224
|
+
).toBeInTheDocument()
|
|
225
|
+
);
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
|
|
196
229
|
describe('when an errorFallback is provided', () => {
|
|
197
230
|
beforeEach(() => {
|
|
198
231
|
props.errorFallback = <div>bar</div>;
|
package/src/loader.tsx
CHANGED
|
@@ -63,15 +63,15 @@ export const Loader = forwardRef<LoaderRef, LoaderProps<{}>>((props, ref) => {
|
|
|
63
63
|
useOptionalDependencies(Log, EXPOSED_DEPENDENCIES_TOKEN, EVENT_BUS_TOKEN);
|
|
64
64
|
const cancelation = useCancelation();
|
|
65
65
|
|
|
66
|
-
const LoadingFallback = useMemo(
|
|
67
|
-
()
|
|
68
|
-
|
|
69
|
-
);
|
|
66
|
+
const LoadingFallback = useMemo(() => {
|
|
67
|
+
const message = `Loading${isLocalHost(src) ? ` ${src}` : ''}...`;
|
|
68
|
+
return getFallback(loadingFallback, message, { delayed: loadingFallbackDelayed });
|
|
69
|
+
}, [loadingFallback, loadingFallbackDelayed, src]);
|
|
70
70
|
|
|
71
|
-
const ErrorFallback = useMemo(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
);
|
|
71
|
+
const ErrorFallback = useMemo(() => {
|
|
72
|
+
const message = `Something went wrong${isLocalHost(src) ? ` loading ${src}` : ''}`;
|
|
73
|
+
return getFallback(props.errorFallback, message);
|
|
74
|
+
}, [props.errorFallback, src]);
|
|
75
75
|
|
|
76
76
|
const Loader = useMemo(
|
|
77
77
|
() =>
|
|
@@ -211,5 +211,9 @@ function getFallback(
|
|
|
211
211
|
return delayed ? () => <Delayed>{fallbackNode}</Delayed> : () => fallbackNode;
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
+
function isLocalHost(source: string) {
|
|
215
|
+
return ['localhost', '127.0.0.1'].some(host => source.indexOf(host) >= 0);
|
|
216
|
+
}
|
|
217
|
+
|
|
214
218
|
const MINUTE = 1000 * 60;
|
|
215
219
|
const bundleCache = new TtlCache<BundleInfo>({ ttlMs: 15 * MINUTE });
|