@bleedingdev/modern-js-federation-runtime 0.0.0 → 3.9.0-ultramodern.5

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.
Files changed (33) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/module-federation/consume-surface.js +199 -0
  3. package/dist/cjs/module-federation/distributed-ssr.js +135 -0
  4. package/dist/cjs/module-federation/index.js +316 -0
  5. package/dist/cjs/module-federation/last-known-good.js +157 -0
  6. package/dist/cjs/module-federation/manifest-recovery-runtime-plugin.js +130 -0
  7. package/dist/cjs/module-federation/surface-resolution-types.js +61 -0
  8. package/dist/esm/module-federation/consume-surface.mjs +158 -0
  9. package/dist/esm/module-federation/distributed-ssr.mjs +82 -0
  10. package/dist/esm/module-federation/index.mjs +115 -0
  11. package/dist/esm/module-federation/last-known-good.mjs +113 -0
  12. package/dist/esm/module-federation/manifest-recovery-runtime-plugin.mjs +90 -0
  13. package/dist/esm/module-federation/surface-resolution-types.mjs +8 -0
  14. package/dist/esm-node/module-federation/consume-surface.mjs +159 -0
  15. package/dist/esm-node/module-federation/distributed-ssr.mjs +83 -0
  16. package/dist/esm-node/module-federation/index.mjs +116 -0
  17. package/dist/esm-node/module-federation/last-known-good.mjs +114 -0
  18. package/dist/esm-node/module-federation/manifest-recovery-runtime-plugin.mjs +91 -0
  19. package/dist/esm-node/module-federation/surface-resolution-types.mjs +9 -0
  20. package/dist/types/module-federation/consume-surface.d.ts +104 -0
  21. package/dist/types/module-federation/distributed-ssr.d.ts +61 -0
  22. package/dist/types/module-federation/index.d.ts +71 -0
  23. package/dist/types/module-federation/last-known-good.d.ts +52 -0
  24. package/dist/types/module-federation/manifest-recovery-runtime-plugin.d.ts +25 -0
  25. package/dist/types/module-federation/surface-resolution-types.d.ts +23 -0
  26. package/package.json +86 -4
  27. package/src/module-federation/consume-surface.ts +369 -0
  28. package/src/module-federation/distributed-ssr.tsx +240 -0
  29. package/src/module-federation/index.ts +274 -0
  30. package/src/module-federation/last-known-good.ts +292 -0
  31. package/src/module-federation/manifest-recovery-runtime-plugin.ts +215 -0
  32. package/src/module-federation/surface-resolution-types.ts +60 -0
  33. package/README.md +0 -3
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021-present Modern.js
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ consumeSurface: ()=>consumeSurface,
32
+ createSurfaceConsumer: ()=>createSurfaceConsumer
33
+ });
34
+ const external_index_js_namespaceObject = require("./index.js");
35
+ const external_surface_resolution_types_js_namespaceObject = require("./surface-resolution-types.js");
36
+ function classifyDiscoveryError(code) {
37
+ switch(code){
38
+ case 'major-not-published':
39
+ case 'stale-record':
40
+ return 'version-skew';
41
+ case 'identity-mismatch':
42
+ return 'contract';
43
+ case 'unknown-unit':
44
+ case 'unknown-surface':
45
+ case 'provider-unavailable':
46
+ return 'remote-unavailable';
47
+ default:
48
+ return 'remote-unavailable';
49
+ }
50
+ }
51
+ function toRemoteString(ref) {
52
+ return void 0 === (0, external_surface_resolution_types_js_namespaceObject.validateSurfaceRef)(ref) ? (0, external_surface_resolution_types_js_namespaceObject.formatSurfaceRef)(ref) : `${ref.unitId}#${ref.surfaceId}`;
53
+ }
54
+ async function reportFailure(options, ref, base) {
55
+ const remote = toRemoteString(ref);
56
+ const telemetry = (0, external_index_js_namespaceObject.createModuleFederationFallbackTelemetry)({
57
+ appName: options.appName,
58
+ classification: base.classification,
59
+ error: base.error ?? base.discoveryError,
60
+ metadata: {
61
+ env: options.env,
62
+ surfaceRef: remote,
63
+ ...base.discoveryError ? {
64
+ discoveryErrorCode: base.discoveryError.code
65
+ } : {},
66
+ ...base.resolved ? {
67
+ buildMarker: base.resolved.buildMarker
68
+ } : {}
69
+ },
70
+ phase: base.phase,
71
+ remote,
72
+ status: 'degraded'
73
+ });
74
+ try {
75
+ await (0, external_index_js_namespaceObject.emitModuleFederationFallbackTelemetry)({
76
+ appName: options.appName,
77
+ classification: base.classification,
78
+ error: base.error ?? base.discoveryError,
79
+ metadata: telemetry.metadata,
80
+ phase: base.phase,
81
+ remote,
82
+ status: 'degraded'
83
+ }, options.telemetry ?? {});
84
+ } catch {}
85
+ const failure = {
86
+ ref,
87
+ env: options.env,
88
+ phase: base.phase,
89
+ classification: base.classification,
90
+ telemetry
91
+ };
92
+ if (base.discoveryError) failure.discoveryError = base.discoveryError;
93
+ if (void 0 !== base.error) failure.error = base.error;
94
+ if (base.resolved) failure.resolved = base.resolved;
95
+ const critical = (options.classification ?? 'critical') === 'critical';
96
+ const reason = base.discoveryError ?? (void 0 !== base.error ? base.error : (0, external_surface_resolution_types_js_namespaceObject.createDiscoveryError)('identity-mismatch', remote, `resolved record for "${remote}" is incompatible`, {
97
+ env: options.env
98
+ }));
99
+ let degradedValue;
100
+ try {
101
+ degradedValue = await options.degraded(failure);
102
+ } catch (handlerError) {
103
+ try {
104
+ await (0, external_index_js_namespaceObject.emitModuleFederationFallbackTelemetry)({
105
+ appName: options.appName,
106
+ classification: base.classification,
107
+ error: handlerError,
108
+ metadata: {
109
+ ...telemetry.metadata,
110
+ degradedHandlerFailed: true
111
+ },
112
+ phase: base.phase,
113
+ remote,
114
+ status: 'failed'
115
+ }, options.telemetry ?? {});
116
+ } catch {}
117
+ if (critical) throw reason;
118
+ return;
119
+ }
120
+ if (critical) throw reason;
121
+ return degradedValue;
122
+ }
123
+ async function consumeSurface(options) {
124
+ let ref;
125
+ if ('string' == typeof options.ref) {
126
+ const parsed = (0, external_surface_resolution_types_js_namespaceObject.parseSurfaceRef)(options.ref);
127
+ if (!parsed.ok) {
128
+ const hashIndex = options.ref.indexOf('#');
129
+ const echoed = -1 === hashIndex ? {
130
+ unitId: options.ref,
131
+ surfaceId: ''
132
+ } : {
133
+ unitId: options.ref.slice(0, hashIndex),
134
+ surfaceId: options.ref.slice(hashIndex + 1)
135
+ };
136
+ return reportFailure(options, echoed, {
137
+ phase: 'discovery',
138
+ classification: 'remote-unavailable',
139
+ discoveryError: (0, external_surface_resolution_types_js_namespaceObject.createDiscoveryError)('unknown-surface', options.ref, `SurfaceRef "${options.ref}" is not a valid canonical reference (${parsed.error.code}).`, {
140
+ parseError: parsed.error,
141
+ env: options.env
142
+ })
143
+ });
144
+ }
145
+ ref = parsed.ref;
146
+ } else ref = options.ref;
147
+ let resolution;
148
+ try {
149
+ resolution = await options.provider.resolve(ref, options.env);
150
+ } catch (error) {
151
+ return reportFailure(options, ref, {
152
+ phase: 'discovery',
153
+ classification: (0, external_index_js_namespaceObject.classifyModuleFederationFallback)(error),
154
+ error
155
+ });
156
+ }
157
+ if (!resolution.ok) return reportFailure(options, ref, {
158
+ phase: 'discovery',
159
+ classification: classifyDiscoveryError(resolution.error.code),
160
+ discoveryError: resolution.error
161
+ });
162
+ const resolved = resolution.unit;
163
+ if ('incompatible' === resolved.compatibility.status) return reportFailure(options, ref, {
164
+ phase: 'discovery',
165
+ classification: 'contract',
166
+ resolved
167
+ });
168
+ try {
169
+ return await options.load({
170
+ resolved,
171
+ ref,
172
+ env: options.env
173
+ });
174
+ } catch (error) {
175
+ return reportFailure(options, ref, {
176
+ phase: 'load',
177
+ classification: (0, external_index_js_namespaceObject.classifyModuleFederationFallback)(error),
178
+ error,
179
+ resolved
180
+ });
181
+ }
182
+ }
183
+ function createSurfaceConsumer(base) {
184
+ return function(options) {
185
+ return consumeSurface({
186
+ ...base,
187
+ ...options
188
+ });
189
+ };
190
+ }
191
+ exports.consumeSurface = __webpack_exports__.consumeSurface;
192
+ exports.createSurfaceConsumer = __webpack_exports__.createSurfaceConsumer;
193
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
194
+ "consumeSurface",
195
+ "createSurfaceConsumer"
196
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
197
+ Object.defineProperty(exports, '__esModule', {
198
+ value: true
199
+ });
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY: ()=>DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY,
32
+ DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY: ()=>DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY,
33
+ DistributedSsrBoundary: ()=>DistributedSsrBoundary,
34
+ createDistributedSsrComponent: ()=>createDistributedSsrComponent,
35
+ distributedSsrFragmentKey: ()=>distributedSsrFragmentKey,
36
+ useDistributedSsrFragmentProps: ()=>useDistributedSsrFragmentProps
37
+ });
38
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
39
+ const runtime_namespaceObject = require("@modern-js/runtime");
40
+ const DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY = '__modernDistributedSsrFragments';
41
+ const DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY = '__modernDistributedSsrFragmentRequest';
42
+ function distributedSsrFragmentKey(remote, expose) {
43
+ return `${remote}::${expose}`;
44
+ }
45
+ function getDistributedSsrFragmentContext(response) {
46
+ const locals = response?.locals;
47
+ if ('object' != typeof locals || null === locals) return;
48
+ const context = DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY in locals ? locals[DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY] : void 0;
49
+ if ('object' != typeof context || null === context) return;
50
+ return context;
51
+ }
52
+ function useDistributedSsrFragmentProps({ boundaryId, expose }) {
53
+ const runtimeContext = (0, runtime_namespaceObject.useRuntimeContext)();
54
+ const locals = runtimeContext.requestContext?.response?.locals;
55
+ const request = 'object' == typeof locals && null !== locals && DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY in locals ? locals[DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY] : void 0;
56
+ if ('object' != typeof request || null === request || !('boundaryId' in request) || request.boundaryId !== boundaryId || !('expose' in request) || request.expose !== expose) throw new Error(`Distributed SSR fragment request contract mismatch for ${boundaryId} ${expose}.`);
57
+ const props = 'props' in request ? request.props : void 0;
58
+ if ('object' != typeof props || null === props || Array.isArray(props)) throw new Error(`Distributed SSR fragment request props must be an object for ${boundaryId} ${expose}.`);
59
+ return props;
60
+ }
61
+ function isThenable(value) {
62
+ return void 0 !== value && 'then' in value && 'function' == typeof value.then;
63
+ }
64
+ function DistributedSsrBoundary({ children, expose, fallback, fragmentProps, remote }) {
65
+ const runtimeContext = (0, runtime_namespaceObject.useRuntimeContext)();
66
+ const key = distributedSsrFragmentKey(remote, expose);
67
+ const attributes = {
68
+ 'data-modern-distributed-ssr-boundary': key
69
+ };
70
+ if (runtimeContext.isBrowser) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
71
+ ...attributes,
72
+ children: children
73
+ });
74
+ const fragmentContext = getDistributedSsrFragmentContext(runtimeContext.requestContext?.response);
75
+ if (void 0 === fragmentContext) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
76
+ ...attributes,
77
+ children: children
78
+ });
79
+ const resolverFragmentProps = void 0 === fragmentProps ? {} : Object.fromEntries(Object.entries(fragmentProps));
80
+ const fragmentOrPromise = fragmentContext.resolve?.(remote, expose, resolverFragmentProps) ?? fragmentContext.fragments?.[key];
81
+ if (isThenable(fragmentOrPromise)) throw fragmentOrPromise;
82
+ const fragment = fragmentOrPromise;
83
+ if (fragment?.status === 'ready') return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
84
+ ...attributes,
85
+ "data-modern-distributed-ssr-build": fragment.buildMarker,
86
+ "data-modern-distributed-ssr-digest": fragment.digest,
87
+ "data-modern-distributed-ssr-status": "ready",
88
+ dangerouslySetInnerHTML: {
89
+ __html: fragment.html
90
+ }
91
+ });
92
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
93
+ ...attributes,
94
+ "data-modern-distributed-ssr-reason": fragment?.reason ?? 'missing',
95
+ "data-modern-distributed-ssr-status": "degraded",
96
+ children: fallback
97
+ });
98
+ }
99
+ function createDistributedSsrComponent({ createComponent, expose, fallback, remote }) {
100
+ let RemoteComponent;
101
+ function DeferredRemoteComponent(props) {
102
+ RemoteComponent ??= createComponent();
103
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(RemoteComponent, {
104
+ ...props
105
+ });
106
+ }
107
+ return function(props) {
108
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(DistributedSsrBoundary, {
109
+ expose: expose,
110
+ fallback: fallback,
111
+ fragmentProps: props,
112
+ remote: remote,
113
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(DeferredRemoteComponent, {
114
+ ...props
115
+ })
116
+ });
117
+ };
118
+ }
119
+ exports.DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY = __webpack_exports__.DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY;
120
+ exports.DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY = __webpack_exports__.DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY;
121
+ exports.DistributedSsrBoundary = __webpack_exports__.DistributedSsrBoundary;
122
+ exports.createDistributedSsrComponent = __webpack_exports__.createDistributedSsrComponent;
123
+ exports.distributedSsrFragmentKey = __webpack_exports__.distributedSsrFragmentKey;
124
+ exports.useDistributedSsrFragmentProps = __webpack_exports__.useDistributedSsrFragmentProps;
125
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
126
+ "DISTRIBUTED_SSR_FRAGMENTS_LOCALS_KEY",
127
+ "DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY",
128
+ "DistributedSsrBoundary",
129
+ "createDistributedSsrComponent",
130
+ "distributedSsrFragmentKey",
131
+ "useDistributedSsrFragmentProps"
132
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
133
+ Object.defineProperty(exports, '__esModule', {
134
+ value: true
135
+ });
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ var __webpack_modules__ = {
3
+ "./consume-surface" (module) {
4
+ module.exports = require("./consume-surface.js");
5
+ },
6
+ "./distributed-ssr" (module) {
7
+ module.exports = require("./distributed-ssr.js");
8
+ },
9
+ "./last-known-good" (module) {
10
+ module.exports = require("./last-known-good.js");
11
+ },
12
+ "./manifest-recovery-runtime-plugin" (module) {
13
+ module.exports = require("./manifest-recovery-runtime-plugin.js");
14
+ },
15
+ "./surface-resolution-types" (module) {
16
+ module.exports = require("./surface-resolution-types.js");
17
+ }
18
+ };
19
+ var __webpack_module_cache__ = {};
20
+ function __webpack_require__(moduleId) {
21
+ var cachedModule = __webpack_module_cache__[moduleId];
22
+ if (void 0 !== cachedModule) return cachedModule.exports;
23
+ var module = __webpack_module_cache__[moduleId] = {
24
+ exports: {}
25
+ };
26
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
27
+ return module.exports;
28
+ }
29
+ (()=>{
30
+ __webpack_require__.n = (module)=>{
31
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
32
+ __webpack_require__.d(getter, {
33
+ a: getter
34
+ });
35
+ return getter;
36
+ };
37
+ })();
38
+ (()=>{
39
+ __webpack_require__.d = (exports1, getters, values)=>{
40
+ var define = (defs, kind)=>{
41
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
42
+ enumerable: true,
43
+ [kind]: defs[key]
44
+ });
45
+ };
46
+ define(getters, "get");
47
+ define(values, "value");
48
+ };
49
+ })();
50
+ (()=>{
51
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
52
+ })();
53
+ (()=>{
54
+ __webpack_require__.r = (exports1)=>{
55
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
56
+ value: 'Module'
57
+ });
58
+ Object.defineProperty(exports1, '__esModule', {
59
+ value: true
60
+ });
61
+ };
62
+ })();
63
+ var __webpack_exports__ = {};
64
+ (()=>{
65
+ __webpack_require__.r(__webpack_exports__);
66
+ var _consume_surface__rspack_import_0 = __webpack_require__("./consume-surface");
67
+ var __rspack_reexport = {};
68
+ for(const __rspack_import_key in _consume_surface__rspack_import_0)if ([
69
+ "MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT",
70
+ "MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT",
71
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT",
72
+ "createModuleFederationFallbackTelemetry",
73
+ "toModuleFederationFallbackAttributes",
74
+ "ModuleFederationRemoteComponentContractError",
75
+ "emitModuleFederationFallbackTelemetry",
76
+ "default",
77
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER",
78
+ "classifyModuleFederationFallback",
79
+ "ModuleFederationRemoteLoadTimeoutError",
80
+ "useDistributedSsrFragmentProps",
81
+ "ModuleFederationRemoteLoadError",
82
+ "DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY"
83
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_consume_surface__rspack_import_0[__rspack_import_key];
84
+ __webpack_require__.d(__webpack_exports__, __rspack_reexport);
85
+ var _distributed_ssr__rspack_import_1 = __webpack_require__("./distributed-ssr");
86
+ var __rspack_reexport = {};
87
+ for(const __rspack_import_key in _distributed_ssr__rspack_import_1)if ([
88
+ "MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT",
89
+ "MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT",
90
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT",
91
+ "createModuleFederationFallbackTelemetry",
92
+ "toModuleFederationFallbackAttributes",
93
+ "ModuleFederationRemoteComponentContractError",
94
+ "emitModuleFederationFallbackTelemetry",
95
+ "default",
96
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER",
97
+ "classifyModuleFederationFallback",
98
+ "ModuleFederationRemoteLoadTimeoutError",
99
+ "useDistributedSsrFragmentProps",
100
+ "ModuleFederationRemoteLoadError",
101
+ "DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY"
102
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_distributed_ssr__rspack_import_1[__rspack_import_key];
103
+ __webpack_require__.d(__webpack_exports__, __rspack_reexport);
104
+ var _last_known_good__rspack_import_2 = __webpack_require__("./last-known-good");
105
+ var __rspack_reexport = {};
106
+ for(const __rspack_import_key in _last_known_good__rspack_import_2)if ([
107
+ "MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT",
108
+ "MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT",
109
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT",
110
+ "createModuleFederationFallbackTelemetry",
111
+ "toModuleFederationFallbackAttributes",
112
+ "ModuleFederationRemoteComponentContractError",
113
+ "emitModuleFederationFallbackTelemetry",
114
+ "default",
115
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER",
116
+ "classifyModuleFederationFallback",
117
+ "ModuleFederationRemoteLoadTimeoutError",
118
+ "useDistributedSsrFragmentProps",
119
+ "ModuleFederationRemoteLoadError",
120
+ "DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY"
121
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_last_known_good__rspack_import_2[__rspack_import_key];
122
+ __webpack_require__.d(__webpack_exports__, __rspack_reexport);
123
+ var _manifest_recovery_runtime_plugin__rspack_import_3 = __webpack_require__("./manifest-recovery-runtime-plugin");
124
+ var __rspack_reexport = {};
125
+ for(const __rspack_import_key in _manifest_recovery_runtime_plugin__rspack_import_3)if ([
126
+ "MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT",
127
+ "MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT",
128
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT",
129
+ "createModuleFederationFallbackTelemetry",
130
+ "toModuleFederationFallbackAttributes",
131
+ "ModuleFederationRemoteComponentContractError",
132
+ "emitModuleFederationFallbackTelemetry",
133
+ "default",
134
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER",
135
+ "classifyModuleFederationFallback",
136
+ "ModuleFederationRemoteLoadTimeoutError",
137
+ "useDistributedSsrFragmentProps",
138
+ "ModuleFederationRemoteLoadError",
139
+ "DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY"
140
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_manifest_recovery_runtime_plugin__rspack_import_3[__rspack_import_key];
141
+ __webpack_require__.d(__webpack_exports__, __rspack_reexport);
142
+ var _surface_resolution_types__rspack_import_4 = __webpack_require__("./surface-resolution-types");
143
+ var __rspack_reexport = {};
144
+ for(const __rspack_import_key in _surface_resolution_types__rspack_import_4)if ([
145
+ "MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT",
146
+ "MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT",
147
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT",
148
+ "createModuleFederationFallbackTelemetry",
149
+ "toModuleFederationFallbackAttributes",
150
+ "ModuleFederationRemoteComponentContractError",
151
+ "emitModuleFederationFallbackTelemetry",
152
+ "default",
153
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER",
154
+ "classifyModuleFederationFallback",
155
+ "ModuleFederationRemoteLoadTimeoutError",
156
+ "useDistributedSsrFragmentProps",
157
+ "ModuleFederationRemoteLoadError",
158
+ "DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY"
159
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_surface_resolution_types__rspack_import_4[__rspack_import_key];
160
+ __webpack_require__.d(__webpack_exports__, __rspack_reexport);
161
+ const MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT = 'modernjs:mf-runtime-fallback';
162
+ const MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT = 'modernjs:mf-runtime-recovery';
163
+ const DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT = '/_modern/contract-gates/runtime-fallback';
164
+ const DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER = 'x-modernjs-runtime-signal-token';
165
+ class ModuleFederationRemoteLoadTimeoutError extends Error {
166
+ constructor(remote, timeoutMs){
167
+ super(`Loading remote "${remote}" timed out after ${timeoutMs}ms`);
168
+ this.name = 'ModuleFederationRemoteLoadTimeoutError';
169
+ }
170
+ }
171
+ class ModuleFederationRemoteLoadError extends Error {
172
+ constructor(remote, attempts, causeError){
173
+ super(`Unable to load remote "${remote}" after ${attempts} attempt${attempts > 1 ? 's' : ''}: ${causeError.message}`);
174
+ this.name = 'ModuleFederationRemoteLoadError';
175
+ this.remote = remote;
176
+ this.attempts = attempts;
177
+ this.causeError = causeError;
178
+ }
179
+ }
180
+ class ModuleFederationRemoteComponentContractError extends Error {
181
+ constructor(remote, exportName){
182
+ super(`Remote "${remote}" export "${exportName}" is not a valid React component`);
183
+ this.name = 'ModuleFederationRemoteComponentContractError';
184
+ }
185
+ }
186
+ function toError(error) {
187
+ if (error instanceof Error) return error;
188
+ return new Error('string' == typeof error ? error : 'Unknown remote load error');
189
+ }
190
+ function classifyModuleFederationFallback(error) {
191
+ const normalizedError = toError(error);
192
+ if (normalizedError instanceof ModuleFederationRemoteLoadError) return classifyModuleFederationFallback(normalizedError.causeError);
193
+ if (normalizedError instanceof ModuleFederationRemoteLoadTimeoutError) return 'timeout';
194
+ if (normalizedError instanceof ModuleFederationRemoteComponentContractError) return 'contract';
195
+ const message = normalizedError.message;
196
+ if (/version|requiredVersion|singleton|share scope|shared module/i.test(message)) return 'version-skew';
197
+ if (/network|fetch|script|timeout|chunk|loading/i.test(message)) return 'network';
198
+ return 'remote-unavailable';
199
+ }
200
+ function createModuleFederationFallbackTelemetry(input) {
201
+ const error = void 0 !== input.error ? toError(input.error) : void 0;
202
+ const status = input.status ?? 'degraded';
203
+ const eventName = input.eventName ?? ('recovered' === status ? MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT : MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT);
204
+ const metadata = {
205
+ ...input.metadata ?? {},
206
+ classification: input.classification,
207
+ remote: input.remote,
208
+ status
209
+ };
210
+ if (void 0 !== input.exportName) metadata.exportName = input.exportName;
211
+ if (void 0 !== input.runtimeDigest) metadata.runtimeDigest = input.runtimeDigest;
212
+ if (void 0 !== error) {
213
+ metadata.errorName = error.name;
214
+ metadata.errorMessage = error.message;
215
+ }
216
+ const payload = {
217
+ appName: input.appName,
218
+ eventName,
219
+ metadata,
220
+ phase: input.phase,
221
+ reason: input.classification,
222
+ schemaVersion: 1
223
+ };
224
+ if (void 0 !== input.entry) payload.entry = input.entry;
225
+ if (void 0 !== input.runtimeDigest) payload.runtimeDigest = input.runtimeDigest;
226
+ return payload;
227
+ }
228
+ function toModuleFederationFallbackAttributes(payload) {
229
+ return {
230
+ 'data-mf-fallback-app': payload.appName,
231
+ 'data-mf-fallback-classification': payload.reason,
232
+ 'data-mf-fallback-phase': payload.phase,
233
+ 'data-mf-fallback-remote': String(payload.metadata.remote),
234
+ 'data-mf-fallback-status': String(payload.metadata.status),
235
+ 'data-mf-telemetry-event': payload.eventName
236
+ };
237
+ }
238
+ async function emitModuleFederationFallbackTelemetry(input, options = {}) {
239
+ const payload = createModuleFederationFallbackTelemetry(input);
240
+ if ("u" > typeof window && 'function' == typeof window.dispatchEvent && "u" > typeof CustomEvent) window.dispatchEvent(new CustomEvent(payload.eventName, {
241
+ detail: payload
242
+ }));
243
+ const shouldPost = true === options.postSignal || Boolean(options.endpoint);
244
+ if (!shouldPost) return {
245
+ dispatched: true,
246
+ posted: false
247
+ };
248
+ const fetchImpl = options.fetchImpl ?? globalThis.fetch;
249
+ if ('function' != typeof fetchImpl) return {
250
+ dispatched: true,
251
+ posted: false
252
+ };
253
+ const headers = new Headers({
254
+ 'content-type': 'application/json'
255
+ });
256
+ if (void 0 !== options.authToken && options.authToken.length > 0) headers.set(options.authHeaderName ?? DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER, options.authToken);
257
+ const response = await fetchImpl(options.endpoint ?? DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT, {
258
+ body: JSON.stringify(payload),
259
+ headers,
260
+ method: 'POST',
261
+ keepalive: true
262
+ });
263
+ return {
264
+ dispatched: true,
265
+ posted: true,
266
+ postStatus: response.status
267
+ };
268
+ }
269
+ __webpack_require__.d(__webpack_exports__, {
270
+ DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY: ()=>_distributed_ssr__rspack_import_1.DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY,
271
+ ModuleFederationRemoteComponentContractError: ()=>ModuleFederationRemoteComponentContractError,
272
+ ModuleFederationRemoteLoadError: ()=>ModuleFederationRemoteLoadError,
273
+ ModuleFederationRemoteLoadTimeoutError: ()=>ModuleFederationRemoteLoadTimeoutError,
274
+ classifyModuleFederationFallback: ()=>classifyModuleFederationFallback,
275
+ createModuleFederationFallbackTelemetry: ()=>createModuleFederationFallbackTelemetry,
276
+ emitModuleFederationFallbackTelemetry: ()=>emitModuleFederationFallbackTelemetry,
277
+ toModuleFederationFallbackAttributes: ()=>toModuleFederationFallbackAttributes,
278
+ useDistributedSsrFragmentProps: ()=>_distributed_ssr__rspack_import_1.useDistributedSsrFragmentProps
279
+ }, {
280
+ DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER: DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER,
281
+ DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT: DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT,
282
+ MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT: MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT,
283
+ MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT: MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT
284
+ });
285
+ })();
286
+ exports.DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER = __webpack_exports__.DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER;
287
+ exports.DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT = __webpack_exports__.DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT;
288
+ exports.DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY = __webpack_exports__.DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY;
289
+ exports.MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT = __webpack_exports__.MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT;
290
+ exports.MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT = __webpack_exports__.MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT;
291
+ exports.ModuleFederationRemoteComponentContractError = __webpack_exports__.ModuleFederationRemoteComponentContractError;
292
+ exports.ModuleFederationRemoteLoadError = __webpack_exports__.ModuleFederationRemoteLoadError;
293
+ exports.ModuleFederationRemoteLoadTimeoutError = __webpack_exports__.ModuleFederationRemoteLoadTimeoutError;
294
+ exports.classifyModuleFederationFallback = __webpack_exports__.classifyModuleFederationFallback;
295
+ exports.createModuleFederationFallbackTelemetry = __webpack_exports__.createModuleFederationFallbackTelemetry;
296
+ exports.emitModuleFederationFallbackTelemetry = __webpack_exports__.emitModuleFederationFallbackTelemetry;
297
+ exports.toModuleFederationFallbackAttributes = __webpack_exports__.toModuleFederationFallbackAttributes;
298
+ exports.useDistributedSsrFragmentProps = __webpack_exports__.useDistributedSsrFragmentProps;
299
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
300
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_AUTH_HEADER",
301
+ "DEFAULT_RUNTIME_FALLBACK_SIGNAL_ENDPOINT",
302
+ "DISTRIBUTED_SSR_FRAGMENT_REQUEST_LOCALS_KEY",
303
+ "MODULE_FEDERATION_FALLBACK_SIGNAL_EVENT",
304
+ "MODULE_FEDERATION_RECOVERY_SIGNAL_EVENT",
305
+ "ModuleFederationRemoteComponentContractError",
306
+ "ModuleFederationRemoteLoadError",
307
+ "ModuleFederationRemoteLoadTimeoutError",
308
+ "classifyModuleFederationFallback",
309
+ "createModuleFederationFallbackTelemetry",
310
+ "emitModuleFederationFallbackTelemetry",
311
+ "toModuleFederationFallbackAttributes",
312
+ "useDistributedSsrFragmentProps"
313
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
314
+ Object.defineProperty(exports, '__esModule', {
315
+ value: true
316
+ });