@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.
Files changed (154) hide show
  1. package/LICENSE +21 -0
  2. package/bin/octane-tsc.mjs +4 -0
  3. package/dist/cjs/bootstrap.js +68 -0
  4. package/dist/cjs/client.js +421 -0
  5. package/dist/cjs/entry-application.js +88 -0
  6. package/dist/cjs/entry-client.js +95 -0
  7. package/dist/cjs/entry-server.js +135 -0
  8. package/dist/cjs/federation-context.js +72 -0
  9. package/dist/cjs/federation.js +205 -0
  10. package/dist/cjs/i18n/I18nProvider.js +59 -0
  11. package/dist/cjs/i18n/LocalizedLink.js +80 -0
  12. package/dist/cjs/i18n/context.js +41 -0
  13. package/dist/cjs/i18n/index.js +83 -0
  14. package/dist/cjs/i18n/languageSync.js +99 -0
  15. package/dist/cjs/i18n/types.js +18 -0
  16. package/dist/cjs/i18n/useI18n.js +110 -0
  17. package/dist/cjs/i18n-external-snapshot.js +645 -0
  18. package/dist/cjs/index.js +46 -0
  19. package/dist/cjs/manifest.js +167 -0
  20. package/dist/cjs/plugin/compiler.js +122 -0
  21. package/dist/cjs/plugin/create.js +266 -0
  22. package/dist/cjs/plugin/index.js +151 -0
  23. package/dist/cjs/plugin/profile.js +91 -0
  24. package/dist/cjs/plugin/source.js +56 -0
  25. package/dist/cjs/router-client.js +139 -0
  26. package/dist/cjs/router-external-snapshot.js +291 -0
  27. package/dist/cjs/router-handler.js +171 -0
  28. package/dist/cjs/router-server-cleanup.js +46 -0
  29. package/dist/cjs/router-server-snapshot.js +405 -0
  30. package/dist/cjs/router-server.js +100 -0
  31. package/dist/cjs/router-snapshot.js +270 -0
  32. package/dist/cjs/router.js +218 -0
  33. package/dist/cjs/routes.js +190 -0
  34. package/dist/cjs/server.js +245 -0
  35. package/dist/cjs/typecheck.js +615 -0
  36. package/dist/cjs/worker-federation-context.js +63 -0
  37. package/dist/cjs/worker-federation-contexts.js +97 -0
  38. package/dist/cjs/worker-federation.js +97 -0
  39. package/dist/esm/bootstrap.mjs +24 -0
  40. package/dist/esm/client.mjs +377 -0
  41. package/dist/esm/entry-application.mjs +44 -0
  42. package/dist/esm/entry-client.mjs +57 -0
  43. package/dist/esm/entry-server.mjs +91 -0
  44. package/dist/esm/federation-context.mjs +25 -0
  45. package/dist/esm/federation.mjs +167 -0
  46. package/dist/esm/i18n/I18nProvider.mjs +21 -0
  47. package/dist/esm/i18n/LocalizedLink.mjs +42 -0
  48. package/dist/esm/i18n/context.mjs +3 -0
  49. package/dist/esm/i18n/index.mjs +8 -0
  50. package/dist/esm/i18n/languageSync.mjs +61 -0
  51. package/dist/esm/i18n/types.mjs +0 -0
  52. package/dist/esm/i18n/useI18n.mjs +72 -0
  53. package/dist/esm/i18n-external-snapshot.mjs +576 -0
  54. package/dist/esm/index.mjs +8 -0
  55. package/dist/esm/manifest.mjs +117 -0
  56. package/dist/esm/router-client.mjs +98 -0
  57. package/dist/esm/router-external-snapshot.mjs +244 -0
  58. package/dist/esm/router-handler.mjs +133 -0
  59. package/dist/esm/router-server-cleanup.mjs +8 -0
  60. package/dist/esm/router-server-snapshot.mjs +367 -0
  61. package/dist/esm/router-server.mjs +11 -0
  62. package/dist/esm/router-snapshot.mjs +199 -0
  63. package/dist/esm/router.mjs +94 -0
  64. package/dist/esm/routes.mjs +134 -0
  65. package/dist/esm/server.mjs +204 -0
  66. package/dist/esm/worker-federation-context.mjs +19 -0
  67. package/dist/esm/worker-federation-contexts.mjs +47 -0
  68. package/dist/esm/worker-federation.mjs +59 -0
  69. package/dist/esm-node/bootstrap.mjs +24 -0
  70. package/dist/esm-node/manifest.mjs +117 -0
  71. package/dist/esm-node/plugin/compiler.mjs +67 -0
  72. package/dist/esm-node/plugin/create.mjs +228 -0
  73. package/dist/esm-node/plugin/index.mjs +103 -0
  74. package/dist/esm-node/plugin/profile.mjs +53 -0
  75. package/dist/esm-node/plugin/source.mjs +7 -0
  76. package/dist/esm-node/typecheck.mjs +560 -0
  77. package/dist/types/bootstrap.d.ts +10 -0
  78. package/dist/types/client.d.ts +40 -0
  79. package/dist/types/entry-application.d.ts +19 -0
  80. package/dist/types/entry-client.d.ts +10 -0
  81. package/dist/types/entry-server.d.ts +14 -0
  82. package/dist/types/federation-context.d.ts +28 -0
  83. package/dist/types/federation.d.ts +20 -0
  84. package/dist/types/i18n/I18nProvider.d.ts +8 -0
  85. package/dist/types/i18n/LocalizedLink.d.ts +14 -0
  86. package/dist/types/i18n/context.d.ts +9 -0
  87. package/dist/types/i18n/index.d.ts +9 -0
  88. package/dist/types/i18n/languageSync.d.ts +26 -0
  89. package/dist/types/i18n/types.d.ts +34 -0
  90. package/dist/types/i18n/useI18n.d.ts +21 -0
  91. package/dist/types/i18n-external-snapshot.d.ts +43 -0
  92. package/dist/types/index.d.ts +9 -0
  93. package/dist/types/manifest.d.ts +34 -0
  94. package/dist/types/plugin/compiler-manifest.d.cts +10 -0
  95. package/dist/types/plugin/compiler.d.ts +5 -0
  96. package/dist/types/plugin/create.d.ts +23 -0
  97. package/dist/types/plugin/index.d.ts +3 -0
  98. package/dist/types/plugin/profile.d.ts +2 -0
  99. package/dist/types/plugin/source.d.ts +1 -0
  100. package/dist/types/plugin/svg-component-template.d.cts +6 -0
  101. package/dist/types/router-client.d.ts +12 -0
  102. package/dist/types/router-external-snapshot.d.ts +10 -0
  103. package/dist/types/router-handler.d.ts +13 -0
  104. package/dist/types/router-server-cleanup.d.ts +3 -0
  105. package/dist/types/router-server-snapshot.d.ts +15 -0
  106. package/dist/types/router-server.d.ts +11 -0
  107. package/dist/types/router-snapshot.d.ts +14 -0
  108. package/dist/types/router.d.ts +30 -0
  109. package/dist/types/routes.d.ts +20 -0
  110. package/dist/types/server.d.ts +47 -0
  111. package/dist/types/typecheck.d.ts +31 -0
  112. package/dist/types/worker-federation-context.d.ts +34 -0
  113. package/dist/types/worker-federation-contexts.d.ts +25 -0
  114. package/dist/types/worker-federation.d.ts +20 -0
  115. package/package.json +278 -4
  116. package/src/bootstrap.ts +60 -0
  117. package/src/client.ts +568 -0
  118. package/src/entry-application.ts +76 -0
  119. package/src/entry-client.ts +90 -0
  120. package/src/entry-server.ts +153 -0
  121. package/src/federation-context.ts +53 -0
  122. package/src/federation.ts +307 -0
  123. package/src/i18n/I18nProvider.ts +47 -0
  124. package/src/i18n/LocalizedLink.ts +86 -0
  125. package/src/i18n/context.ts +12 -0
  126. package/src/i18n/index.ts +31 -0
  127. package/src/i18n/languageSync.ts +132 -0
  128. package/src/i18n/types.ts +36 -0
  129. package/src/i18n/useI18n.ts +119 -0
  130. package/src/i18n-external-snapshot.ts +803 -0
  131. package/src/index.ts +10 -0
  132. package/src/manifest.ts +253 -0
  133. package/src/plugin/compiler-manifest.cjs +204 -0
  134. package/src/plugin/compiler.ts +104 -0
  135. package/src/plugin/create.ts +273 -0
  136. package/src/plugin/index.ts +107 -0
  137. package/src/plugin/profile.ts +50 -0
  138. package/src/plugin/source.ts +16 -0
  139. package/src/plugin/svg-component-template.cjs +17 -0
  140. package/src/router-client.ts +144 -0
  141. package/src/router-external-snapshot.ts +363 -0
  142. package/src/router-handler.ts +185 -0
  143. package/src/router-server-cleanup.ts +11 -0
  144. package/src/router-server-snapshot.ts +564 -0
  145. package/src/router-server.ts +21 -0
  146. package/src/router-snapshot.ts +251 -0
  147. package/src/router.ts +192 -0
  148. package/src/routes.ts +274 -0
  149. package/src/server.ts +340 -0
  150. package/src/typecheck.ts +723 -0
  151. package/src/worker-federation-context.ts +51 -0
  152. package/src/worker-federation-contexts.ts +91 -0
  153. package/src/worker-federation.ts +120 -0
  154. 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
+ });