@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,291 @@
|
|
|
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
|
+
OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE: ()=>OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE,
|
|
32
|
+
associateOctaneFileRouteSnapshot: ()=>associateOctaneFileRouteSnapshot,
|
|
33
|
+
captureOctaneRouterSnapshot: ()=>captureOctaneRouterSnapshot,
|
|
34
|
+
registerOctaneRouterWorkerContexts: ()=>registerOctaneRouterWorkerContexts
|
|
35
|
+
});
|
|
36
|
+
const tanstack_router_namespaceObject = require("@octanejs/tanstack-router");
|
|
37
|
+
const external_routes_js_namespaceObject = require("./routes.js");
|
|
38
|
+
const external_worker_federation_contexts_js_namespaceObject = require("./worker-federation-contexts.js");
|
|
39
|
+
const OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE = Object.freeze({
|
|
40
|
+
key: 'ultramodern.file-routes',
|
|
41
|
+
version: '1'
|
|
42
|
+
});
|
|
43
|
+
const origins = new WeakMap();
|
|
44
|
+
let profileRegistered = false;
|
|
45
|
+
function plainRecord(value) {
|
|
46
|
+
return null !== value && 'object' == typeof value && [
|
|
47
|
+
Object.prototype,
|
|
48
|
+
null
|
|
49
|
+
].includes(Object.getPrototypeOf(value));
|
|
50
|
+
}
|
|
51
|
+
function record(value, fields) {
|
|
52
|
+
if (!plainRecord(value)) throw new TypeError('Worker router context requires a plain record');
|
|
53
|
+
for (const key of Reflect.ownKeys(value)){
|
|
54
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
55
|
+
if ('string' != typeof key || fields && !fields.includes(key) || !descriptor || !descriptor.enumerable || !('value' in descriptor)) throw new TypeError('Unknown Worker router context field or accessor');
|
|
56
|
+
}
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
function nonempty(value) {
|
|
60
|
+
if ('string' != typeof value || !value.trim() || value.length > 1024) throw new TypeError('Invalid Worker router identity');
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
function publicContext(value) {
|
|
64
|
+
const context = record(value, [
|
|
65
|
+
'ultramodern'
|
|
66
|
+
]);
|
|
67
|
+
const metadata = record(context.ultramodern, [
|
|
68
|
+
'rendererIdentity'
|
|
69
|
+
]);
|
|
70
|
+
const identity = record(metadata.rendererIdentity, [
|
|
71
|
+
'renderer',
|
|
72
|
+
'appId',
|
|
73
|
+
'entryName',
|
|
74
|
+
'protocolVersion',
|
|
75
|
+
'buildId'
|
|
76
|
+
]);
|
|
77
|
+
if ('octane' !== identity.renderer || 1 !== identity.protocolVersion) throw new TypeError('Unsupported Worker router identity');
|
|
78
|
+
return Object.freeze({
|
|
79
|
+
ultramodern: Object.freeze({
|
|
80
|
+
rendererIdentity: Object.freeze({
|
|
81
|
+
renderer: 'octane',
|
|
82
|
+
appId: nonempty(identity.appId),
|
|
83
|
+
entryName: nonempty(identity.entryName),
|
|
84
|
+
protocolVersion: 1,
|
|
85
|
+
buildId: nonempty(identity.buildId)
|
|
86
|
+
})
|
|
87
|
+
})
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function localizedUrls(value) {
|
|
91
|
+
if (void 0 === value || 'boolean' == typeof value) return value;
|
|
92
|
+
const input = record(value);
|
|
93
|
+
const result = {};
|
|
94
|
+
for (const [path, translations] of Object.entries(input)){
|
|
95
|
+
const names = {};
|
|
96
|
+
for (const [language, target] of Object.entries(record(translations)))names[nonempty(language)] = nonempty(target);
|
|
97
|
+
result[path] = names;
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
function rewriteDescriptor(value) {
|
|
102
|
+
if (void 0 === value) return;
|
|
103
|
+
const input = record(value, [
|
|
104
|
+
'language',
|
|
105
|
+
'languages',
|
|
106
|
+
'localisedUrls'
|
|
107
|
+
]);
|
|
108
|
+
if (!Array.isArray(input.languages) || !input.languages.length || input.languages.length > 64) throw new TypeError('Invalid Worker router i18n languages');
|
|
109
|
+
const languages = input.languages.map(nonempty);
|
|
110
|
+
const language = nonempty(input.language);
|
|
111
|
+
if (new Set(languages).size !== languages.length || !languages.includes(language)) throw new TypeError('Invalid Worker router i18n language');
|
|
112
|
+
const urls = localizedUrls(input.localisedUrls);
|
|
113
|
+
return {
|
|
114
|
+
language,
|
|
115
|
+
languages,
|
|
116
|
+
...void 0 === urls ? {} : {
|
|
117
|
+
localisedUrls: urls
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function nativeRewriteDescriptor(router) {
|
|
122
|
+
if (!router.options.rewrite) return;
|
|
123
|
+
const known = (0, external_worker_federation_contexts_js_namespaceObject.getOctaneWorkerRouterRewrite)()?.capture(router.options.rewrite);
|
|
124
|
+
if (!known) throw new TypeError('Custom router rewrite requires an exact Worker profile');
|
|
125
|
+
const descriptor = rewriteDescriptor(known);
|
|
126
|
+
if (!descriptor) throw new TypeError('Missing native router rewrite provenance');
|
|
127
|
+
return {
|
|
128
|
+
language: descriptor.language,
|
|
129
|
+
languages: [
|
|
130
|
+
...descriptor.languages
|
|
131
|
+
],
|
|
132
|
+
...void 0 === descriptor.localisedUrls ? {} : {
|
|
133
|
+
localisedUrls: descriptor.localisedUrls
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function validateDefaultSnapshot(snapshot) {
|
|
138
|
+
publicContext(snapshot.publicContext);
|
|
139
|
+
rewriteDescriptor(snapshot.i18n);
|
|
140
|
+
}
|
|
141
|
+
function assertFileRouteRenderHost(router, allowRewrite) {
|
|
142
|
+
if (router.options.parseSearch !== tanstack_router_namespaceObject.defaultParseSearch || router.options.stringifySearch !== tanstack_router_namespaceObject.defaultStringifySearch || !allowRewrite && router.options.rewrite || router.options.routeMasks?.length) throw new TypeError('Router render snapshot: authored router behavior requires an exact local profile');
|
|
143
|
+
const authoredRouting = [
|
|
144
|
+
'caseSensitive',
|
|
145
|
+
'validateSearch',
|
|
146
|
+
'loaderDeps',
|
|
147
|
+
'beforeLoad',
|
|
148
|
+
'context',
|
|
149
|
+
'onEnter',
|
|
150
|
+
'onStay',
|
|
151
|
+
'onLeave',
|
|
152
|
+
'lazyFn',
|
|
153
|
+
"scripts",
|
|
154
|
+
'headers',
|
|
155
|
+
'onError',
|
|
156
|
+
'parseParams',
|
|
157
|
+
'stringifyParams'
|
|
158
|
+
];
|
|
159
|
+
const seen = new Set();
|
|
160
|
+
const visit = (route, depth)=>{
|
|
161
|
+
if (seen.has(route) || seen.size >= 4096 || depth > 64) throw new TypeError('Router render snapshot: route geometry must be bounded and acyclic');
|
|
162
|
+
seen.add(route);
|
|
163
|
+
if (authoredRouting.some((key)=>void 0 !== Reflect.get(route.options, key)) || route.options.params?.parse || route.options.params?.stringify || route.options.search?.middlewares?.length || route.lazyFn || 'path' in route.options && 'id' in route.options || !(0, external_routes_js_namespaceObject.hasUnchangedOctaneFileRouteHead)(route)) throw new TypeError('Router render snapshot: authored route behavior requires an exact local profile');
|
|
164
|
+
for (const child of route.children ?? [])visit(child, depth + 1);
|
|
165
|
+
};
|
|
166
|
+
visit(router.options.routeTree, 0);
|
|
167
|
+
}
|
|
168
|
+
function ensureDefaultProfile() {
|
|
169
|
+
if (profileRegistered) return;
|
|
170
|
+
(0, tanstack_router_namespaceObject.registerRouterRenderProfile)({
|
|
171
|
+
id: OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE,
|
|
172
|
+
assertHost: (router, snapshot)=>{
|
|
173
|
+
const origin = origins.get(router);
|
|
174
|
+
if (!origin || origin.rewrite !== router.options.rewrite || JSON.stringify(publicContext(router.options.context)) !== JSON.stringify(origin.publicContext)) throw new TypeError('Generated Worker router origin changed');
|
|
175
|
+
assertFileRouteRenderHost(router, void 0 !== snapshot.i18n);
|
|
176
|
+
validateDefaultSnapshot(snapshot);
|
|
177
|
+
if (JSON.stringify(nativeRewriteDescriptor(router)) !== JSON.stringify(snapshot.i18n)) throw new TypeError('Worker router rewrite differs from its native provenance');
|
|
178
|
+
},
|
|
179
|
+
createRoutingTree: (snapshot)=>{
|
|
180
|
+
validateDefaultSnapshot(snapshot);
|
|
181
|
+
return (0, tanstack_router_namespaceObject.createRouterRenderRouteTree)(snapshot.routes);
|
|
182
|
+
},
|
|
183
|
+
routingOptions: (snapshot)=>{
|
|
184
|
+
const defaults = {
|
|
185
|
+
parseSearch: tanstack_router_namespaceObject.defaultParseSearch,
|
|
186
|
+
stringifySearch: tanstack_router_namespaceObject.defaultStringifySearch
|
|
187
|
+
};
|
|
188
|
+
const i18n = rewriteDescriptor(snapshot.i18n);
|
|
189
|
+
if (!i18n) return defaults;
|
|
190
|
+
const codec = (0, external_worker_federation_contexts_js_namespaceObject.getOctaneWorkerRouterRewrite)();
|
|
191
|
+
if (!codec) throw new TypeError('Missing owning Worker router i18n codec');
|
|
192
|
+
return {
|
|
193
|
+
...defaults,
|
|
194
|
+
rewrite: codec.restore(i18n)
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
profileRegistered = true;
|
|
199
|
+
}
|
|
200
|
+
function associateOctaneFileRouteSnapshot(router) {
|
|
201
|
+
ensureDefaultProfile();
|
|
202
|
+
const context = publicContext(router.options.context);
|
|
203
|
+
origins.set(router, {
|
|
204
|
+
publicContext: context,
|
|
205
|
+
rewrite: router.options.rewrite
|
|
206
|
+
});
|
|
207
|
+
(0, tanstack_router_namespaceObject.associateRouterRenderProfile)(router, {
|
|
208
|
+
id: OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE,
|
|
209
|
+
publicContext: context
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
function captureOctaneRouterSnapshot(router) {
|
|
213
|
+
const origin = origins.get(router);
|
|
214
|
+
const declared = (0, tanstack_router_namespaceObject.getRouterRenderProfile)(router);
|
|
215
|
+
if (origin && declared?.key === OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE.key && declared.version === OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE.version) {
|
|
216
|
+
const i18n = nativeRewriteDescriptor(router);
|
|
217
|
+
(0, tanstack_router_namespaceObject.associateRouterRenderProfile)(router, {
|
|
218
|
+
id: OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE,
|
|
219
|
+
publicContext: origin.publicContext,
|
|
220
|
+
...void 0 === i18n ? {} : {
|
|
221
|
+
i18n
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
return (0, tanstack_router_namespaceObject.captureRouterRenderSnapshot)(router);
|
|
226
|
+
}
|
|
227
|
+
let registrations = 0;
|
|
228
|
+
let releaseContexts;
|
|
229
|
+
function registerOctaneRouterWorkerContexts() {
|
|
230
|
+
ensureDefaultProfile();
|
|
231
|
+
if (!releaseContexts) {
|
|
232
|
+
const releaseRouter = (0, external_worker_federation_contexts_js_namespaceObject.registerOctaneWorkerContext)(tanstack_router_namespaceObject.routerContext, {
|
|
233
|
+
key: external_worker_federation_contexts_js_namespaceObject.OCTANE_WORKER_CONTEXT_KEYS.router,
|
|
234
|
+
encode: (value)=>{
|
|
235
|
+
if (!value) throw new TypeError('Missing native router provider');
|
|
236
|
+
return captureOctaneRouterSnapshot(value);
|
|
237
|
+
},
|
|
238
|
+
decode: (value, signal)=>(0, tanstack_router_namespaceObject.restoreRouterRenderSnapshot)(value, {
|
|
239
|
+
signal
|
|
240
|
+
}),
|
|
241
|
+
dispose: (value)=>{
|
|
242
|
+
if (value) (0, tanstack_router_namespaceObject.disposeRouterRenderSnapshot)(value);
|
|
243
|
+
},
|
|
244
|
+
isProvided: (value)=>void 0 !== value
|
|
245
|
+
});
|
|
246
|
+
try {
|
|
247
|
+
const releaseMatch = (0, external_worker_federation_contexts_js_namespaceObject.registerOctaneWorkerContext)(tanstack_router_namespaceObject.matchContext, {
|
|
248
|
+
key: external_worker_federation_contexts_js_namespaceObject.OCTANE_WORKER_CONTEXT_KEYS.match,
|
|
249
|
+
encode: nonempty,
|
|
250
|
+
decode: nonempty,
|
|
251
|
+
validate: (value, readContext)=>{
|
|
252
|
+
const selected = readContext(tanstack_router_namespaceObject.routerContext);
|
|
253
|
+
const router = selected.present ? selected.value : void 0;
|
|
254
|
+
const current = router?.state.matches.find((match)=>match.routeId === value);
|
|
255
|
+
if (!router || !current || 'string' != typeof value || router.stores.getMatchStore(value).get() !== current) throw new TypeError('Worker match context requires its selected native router and a current match');
|
|
256
|
+
},
|
|
257
|
+
isProvided: (value)=>void 0 !== value
|
|
258
|
+
});
|
|
259
|
+
releaseContexts = ()=>{
|
|
260
|
+
releaseMatch();
|
|
261
|
+
releaseRouter();
|
|
262
|
+
};
|
|
263
|
+
} catch (error) {
|
|
264
|
+
releaseRouter();
|
|
265
|
+
throw error;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
registrations++;
|
|
269
|
+
let released = false;
|
|
270
|
+
return ()=>{
|
|
271
|
+
if (released) return;
|
|
272
|
+
released = true;
|
|
273
|
+
if (0 === --registrations) {
|
|
274
|
+
releaseContexts?.();
|
|
275
|
+
releaseContexts = void 0;
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
exports.OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE = __webpack_exports__.OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE;
|
|
280
|
+
exports.associateOctaneFileRouteSnapshot = __webpack_exports__.associateOctaneFileRouteSnapshot;
|
|
281
|
+
exports.captureOctaneRouterSnapshot = __webpack_exports__.captureOctaneRouterSnapshot;
|
|
282
|
+
exports.registerOctaneRouterWorkerContexts = __webpack_exports__.registerOctaneRouterWorkerContexts;
|
|
283
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
284
|
+
"OCTANE_FILE_ROUTE_SNAPSHOT_PROFILE",
|
|
285
|
+
"associateOctaneFileRouteSnapshot",
|
|
286
|
+
"captureOctaneRouterSnapshot",
|
|
287
|
+
"registerOctaneRouterWorkerContexts"
|
|
288
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
289
|
+
Object.defineProperty(exports, '__esModule', {
|
|
290
|
+
value: true
|
|
291
|
+
});
|
|
@@ -0,0 +1,171 @@
|
|
|
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
|
+
createOctaneRequestHandler: ()=>createOctaneRequestHandler
|
|
32
|
+
});
|
|
33
|
+
const tanstack_router_namespaceObject = require("@octanejs/tanstack-router");
|
|
34
|
+
const server_namespaceObject = require("@octanejs/tanstack-router/ssr/server");
|
|
35
|
+
const external_router_server_cleanup_js_namespaceObject = require("./router-server-cleanup.js");
|
|
36
|
+
const external_router_server_snapshot_js_namespaceObject = require("./router-server-snapshot.js");
|
|
37
|
+
function withAbort(pending, signal) {
|
|
38
|
+
signal.throwIfAborted();
|
|
39
|
+
return new Promise((resolve, reject)=>{
|
|
40
|
+
let settled = false;
|
|
41
|
+
const finish = (success, value)=>{
|
|
42
|
+
if (settled) return;
|
|
43
|
+
settled = true;
|
|
44
|
+
signal.removeEventListener('abort', onAbort);
|
|
45
|
+
if (success) resolve(value);
|
|
46
|
+
else reject(value);
|
|
47
|
+
};
|
|
48
|
+
const onAbort = ()=>finish(false, signal.reason);
|
|
49
|
+
signal.addEventListener('abort', onAbort, {
|
|
50
|
+
once: true
|
|
51
|
+
});
|
|
52
|
+
pending.then((value)=>finish(true, value), (error)=>finish(false, error));
|
|
53
|
+
if (signal.aborted) onAbort();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const CSP_HEADERS = new Set([
|
|
57
|
+
'content-security-policy',
|
|
58
|
+
'content-security-policy-report-only',
|
|
59
|
+
'link',
|
|
60
|
+
'server-timing'
|
|
61
|
+
]);
|
|
62
|
+
function appendHeaders(destination, value) {
|
|
63
|
+
if (null == value) return;
|
|
64
|
+
const source = value instanceof Headers ? value : new Headers(value);
|
|
65
|
+
for (const [key, item] of Headers.prototype.entries.call(source))if ('set-cookie' !== key) if (CSP_HEADERS.has(key)) destination.append(key, item);
|
|
66
|
+
else if ('vary' === key) {
|
|
67
|
+
const fields = new Map();
|
|
68
|
+
for (const field of `${destination.get('vary') ?? ''},${item}`.split(',')){
|
|
69
|
+
const name = field.trim();
|
|
70
|
+
if (name && !fields.has(name.toLowerCase())) fields.set(name.toLowerCase(), name);
|
|
71
|
+
}
|
|
72
|
+
destination.set('vary', [
|
|
73
|
+
...fields.values()
|
|
74
|
+
].join(', '));
|
|
75
|
+
} else destination.set(key, item);
|
|
76
|
+
for (const cookie of Headers.prototype.getSetCookie.call(source))destination.append('set-cookie', cookie);
|
|
77
|
+
}
|
|
78
|
+
function requestHeaders(router) {
|
|
79
|
+
const headers = new Headers({
|
|
80
|
+
'content-type': 'text/html; charset=utf-8'
|
|
81
|
+
});
|
|
82
|
+
for (const match of router.stores.matches.get()){
|
|
83
|
+
const field = Object.getOwnPropertyDescriptor(match, 'headers');
|
|
84
|
+
if (field?.get || field?.set) throw new TypeError('Native Octane response headers must be owned values');
|
|
85
|
+
appendHeaders(headers, field?.value);
|
|
86
|
+
}
|
|
87
|
+
const result = router._serverResult;
|
|
88
|
+
if (result?.type === 'redirect') appendHeaders(headers, result.redirect.headers);
|
|
89
|
+
return headers;
|
|
90
|
+
}
|
|
91
|
+
function createOctaneRequestHandler({ createRouter, request, session, getRouterManifest, serialization }) {
|
|
92
|
+
return async (callback)=>{
|
|
93
|
+
session.signal.throwIfAborted();
|
|
94
|
+
const router = createRouter();
|
|
95
|
+
let responseOwnsCleanup = false;
|
|
96
|
+
try {
|
|
97
|
+
const manifest = getRouterManifest ? await withAbort(Promise.resolve(getRouterManifest()), session.signal) : void 0;
|
|
98
|
+
(0, server_namespaceObject.attachRouterServerSsrUtils)({
|
|
99
|
+
router,
|
|
100
|
+
manifest
|
|
101
|
+
});
|
|
102
|
+
const guard = (0, external_router_server_snapshot_js_namespaceObject.prepareOctaneRouterSerialization)(router, session, {
|
|
103
|
+
...serialization,
|
|
104
|
+
forbiddenValues: [
|
|
105
|
+
request,
|
|
106
|
+
...serialization?.forbiddenValues ?? []
|
|
107
|
+
]
|
|
108
|
+
});
|
|
109
|
+
const { url } = (0, server_namespaceObject.getNormalizedURL)(request.url, 'http://localhost');
|
|
110
|
+
const href = url.href.replace(url.origin, '');
|
|
111
|
+
router.update({
|
|
112
|
+
...router.options,
|
|
113
|
+
history: (0, tanstack_router_namespaceObject.createMemoryHistory)({
|
|
114
|
+
initialEntries: [
|
|
115
|
+
href
|
|
116
|
+
]
|
|
117
|
+
}),
|
|
118
|
+
origin: router.options.origin ?? (0, server_namespaceObject.getOrigin)(request)
|
|
119
|
+
});
|
|
120
|
+
await withAbort(router.load({
|
|
121
|
+
_signal: session.signal
|
|
122
|
+
}), session.signal);
|
|
123
|
+
guard.assertActive();
|
|
124
|
+
const loadResult = router._serverResult;
|
|
125
|
+
if (loadResult?.type === 'redirect') {
|
|
126
|
+
const resolved = loadResult.redirect;
|
|
127
|
+
const headers = requestHeaders(router);
|
|
128
|
+
return new Response(null, {
|
|
129
|
+
status: resolved.status,
|
|
130
|
+
statusText: resolved.statusText,
|
|
131
|
+
headers
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
guard.assertMatches();
|
|
135
|
+
const serverSsr = router.serverSsr;
|
|
136
|
+
if (!serverSsr) throw new Error('Native Octane router SSR state is required');
|
|
137
|
+
await withAbort(serverSsr.dehydrate({
|
|
138
|
+
signal: session.signal
|
|
139
|
+
}), session.signal);
|
|
140
|
+
guard.assertActive();
|
|
141
|
+
const responseHeaders = requestHeaders(router);
|
|
142
|
+
const rendered = Promise.resolve(callback({
|
|
143
|
+
request,
|
|
144
|
+
router,
|
|
145
|
+
responseHeaders
|
|
146
|
+
}));
|
|
147
|
+
const result = (0, server_namespaceObject.normalizeSsrResponse)(await withAbort(rendered, session.signal).catch((error)=>{
|
|
148
|
+
if (session.signal.aborted) rendered.then((late)=>{
|
|
149
|
+
try {
|
|
150
|
+
(0, server_namespaceObject.normalizeSsrResponse)(late).response.body?.cancel().catch(()=>{});
|
|
151
|
+
} catch {}
|
|
152
|
+
}, ()=>{});
|
|
153
|
+
throw error;
|
|
154
|
+
}));
|
|
155
|
+
responseOwnsCleanup = 'stream' === result.serverSsrCleanup;
|
|
156
|
+
return result.response;
|
|
157
|
+
} catch (error) {
|
|
158
|
+
session.fail(error);
|
|
159
|
+
throw error;
|
|
160
|
+
} finally{
|
|
161
|
+
if (!responseOwnsCleanup) (0, external_router_server_cleanup_js_namespaceObject.cleanupOctaneRouterSSR)(router);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
exports.createOctaneRequestHandler = __webpack_exports__.createOctaneRequestHandler;
|
|
166
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
167
|
+
"createOctaneRequestHandler"
|
|
168
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
169
|
+
Object.defineProperty(exports, '__esModule', {
|
|
170
|
+
value: true
|
|
171
|
+
});
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
const released = new WeakSet();
|
|
31
|
+
function cleanupOctaneRouterSSR(router) {
|
|
32
|
+
const serverSsr = router.serverSsr;
|
|
33
|
+
if (!serverSsr || released.has(serverSsr)) return;
|
|
34
|
+
released.add(serverSsr);
|
|
35
|
+
serverSsr.cleanup();
|
|
36
|
+
}
|
|
37
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
38
|
+
cleanupOctaneRouterSSR: ()=>cleanupOctaneRouterSSR
|
|
39
|
+
});
|
|
40
|
+
exports.cleanupOctaneRouterSSR = __webpack_exports__.cleanupOctaneRouterSSR;
|
|
41
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
42
|
+
"cleanupOctaneRouterSSR"
|
|
43
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
44
|
+
Object.defineProperty(exports, '__esModule', {
|
|
45
|
+
value: true
|
|
46
|
+
});
|