@appshell/react-shell 1.0.0-alpha.24 → 1.0.0-alpha.26
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/58.js +1 -0
- package/dist/630.js +1 -0
- package/dist/677.js +1 -0
- package/dist/877.js +1 -1
- package/dist/dev/main.js +30 -11
- package/dist/dev/main.js.map +1 -1
- package/dist/dev/mf-manifest.json +24 -3
- package/dist/dev/mf-stats.json +28 -3
- package/dist/dev/react_src_index_ts-_f7a70.js +515 -0
- package/dist/dev/react_src_index_ts-_f7a70.js.map +1 -0
- package/dist/dev/react_src_index_ts-_f7a71.js +515 -0
- package/dist/dev/react_src_index_ts-_f7a71.js.map +1 -0
- package/dist/dev/runtime_src_index_ts.js +14 -1
- package/dist/dev/runtime_src_index_ts.js.map +1 -1
- package/dist/dev/src_bootstrap_tsx.js +1 -506
- package/dist/dev/src_bootstrap_tsx.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/mf-manifest.json +24 -3
- package/dist/mf-stats.json +28 -3
- package/package.json +2 -2
- package/dist/510.js +0 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"name": "Appshell",
|
|
6
6
|
"type": "app",
|
|
7
7
|
"buildInfo": {
|
|
8
|
-
"buildVersion": "1.0.0-alpha.
|
|
8
|
+
"buildVersion": "1.0.0-alpha.26",
|
|
9
9
|
"buildName": "@appshell/react-shell"
|
|
10
10
|
},
|
|
11
11
|
"remoteEntry": {
|
|
@@ -24,12 +24,33 @@
|
|
|
24
24
|
"publicPath": "auto"
|
|
25
25
|
},
|
|
26
26
|
"shared": [
|
|
27
|
+
{
|
|
28
|
+
"id": "Appshell:@appshell/react",
|
|
29
|
+
"name": "@appshell/react",
|
|
30
|
+
"version": "1.0.0-alpha.26",
|
|
31
|
+
"singleton": true,
|
|
32
|
+
"requiredVersion": "^1.0.0-alpha.26",
|
|
33
|
+
"assets": {
|
|
34
|
+
"js": {
|
|
35
|
+
"async": [],
|
|
36
|
+
"sync": [
|
|
37
|
+
"react_src_index_ts-_f7a70.js",
|
|
38
|
+
"react_src_index_ts-_f7a71.js"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"css": {
|
|
42
|
+
"async": [],
|
|
43
|
+
"sync": []
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"fallback": ""
|
|
47
|
+
},
|
|
27
48
|
{
|
|
28
49
|
"id": "Appshell:@appshell/runtime",
|
|
29
50
|
"name": "@appshell/runtime",
|
|
30
|
-
"version": "1.0.0-alpha.
|
|
51
|
+
"version": "1.0.0-alpha.26",
|
|
31
52
|
"singleton": true,
|
|
32
|
-
"requiredVersion": "^1.0.0-alpha.
|
|
53
|
+
"requiredVersion": "^1.0.0-alpha.26",
|
|
33
54
|
"assets": {
|
|
34
55
|
"js": {
|
|
35
56
|
"async": [],
|
package/dist/dev/mf-stats.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"name": "Appshell",
|
|
6
6
|
"type": "app",
|
|
7
7
|
"buildInfo": {
|
|
8
|
-
"buildVersion": "1.0.0-alpha.
|
|
8
|
+
"buildVersion": "1.0.0-alpha.26",
|
|
9
9
|
"buildName": "@appshell/react-shell"
|
|
10
10
|
},
|
|
11
11
|
"remoteEntry": {
|
|
@@ -26,10 +26,35 @@
|
|
|
26
26
|
"shared": [
|
|
27
27
|
{
|
|
28
28
|
"singleton": true,
|
|
29
|
-
"requiredVersion": "^1.0.0-alpha.
|
|
29
|
+
"requiredVersion": "^1.0.0-alpha.26",
|
|
30
|
+
"shareScope": "default",
|
|
31
|
+
"name": "@appshell/react",
|
|
32
|
+
"version": "1.0.0-alpha.26",
|
|
33
|
+
"eager": false,
|
|
34
|
+
"id": "Appshell:@appshell/react",
|
|
35
|
+
"assets": {
|
|
36
|
+
"js": {
|
|
37
|
+
"async": [],
|
|
38
|
+
"sync": [
|
|
39
|
+
"react_src_index_ts-_f7a70.js",
|
|
40
|
+
"react_src_index_ts-_f7a71.js"
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
"css": {
|
|
44
|
+
"async": [],
|
|
45
|
+
"sync": []
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"usedIn": [],
|
|
49
|
+
"usedExports": [],
|
|
50
|
+
"fallback": ""
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"singleton": true,
|
|
54
|
+
"requiredVersion": "^1.0.0-alpha.26",
|
|
30
55
|
"shareScope": "default",
|
|
31
56
|
"name": "@appshell/runtime",
|
|
32
|
-
"version": "1.0.0-alpha.
|
|
57
|
+
"version": "1.0.0-alpha.26",
|
|
33
58
|
"eager": false,
|
|
34
59
|
"id": "Appshell:@appshell/runtime",
|
|
35
60
|
"assets": {
|
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(globalThis["webpackChunkappshell_react_shell"] = globalThis["webpackChunkappshell_react_shell"] || []).push([["react_src_index_ts-_f7a70"],{
|
|
3
|
+
|
|
4
|
+
/***/ "../loader/src/index.ts"
|
|
5
|
+
/*!******************************!*\
|
|
6
|
+
!*** ../loader/src/index.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 */ chainResolvers: () => (/* reexport safe */ _resolvers__WEBPACK_IMPORTED_MODULE_1__.chainResolvers),
|
|
13
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
|
|
14
|
+
/* harmony export */ inlineResolver: () => (/* reexport safe */ _resolvers__WEBPACK_IMPORTED_MODULE_1__.inlineResolver),
|
|
15
|
+
/* harmony export */ registryResolver: () => (/* reexport safe */ _resolvers__WEBPACK_IMPORTED_MODULE_1__.registryResolver)
|
|
16
|
+
/* harmony export */ });
|
|
17
|
+
/* harmony import */ var _remoteLoader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./remoteLoader */ "../loader/src/remoteLoader.ts");
|
|
18
|
+
/* harmony import */ var _resolvers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resolvers */ "../loader/src/resolvers.ts");
|
|
19
|
+
/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types */ "../loader/src/types.ts");
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_remoteLoader__WEBPACK_IMPORTED_MODULE_0__["default"]);
|
|
24
|
+
|
|
25
|
+
/***/ },
|
|
26
|
+
|
|
27
|
+
/***/ "../loader/src/loadAppshellComponent.ts"
|
|
28
|
+
/*!**********************************************!*\
|
|
29
|
+
!*** ../loader/src/loadAppshellComponent.ts ***!
|
|
30
|
+
\**********************************************/
|
|
31
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
32
|
+
|
|
33
|
+
__webpack_require__.r(__webpack_exports__);
|
|
34
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
35
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
36
|
+
/* harmony export */ });
|
|
37
|
+
/* 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");
|
|
38
|
+
|
|
39
|
+
const HOST_NAME = 'Appshell';
|
|
40
|
+
|
|
41
|
+
// The runtime instance and each remote's registration only need to happen once per page load.
|
|
42
|
+
let initialized = false;
|
|
43
|
+
const registeredScopes = new Set();
|
|
44
|
+
const ensureInitialized = () => {
|
|
45
|
+
if (initialized) return;
|
|
46
|
+
initialized = true;
|
|
47
|
+
|
|
48
|
+
// A host that ships its own ModuleFederationPlugin (e.g. @appshell/react-shell) already
|
|
49
|
+
// created the global federation instance during its own bootstrap. Re-calling `init()`
|
|
50
|
+
// with a different name throws (#RUNTIME-010), so reuse whatever instance already exists.
|
|
51
|
+
if ((0,_module_federation_enhanced_runtime__WEBPACK_IMPORTED_MODULE_0__.getInstance)()) return;
|
|
52
|
+
(0,_module_federation_enhanced_runtime__WEBPACK_IMPORTED_MODULE_0__.init)({
|
|
53
|
+
name: HOST_NAME,
|
|
54
|
+
remotes: []
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (async (scope, module, remoteEntryUrl, shareScope = 'default') => {
|
|
58
|
+
// eslint-disable-next-line no-console
|
|
59
|
+
console.debug(`loading Appshell component: { scope: ${scope}, module: ${module}, shareScope: ${shareScope} }`);
|
|
60
|
+
ensureInitialized();
|
|
61
|
+
|
|
62
|
+
// Registered exactly once, and never re-registered or cache-busted afterwards.
|
|
63
|
+
//
|
|
64
|
+
// A remote served by a dev server updates itself: its `remoteEntry` already carries
|
|
65
|
+
// webpack's HMR runtime and a dev-server client, so an edit is applied in place
|
|
66
|
+
// behind a container identity that does not move. Re-registering the same scope, or
|
|
67
|
+
// appending a cache-busting query to its entry, changes that identity and the
|
|
68
|
+
// `publicPath` derived from it mid-flight, which strands the `*.hot-update.json` and
|
|
69
|
+
// `*.hot-update.js` requests the remote is midway through making.
|
|
70
|
+
if (!registeredScopes.has(scope)) {
|
|
71
|
+
registeredScopes.add(scope);
|
|
72
|
+
(0,_module_federation_enhanced_runtime__WEBPACK_IMPORTED_MODULE_0__.registerRemotes)([{
|
|
73
|
+
name: scope,
|
|
74
|
+
entry: remoteEntryUrl
|
|
75
|
+
}]);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Federation ids drop the leading `./` that `exposes` keys use.
|
|
79
|
+
const exposed = module.replace(/^\.\//, '');
|
|
80
|
+
const Module = await (0,_module_federation_enhanced_runtime__WEBPACK_IMPORTED_MODULE_0__.loadRemote)(`${scope}/${exposed}`);
|
|
81
|
+
if (!Module) {
|
|
82
|
+
throw new Error(`Failed to find module container ${scope}`);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// eslint-disable-next-line no-console
|
|
86
|
+
console.debug(`Appshell component loaded: { scope: ${scope}, module: ${module}, shareScope: ${shareScope} }`);
|
|
87
|
+
return Module.default;
|
|
88
|
+
});
|
|
89
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
90
|
+
|
|
91
|
+
/***/ },
|
|
92
|
+
|
|
93
|
+
/***/ "../loader/src/remoteLoader.ts"
|
|
94
|
+
/*!*************************************!*\
|
|
95
|
+
!*** ../loader/src/remoteLoader.ts ***!
|
|
96
|
+
\*************************************/
|
|
97
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
98
|
+
|
|
99
|
+
__webpack_require__.r(__webpack_exports__);
|
|
100
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
101
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
102
|
+
/* harmony export */ });
|
|
103
|
+
/* harmony import */ var _appshell_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @appshell/runtime */ "webpack/sharing/consume/default/@appshell/runtime/@appshell/runtime");
|
|
104
|
+
/* harmony import */ var _loadAppshellComponent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loadAppshellComponent */ "../loader/src/loadAppshellComponent.ts");
|
|
105
|
+
/* harmony import */ var _resolvers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./resolvers */ "../loader/src/resolvers.ts");
|
|
106
|
+
/* eslint-disable no-underscore-dangle */
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((options = {}) => {
|
|
112
|
+
const composition = options.composition ?? (typeof window === 'undefined' ? undefined : window.__appshell_config__);
|
|
113
|
+
const resolve = options.resolver ?? (0,_resolvers__WEBPACK_IMPORTED_MODULE_2__.chainResolvers)((0,_resolvers__WEBPACK_IMPORTED_MODULE_2__.inlineResolver)(composition), (0,_resolvers__WEBPACK_IMPORTED_MODULE_2__.registryResolver)(composition));
|
|
114
|
+
return async key => {
|
|
115
|
+
const failed = err => new Error(`Failed to load component '${key}'. ${err?.toString()}`);
|
|
116
|
+
let resolution;
|
|
117
|
+
try {
|
|
118
|
+
resolution = await resolve(key);
|
|
119
|
+
} catch (err) {
|
|
120
|
+
throw failed(err);
|
|
121
|
+
}
|
|
122
|
+
if (!resolution) {
|
|
123
|
+
throw new Error(`Remote resource not found in registry. Expected: ${key}`);
|
|
124
|
+
}
|
|
125
|
+
const {
|
|
126
|
+
remote,
|
|
127
|
+
vars
|
|
128
|
+
} = resolution;
|
|
129
|
+
try {
|
|
130
|
+
// Before the remote loads, so a package that validates its vars while its modules
|
|
131
|
+
// evaluate still finds them. `@appshell/runtime` is a shared singleton, so this is
|
|
132
|
+
// the same store the package reads through `getVars()`.
|
|
133
|
+
(0,_appshell_runtime__WEBPACK_IMPORTED_MODULE_0__.setVars)(remote.scope, vars);
|
|
134
|
+
const Component = await (0,_loadAppshellComponent__WEBPACK_IMPORTED_MODULE_1__["default"])(remote.scope, remote.module, remote.remoteEntryUrl, remote.shareScope);
|
|
135
|
+
return [Component, remote];
|
|
136
|
+
} catch (err) {
|
|
137
|
+
throw failed(err);
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
142
|
+
|
|
143
|
+
/***/ },
|
|
144
|
+
|
|
145
|
+
/***/ "../loader/src/resolvers.ts"
|
|
146
|
+
/*!**********************************!*\
|
|
147
|
+
!*** ../loader/src/resolvers.ts ***!
|
|
148
|
+
\**********************************/
|
|
149
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
150
|
+
|
|
151
|
+
__webpack_require__.r(__webpack_exports__);
|
|
152
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
153
|
+
/* harmony export */ chainResolvers: () => (/* binding */ chainResolvers),
|
|
154
|
+
/* harmony export */ inlineResolver: () => (/* binding */ inlineResolver),
|
|
155
|
+
/* harmony export */ registryResolver: () => (/* binding */ registryResolver)
|
|
156
|
+
/* harmony export */ });
|
|
157
|
+
/** The registry inlined the composition into the page, so no network call is needed. */
|
|
158
|
+
const inlineResolver = composition => async key => {
|
|
159
|
+
const remote = composition?.remotes[key];
|
|
160
|
+
if (!composition || !remote) return undefined;
|
|
161
|
+
return {
|
|
162
|
+
remote,
|
|
163
|
+
vars: composition.vars[remote.scope] ?? {}
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
/** Fetch-on-miss: covers a package activated after this page was served. */
|
|
168
|
+
const registryResolver = (composition, origin = '') => async key => {
|
|
169
|
+
if (!composition) return undefined;
|
|
170
|
+
const url = `${origin}/v1/applications/${composition.applicationId}/remotes/${key}`;
|
|
171
|
+
const response = await fetch(url, {
|
|
172
|
+
credentials: 'include'
|
|
173
|
+
});
|
|
174
|
+
if (!response.ok) return undefined;
|
|
175
|
+
const remote = await response.json();
|
|
176
|
+
return {
|
|
177
|
+
remote,
|
|
178
|
+
vars: composition.vars[remote.scope] ?? {}
|
|
179
|
+
};
|
|
180
|
+
};
|
|
181
|
+
const chainResolvers = (...resolvers) => async key => {
|
|
182
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
183
|
+
for (const resolve of resolvers) {
|
|
184
|
+
// eslint-disable-next-line no-await-in-loop
|
|
185
|
+
const resolution = await resolve(key);
|
|
186
|
+
if (resolution) return resolution;
|
|
187
|
+
}
|
|
188
|
+
return undefined;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
/***/ },
|
|
192
|
+
|
|
193
|
+
/***/ "../loader/src/types.ts"
|
|
194
|
+
/*!******************************!*\
|
|
195
|
+
!*** ../loader/src/types.ts ***!
|
|
196
|
+
\******************************/
|
|
197
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
198
|
+
|
|
199
|
+
__webpack_require__.r(__webpack_exports__);
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
/***/ },
|
|
203
|
+
|
|
204
|
+
/***/ "../react/src/components/LoadingError.tsx"
|
|
205
|
+
/*!************************************************!*\
|
|
206
|
+
!*** ../react/src/components/LoadingError.tsx ***!
|
|
207
|
+
\************************************************/
|
|
208
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
209
|
+
|
|
210
|
+
__webpack_require__.r(__webpack_exports__);
|
|
211
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
212
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
213
|
+
/* harmony export */ });
|
|
214
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
215
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
216
|
+
|
|
217
|
+
const LoadingError = ({
|
|
218
|
+
remote,
|
|
219
|
+
reason
|
|
220
|
+
}) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
|
|
221
|
+
style: {
|
|
222
|
+
border: '3px solid red'
|
|
223
|
+
}
|
|
224
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("h5", null, `Error loading Appshell component '${remote}.'`), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
|
|
225
|
+
style: {
|
|
226
|
+
fontSize: '1rem'
|
|
227
|
+
}
|
|
228
|
+
}, reason));
|
|
229
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LoadingError);
|
|
230
|
+
|
|
231
|
+
/***/ },
|
|
232
|
+
|
|
233
|
+
/***/ "../react/src/components/RemoteSlot.tsx"
|
|
234
|
+
/*!**********************************************!*\
|
|
235
|
+
!*** ../react/src/components/RemoteSlot.tsx ***!
|
|
236
|
+
\**********************************************/
|
|
237
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
238
|
+
|
|
239
|
+
__webpack_require__.r(__webpack_exports__);
|
|
240
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
241
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
242
|
+
/* harmony export */ });
|
|
243
|
+
/* harmony import */ var _appshell_loader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @appshell/loader */ "../loader/src/index.ts");
|
|
244
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
245
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
|
|
246
|
+
/* harmony import */ var _contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../contexts/RemoteContext */ "../react/src/contexts/RemoteContext.tsx");
|
|
247
|
+
/* harmony import */ var _LoadingError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./LoadingError */ "../react/src/components/LoadingError.tsx");
|
|
248
|
+
/* eslint-disable react/jsx-props-no-spreading */
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-constraint
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Loads a remote once and leaves it alone.
|
|
258
|
+
*
|
|
259
|
+
* Keeping a remote current while it is being developed is not this component's job.
|
|
260
|
+
* A remote served by a dev server ships webpack's HMR runtime and a dev-server client
|
|
261
|
+
* inside its own `remoteEntry`, so it applies its own edits in place and React Fast
|
|
262
|
+
* Refresh swaps the component implementations underneath this tree — no reload, and no
|
|
263
|
+
* remount that would discard state this component never owned.
|
|
264
|
+
*
|
|
265
|
+
* Watching the remote's socket from here and reloading the page was strictly worse: it
|
|
266
|
+
* raced the remote's own update, and it threw away the entire composed app to deliver a
|
|
267
|
+
* change to one subtree. When webpack genuinely cannot apply an update, the remote's own
|
|
268
|
+
* client still falls back to a full reload — which is the right place for that decision,
|
|
269
|
+
* because it is the only side that knows whether the update applied.
|
|
270
|
+
*/
|
|
271
|
+
const RemoteSlot = ({
|
|
272
|
+
remote,
|
|
273
|
+
fallback,
|
|
274
|
+
...rest
|
|
275
|
+
}) => {
|
|
276
|
+
const [element, setElement] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)();
|
|
277
|
+
(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(() => {
|
|
278
|
+
let disposed = false;
|
|
279
|
+
const loadComponent = (0,_appshell_loader__WEBPACK_IMPORTED_MODULE_0__["default"])();
|
|
280
|
+
async function load() {
|
|
281
|
+
try {
|
|
282
|
+
const [Component, resolved] = await loadComponent(remote);
|
|
283
|
+
if (disposed || !Component) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
setElement(/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_2__.RemoteProvider, {
|
|
287
|
+
remote: resolved
|
|
288
|
+
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(Component, rest)));
|
|
289
|
+
} catch (err) {
|
|
290
|
+
if (!disposed) {
|
|
291
|
+
setElement(/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement(_LoadingError__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
|
292
|
+
remote: remote,
|
|
293
|
+
reason: `${err}`
|
|
294
|
+
}));
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
setElement(undefined);
|
|
299
|
+
load();
|
|
300
|
+
return () => {
|
|
301
|
+
disposed = true;
|
|
302
|
+
};
|
|
303
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
304
|
+
}, [remote, ...Object.values(rest)]);
|
|
305
|
+
|
|
306
|
+
// eslint-disable-next-line no-console
|
|
307
|
+
console.debug(`rendering RemoteSlot[${remote}], loading=${!element}`);
|
|
308
|
+
// eslint-disable-next-line react/jsx-no-useless-fragment
|
|
309
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement((react__WEBPACK_IMPORTED_MODULE_1___default().Fragment), null, element || fallback);
|
|
310
|
+
};
|
|
311
|
+
RemoteSlot.defaultProps = {
|
|
312
|
+
fallback: undefined
|
|
313
|
+
};
|
|
314
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RemoteSlot);
|
|
315
|
+
|
|
316
|
+
/***/ },
|
|
317
|
+
|
|
318
|
+
/***/ "../react/src/contexts/RemoteContext.tsx"
|
|
319
|
+
/*!***********************************************!*\
|
|
320
|
+
!*** ../react/src/contexts/RemoteContext.tsx ***!
|
|
321
|
+
\***********************************************/
|
|
322
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
323
|
+
|
|
324
|
+
__webpack_require__.r(__webpack_exports__);
|
|
325
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
326
|
+
/* harmony export */ RemoteConsumer: () => (/* binding */ RemoteConsumer),
|
|
327
|
+
/* harmony export */ RemoteContext: () => (/* binding */ RemoteContext),
|
|
328
|
+
/* harmony export */ RemoteProvider: () => (/* binding */ RemoteProvider),
|
|
329
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
330
|
+
/* harmony export */ });
|
|
331
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
332
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
333
|
+
|
|
334
|
+
const RemoteContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);
|
|
335
|
+
const RemoteProvider = ({
|
|
336
|
+
remote,
|
|
337
|
+
children
|
|
338
|
+
}) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RemoteContext.Provider, {
|
|
339
|
+
value: remote
|
|
340
|
+
}, children);
|
|
341
|
+
RemoteProvider.defaultProps = {
|
|
342
|
+
remote: undefined
|
|
343
|
+
};
|
|
344
|
+
const RemoteConsumer = RemoteContext.Consumer;
|
|
345
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RemoteContext);
|
|
346
|
+
|
|
347
|
+
/***/ },
|
|
348
|
+
|
|
349
|
+
/***/ "../react/src/hooks/useRemote.ts"
|
|
350
|
+
/*!***************************************!*\
|
|
351
|
+
!*** ../react/src/hooks/useRemote.ts ***!
|
|
352
|
+
\***************************************/
|
|
353
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
354
|
+
|
|
355
|
+
__webpack_require__.r(__webpack_exports__);
|
|
356
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
357
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
358
|
+
/* harmony export */ });
|
|
359
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "webpack/sharing/consume/default/react/react");
|
|
360
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
|
|
361
|
+
/* harmony import */ var _contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../contexts/RemoteContext */ "../react/src/contexts/RemoteContext.tsx");
|
|
362
|
+
|
|
363
|
+
// eslint-disable-next-line import/no-named-as-default
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
/** The remote backing the nearest `RemoteSlot` — it already knows its own key. */
|
|
367
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (() => react__WEBPACK_IMPORTED_MODULE_0___default().useContext(_contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_1__["default"]));
|
|
368
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
369
|
+
|
|
370
|
+
/***/ },
|
|
371
|
+
|
|
372
|
+
/***/ "../react/src/index.ts"
|
|
373
|
+
/*!*****************************!*\
|
|
374
|
+
!*** ../react/src/index.ts ***!
|
|
375
|
+
\*****************************/
|
|
376
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
377
|
+
|
|
378
|
+
__webpack_require__.r(__webpack_exports__);
|
|
379
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
380
|
+
/* harmony export */ RemoteProvider: () => (/* reexport safe */ _contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_1__.RemoteProvider),
|
|
381
|
+
/* harmony export */ RemoteSlot: () => (/* reexport safe */ _components_RemoteSlot__WEBPACK_IMPORTED_MODULE_0__["default"]),
|
|
382
|
+
/* harmony export */ jsonResource: () => (/* reexport safe */ _resources_jsonResource__WEBPACK_IMPORTED_MODULE_3__["default"]),
|
|
383
|
+
/* harmony export */ useRemote: () => (/* reexport safe */ _hooks_useRemote__WEBPACK_IMPORTED_MODULE_2__["default"])
|
|
384
|
+
/* harmony export */ });
|
|
385
|
+
/* harmony import */ var _components_RemoteSlot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/RemoteSlot */ "../react/src/components/RemoteSlot.tsx");
|
|
386
|
+
/* harmony import */ var _contexts_RemoteContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./contexts/RemoteContext */ "../react/src/contexts/RemoteContext.tsx");
|
|
387
|
+
/* harmony import */ var _hooks_useRemote__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hooks/useRemote */ "../react/src/hooks/useRemote.ts");
|
|
388
|
+
/* harmony import */ var _resources_jsonResource__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./resources/jsonResource */ "../react/src/resources/jsonResource.ts");
|
|
389
|
+
/*
|
|
390
|
+
* The wire types, re-exported so a React package needs one dependency rather than two
|
|
391
|
+
* to type what RemoteSlot hands it.
|
|
392
|
+
*/
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
/***/ },
|
|
400
|
+
|
|
401
|
+
/***/ "../react/src/resources/jsonResource.ts"
|
|
402
|
+
/*!**********************************************!*\
|
|
403
|
+
!*** ../react/src/resources/jsonResource.ts ***!
|
|
404
|
+
\**********************************************/
|
|
405
|
+
(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
406
|
+
|
|
407
|
+
__webpack_require__.r(__webpack_exports__);
|
|
408
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
409
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
410
|
+
/* harmony export */ });
|
|
411
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (url => {
|
|
412
|
+
let status = 'pending';
|
|
413
|
+
let result;
|
|
414
|
+
const suspender = fetch(url, {
|
|
415
|
+
headers: {
|
|
416
|
+
'Content-Type': 'application/json',
|
|
417
|
+
Accept: 'application/json'
|
|
418
|
+
}
|
|
419
|
+
// eslint-disable-next-line consistent-return
|
|
420
|
+
}).then(response => {
|
|
421
|
+
if (response.ok) {
|
|
422
|
+
return response.json().then(data => {
|
|
423
|
+
status = 'success';
|
|
424
|
+
result = data;
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
status = 'error';
|
|
428
|
+
result = new Error(`${response.status} ${response.statusText} ${response.url}`);
|
|
429
|
+
});
|
|
430
|
+
return {
|
|
431
|
+
read() {
|
|
432
|
+
if (status === 'pending') {
|
|
433
|
+
// eslint-disable-next-line @typescript-eslint/no-throw-literal
|
|
434
|
+
throw suspender;
|
|
435
|
+
} else if (status === 'error') {
|
|
436
|
+
throw result;
|
|
437
|
+
} else if (status === 'success') {
|
|
438
|
+
return result;
|
|
439
|
+
}
|
|
440
|
+
return undefined;
|
|
441
|
+
}
|
|
442
|
+
};
|
|
443
|
+
});
|
|
444
|
+
(Object.getOwnPropertyDescriptor(__WEBPACK_DEFAULT_EXPORT__, "name") || {}).writable || Object.defineProperty(__WEBPACK_DEFAULT_EXPORT__, "name", { value: "default", configurable: true });
|
|
445
|
+
|
|
446
|
+
/***/ },
|
|
447
|
+
|
|
448
|
+
/***/ "../../node_modules/@module-federation/enhanced/dist/src/runtime.mjs"
|
|
449
|
+
/*!***************************************************************************!*\
|
|
450
|
+
!*** ../../node_modules/@module-federation/enhanced/dist/src/runtime.mjs ***!
|
|
451
|
+
\***************************************************************************/
|
|
452
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
453
|
+
|
|
454
|
+
__webpack_require__.r(__webpack_exports__);
|
|
455
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
456
|
+
/* harmony export */ Module: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.Module),
|
|
457
|
+
/* harmony export */ ModuleFederation: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.ModuleFederation),
|
|
458
|
+
/* harmony export */ createInstance: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.createInstance),
|
|
459
|
+
/* harmony export */ getInstance: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.getInstance),
|
|
460
|
+
/* harmony export */ getRemoteEntry: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.getRemoteEntry),
|
|
461
|
+
/* harmony export */ getRemoteInfo: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.getRemoteInfo),
|
|
462
|
+
/* harmony export */ init: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.init),
|
|
463
|
+
/* harmony export */ loadRemote: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.loadRemote),
|
|
464
|
+
/* harmony export */ loadScript: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.loadScript),
|
|
465
|
+
/* harmony export */ loadScriptNode: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.loadScriptNode),
|
|
466
|
+
/* harmony export */ loadShare: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.loadShare),
|
|
467
|
+
/* harmony export */ loadShareSync: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.loadShareSync),
|
|
468
|
+
/* harmony export */ preloadRemote: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.preloadRemote),
|
|
469
|
+
/* harmony export */ registerGlobalPlugins: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.registerGlobalPlugins),
|
|
470
|
+
/* harmony export */ registerPlugins: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.registerPlugins),
|
|
471
|
+
/* harmony export */ registerRemotes: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.registerRemotes),
|
|
472
|
+
/* harmony export */ registerShared: () => (/* reexport safe */ _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__.registerShared)
|
|
473
|
+
/* harmony export */ });
|
|
474
|
+
/* harmony import */ var _module_federation_runtime_tools_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @module-federation/runtime-tools/runtime */ "../../node_modules/@module-federation/runtime-tools/dist/runtime.js");
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
/***/ },
|
|
480
|
+
|
|
481
|
+
/***/ "../../node_modules/@module-federation/runtime-tools/dist/runtime.js"
|
|
482
|
+
/*!***************************************************************************!*\
|
|
483
|
+
!*** ../../node_modules/@module-federation/runtime-tools/dist/runtime.js ***!
|
|
484
|
+
\***************************************************************************/
|
|
485
|
+
(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
|
|
486
|
+
|
|
487
|
+
__webpack_require__.r(__webpack_exports__);
|
|
488
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
489
|
+
/* harmony export */ Module: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.Module),
|
|
490
|
+
/* harmony export */ ModuleFederation: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.ModuleFederation),
|
|
491
|
+
/* harmony export */ createInstance: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.createInstance),
|
|
492
|
+
/* harmony export */ getInstance: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.getInstance),
|
|
493
|
+
/* harmony export */ getRemoteEntry: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.getRemoteEntry),
|
|
494
|
+
/* harmony export */ getRemoteInfo: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.getRemoteInfo),
|
|
495
|
+
/* harmony export */ init: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.init),
|
|
496
|
+
/* harmony export */ loadRemote: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.loadRemote),
|
|
497
|
+
/* harmony export */ loadScript: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.loadScript),
|
|
498
|
+
/* harmony export */ loadScriptNode: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.loadScriptNode),
|
|
499
|
+
/* harmony export */ loadShare: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.loadShare),
|
|
500
|
+
/* harmony export */ loadShareSync: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.loadShareSync),
|
|
501
|
+
/* harmony export */ preloadRemote: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.preloadRemote),
|
|
502
|
+
/* harmony export */ registerGlobalPlugins: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.registerGlobalPlugins),
|
|
503
|
+
/* harmony export */ registerPlugins: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.registerPlugins),
|
|
504
|
+
/* harmony export */ registerRemotes: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.registerRemotes),
|
|
505
|
+
/* harmony export */ registerShared: () => (/* reexport safe */ _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__.registerShared)
|
|
506
|
+
/* harmony export */ });
|
|
507
|
+
/* harmony import */ var _module_federation_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @module-federation/runtime */ "../../node_modules/@module-federation/runtime/dist/bundler.js");
|
|
508
|
+
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
/***/ }
|
|
513
|
+
|
|
514
|
+
}]);
|
|
515
|
+
//# sourceMappingURL=react_src_index_ts-_f7a70.js.map
|