@appshell/react-shell 1.0.0-alpha.12 → 1.0.0-alpha.14
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/279.js +1 -0
- package/dist/dev/favicon.ico +0 -0
- package/dist/dev/logo192.png +0 -0
- package/dist/dev/logo512.png +0 -0
- package/dist/dev/main.js +8105 -0
- package/dist/dev/main.js.map +1 -0
- package/dist/dev/manifest.json +25 -0
- package/dist/dev/mf-manifest.json +70 -0
- package/dist/dev/mf-stats.json +78 -0
- package/dist/dev/node_modules_web-vitals_dist_web-vitals_js.js +31 -0
- package/dist/dev/node_modules_web-vitals_dist_web-vitals_js.js.map +1 -0
- package/dist/dev/src_bootstrap_tsx-webpack_sharing_consume_default_react-dom_react-dom.js +1057 -0
- package/dist/dev/src_bootstrap_tsx-webpack_sharing_consume_default_react-dom_react-dom.js.map +1 -0
- package/dist/dev/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_sour-63708e.js +734 -0
- package/dist/dev/vendors-node_modules_css-loader_dist_runtime_api_js-node_modules_css-loader_dist_runtime_sour-63708e.js.map +1 -0
- package/dist/dev/vendors-node_modules_react-dom_index_js.js +30577 -0
- package/dist/dev/vendors-node_modules_react-dom_index_js.js.map +1 -0
- package/dist/dev/vendors-node_modules_react_index_js.js +2771 -0
- package/dist/dev/vendors-node_modules_react_index_js.js.map +1 -0
- package/dist/main.js +1 -1
- package/dist/mf-manifest.json +1 -1
- package/dist/mf-stats.json +1 -1
- package/package.json +5 -3
- package/dist/952.js +0 -1
|
@@ -0,0 +1,1057 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(globalThis["webpackChunkappshell_react_shell"] = globalThis["webpackChunkappshell_react_shell"] || []).push([["src_bootstrap_tsx-webpack_sharing_consume_default_react-dom_react-dom"],{
|
|
3
|
+
|
|
4
|
+
/***/ "../core/src/appshell.env.ts"
|
|
5
|
+
/*!***********************************!*\
|
|
6
|
+
!*** ../core/src/appshell.env.ts ***!
|
|
7
|
+
\***********************************/
|
|
8
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
9
|
+
|
|
10
|
+
__webpack_require__.r(__webpack_exports__);
|
|
11
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
12
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
13
|
+
/* harmony export */ });
|
|
14
|
+
/* eslint-disable no-underscore-dangle */
|
|
15
|
+
|
|
16
|
+
// Absent when the registry served the page — it inlines the composition instead.
|
|
17
|
+
const env = window.__appshell_env__ ?? {};
|
|
18
|
+
const APPSHELL_PUBLIC_URL = env.APPSHELL_PUBLIC_URL || '';
|
|
19
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
|
|
20
|
+
APPSHELL_PUBLIC_URL,
|
|
21
|
+
APPSHELL_ROOT: env.APPSHELL_ROOT,
|
|
22
|
+
APPSHELL_ROOT_PROPS: env.APPSHELL_ROOT_PROPS || '{}',
|
|
23
|
+
APPSHELL_CONFIG_URL: `${APPSHELL_PUBLIC_URL}/appshell.config.json`,
|
|
24
|
+
APPSHELL_PRIMARY_COLOR: env.APPSHELL_PRIMARY_COLOR || '#8ed6fb',
|
|
25
|
+
APPSHELL_THEME_COLOR: env.APPSHELL_THEME_COLOR || '#282c34'
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
/***/ },
|
|
29
|
+
|
|
30
|
+
/***/ "../core/src/index.ts"
|
|
31
|
+
/*!****************************!*\
|
|
32
|
+
!*** ../core/src/index.ts ***!
|
|
33
|
+
\****************************/
|
|
34
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
35
|
+
|
|
36
|
+
__webpack_require__.r(__webpack_exports__);
|
|
37
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
38
|
+
/* harmony export */ APPSHELL_ENV: () => (/* reexport safe */ _appshell_env__WEBPACK_IMPORTED_MODULE_0__["default"])
|
|
39
|
+
/* harmony export */ });
|
|
40
|
+
/* harmony import */ var _appshell_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appshell.env */ "../core/src/appshell.env.ts");
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
/***/ },
|
|
44
|
+
|
|
45
|
+
/***/ "../loader/src/index.ts"
|
|
46
|
+
/*!******************************!*\
|
|
47
|
+
!*** ../loader/src/index.ts ***!
|
|
48
|
+
\******************************/
|
|
49
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
50
|
+
|
|
51
|
+
__webpack_require__.r(__webpack_exports__);
|
|
52
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
53
|
+
/* harmony export */ chainResolvers: () => (/* reexport safe */ _resolvers__WEBPACK_IMPORTED_MODULE_1__.chainResolvers),
|
|
54
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
|
|
55
|
+
/* harmony export */ inlineResolver: () => (/* reexport safe */ _resolvers__WEBPACK_IMPORTED_MODULE_1__.inlineResolver),
|
|
56
|
+
/* harmony export */ legacyManifestResolver: () => (/* reexport safe */ _resolvers__WEBPACK_IMPORTED_MODULE_1__.legacyManifestResolver),
|
|
57
|
+
/* harmony export */ registryResolver: () => (/* reexport safe */ _resolvers__WEBPACK_IMPORTED_MODULE_1__.registryResolver)
|
|
58
|
+
/* harmony export */ });
|
|
59
|
+
/* harmony import */ var _remoteLoader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./remoteLoader */ "../loader/src/remoteLoader.ts");
|
|
60
|
+
/* harmony import */ var _resolvers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resolvers */ "../loader/src/resolvers.ts");
|
|
61
|
+
/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types */ "../loader/src/types.ts");
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_remoteLoader__WEBPACK_IMPORTED_MODULE_0__["default"]);
|
|
66
|
+
|
|
67
|
+
/***/ },
|
|
68
|
+
|
|
69
|
+
/***/ "../loader/src/loadAppshellComponent.ts"
|
|
70
|
+
/*!**********************************************!*\
|
|
71
|
+
!*** ../loader/src/loadAppshellComponent.ts ***!
|
|
72
|
+
\**********************************************/
|
|
73
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
74
|
+
|
|
75
|
+
__webpack_require__.r(__webpack_exports__);
|
|
76
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
77
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
78
|
+
/* harmony export */ });
|
|
79
|
+
/* harmony import */ var _module_federation_enhanced_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @module-federation/enhanced/runtime */ "../../node_modules/@module-federation/enhanced/dist/src/runtime.mjs");
|
|
80
|
+
|
|
81
|
+
const HOST_NAME = 'Appshell';
|
|
82
|
+
|
|
83
|
+
// The runtime instance and each remote's registration only need to happen once per page load.
|
|
84
|
+
let initialized = false;
|
|
85
|
+
const registeredScopes = new Set();
|
|
86
|
+
const ensureInitialized = () => {
|
|
87
|
+
if (initialized) return;
|
|
88
|
+
initialized = true;
|
|
89
|
+
|
|
90
|
+
// A host that ships its own ModuleFederationPlugin (e.g. @appshell/react-shell) already
|
|
91
|
+
// created the global federation instance during its own bootstrap. Re-calling `init()`
|
|
92
|
+
// with a different name throws (#RUNTIME-010), so reuse whatever instance already exists.
|
|
93
|
+
if ((0,_module_federation_enhanced_runtime__WEBPACK_IMPORTED_MODULE_0__.getInstance)()) return;
|
|
94
|
+
(0,_module_federation_enhanced_runtime__WEBPACK_IMPORTED_MODULE_0__.init)({
|
|
95
|
+
name: HOST_NAME,
|
|
96
|
+
remotes: []
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (async (scope, module, remoteEntryUrl, shareScope = 'default') => {
|
|
100
|
+
// eslint-disable-next-line no-console
|
|
101
|
+
console.debug(`loading Appshell component: { scope: ${scope}, module: ${module}, shareScope: ${shareScope} }`);
|
|
102
|
+
ensureInitialized();
|
|
103
|
+
|
|
104
|
+
// Registered exactly once, and never re-registered or cache-busted afterwards.
|
|
105
|
+
//
|
|
106
|
+
// A remote served by a dev server updates itself: its `remoteEntry` already carries
|
|
107
|
+
// webpack's HMR runtime and a dev-server client, so an edit is applied in place
|
|
108
|
+
// behind a container identity that does not move. Re-registering the same scope, or
|
|
109
|
+
// appending a cache-busting query to its entry, changes that identity and the
|
|
110
|
+
// `publicPath` derived from it mid-flight, which strands the `*.hot-update.json` and
|
|
111
|
+
// `*.hot-update.js` requests the remote is midway through making.
|
|
112
|
+
if (!registeredScopes.has(scope)) {
|
|
113
|
+
registeredScopes.add(scope);
|
|
114
|
+
(0,_module_federation_enhanced_runtime__WEBPACK_IMPORTED_MODULE_0__.registerRemotes)([{
|
|
115
|
+
name: scope,
|
|
116
|
+
entry: remoteEntryUrl
|
|
117
|
+
}]);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Federation ids drop the leading `./` that `exposes` keys use.
|
|
121
|
+
const exposed = module.replace(/^\.\//, '');
|
|
122
|
+
const Module = await (0,_module_federation_enhanced_runtime__WEBPACK_IMPORTED_MODULE_0__.loadRemote)(`${scope}/${exposed}`);
|
|
123
|
+
if (!Module) {
|
|
124
|
+
throw new Error(`Failed to find module container ${scope}`);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// eslint-disable-next-line no-console
|
|
128
|
+
console.debug(`Appshell component loaded: { scope: ${scope}, module: ${module}, shareScope: ${shareScope} }`);
|
|
129
|
+
return Module.default;
|
|
130
|
+
});
|
|
131
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
132
|
+
|
|
133
|
+
/***/ },
|
|
134
|
+
|
|
135
|
+
/***/ "../loader/src/remoteLoader.ts"
|
|
136
|
+
/*!*************************************!*\
|
|
137
|
+
!*** ../loader/src/remoteLoader.ts ***!
|
|
138
|
+
\*************************************/
|
|
139
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
140
|
+
|
|
141
|
+
__webpack_require__.r(__webpack_exports__);
|
|
142
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
143
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
144
|
+
/* harmony export */ });
|
|
145
|
+
/* harmony import */ var _loadAppshellComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loadAppshellComponent */ "../loader/src/loadAppshellComponent.ts");
|
|
146
|
+
/* harmony import */ var _resolvers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resolvers */ "../loader/src/resolvers.ts");
|
|
147
|
+
/* eslint-disable no-underscore-dangle */
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((config, options = {}) => {
|
|
152
|
+
const composition = options.composition ?? (typeof window === 'undefined' ? undefined : window.__appshell_config__);
|
|
153
|
+
const resolve = options.resolver ?? (0,_resolvers__WEBPACK_IMPORTED_MODULE_1__.chainResolvers)((0,_resolvers__WEBPACK_IMPORTED_MODULE_1__.inlineResolver)(composition), (0,_resolvers__WEBPACK_IMPORTED_MODULE_1__.registryResolver)(composition), (0,_resolvers__WEBPACK_IMPORTED_MODULE_1__.legacyManifestResolver)(config));
|
|
154
|
+
return async key => {
|
|
155
|
+
const failed = err => new Error(`Failed to load component '${key}'. ${err?.toString()}`);
|
|
156
|
+
let resolution;
|
|
157
|
+
try {
|
|
158
|
+
resolution = await resolve(key);
|
|
159
|
+
} catch (err) {
|
|
160
|
+
throw failed(err);
|
|
161
|
+
}
|
|
162
|
+
if (!resolution) {
|
|
163
|
+
throw new Error(`Remote resource not found in registry. Expected: ${key}`);
|
|
164
|
+
}
|
|
165
|
+
const {
|
|
166
|
+
remote,
|
|
167
|
+
environment,
|
|
168
|
+
manifest
|
|
169
|
+
} = resolution;
|
|
170
|
+
try {
|
|
171
|
+
window[`__appshell_env__${remote.scope}`] = environment;
|
|
172
|
+
const Component = await (0,_loadAppshellComponent__WEBPACK_IMPORTED_MODULE_0__["default"])(remote.scope, remote.module, remote.remoteEntryUrl, remote.shareScope);
|
|
173
|
+
return [Component, manifest];
|
|
174
|
+
} catch (err) {
|
|
175
|
+
throw failed(err);
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
});
|
|
179
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
180
|
+
|
|
181
|
+
/***/ },
|
|
182
|
+
|
|
183
|
+
/***/ "../loader/src/resolvers.ts"
|
|
184
|
+
/*!**********************************!*\
|
|
185
|
+
!*** ../loader/src/resolvers.ts ***!
|
|
186
|
+
\**********************************/
|
|
187
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
188
|
+
|
|
189
|
+
__webpack_require__.r(__webpack_exports__);
|
|
190
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
191
|
+
/* harmony export */ chainResolvers: () => (/* binding */ chainResolvers),
|
|
192
|
+
/* harmony export */ inlineResolver: () => (/* binding */ inlineResolver),
|
|
193
|
+
/* harmony export */ legacyManifestResolver: () => (/* binding */ legacyManifestResolver),
|
|
194
|
+
/* harmony export */ registryResolver: () => (/* binding */ registryResolver)
|
|
195
|
+
/* harmony export */ });
|
|
196
|
+
const manifestOf = (composition, remotes) => ({
|
|
197
|
+
remotes,
|
|
198
|
+
environment: composition.environment,
|
|
199
|
+
modules: {}
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
/** The registry inlined the composition into the page, so no network call is needed. */
|
|
203
|
+
const inlineResolver = composition => async key => {
|
|
204
|
+
const remote = composition?.remotes[key];
|
|
205
|
+
if (!composition || !remote) return undefined;
|
|
206
|
+
return {
|
|
207
|
+
remote,
|
|
208
|
+
environment: composition.environment[remote.scope] ?? {},
|
|
209
|
+
manifest: manifestOf(composition, composition.remotes)
|
|
210
|
+
};
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
/** Fetch-on-miss: covers an app activated after this page was served. */
|
|
214
|
+
const registryResolver = (composition, origin = '') => async key => {
|
|
215
|
+
if (!composition) return undefined;
|
|
216
|
+
const url = `${origin}/v1/environments/${composition.environmentId}/remotes/${key}`;
|
|
217
|
+
const response = await fetch(url, {
|
|
218
|
+
credentials: 'include'
|
|
219
|
+
});
|
|
220
|
+
if (!response.ok) return undefined;
|
|
221
|
+
const remote = await response.json();
|
|
222
|
+
return {
|
|
223
|
+
remote,
|
|
224
|
+
environment: composition.environment[remote.scope] ?? {},
|
|
225
|
+
manifest: manifestOf(composition, {
|
|
226
|
+
[key]: remote
|
|
227
|
+
})
|
|
228
|
+
};
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Pre-registry hosts: follow `index[key]` to the app's own manifest. The override
|
|
233
|
+
* merge stays here because in this mode no server has done it.
|
|
234
|
+
*/
|
|
235
|
+
const legacyManifestResolver = config => {
|
|
236
|
+
const cache = new Map();
|
|
237
|
+
const fetchManifest = url => {
|
|
238
|
+
const cached = cache.get(url);
|
|
239
|
+
if (cached) return cached;
|
|
240
|
+
const pending = fetch(url, {
|
|
241
|
+
credentials: 'include'
|
|
242
|
+
}).then(async response => {
|
|
243
|
+
if (!response.ok) {
|
|
244
|
+
throw new Error(`Failed to get manifest from ${url}. ${await response.text()}`);
|
|
245
|
+
}
|
|
246
|
+
return response.json();
|
|
247
|
+
});
|
|
248
|
+
cache.set(url, pending);
|
|
249
|
+
return pending;
|
|
250
|
+
};
|
|
251
|
+
return async key => {
|
|
252
|
+
const manifestUrl = config.index?.[key];
|
|
253
|
+
if (!manifestUrl) return undefined;
|
|
254
|
+
const manifest = await fetchManifest(manifestUrl);
|
|
255
|
+
const remote = manifest?.remotes[key];
|
|
256
|
+
if (!remote) return undefined;
|
|
257
|
+
return {
|
|
258
|
+
remote,
|
|
259
|
+
environment: {
|
|
260
|
+
...(manifest.environment[remote.scope] ?? {}),
|
|
261
|
+
...(config.overrides?.environment?.[remote.scope] ?? {})
|
|
262
|
+
},
|
|
263
|
+
manifest
|
|
264
|
+
};
|
|
265
|
+
};
|
|
266
|
+
};
|
|
267
|
+
const chainResolvers = (...resolvers) => async key => {
|
|
268
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
269
|
+
for (const resolve of resolvers) {
|
|
270
|
+
// eslint-disable-next-line no-await-in-loop
|
|
271
|
+
const resolution = await resolve(key);
|
|
272
|
+
if (resolution) return resolution;
|
|
273
|
+
}
|
|
274
|
+
return undefined;
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
/***/ },
|
|
278
|
+
|
|
279
|
+
/***/ "../loader/src/types.ts"
|
|
280
|
+
/*!******************************!*\
|
|
281
|
+
!*** ../loader/src/types.ts ***!
|
|
282
|
+
\******************************/
|
|
283
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
284
|
+
|
|
285
|
+
__webpack_require__.r(__webpack_exports__);
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
/***/ },
|
|
289
|
+
|
|
290
|
+
/***/ "../react/src/components/AppshellComponent.tsx"
|
|
291
|
+
/*!*****************************************************!*\
|
|
292
|
+
!*** ../react/src/components/AppshellComponent.tsx ***!
|
|
293
|
+
\*****************************************************/
|
|
294
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
295
|
+
|
|
296
|
+
__webpack_require__.r(__webpack_exports__);
|
|
297
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
298
|
+
/* harmony export */ FederatedComponent: () => (/* binding */ FederatedComponent),
|
|
299
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
300
|
+
/* harmony export */ });
|
|
301
|
+
/* harmony import */ var _appshell_loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @appshell/loader */ "../loader/src/index.ts");
|
|
302
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
303
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
|
|
304
|
+
/* harmony import */ var _contexts_ManifestContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../contexts/ManifestContext */ "../react/src/contexts/ManifestContext.tsx");
|
|
305
|
+
/* harmony import */ var _contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../contexts/RemoteContext */ "../react/src/contexts/RemoteContext.tsx");
|
|
306
|
+
/* harmony import */ var _hooks_useGlobalConfig__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/useGlobalConfig */ "../react/src/hooks/useGlobalConfig.ts");
|
|
307
|
+
/* harmony import */ var _LoadingError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./LoadingError */ "../react/src/components/LoadingError.tsx");
|
|
308
|
+
/* eslint-disable react/jsx-props-no-spreading */
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Loads a remote once and leaves it alone.
|
|
321
|
+
*
|
|
322
|
+
* Keeping a remote current while it is being developed is not this component's job.
|
|
323
|
+
* A remote served by a dev server ships webpack's HMR runtime and a dev-server client
|
|
324
|
+
* inside its own `remoteEntry`, so it applies its own edits in place and React Fast
|
|
325
|
+
* Refresh swaps the component implementations underneath this tree — no reload, and no
|
|
326
|
+
* remount that would discard state this component never owned.
|
|
327
|
+
*
|
|
328
|
+
* Watching the remote's socket from here and reloading the page was strictly worse: it
|
|
329
|
+
* raced the remote's own update, and it threw away the entire composed app to deliver a
|
|
330
|
+
* change to one subtree. When webpack genuinely cannot apply an update, the remote's own
|
|
331
|
+
* client still falls back to a full reload — which is the right place for that decision,
|
|
332
|
+
* because it is the only side that knows whether the update applied.
|
|
333
|
+
*/
|
|
334
|
+
const AppshellComponent = ({
|
|
335
|
+
remote,
|
|
336
|
+
fallback,
|
|
337
|
+
...rest
|
|
338
|
+
}) => {
|
|
339
|
+
const config = (0,_hooks_useGlobalConfig__WEBPACK_IMPORTED_MODULE_4__["default"])();
|
|
340
|
+
const [element, setElement] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)();
|
|
341
|
+
(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
|
|
342
|
+
let disposed = false;
|
|
343
|
+
const loadComponent = (0,_appshell_loader__WEBPACK_IMPORTED_MODULE_0__["default"])(config);
|
|
344
|
+
async function load() {
|
|
345
|
+
try {
|
|
346
|
+
const [Component, manifest] = await loadComponent(remote);
|
|
347
|
+
if (disposed || !Component) {
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
setElement(/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_contexts_ManifestContext__WEBPACK_IMPORTED_MODULE_2__.ManifestProvider, {
|
|
351
|
+
manifest: manifest
|
|
352
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_3__.RemoteProvider, {
|
|
353
|
+
remote: manifest.remotes[remote]
|
|
354
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(Component, rest))));
|
|
355
|
+
} catch (err) {
|
|
356
|
+
if (!disposed) {
|
|
357
|
+
setElement(/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_LoadingError__WEBPACK_IMPORTED_MODULE_5__["default"], {
|
|
358
|
+
remote: remote,
|
|
359
|
+
reason: `${err}`
|
|
360
|
+
}));
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
setElement(undefined);
|
|
365
|
+
load();
|
|
366
|
+
return () => {
|
|
367
|
+
disposed = true;
|
|
368
|
+
};
|
|
369
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
370
|
+
}, [remote, config, ...Object.values(rest)]);
|
|
371
|
+
|
|
372
|
+
// eslint-disable-next-line no-console
|
|
373
|
+
console.debug(`rendering AppshellComponent[${remote}], loading=${!element}`);
|
|
374
|
+
// eslint-disable-next-line react/jsx-no-useless-fragment
|
|
375
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement((react__WEBPACK_IMPORTED_MODULE_1___default().Fragment), null, element || fallback);
|
|
376
|
+
};
|
|
377
|
+
AppshellComponent.defaultProps = {
|
|
378
|
+
fallback: undefined
|
|
379
|
+
};
|
|
380
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AppshellComponent);
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* @deprecated This component is deprecated and will be removed in future versions.
|
|
384
|
+
* Please use AppshellComponent instead.
|
|
385
|
+
*/
|
|
386
|
+
const FederatedComponent = AppshellComponent;
|
|
387
|
+
|
|
388
|
+
/***/ },
|
|
389
|
+
|
|
390
|
+
/***/ "../react/src/components/LoadingError.tsx"
|
|
391
|
+
/*!************************************************!*\
|
|
392
|
+
!*** ../react/src/components/LoadingError.tsx ***!
|
|
393
|
+
\************************************************/
|
|
394
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
395
|
+
|
|
396
|
+
__webpack_require__.r(__webpack_exports__);
|
|
397
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
398
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
399
|
+
/* harmony export */ });
|
|
400
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
401
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
402
|
+
|
|
403
|
+
const LoadingError = ({
|
|
404
|
+
remote,
|
|
405
|
+
reason
|
|
406
|
+
}) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
407
|
+
style: {
|
|
408
|
+
border: '3px solid red'
|
|
409
|
+
}
|
|
410
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h5", null, `Error loading Appshell component '${remote}.'`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
|
|
411
|
+
style: {
|
|
412
|
+
fontSize: '1rem'
|
|
413
|
+
}
|
|
414
|
+
}, reason));
|
|
415
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LoadingError);
|
|
416
|
+
|
|
417
|
+
/***/ },
|
|
418
|
+
|
|
419
|
+
/***/ "../react/src/components/ReactHost.tsx"
|
|
420
|
+
/*!*********************************************!*\
|
|
421
|
+
!*** ../react/src/components/ReactHost.tsx ***!
|
|
422
|
+
\*********************************************/
|
|
423
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
424
|
+
|
|
425
|
+
__webpack_require__.r(__webpack_exports__);
|
|
426
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
427
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
428
|
+
/* harmony export */ });
|
|
429
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
430
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
431
|
+
/* harmony import */ var _contexts_GlobalConfigContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../contexts/GlobalConfigContext */ "../react/src/contexts/GlobalConfigContext.tsx");
|
|
432
|
+
/* harmony import */ var _AppshellComponent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AppshellComponent */ "../react/src/components/AppshellComponent.tsx");
|
|
433
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
434
|
+
/* eslint-disable react/jsx-props-no-spreading */
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
/** The registry inlines the composition, so a shell it served needs no config fetch. */
|
|
441
|
+
const inlinedConfig = () => {
|
|
442
|
+
const composition = typeof window === 'undefined' ? undefined : window.__appshell_config__;
|
|
443
|
+
return composition && {
|
|
444
|
+
index: composition.index
|
|
445
|
+
};
|
|
446
|
+
};
|
|
447
|
+
const ReactHost = ({
|
|
448
|
+
configUrl,
|
|
449
|
+
remote,
|
|
450
|
+
fallback,
|
|
451
|
+
...rest
|
|
452
|
+
}) => {
|
|
453
|
+
const [config, setGlobalConfig] = react__WEBPACK_IMPORTED_MODULE_0___default().useState(inlinedConfig);
|
|
454
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
455
|
+
if (config) {
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
if (!configUrl) {
|
|
459
|
+
setGlobalConfig({
|
|
460
|
+
index: {}
|
|
461
|
+
});
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
const fetchGlobalConfig = async () => {
|
|
465
|
+
const res = await fetch(configUrl);
|
|
466
|
+
setGlobalConfig(res.ok ? await res.json() : {
|
|
467
|
+
index: {}
|
|
468
|
+
});
|
|
469
|
+
};
|
|
470
|
+
fetchGlobalConfig();
|
|
471
|
+
}, [config, configUrl]);
|
|
472
|
+
if (!config) {
|
|
473
|
+
return null;
|
|
474
|
+
}
|
|
475
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_contexts_GlobalConfigContext__WEBPACK_IMPORTED_MODULE_1__.GlobalConfigProvider, {
|
|
476
|
+
config: config
|
|
477
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_AppshellComponent__WEBPACK_IMPORTED_MODULE_2__["default"], _extends({
|
|
478
|
+
remote: remote,
|
|
479
|
+
fallback: fallback
|
|
480
|
+
}, rest)));
|
|
481
|
+
};
|
|
482
|
+
ReactHost.defaultProps = {
|
|
483
|
+
configUrl: undefined,
|
|
484
|
+
fallback: undefined
|
|
485
|
+
};
|
|
486
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ReactHost);
|
|
487
|
+
|
|
488
|
+
/***/ },
|
|
489
|
+
|
|
490
|
+
/***/ "../react/src/contexts/GlobalConfigContext.tsx"
|
|
491
|
+
/*!*****************************************************!*\
|
|
492
|
+
!*** ../react/src/contexts/GlobalConfigContext.tsx ***!
|
|
493
|
+
\*****************************************************/
|
|
494
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
495
|
+
|
|
496
|
+
__webpack_require__.r(__webpack_exports__);
|
|
497
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
498
|
+
/* harmony export */ GlobalConfigConsumer: () => (/* binding */ GlobalConfigConsumer),
|
|
499
|
+
/* harmony export */ GlobalConfigContext: () => (/* binding */ GlobalConfigContext),
|
|
500
|
+
/* harmony export */ GlobalConfigProvider: () => (/* binding */ GlobalConfigProvider),
|
|
501
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
502
|
+
/* harmony export */ });
|
|
503
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
504
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
505
|
+
|
|
506
|
+
const GlobalConfigContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({
|
|
507
|
+
index: {}
|
|
508
|
+
});
|
|
509
|
+
const GlobalConfigProvider = ({
|
|
510
|
+
config,
|
|
511
|
+
children
|
|
512
|
+
}) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(GlobalConfigContext.Provider, {
|
|
513
|
+
value: config
|
|
514
|
+
}, children);
|
|
515
|
+
const GlobalConfigConsumer = GlobalConfigContext.Consumer;
|
|
516
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (GlobalConfigContext);
|
|
517
|
+
|
|
518
|
+
/***/ },
|
|
519
|
+
|
|
520
|
+
/***/ "../react/src/contexts/ManifestContext.tsx"
|
|
521
|
+
/*!*************************************************!*\
|
|
522
|
+
!*** ../react/src/contexts/ManifestContext.tsx ***!
|
|
523
|
+
\*************************************************/
|
|
524
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
525
|
+
|
|
526
|
+
__webpack_require__.r(__webpack_exports__);
|
|
527
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
528
|
+
/* harmony export */ ManifestConsumer: () => (/* binding */ ManifestConsumer),
|
|
529
|
+
/* harmony export */ ManifestContext: () => (/* binding */ ManifestContext),
|
|
530
|
+
/* harmony export */ ManifestProvider: () => (/* binding */ ManifestProvider),
|
|
531
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
532
|
+
/* harmony export */ });
|
|
533
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
534
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
535
|
+
|
|
536
|
+
const ManifestContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({
|
|
537
|
+
remotes: {},
|
|
538
|
+
modules: {},
|
|
539
|
+
environment: {}
|
|
540
|
+
});
|
|
541
|
+
|
|
542
|
+
// `modules` is build-time webpack config that the browser has no use for, and it is
|
|
543
|
+
// the bulkiest field to inline. Warn for one release to find any consumer still on it.
|
|
544
|
+
const deprecateModules = manifest => new Proxy(manifest, {
|
|
545
|
+
get(target, property, receiver) {
|
|
546
|
+
if (property === 'modules') {
|
|
547
|
+
// eslint-disable-next-line no-console
|
|
548
|
+
console.warn('useManifest().modules is deprecated and will be removed. It is build-time webpack config; use useRemote() for what the browser needs. Please open an issue at github.com/appshell-org/appshell if you rely on it.');
|
|
549
|
+
}
|
|
550
|
+
return Reflect.get(target, property, receiver);
|
|
551
|
+
}
|
|
552
|
+
});
|
|
553
|
+
const ManifestProvider = ({
|
|
554
|
+
manifest,
|
|
555
|
+
children
|
|
556
|
+
}) => {
|
|
557
|
+
const value = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => deprecateModules(manifest), [manifest]);
|
|
558
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ManifestContext.Provider, {
|
|
559
|
+
value: value
|
|
560
|
+
}, children);
|
|
561
|
+
};
|
|
562
|
+
const ManifestConsumer = ManifestContext.Consumer;
|
|
563
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ManifestContext);
|
|
564
|
+
|
|
565
|
+
/***/ },
|
|
566
|
+
|
|
567
|
+
/***/ "../react/src/contexts/MetadataContext.tsx"
|
|
568
|
+
/*!*************************************************!*\
|
|
569
|
+
!*** ../react/src/contexts/MetadataContext.tsx ***!
|
|
570
|
+
\*************************************************/
|
|
571
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
572
|
+
|
|
573
|
+
__webpack_require__.r(__webpack_exports__);
|
|
574
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
575
|
+
/* harmony export */ MetadataConsumer: () => (/* binding */ MetadataConsumer),
|
|
576
|
+
/* harmony export */ MetadataContext: () => (/* binding */ MetadataContext),
|
|
577
|
+
/* harmony export */ MetadataProvider: () => (/* binding */ MetadataProvider),
|
|
578
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
579
|
+
/* harmony export */ });
|
|
580
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
581
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
582
|
+
|
|
583
|
+
const MetadataContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)({});
|
|
584
|
+
const MetadataProvider = ({
|
|
585
|
+
metata,
|
|
586
|
+
children
|
|
587
|
+
}) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(MetadataContext.Provider, {
|
|
588
|
+
value: metata
|
|
589
|
+
}, children);
|
|
590
|
+
const MetadataConsumer = MetadataContext.Consumer;
|
|
591
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MetadataContext);
|
|
592
|
+
|
|
593
|
+
/***/ },
|
|
594
|
+
|
|
595
|
+
/***/ "../react/src/contexts/RemoteContext.tsx"
|
|
596
|
+
/*!***********************************************!*\
|
|
597
|
+
!*** ../react/src/contexts/RemoteContext.tsx ***!
|
|
598
|
+
\***********************************************/
|
|
599
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
600
|
+
|
|
601
|
+
__webpack_require__.r(__webpack_exports__);
|
|
602
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
603
|
+
/* harmony export */ RemoteConsumer: () => (/* binding */ RemoteConsumer),
|
|
604
|
+
/* harmony export */ RemoteContext: () => (/* binding */ RemoteContext),
|
|
605
|
+
/* harmony export */ RemoteProvider: () => (/* binding */ RemoteProvider),
|
|
606
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
607
|
+
/* harmony export */ });
|
|
608
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
609
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
610
|
+
|
|
611
|
+
const RemoteContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);
|
|
612
|
+
const RemoteProvider = ({
|
|
613
|
+
remote,
|
|
614
|
+
children
|
|
615
|
+
}) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RemoteContext.Provider, {
|
|
616
|
+
value: remote
|
|
617
|
+
}, children);
|
|
618
|
+
RemoteProvider.defaultProps = {
|
|
619
|
+
remote: undefined
|
|
620
|
+
};
|
|
621
|
+
const RemoteConsumer = RemoteContext.Consumer;
|
|
622
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RemoteContext);
|
|
623
|
+
|
|
624
|
+
/***/ },
|
|
625
|
+
|
|
626
|
+
/***/ "../react/src/hooks/useGlobalConfig.ts"
|
|
627
|
+
/*!*********************************************!*\
|
|
628
|
+
!*** ../react/src/hooks/useGlobalConfig.ts ***!
|
|
629
|
+
\*********************************************/
|
|
630
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
631
|
+
|
|
632
|
+
__webpack_require__.r(__webpack_exports__);
|
|
633
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
634
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
635
|
+
/* harmony export */ });
|
|
636
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
637
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
638
|
+
/* harmony import */ var _contexts_GlobalConfigContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../contexts/GlobalConfigContext */ "../react/src/contexts/GlobalConfigContext.tsx");
|
|
639
|
+
|
|
640
|
+
// eslint-disable-next-line import/no-named-as-default
|
|
641
|
+
|
|
642
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (() => react__WEBPACK_IMPORTED_MODULE_0___default().useContext(_contexts_GlobalConfigContext__WEBPACK_IMPORTED_MODULE_1__["default"]));
|
|
643
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
644
|
+
|
|
645
|
+
/***/ },
|
|
646
|
+
|
|
647
|
+
/***/ "../react/src/hooks/useManifest.ts"
|
|
648
|
+
/*!*****************************************!*\
|
|
649
|
+
!*** ../react/src/hooks/useManifest.ts ***!
|
|
650
|
+
\*****************************************/
|
|
651
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
652
|
+
|
|
653
|
+
__webpack_require__.r(__webpack_exports__);
|
|
654
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
655
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
656
|
+
/* harmony export */ });
|
|
657
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
658
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
659
|
+
/* harmony import */ var _contexts_ManifestContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../contexts/ManifestContext */ "../react/src/contexts/ManifestContext.tsx");
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
// eslint-disable-next-line import/no-named-as-default
|
|
663
|
+
|
|
664
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (() => react__WEBPACK_IMPORTED_MODULE_0___default().useContext(_contexts_ManifestContext__WEBPACK_IMPORTED_MODULE_1__["default"]));
|
|
665
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
666
|
+
|
|
667
|
+
/***/ },
|
|
668
|
+
|
|
669
|
+
/***/ "../react/src/hooks/useMetadata.ts"
|
|
670
|
+
/*!*****************************************!*\
|
|
671
|
+
!*** ../react/src/hooks/useMetadata.ts ***!
|
|
672
|
+
\*****************************************/
|
|
673
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
674
|
+
|
|
675
|
+
__webpack_require__.r(__webpack_exports__);
|
|
676
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
677
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
678
|
+
/* harmony export */ });
|
|
679
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
680
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
681
|
+
/* harmony import */ var _contexts_MetadataContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../contexts/MetadataContext */ "../react/src/contexts/MetadataContext.tsx");
|
|
682
|
+
|
|
683
|
+
// eslint-disable-next-line import/no-named-as-default
|
|
684
|
+
|
|
685
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (() => react__WEBPACK_IMPORTED_MODULE_0___default().useContext(_contexts_MetadataContext__WEBPACK_IMPORTED_MODULE_1__["default"]));
|
|
686
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
687
|
+
|
|
688
|
+
/***/ },
|
|
689
|
+
|
|
690
|
+
/***/ "../react/src/hooks/useRemote.ts"
|
|
691
|
+
/*!***************************************!*\
|
|
692
|
+
!*** ../react/src/hooks/useRemote.ts ***!
|
|
693
|
+
\***************************************/
|
|
694
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
695
|
+
|
|
696
|
+
__webpack_require__.r(__webpack_exports__);
|
|
697
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
698
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
699
|
+
/* harmony export */ });
|
|
700
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
701
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
702
|
+
/* harmony import */ var _contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../contexts/RemoteContext */ "../react/src/contexts/RemoteContext.tsx");
|
|
703
|
+
|
|
704
|
+
// eslint-disable-next-line import/no-named-as-default
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
/** The remote backing the nearest `AppshellComponent` — it already knows its own key. */
|
|
708
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (() => react__WEBPACK_IMPORTED_MODULE_0___default().useContext(_contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_1__["default"]));
|
|
709
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
710
|
+
|
|
711
|
+
/***/ },
|
|
712
|
+
|
|
713
|
+
/***/ "../react/src/index.ts"
|
|
714
|
+
/*!*****************************!*\
|
|
715
|
+
!*** ../react/src/index.ts ***!
|
|
716
|
+
\*****************************/
|
|
717
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
718
|
+
|
|
719
|
+
__webpack_require__.r(__webpack_exports__);
|
|
720
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
721
|
+
/* harmony export */ AppshellComponent: () => (/* reexport safe */ _components_AppshellComponent__WEBPACK_IMPORTED_MODULE_0__["default"]),
|
|
722
|
+
/* harmony export */ FederatedComponent: () => (/* reexport safe */ _components_AppshellComponent__WEBPACK_IMPORTED_MODULE_0__.FederatedComponent),
|
|
723
|
+
/* harmony export */ GlobalConfigProvider: () => (/* reexport safe */ _contexts_GlobalConfigContext__WEBPACK_IMPORTED_MODULE_2__.GlobalConfigProvider),
|
|
724
|
+
/* harmony export */ ManifestProvider: () => (/* reexport safe */ _contexts_ManifestContext__WEBPACK_IMPORTED_MODULE_3__.ManifestProvider),
|
|
725
|
+
/* harmony export */ MetadataProvider: () => (/* reexport safe */ _contexts_MetadataContext__WEBPACK_IMPORTED_MODULE_4__.MetadataProvider),
|
|
726
|
+
/* harmony export */ ReactHost: () => (/* reexport safe */ _components_ReactHost__WEBPACK_IMPORTED_MODULE_1__["default"]),
|
|
727
|
+
/* harmony export */ RemoteProvider: () => (/* reexport safe */ _contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_5__.RemoteProvider),
|
|
728
|
+
/* harmony export */ jsonResource: () => (/* reexport safe */ _resources_jsonResource__WEBPACK_IMPORTED_MODULE_10__["default"]),
|
|
729
|
+
/* harmony export */ useGlobalConfig: () => (/* reexport safe */ _hooks_useGlobalConfig__WEBPACK_IMPORTED_MODULE_6__["default"]),
|
|
730
|
+
/* harmony export */ useManifest: () => (/* reexport safe */ _hooks_useManifest__WEBPACK_IMPORTED_MODULE_7__["default"]),
|
|
731
|
+
/* harmony export */ useMetadata: () => (/* reexport safe */ _hooks_useMetadata__WEBPACK_IMPORTED_MODULE_8__["default"]),
|
|
732
|
+
/* harmony export */ useRemote: () => (/* reexport safe */ _hooks_useRemote__WEBPACK_IMPORTED_MODULE_9__["default"])
|
|
733
|
+
/* harmony export */ });
|
|
734
|
+
/* harmony import */ var _components_AppshellComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/AppshellComponent */ "../react/src/components/AppshellComponent.tsx");
|
|
735
|
+
/* harmony import */ var _components_ReactHost__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/ReactHost */ "../react/src/components/ReactHost.tsx");
|
|
736
|
+
/* harmony import */ var _contexts_GlobalConfigContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./contexts/GlobalConfigContext */ "../react/src/contexts/GlobalConfigContext.tsx");
|
|
737
|
+
/* harmony import */ var _contexts_ManifestContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./contexts/ManifestContext */ "../react/src/contexts/ManifestContext.tsx");
|
|
738
|
+
/* harmony import */ var _contexts_MetadataContext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./contexts/MetadataContext */ "../react/src/contexts/MetadataContext.tsx");
|
|
739
|
+
/* harmony import */ var _contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./contexts/RemoteContext */ "../react/src/contexts/RemoteContext.tsx");
|
|
740
|
+
/* harmony import */ var _hooks_useGlobalConfig__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks/useGlobalConfig */ "../react/src/hooks/useGlobalConfig.ts");
|
|
741
|
+
/* harmony import */ var _hooks_useManifest__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./hooks/useManifest */ "../react/src/hooks/useManifest.ts");
|
|
742
|
+
/* harmony import */ var _hooks_useMetadata__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./hooks/useMetadata */ "../react/src/hooks/useMetadata.ts");
|
|
743
|
+
/* harmony import */ var _hooks_useRemote__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./hooks/useRemote */ "../react/src/hooks/useRemote.ts");
|
|
744
|
+
/* harmony import */ var _resources_jsonResource__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./resources/jsonResource */ "../react/src/resources/jsonResource.ts");
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
/***/ },
|
|
758
|
+
|
|
759
|
+
/***/ "../react/src/resources/jsonResource.ts"
|
|
760
|
+
/*!**********************************************!*\
|
|
761
|
+
!*** ../react/src/resources/jsonResource.ts ***!
|
|
762
|
+
\**********************************************/
|
|
763
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
764
|
+
|
|
765
|
+
__webpack_require__.r(__webpack_exports__);
|
|
766
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
767
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
768
|
+
/* harmony export */ });
|
|
769
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (url => {
|
|
770
|
+
let status = 'pending';
|
|
771
|
+
let result;
|
|
772
|
+
const suspender = fetch(url, {
|
|
773
|
+
headers: {
|
|
774
|
+
'Content-Type': 'application/json',
|
|
775
|
+
Accept: 'application/json'
|
|
776
|
+
}
|
|
777
|
+
// eslint-disable-next-line consistent-return
|
|
778
|
+
}).then(response => {
|
|
779
|
+
if (response.ok) {
|
|
780
|
+
return response.json().then(data => {
|
|
781
|
+
status = 'success';
|
|
782
|
+
result = data;
|
|
783
|
+
});
|
|
784
|
+
}
|
|
785
|
+
status = 'error';
|
|
786
|
+
result = new Error(`${response.status} ${response.statusText} ${response.url}`);
|
|
787
|
+
});
|
|
788
|
+
return {
|
|
789
|
+
read() {
|
|
790
|
+
if (status === 'pending') {
|
|
791
|
+
// eslint-disable-next-line @typescript-eslint/no-throw-literal
|
|
792
|
+
throw suspender;
|
|
793
|
+
} else if (status === 'error') {
|
|
794
|
+
throw result;
|
|
795
|
+
} else if (status === 'success') {
|
|
796
|
+
return result;
|
|
797
|
+
}
|
|
798
|
+
return undefined;
|
|
799
|
+
}
|
|
800
|
+
};
|
|
801
|
+
});
|
|
802
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
803
|
+
|
|
804
|
+
/***/ },
|
|
805
|
+
|
|
806
|
+
/***/ "./src/bootstrap.tsx"
|
|
807
|
+
/*!***************************!*\
|
|
808
|
+
!*** ./src/bootstrap.tsx ***!
|
|
809
|
+
\***************************/
|
|
810
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
811
|
+
|
|
812
|
+
__webpack_require__.r(__webpack_exports__);
|
|
813
|
+
/* harmony import */ var _appshell_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @appshell/core */ "../core/src/index.ts");
|
|
814
|
+
/* harmony import */ var _appshell_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @appshell/react */ "../react/src/index.ts");
|
|
815
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
816
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
|
|
817
|
+
/* harmony import */ var react_dom_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom/client */ "../../node_modules/react-dom/client.js");
|
|
818
|
+
/* harmony import */ var _components_Splash__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/Splash */ "./src/components/Splash.tsx");
|
|
819
|
+
/* harmony import */ var _overlayBadge__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./overlayBadge */ "./src/overlayBadge.ts");
|
|
820
|
+
/* harmony import */ var _reportWebVitals__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./reportWebVitals */ "./src/reportWebVitals.ts");
|
|
821
|
+
/* harmony import */ var _reset_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./reset.css */ "./src/reset.css");
|
|
822
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
823
|
+
/* eslint-disable react/jsx-props-no-spreading */
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
const root = (0,react_dom_client__WEBPACK_IMPORTED_MODULE_3__.createRoot)(document.getElementById('root'));
|
|
833
|
+
|
|
834
|
+
// A registry-served shell inlines these; the build-time env is the standalone fallback.
|
|
835
|
+
const composition = window.__appshell_config__;
|
|
836
|
+
|
|
837
|
+
// Outside the React root on purpose, so it outlives a crash in the composed app.
|
|
838
|
+
(0,_overlayBadge__WEBPACK_IMPORTED_MODULE_5__["default"])(composition);
|
|
839
|
+
const remote = composition?.root || _appshell_core__WEBPACK_IMPORTED_MODULE_0__.APPSHELL_ENV.APPSHELL_ROOT;
|
|
840
|
+
const props = composition?.rootProps ?? JSON.parse(_appshell_core__WEBPACK_IMPORTED_MODULE_0__.APPSHELL_ENV.APPSHELL_ROOT_PROPS);
|
|
841
|
+
if (!remote) {
|
|
842
|
+
throw new Error(`No root remote to mount. The registry supplies one; a standalone build needs APPSHELL_ROOT.`);
|
|
843
|
+
}
|
|
844
|
+
root.render(/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement((react__WEBPACK_IMPORTED_MODULE_2___default().StrictMode), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_appshell_react__WEBPACK_IMPORTED_MODULE_1__.ReactHost, _extends({
|
|
845
|
+
configUrl: composition ? undefined : _appshell_core__WEBPACK_IMPORTED_MODULE_0__.APPSHELL_ENV.APPSHELL_CONFIG_URL,
|
|
846
|
+
remote: remote,
|
|
847
|
+
fallback: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_components_Splash__WEBPACK_IMPORTED_MODULE_4__["default"], null)
|
|
848
|
+
}, props))));
|
|
849
|
+
(0,_reportWebVitals__WEBPACK_IMPORTED_MODULE_6__["default"])();
|
|
850
|
+
|
|
851
|
+
/***/ },
|
|
852
|
+
|
|
853
|
+
/***/ "./src/components/Splash.tsx"
|
|
854
|
+
/*!***********************************!*\
|
|
855
|
+
!*** ./src/components/Splash.tsx ***!
|
|
856
|
+
\***********************************/
|
|
857
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
858
|
+
|
|
859
|
+
__webpack_require__.r(__webpack_exports__);
|
|
860
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
861
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
862
|
+
/* harmony export */ });
|
|
863
|
+
/* harmony import */ var _appshell_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @appshell/core */ "../core/src/index.ts");
|
|
864
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
865
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
|
|
866
|
+
/* harmony import */ var react_spinners_PropagateLoader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-spinners/PropagateLoader */ "../../node_modules/react-spinners/PropagateLoader.js");
|
|
867
|
+
/* harmony import */ var react_spinners_PropagateLoader__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_spinners_PropagateLoader__WEBPACK_IMPORTED_MODULE_2__);
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
|
|
871
|
+
const Splash = () => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("div", {
|
|
872
|
+
style: {
|
|
873
|
+
display: 'flex',
|
|
874
|
+
alignItems: 'center',
|
|
875
|
+
justifyContent: 'center',
|
|
876
|
+
flexGrow: 1,
|
|
877
|
+
height: '100vh',
|
|
878
|
+
backgroundColor: _appshell_core__WEBPACK_IMPORTED_MODULE_0__.APPSHELL_ENV.APPSHELL_THEME_COLOR
|
|
879
|
+
}
|
|
880
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement((react_spinners_PropagateLoader__WEBPACK_IMPORTED_MODULE_2___default()), {
|
|
881
|
+
color: _appshell_core__WEBPACK_IMPORTED_MODULE_0__.APPSHELL_ENV.APPSHELL_PRIMARY_COLOR,
|
|
882
|
+
speedMultiplier: 1.5,
|
|
883
|
+
size: 24
|
|
884
|
+
}));
|
|
885
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Splash);
|
|
886
|
+
|
|
887
|
+
/***/ },
|
|
888
|
+
|
|
889
|
+
/***/ "./src/overlayBadge.ts"
|
|
890
|
+
/*!*****************************!*\
|
|
891
|
+
!*** ./src/overlayBadge.ts ***!
|
|
892
|
+
\*****************************/
|
|
893
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
894
|
+
|
|
895
|
+
__webpack_require__.r(__webpack_exports__);
|
|
896
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
897
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
|
|
898
|
+
/* harmony export */ overlayBadgeMarkup: () => (/* binding */ overlayBadgeMarkup)
|
|
899
|
+
/* harmony export */ });
|
|
900
|
+
/**
|
|
901
|
+
* Marks a page whose remotes have been redirected by a per-developer overlay.
|
|
902
|
+
*
|
|
903
|
+
* Deliberately plain DOM in its own element rather than a component inside the React
|
|
904
|
+
* tree, for two reasons. It has to survive a crash in the composed app — the moment
|
|
905
|
+
* the page misbehaves is exactly when knowing your remotes are not the published ones
|
|
906
|
+
* matters most — and nothing about it is React-specific, so it lifts into a shared
|
|
907
|
+
* package unchanged the day a second shell implementation exists.
|
|
908
|
+
*
|
|
909
|
+
* Styles are inline: the badge renders alongside whatever CSS the remotes ship, and a
|
|
910
|
+
* stylesheet of its own would be one more thing for them to override.
|
|
911
|
+
*/
|
|
912
|
+
|
|
913
|
+
const CONTAINER_ID = 'appshell-overlay-badge';
|
|
914
|
+
const styles = {
|
|
915
|
+
container: ['position:fixed', 'bottom:12px', 'left:12px', 'z-index:2147483647', 'max-width:min(420px, calc(100vw - 24px))', 'padding:8px 12px', 'border-radius:6px', 'border:1px solid #f0b429', 'background:#3d3016', 'color:#f7e3a1', 'font:12px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace', 'box-shadow:0 2px 8px rgba(0,0,0,.35)'].join(';'),
|
|
916
|
+
summary: 'cursor:pointer;font-weight:600;list-style:none',
|
|
917
|
+
list: 'margin:6px 0 0;padding-left:16px'
|
|
918
|
+
};
|
|
919
|
+
const escape = value => value.replace(/&/g, '&').replace(/</g, '<');
|
|
920
|
+
const overlayBadgeMarkup = (remotes, shellFlavor = 'prod') => {
|
|
921
|
+
const changes = [shellFlavor === 'dev' && 'development shell', remotes.length && `${remotes.length} remote${remotes.length === 1 ? '' : 's'} redirected`].filter(Boolean);
|
|
922
|
+
const items = remotes
|
|
923
|
+
// The keys come from the registry's own composition, but this string is written
|
|
924
|
+
// straight into innerHTML, so it is escaped rather than trusted by provenance.
|
|
925
|
+
.map(key => `<li>${escape(key)}</li>`).join('');
|
|
926
|
+
return [`<details style="${styles.container}" open>`, `<summary style="${styles.summary}">⚠ Development overlay — ${changes.join(', ')}</summary>`, items ? `<ul style="${styles.list}">${items}</ul>` : '', '</details>'].join('');
|
|
927
|
+
};
|
|
928
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (composition => {
|
|
929
|
+
const overlay = composition?.overlay;
|
|
930
|
+
|
|
931
|
+
// The registry only emits the block when an overlay changed something, so its mere
|
|
932
|
+
// presence is the signal. A shell-only overlay has no remotes and still has to show.
|
|
933
|
+
if (!overlay || document.getElementById(CONTAINER_ID)) return;
|
|
934
|
+
const container = document.createElement('div');
|
|
935
|
+
container.id = CONTAINER_ID;
|
|
936
|
+
container.innerHTML = overlayBadgeMarkup(overlay.remotes ?? [], overlay.shellFlavor);
|
|
937
|
+
document.body.appendChild(container);
|
|
938
|
+
});
|
|
939
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
940
|
+
|
|
941
|
+
/***/ },
|
|
942
|
+
|
|
943
|
+
/***/ "./src/reportWebVitals.ts"
|
|
944
|
+
/*!********************************!*\
|
|
945
|
+
!*** ./src/reportWebVitals.ts ***!
|
|
946
|
+
\********************************/
|
|
947
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
948
|
+
|
|
949
|
+
__webpack_require__.r(__webpack_exports__);
|
|
950
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
951
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
952
|
+
/* harmony export */ });
|
|
953
|
+
// eslint-disable-next-line import/named
|
|
954
|
+
|
|
955
|
+
const reportWebVitals = onPerfEntry => {
|
|
956
|
+
if (onPerfEntry && onPerfEntry instanceof Function) {
|
|
957
|
+
__webpack_require__.e(/*! import() */ "node_modules_web-vitals_dist_web-vitals_js").then(__webpack_require__.bind(__webpack_require__, /*! web-vitals */ "../../node_modules/web-vitals/dist/web-vitals.js")).then(({
|
|
958
|
+
getCLS,
|
|
959
|
+
getFID,
|
|
960
|
+
getFCP,
|
|
961
|
+
getLCP,
|
|
962
|
+
getTTFB
|
|
963
|
+
}) => {
|
|
964
|
+
getCLS(onPerfEntry);
|
|
965
|
+
getFID(onPerfEntry);
|
|
966
|
+
getFCP(onPerfEntry);
|
|
967
|
+
getLCP(onPerfEntry);
|
|
968
|
+
getTTFB(onPerfEntry);
|
|
969
|
+
});
|
|
970
|
+
}
|
|
971
|
+
};
|
|
972
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (reportWebVitals);
|
|
973
|
+
|
|
974
|
+
/***/ },
|
|
975
|
+
|
|
976
|
+
/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/postcss-loader/dist/cjs.js!./src/reset.css"
|
|
977
|
+
/*!***************************************************************************************************************!*\
|
|
978
|
+
!*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/postcss-loader/dist/cjs.js!./src/reset.css ***!
|
|
979
|
+
\***************************************************************************************************************/
|
|
980
|
+
(module, __webpack_exports__, __webpack_require__) {
|
|
981
|
+
|
|
982
|
+
__webpack_require__.r(__webpack_exports__);
|
|
983
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
984
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
985
|
+
/* harmony export */ });
|
|
986
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
987
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
988
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js");
|
|
989
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
990
|
+
// Imports
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
994
|
+
// Module
|
|
995
|
+
___CSS_LOADER_EXPORT___.push([module.id, "body {\n margin: 0;\n font-family: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n", "",{"version":3,"sources":["webpack://./src/reset.css"],"names":[],"mappings":"AAAA;EACE,SAAS;EACT;;cAEY;EACZ,mCAAmC;EACnC,kCAAkC;AACpC","sourcesContent":["body {\n margin: 0;\n font-family: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n"],"sourceRoot":""}]);
|
|
996
|
+
// Exports
|
|
997
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
/***/ },
|
|
1001
|
+
|
|
1002
|
+
/***/ "./src/reset.css"
|
|
1003
|
+
/*!***********************!*\
|
|
1004
|
+
!*** ./src/reset.css ***!
|
|
1005
|
+
\***********************/
|
|
1006
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
1007
|
+
|
|
1008
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1009
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1010
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1011
|
+
/* harmony export */ });
|
|
1012
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
1013
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
1014
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "../../node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
1015
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
1016
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "../../node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
1017
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
1018
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
1019
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
1020
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "../../node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
1021
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
1022
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "../../node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
1023
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
1024
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_reset_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js!./reset.css */ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/postcss-loader/dist/cjs.js!./src/reset.css");
|
|
1025
|
+
|
|
1026
|
+
|
|
1027
|
+
|
|
1028
|
+
|
|
1029
|
+
|
|
1030
|
+
|
|
1031
|
+
|
|
1032
|
+
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
var options = {};
|
|
1037
|
+
|
|
1038
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
1039
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
1040
|
+
|
|
1041
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
1042
|
+
|
|
1043
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
1044
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
1045
|
+
|
|
1046
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_reset_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
|
|
1051
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_reset_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_reset_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_node_modules_postcss_loader_dist_cjs_js_reset_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
/***/ }
|
|
1055
|
+
|
|
1056
|
+
}]);
|
|
1057
|
+
//# sourceMappingURL=src_bootstrap_tsx-webpack_sharing_consume_default_react-dom_react-dom.js.map
|