@bleedingdev/modern-js-renderer-octane 0.0.0-stage → 3.9.3-ultramodern.10
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/LICENSE +21 -0
- package/bin/octane-tsc.mjs +4 -0
- package/dist/cjs/bootstrap.js +68 -0
- package/dist/cjs/client.js +421 -0
- package/dist/cjs/entry-application.js +88 -0
- package/dist/cjs/entry-client.js +95 -0
- package/dist/cjs/entry-server.js +135 -0
- package/dist/cjs/federation-context.js +72 -0
- package/dist/cjs/federation.js +205 -0
- package/dist/cjs/i18n/I18nProvider.js +59 -0
- package/dist/cjs/i18n/LocalizedLink.js +80 -0
- package/dist/cjs/i18n/context.js +41 -0
- package/dist/cjs/i18n/index.js +83 -0
- package/dist/cjs/i18n/languageSync.js +99 -0
- package/dist/cjs/i18n/types.js +18 -0
- package/dist/cjs/i18n/useI18n.js +110 -0
- package/dist/cjs/i18n-external-snapshot.js +645 -0
- package/dist/cjs/index.js +46 -0
- package/dist/cjs/manifest.js +167 -0
- package/dist/cjs/plugin/compiler.js +122 -0
- package/dist/cjs/plugin/create.js +266 -0
- package/dist/cjs/plugin/index.js +151 -0
- package/dist/cjs/plugin/profile.js +91 -0
- package/dist/cjs/plugin/source.js +56 -0
- package/dist/cjs/router-client.js +139 -0
- package/dist/cjs/router-external-snapshot.js +291 -0
- package/dist/cjs/router-handler.js +171 -0
- package/dist/cjs/router-server-cleanup.js +46 -0
- package/dist/cjs/router-server-snapshot.js +405 -0
- package/dist/cjs/router-server.js +100 -0
- package/dist/cjs/router-snapshot.js +270 -0
- package/dist/cjs/router.js +218 -0
- package/dist/cjs/routes.js +190 -0
- package/dist/cjs/server.js +245 -0
- package/dist/cjs/typecheck.js +615 -0
- package/dist/cjs/worker-federation-context.js +63 -0
- package/dist/cjs/worker-federation-contexts.js +97 -0
- package/dist/cjs/worker-federation.js +97 -0
- package/dist/esm/bootstrap.mjs +24 -0
- package/dist/esm/client.mjs +377 -0
- package/dist/esm/entry-application.mjs +44 -0
- package/dist/esm/entry-client.mjs +57 -0
- package/dist/esm/entry-server.mjs +91 -0
- package/dist/esm/federation-context.mjs +25 -0
- package/dist/esm/federation.mjs +167 -0
- package/dist/esm/i18n/I18nProvider.mjs +21 -0
- package/dist/esm/i18n/LocalizedLink.mjs +42 -0
- package/dist/esm/i18n/context.mjs +3 -0
- package/dist/esm/i18n/index.mjs +8 -0
- package/dist/esm/i18n/languageSync.mjs +61 -0
- package/dist/esm/i18n/types.mjs +0 -0
- package/dist/esm/i18n/useI18n.mjs +72 -0
- package/dist/esm/i18n-external-snapshot.mjs +576 -0
- package/dist/esm/index.mjs +8 -0
- package/dist/esm/manifest.mjs +117 -0
- package/dist/esm/router-client.mjs +98 -0
- package/dist/esm/router-external-snapshot.mjs +244 -0
- package/dist/esm/router-handler.mjs +133 -0
- package/dist/esm/router-server-cleanup.mjs +8 -0
- package/dist/esm/router-server-snapshot.mjs +367 -0
- package/dist/esm/router-server.mjs +11 -0
- package/dist/esm/router-snapshot.mjs +199 -0
- package/dist/esm/router.mjs +94 -0
- package/dist/esm/routes.mjs +134 -0
- package/dist/esm/server.mjs +204 -0
- package/dist/esm/worker-federation-context.mjs +19 -0
- package/dist/esm/worker-federation-contexts.mjs +47 -0
- package/dist/esm/worker-federation.mjs +59 -0
- package/dist/esm-node/bootstrap.mjs +24 -0
- package/dist/esm-node/manifest.mjs +117 -0
- package/dist/esm-node/plugin/compiler.mjs +67 -0
- package/dist/esm-node/plugin/create.mjs +228 -0
- package/dist/esm-node/plugin/index.mjs +103 -0
- package/dist/esm-node/plugin/profile.mjs +53 -0
- package/dist/esm-node/plugin/source.mjs +7 -0
- package/dist/esm-node/typecheck.mjs +560 -0
- package/dist/types/bootstrap.d.ts +10 -0
- package/dist/types/client.d.ts +40 -0
- package/dist/types/entry-application.d.ts +19 -0
- package/dist/types/entry-client.d.ts +10 -0
- package/dist/types/entry-server.d.ts +14 -0
- package/dist/types/federation-context.d.ts +28 -0
- package/dist/types/federation.d.ts +20 -0
- package/dist/types/i18n/I18nProvider.d.ts +8 -0
- package/dist/types/i18n/LocalizedLink.d.ts +14 -0
- package/dist/types/i18n/context.d.ts +9 -0
- package/dist/types/i18n/index.d.ts +9 -0
- package/dist/types/i18n/languageSync.d.ts +26 -0
- package/dist/types/i18n/types.d.ts +34 -0
- package/dist/types/i18n/useI18n.d.ts +21 -0
- package/dist/types/i18n-external-snapshot.d.ts +43 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/manifest.d.ts +34 -0
- package/dist/types/plugin/compiler-manifest.d.cts +10 -0
- package/dist/types/plugin/compiler.d.ts +5 -0
- package/dist/types/plugin/create.d.ts +23 -0
- package/dist/types/plugin/index.d.ts +3 -0
- package/dist/types/plugin/profile.d.ts +2 -0
- package/dist/types/plugin/source.d.ts +1 -0
- package/dist/types/plugin/svg-component-template.d.cts +6 -0
- package/dist/types/router-client.d.ts +12 -0
- package/dist/types/router-external-snapshot.d.ts +10 -0
- package/dist/types/router-handler.d.ts +13 -0
- package/dist/types/router-server-cleanup.d.ts +3 -0
- package/dist/types/router-server-snapshot.d.ts +15 -0
- package/dist/types/router-server.d.ts +11 -0
- package/dist/types/router-snapshot.d.ts +14 -0
- package/dist/types/router.d.ts +30 -0
- package/dist/types/routes.d.ts +20 -0
- package/dist/types/server.d.ts +47 -0
- package/dist/types/typecheck.d.ts +31 -0
- package/dist/types/worker-federation-context.d.ts +34 -0
- package/dist/types/worker-federation-contexts.d.ts +25 -0
- package/dist/types/worker-federation.d.ts +20 -0
- package/package.json +278 -4
- package/src/bootstrap.ts +60 -0
- package/src/client.ts +568 -0
- package/src/entry-application.ts +76 -0
- package/src/entry-client.ts +90 -0
- package/src/entry-server.ts +153 -0
- package/src/federation-context.ts +53 -0
- package/src/federation.ts +307 -0
- package/src/i18n/I18nProvider.ts +47 -0
- package/src/i18n/LocalizedLink.ts +86 -0
- package/src/i18n/context.ts +12 -0
- package/src/i18n/index.ts +31 -0
- package/src/i18n/languageSync.ts +132 -0
- package/src/i18n/types.ts +36 -0
- package/src/i18n/useI18n.ts +119 -0
- package/src/i18n-external-snapshot.ts +803 -0
- package/src/index.ts +10 -0
- package/src/manifest.ts +253 -0
- package/src/plugin/compiler-manifest.cjs +204 -0
- package/src/plugin/compiler.ts +104 -0
- package/src/plugin/create.ts +273 -0
- package/src/plugin/index.ts +107 -0
- package/src/plugin/profile.ts +50 -0
- package/src/plugin/source.ts +16 -0
- package/src/plugin/svg-component-template.cjs +17 -0
- package/src/router-client.ts +144 -0
- package/src/router-external-snapshot.ts +363 -0
- package/src/router-handler.ts +185 -0
- package/src/router-server-cleanup.ts +11 -0
- package/src/router-server-snapshot.ts +564 -0
- package/src/router-server.ts +21 -0
- package/src/router-snapshot.ts +251 -0
- package/src/router.ts +192 -0
- package/src/routes.ts +274 -0
- package/src/server.ts +340 -0
- package/src/typecheck.ts +723 -0
- package/src/worker-federation-context.ts +51 -0
- package/src/worker-federation-contexts.ts +91 -0
- package/src/worker-federation.ts +120 -0
- package/README.md +0 -3
|
@@ -0,0 +1,95 @@
|
|
|
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
|
+
startNativeClient: ()=>startNativeClient
|
|
32
|
+
});
|
|
33
|
+
const entry_client_namespaceObject = require("@modern-js/renderer-core/entry-client");
|
|
34
|
+
const router_namespaceObject = require("@modern-js/renderer-core/router");
|
|
35
|
+
const external_client_js_namespaceObject = require("./client.js");
|
|
36
|
+
const external_entry_application_js_namespaceObject = require("./entry-application.js");
|
|
37
|
+
const external_router_client_js_namespaceObject = require("./router-client.js");
|
|
38
|
+
const LocalizedRouterRoot = (0, external_entry_application_js_namespaceObject.localizedRouterRoot)(external_router_client_js_namespaceObject.OctaneRouterRoot);
|
|
39
|
+
function startNativeClient(options) {
|
|
40
|
+
const { nativeHydrationBuildId } = options;
|
|
41
|
+
(0, entry_client_namespaceObject.startNativeClientEntry)(options, {
|
|
42
|
+
readBootstrap: (document, identity)=>(0, external_client_js_namespaceObject.readOctaneDocumentBootstrap)(document, identity, nativeHydrationBuildId),
|
|
43
|
+
createRouter: (application, routerOptions)=>(0, router_namespaceObject.createNativeRouter)(application, routerOptions, external_entry_application_js_namespaceObject.octaneRouterFactory),
|
|
44
|
+
disposeRouter: (router)=>router.history.destroy(),
|
|
45
|
+
async prepareRouter (router, hydrating, signal) {
|
|
46
|
+
if (hydrating) await (0, external_router_client_js_namespaceObject.prepareOctaneRouterHydration)(router, {
|
|
47
|
+
signal
|
|
48
|
+
});
|
|
49
|
+
else await router.load();
|
|
50
|
+
},
|
|
51
|
+
async start ({ root, identity, bootstrap, signal, load }) {
|
|
52
|
+
const application = {
|
|
53
|
+
container: root,
|
|
54
|
+
identity,
|
|
55
|
+
nativeHydrationBuildId,
|
|
56
|
+
federation: options.federation,
|
|
57
|
+
workerFederation: options.workerFederation,
|
|
58
|
+
documentId: bootstrap?.documentId,
|
|
59
|
+
signal,
|
|
60
|
+
load: async ()=>{
|
|
61
|
+
const view = await load();
|
|
62
|
+
if ('component' === view.kind) return {
|
|
63
|
+
default: (0, external_entry_application_js_namespaceObject.componentView)(view.component, view.i18n)
|
|
64
|
+
};
|
|
65
|
+
return view.i18n ? {
|
|
66
|
+
default: LocalizedRouterRoot,
|
|
67
|
+
props: {
|
|
68
|
+
router: view.router,
|
|
69
|
+
i18n: view.i18n
|
|
70
|
+
}
|
|
71
|
+
} : {
|
|
72
|
+
default: external_router_client_js_namespaceObject.OctaneRouterRoot,
|
|
73
|
+
props: {
|
|
74
|
+
router: view.router
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
const handle = bootstrap?.hydrating ? await (0, external_client_js_namespaceObject.hydrateOctaneApplication)({
|
|
80
|
+
...application,
|
|
81
|
+
documentIdentity: bootstrap.identity,
|
|
82
|
+
documentId: bootstrap.documentId,
|
|
83
|
+
documentNativeHydrationBuildId: bootstrap.nativeHydrationBuildId
|
|
84
|
+
}) : await (0, external_client_js_namespaceObject.mountOctaneApplication)(application);
|
|
85
|
+
return ()=>handle.dispose();
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
exports.startNativeClient = __webpack_exports__.startNativeClient;
|
|
90
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
91
|
+
"startNativeClient"
|
|
92
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
93
|
+
Object.defineProperty(exports, '__esModule', {
|
|
94
|
+
value: true
|
|
95
|
+
});
|
|
@@ -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
|
+
createNativeServerEntry: ()=>createNativeServerEntry,
|
|
32
|
+
createNativeWorkerFederationRuntime: ()=>external_worker_federation_js_namespaceObject.createNativeWorkerFederationRuntime,
|
|
33
|
+
withOctaneDocumentFields: ()=>withOctaneDocumentFields
|
|
34
|
+
});
|
|
35
|
+
const data_namespaceObject = require("@modern-js/renderer-core/data");
|
|
36
|
+
const entry_server_namespaceObject = require("@modern-js/renderer-core/entry-server");
|
|
37
|
+
const router_namespaceObject = require("@modern-js/renderer-core/router");
|
|
38
|
+
const external_entry_application_js_namespaceObject = require("./entry-application.js");
|
|
39
|
+
const external_manifest_js_namespaceObject = require("./manifest.js");
|
|
40
|
+
const external_router_server_js_namespaceObject = require("./router-server.js");
|
|
41
|
+
const external_server_js_namespaceObject = require("./server.js");
|
|
42
|
+
const external_worker_federation_js_namespaceObject = require("./worker-federation.js");
|
|
43
|
+
const OCTANE_DOCUMENT_FIELDS = new Set([
|
|
44
|
+
'content-language',
|
|
45
|
+
'content-location',
|
|
46
|
+
'content-disposition'
|
|
47
|
+
]);
|
|
48
|
+
function withOctaneDocumentFields(policy, responseHeaders) {
|
|
49
|
+
const fields = (0, data_namespaceObject.collectDataHeaders)(responseHeaders).filter(([name])=>OCTANE_DOCUMENT_FIELDS.has(name.toLowerCase()));
|
|
50
|
+
return fields.length ? {
|
|
51
|
+
...policy,
|
|
52
|
+
headers: [
|
|
53
|
+
...policy.headers,
|
|
54
|
+
...fields
|
|
55
|
+
]
|
|
56
|
+
} : policy;
|
|
57
|
+
}
|
|
58
|
+
const LocalizedRouterServer = (0, external_entry_application_js_namespaceObject.localizedRouterRoot)(external_router_server_js_namespaceObject.OctaneRouterServer);
|
|
59
|
+
function createNativeServerEntry(options) {
|
|
60
|
+
return (0, entry_server_namespaceObject.createNativeServerEntry)(options, {
|
|
61
|
+
document: (document, nativeManifest, identity)=>({
|
|
62
|
+
...document,
|
|
63
|
+
nativeHydrationBuildId: (0, external_manifest_js_namespaceObject.validateOctaneModuleManifest)(nativeManifest, identity).nativeHydrationBuildId
|
|
64
|
+
}),
|
|
65
|
+
run: (_session, callback)=>callback(),
|
|
66
|
+
respond: (_session, response)=>response,
|
|
67
|
+
createRouter: (application, routerOptions)=>(0, router_namespaceObject.createNativeRouter)(application, routerOptions, external_entry_application_js_namespaceObject.octaneRouterFactory),
|
|
68
|
+
renderCSR: ({ session }, document)=>(0, external_server_js_namespaceObject.renderOctaneCSRDocument)({
|
|
69
|
+
session,
|
|
70
|
+
document
|
|
71
|
+
}),
|
|
72
|
+
renderComponent: ({ session, workerFederation }, component, document, i18n)=>(0, external_server_js_namespaceObject.renderOctaneApplication)({
|
|
73
|
+
session,
|
|
74
|
+
App: (0, external_entry_application_js_namespaceObject.componentView)(component, i18n),
|
|
75
|
+
document,
|
|
76
|
+
federation: options.federation,
|
|
77
|
+
workerFederation,
|
|
78
|
+
workerFederationLocale: options.workerFederationLocale
|
|
79
|
+
}),
|
|
80
|
+
async renderRoutes ({ request, context: { session, workerFederation }, router, outcomes, document, forbiddenValues, i18n }) {
|
|
81
|
+
const response = await (0, external_router_server_js_namespaceObject.createOctaneRequestHandler)({
|
|
82
|
+
request,
|
|
83
|
+
session,
|
|
84
|
+
createRouter: ()=>router,
|
|
85
|
+
serialization: {
|
|
86
|
+
forbiddenValues
|
|
87
|
+
}
|
|
88
|
+
})(async ({ router, responseHeaders })=>{
|
|
89
|
+
const metadata = (0, data_namespaceObject.mergeDataResponseMetadata)(outcomes, {
|
|
90
|
+
status: (0, external_router_server_js_namespaceObject.getSsrStatus)(router)
|
|
91
|
+
});
|
|
92
|
+
const policy = (0, data_namespaceObject.dataMetadataToDocumentPolicy)({
|
|
93
|
+
...metadata,
|
|
94
|
+
headers: (0, data_namespaceObject.mergeHeaderFields)((0, data_namespaceObject.collectDataHeaders)(responseHeaders), metadata.headers)
|
|
95
|
+
});
|
|
96
|
+
session.resolveResponse(withOctaneDocumentFields(policy, responseHeaders));
|
|
97
|
+
const rendered = await (0, external_server_js_namespaceObject.renderOctaneApplication)({
|
|
98
|
+
session,
|
|
99
|
+
...i18n ? {
|
|
100
|
+
App: LocalizedRouterServer,
|
|
101
|
+
props: {
|
|
102
|
+
router,
|
|
103
|
+
i18n
|
|
104
|
+
}
|
|
105
|
+
} : {
|
|
106
|
+
App: external_router_server_js_namespaceObject.OctaneRouterServer,
|
|
107
|
+
props: {
|
|
108
|
+
router
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
document,
|
|
112
|
+
federation: options.federation,
|
|
113
|
+
workerFederation,
|
|
114
|
+
workerFederationLocale: options.workerFederationLocale,
|
|
115
|
+
router
|
|
116
|
+
});
|
|
117
|
+
return (0, external_router_server_js_namespaceObject.createSsrStreamResponse)(router, rendered);
|
|
118
|
+
});
|
|
119
|
+
return session.committedPolicy ? response : (0, data_namespaceObject.mergeDataResponseIntoResponse)(response, (0, data_namespaceObject.mergeDataResponseMetadata)(outcomes, {
|
|
120
|
+
status: response.status
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
exports.createNativeServerEntry = __webpack_exports__.createNativeServerEntry;
|
|
126
|
+
exports.createNativeWorkerFederationRuntime = __webpack_exports__.createNativeWorkerFederationRuntime;
|
|
127
|
+
exports.withOctaneDocumentFields = __webpack_exports__.withOctaneDocumentFields;
|
|
128
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
129
|
+
"createNativeServerEntry",
|
|
130
|
+
"createNativeWorkerFederationRuntime",
|
|
131
|
+
"withOctaneDocumentFields"
|
|
132
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
133
|
+
Object.defineProperty(exports, '__esModule', {
|
|
134
|
+
value: true
|
|
135
|
+
});
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
FederationApplication: ()=>FederationApplication,
|
|
32
|
+
FederationContext: ()=>FederationContext,
|
|
33
|
+
FederationRoot: ()=>FederationRoot,
|
|
34
|
+
createFederationScope: ()=>createFederationScope
|
|
35
|
+
});
|
|
36
|
+
const federation_namespaceObject = require("@modern-js/renderer-core/federation");
|
|
37
|
+
const external_octane_namespaceObject = require("octane");
|
|
38
|
+
const FederationContext = (0, external_octane_namespaceObject.createContext)(null);
|
|
39
|
+
function createFederationScope(binding, server, nonce) {
|
|
40
|
+
return {
|
|
41
|
+
instance: (0, federation_namespaceObject.getFederationHost)(binding),
|
|
42
|
+
server,
|
|
43
|
+
...void 0 === nonce ? {} : {
|
|
44
|
+
nonce
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function FederationRoot(props) {
|
|
49
|
+
return (0, external_octane_namespaceObject.createElement)(FederationContext, {
|
|
50
|
+
value: props.scope,
|
|
51
|
+
children: props.children
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function FederationApplication(props) {
|
|
55
|
+
return (0, external_octane_namespaceObject.createElement)(FederationRoot, {
|
|
56
|
+
scope: props.scope,
|
|
57
|
+
children: (0, external_octane_namespaceObject.createElement)(props.application.default, props.application.props)
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
exports.FederationApplication = __webpack_exports__.FederationApplication;
|
|
61
|
+
exports.FederationContext = __webpack_exports__.FederationContext;
|
|
62
|
+
exports.FederationRoot = __webpack_exports__.FederationRoot;
|
|
63
|
+
exports.createFederationScope = __webpack_exports__.createFederationScope;
|
|
64
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
65
|
+
"FederationApplication",
|
|
66
|
+
"FederationContext",
|
|
67
|
+
"FederationRoot",
|
|
68
|
+
"createFederationScope"
|
|
69
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
70
|
+
Object.defineProperty(exports, '__esModule', {
|
|
71
|
+
value: true
|
|
72
|
+
});
|
|
@@ -0,0 +1,205 @@
|
|
|
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
|
+
federatedComponent: ()=>federatedComponent
|
|
32
|
+
});
|
|
33
|
+
const federation_namespaceObject = require("@modern-js/renderer-core/federation");
|
|
34
|
+
const external_octane_namespaceObject = require("octane");
|
|
35
|
+
const external_federation_context_js_namespaceObject = require("./federation-context.js");
|
|
36
|
+
const context_js_namespaceObject = require("./i18n/context.js");
|
|
37
|
+
const external_worker_federation_context_js_namespaceObject = require("./worker-federation-context.js");
|
|
38
|
+
const external_worker_federation_contexts_js_namespaceObject = require("./worker-federation-contexts.js");
|
|
39
|
+
function withTimeout(promise, timeout, label) {
|
|
40
|
+
if (void 0 === timeout) return promise;
|
|
41
|
+
return new Promise((resolve, reject)=>{
|
|
42
|
+
const timer = setTimeout(()=>reject(new Error(`Remote module ${label} did not load within ${timeout}ms`)), timeout);
|
|
43
|
+
timer.unref?.();
|
|
44
|
+
promise.then((value)=>{
|
|
45
|
+
clearTimeout(timer);
|
|
46
|
+
resolve(value);
|
|
47
|
+
}, (error)=>{
|
|
48
|
+
clearTimeout(timer);
|
|
49
|
+
reject(error);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const publisherRegistrationEffectSlot = Symbol((0, external_octane_namespaceObject.hookSlots)(1));
|
|
54
|
+
function federatedComponent(remote, options = {}) {
|
|
55
|
+
if ('string' == typeof remote ? !/^[^/]+\/.+/u.test(remote) : 'function' != typeof remote) throw new TypeError("federatedComponent requires a remote id such as 'remote/Widget' or a loader");
|
|
56
|
+
if (void 0 !== options.timeout && (!Number.isFinite(options.timeout) || options.timeout <= 0)) throw new TypeError('federatedComponent timeout must be a positive number of milliseconds');
|
|
57
|
+
const id = 'string' == typeof remote ? remote : void 0;
|
|
58
|
+
const standalone = {
|
|
59
|
+
instance: void 0,
|
|
60
|
+
server: "u" < typeof document
|
|
61
|
+
};
|
|
62
|
+
const components = new WeakMap();
|
|
63
|
+
const workerOwners = new WeakMap();
|
|
64
|
+
return (props)=>{
|
|
65
|
+
const context = (0, external_octane_namespaceObject.useContext)(external_federation_context_js_namespaceObject.FederationContext) ?? standalone;
|
|
66
|
+
const worker = (0, external_octane_namespaceObject.useContext)(external_worker_federation_context_js_namespaceObject.WorkerFederationContext);
|
|
67
|
+
const language = worker ? (0, external_octane_namespaceObject.useContext)(context_js_namespaceObject.I18nContext)?.language ?? worker.locale : void 0;
|
|
68
|
+
const contextKeys = worker ? (0, external_worker_federation_contexts_js_namespaceObject.useOctaneWorkerContextKeys)(options.contextKeys) : void 0;
|
|
69
|
+
let owner = context;
|
|
70
|
+
if (worker) {
|
|
71
|
+
let scopes = workerOwners.get(context);
|
|
72
|
+
if (!scopes) workerOwners.set(context, scopes = new WeakMap());
|
|
73
|
+
let variants = scopes.get(worker);
|
|
74
|
+
if (!variants) scopes.set(worker, variants = new Map());
|
|
75
|
+
const key = JSON.stringify([
|
|
76
|
+
context.server ? language : void 0,
|
|
77
|
+
contextKeys
|
|
78
|
+
]);
|
|
79
|
+
let variant = variants.get(key);
|
|
80
|
+
if (!variant) variants.set(key, variant = {});
|
|
81
|
+
owner = variant;
|
|
82
|
+
}
|
|
83
|
+
let Remote = components.get(owner);
|
|
84
|
+
if (!Remote) {
|
|
85
|
+
Remote = (0, external_octane_namespaceObject.lazy)(async ()=>{
|
|
86
|
+
try {
|
|
87
|
+
if (context.server && !id) throw new Error('A federatedComponent loader renders in the browser only; use a remote id to server-render it');
|
|
88
|
+
if (worker) {
|
|
89
|
+
if (!id || !language) throw new Error('Worker federation requires a remote id and the owning entry locale');
|
|
90
|
+
const separator = id.indexOf('/');
|
|
91
|
+
const remoteName = id.slice(0, separator);
|
|
92
|
+
const expose = `./${id.slice(separator + 1)}`;
|
|
93
|
+
const controller = new AbortController();
|
|
94
|
+
const signal = worker.signal ? AbortSignal.any([
|
|
95
|
+
worker.signal,
|
|
96
|
+
controller.signal
|
|
97
|
+
]) : controller.signal;
|
|
98
|
+
const timeout = options.timeout ?? (context.server ? 3000 : void 0);
|
|
99
|
+
let admitted;
|
|
100
|
+
try {
|
|
101
|
+
admitted = await withTimeout(worker.transport.admit({
|
|
102
|
+
remote: remoteName,
|
|
103
|
+
expose,
|
|
104
|
+
locale: language,
|
|
105
|
+
signal
|
|
106
|
+
}), timeout, id);
|
|
107
|
+
} finally{
|
|
108
|
+
controller.abort();
|
|
109
|
+
}
|
|
110
|
+
const BrowserRemote = (0, external_octane_namespaceObject.lazy)(async ()=>{
|
|
111
|
+
const { module, assets } = await (0, federation_namespaceObject.loadFederatedModule)(context.instance, id);
|
|
112
|
+
if ('function' != typeof module?.default) throw new TypeError('A federated Octane module must default-export a native component');
|
|
113
|
+
const component = module.default;
|
|
114
|
+
const Loaded = (props, scope, extra)=>{
|
|
115
|
+
for (const href of assets?.css ?? [])(0, external_octane_namespaceObject.preinit)(href, {
|
|
116
|
+
as: 'style',
|
|
117
|
+
precedence: 'federated',
|
|
118
|
+
...void 0 === context.nonce ? {} : {
|
|
119
|
+
nonce: context.nonce
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
return component(props, scope, extra);
|
|
123
|
+
};
|
|
124
|
+
return {
|
|
125
|
+
default: Loaded
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
const boundary = (0, external_octane_namespaceObject.externalSnapshotBoundary)({
|
|
129
|
+
authority: admitted.coordinate.native,
|
|
130
|
+
component: BrowserRemote,
|
|
131
|
+
contextKeys,
|
|
132
|
+
timeoutMs: timeout,
|
|
133
|
+
async snapshot (request, signal) {
|
|
134
|
+
const response = await worker.transport.request({
|
|
135
|
+
remote: remoteName,
|
|
136
|
+
expose,
|
|
137
|
+
locale: language,
|
|
138
|
+
payload: (0, external_octane_namespaceObject.serializeExternalSnapshotRequest)(request),
|
|
139
|
+
signal
|
|
140
|
+
});
|
|
141
|
+
return (0, external_octane_namespaceObject.decodeExternalSnapshot)(response.payload);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
const Loaded = (props)=>{
|
|
145
|
+
for (const href of admitted.styles)(0, external_octane_namespaceObject.preinit)(href, {
|
|
146
|
+
as: 'style',
|
|
147
|
+
precedence: 'federated',
|
|
148
|
+
...void 0 === context.nonce ? {} : {
|
|
149
|
+
nonce: context.nonce
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
return (0, external_octane_namespaceObject.createElement)(boundary, props);
|
|
153
|
+
};
|
|
154
|
+
return {
|
|
155
|
+
default: Loaded
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
const { module, assets } = await withTimeout(Promise.resolve().then(()=>id ? (0, federation_namespaceObject.loadFederatedModule)(context.instance, id) : remote().then((module)=>({
|
|
159
|
+
module,
|
|
160
|
+
assets: void 0
|
|
161
|
+
}))), options.timeout ?? (context.server ? 3000 : void 0), id ?? 'loader');
|
|
162
|
+
if ('function' != typeof module?.default) throw new TypeError('A federated Octane module must default-export a native component');
|
|
163
|
+
if (context.server && !assets) throw new Error(`Cannot server-render ${id}: the host has no browser assets for this remote`);
|
|
164
|
+
const component = (0, external_octane_namespaceObject.publisherBoundary)(module.default, {
|
|
165
|
+
publisherKey: id ?? 'ultramodern:browser-loader'
|
|
166
|
+
});
|
|
167
|
+
const Loaded = (props)=>{
|
|
168
|
+
(0, external_octane_namespaceObject.useEffect)(()=>{
|
|
169
|
+
if (context.server || !id || !context.instance) return;
|
|
170
|
+
const register = Reflect.get(context.instance, Symbol.for('ultramodern.federation.browser-dev-boundary.v1'));
|
|
171
|
+
if ('function' != typeof register) return;
|
|
172
|
+
return register(id, module.default, component);
|
|
173
|
+
}, [], publisherRegistrationEffectSlot);
|
|
174
|
+
for (const href of assets?.css ?? [])(0, external_octane_namespaceObject.preinit)(href, {
|
|
175
|
+
as: 'style',
|
|
176
|
+
precedence: 'federated',
|
|
177
|
+
...void 0 === context.nonce ? {} : {
|
|
178
|
+
nonce: context.nonce
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
return (0, external_octane_namespaceObject.createElement)(component, props);
|
|
182
|
+
};
|
|
183
|
+
return {
|
|
184
|
+
default: Loaded
|
|
185
|
+
};
|
|
186
|
+
} catch (error) {
|
|
187
|
+
if (!context.server) components.delete(owner);
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
components.set(owner, Remote);
|
|
192
|
+
}
|
|
193
|
+
return (0, external_octane_namespaceObject.createElement)(external_octane_namespaceObject.Suspense, {
|
|
194
|
+
fallback: options.fallback,
|
|
195
|
+
children: (0, external_octane_namespaceObject.createElement)(Remote, props)
|
|
196
|
+
});
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
exports.federatedComponent = __webpack_exports__.federatedComponent;
|
|
200
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
201
|
+
"federatedComponent"
|
|
202
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
203
|
+
Object.defineProperty(exports, '__esModule', {
|
|
204
|
+
value: true
|
|
205
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
I18nProvider: ()=>I18nProvider
|
|
32
|
+
});
|
|
33
|
+
const external_octane_namespaceObject = require("octane");
|
|
34
|
+
const external_context_js_namespaceObject = require("./context.js");
|
|
35
|
+
const languageStoreSlot = Symbol((0, external_octane_namespaceObject.hookSlots)(1));
|
|
36
|
+
function I18nProvider(props) {
|
|
37
|
+
const instance = props.instance;
|
|
38
|
+
const language = (0, external_octane_namespaceObject.useSyncExternalStore)((notify)=>{
|
|
39
|
+
instance.on?.('languageChanged', notify);
|
|
40
|
+
return ()=>instance.off?.('languageChanged', notify);
|
|
41
|
+
}, ()=>instance.language, ()=>instance.language, languageStoreSlot);
|
|
42
|
+
const value = {
|
|
43
|
+
instance: props.instance,
|
|
44
|
+
languages: props.languages,
|
|
45
|
+
localisedUrls: props.localisedUrls,
|
|
46
|
+
language
|
|
47
|
+
};
|
|
48
|
+
return (0, external_octane_namespaceObject.createElement)(external_context_js_namespaceObject.I18nContext, {
|
|
49
|
+
value,
|
|
50
|
+
children: props.children
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
exports.I18nProvider = __webpack_exports__.I18nProvider;
|
|
54
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
55
|
+
"I18nProvider"
|
|
56
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
57
|
+
Object.defineProperty(exports, '__esModule', {
|
|
58
|
+
value: true
|
|
59
|
+
});
|
|
@@ -0,0 +1,80 @@
|
|
|
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
|
+
LocalizedLink: ()=>LocalizedLink
|
|
32
|
+
});
|
|
33
|
+
const paths_namespaceObject = require("@modern-js/i18n-runtime-extensions/paths");
|
|
34
|
+
const external_octane_namespaceObject = require("octane");
|
|
35
|
+
const external_router_js_namespaceObject = require("../router.js");
|
|
36
|
+
const external_context_js_namespaceObject = require("./context.js");
|
|
37
|
+
const targetLocationSlot = Symbol((0, external_octane_namespaceObject.hookSlots)(1));
|
|
38
|
+
function LocalizedLink(props) {
|
|
39
|
+
const context = (0, external_octane_namespaceObject.useContext)(external_context_js_namespaceObject.I18nContext);
|
|
40
|
+
if (!context) throw new Error('[renderer-octane] LocalizedLink was used outside of an I18nProvider.');
|
|
41
|
+
const router = (0, external_router_js_namespaceObject.useRouter)();
|
|
42
|
+
const location = (0, external_router_js_namespaceObject.useLocation)(void 0, targetLocationSlot);
|
|
43
|
+
const { language: requestedLanguage, to, children, ...options } = props;
|
|
44
|
+
const language = void 0 === requestedLanguage ? context.language : (0, paths_namespaceObject.configuredLanguage)(requestedLanguage, context.languages);
|
|
45
|
+
const externalTarget = to.startsWith('//') || URL.canParse(to);
|
|
46
|
+
const pathname = externalTarget ? to : (0, paths_namespaceObject.localizePath)(router.buildLocation({
|
|
47
|
+
to,
|
|
48
|
+
from: options.from,
|
|
49
|
+
params: options.params,
|
|
50
|
+
unsafeRelative: options.unsafeRelative,
|
|
51
|
+
_fromLocation: location
|
|
52
|
+
}).pathname, language, {
|
|
53
|
+
languages: [
|
|
54
|
+
...context.languages
|
|
55
|
+
],
|
|
56
|
+
localisedUrls: context.localisedUrls
|
|
57
|
+
});
|
|
58
|
+
return (0, external_octane_namespaceObject.createElement)(external_router_js_namespaceObject.Link, {
|
|
59
|
+
...options,
|
|
60
|
+
to: router.options.rewrite ? to : pathname,
|
|
61
|
+
...router.options.rewrite && !externalTarget ? {
|
|
62
|
+
mask: {
|
|
63
|
+
to: pathname,
|
|
64
|
+
inheritSearch: true,
|
|
65
|
+
hash: options.hash,
|
|
66
|
+
state: options.state
|
|
67
|
+
}
|
|
68
|
+
} : {},
|
|
69
|
+
...language === context.language ? {} : {
|
|
70
|
+
hreflang: language
|
|
71
|
+
}
|
|
72
|
+
}, children);
|
|
73
|
+
}
|
|
74
|
+
exports.LocalizedLink = __webpack_exports__.LocalizedLink;
|
|
75
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
76
|
+
"LocalizedLink"
|
|
77
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
78
|
+
Object.defineProperty(exports, '__esModule', {
|
|
79
|
+
value: true
|
|
80
|
+
});
|