@bleedingdev/modern-js-renderer-octane 0.0.0-stage → 3.9.3-ultramodern.2
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 +371 -0
- package/dist/cjs/entry-application.js +83 -0
- package/dist/cjs/entry-client.js +92 -0
- package/dist/cjs/entry-server.js +127 -0
- package/dist/cjs/federation-context.js +72 -0
- package/dist/cjs/federation.js +103 -0
- package/dist/cjs/i18n/I18nProvider.js +67 -0
- package/dist/cjs/i18n/LocalizedLink.js +89 -0
- package/dist/cjs/i18n/context.js +41 -0
- package/dist/cjs/i18n/index.js +86 -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/index.js +46 -0
- package/dist/cjs/manifest.js +167 -0
- package/dist/cjs/plugin/compiler.js +125 -0
- package/dist/cjs/plugin/create.js +265 -0
- package/dist/cjs/plugin/index.js +151 -0
- package/dist/cjs/plugin/profile.js +89 -0
- package/dist/cjs/plugin/source.js +56 -0
- package/dist/cjs/router-client.js +139 -0
- package/dist/cjs/router-handler.js +168 -0
- package/dist/cjs/router-injection.js +139 -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 +108 -0
- package/dist/cjs/router-snapshot.js +270 -0
- package/dist/cjs/router.js +218 -0
- package/dist/cjs/routes.js +187 -0
- package/dist/cjs/server.js +224 -0
- package/dist/cjs/typecheck.js +615 -0
- package/dist/esm/bootstrap.mjs +24 -0
- package/dist/esm/client.mjs +327 -0
- package/dist/esm/entry-application.mjs +39 -0
- package/dist/esm/entry-client.mjs +54 -0
- package/dist/esm/entry-server.mjs +86 -0
- package/dist/esm/federation-context.mjs +25 -0
- package/dist/esm/federation.mjs +65 -0
- package/dist/esm/i18n/I18nProvider.mjs +29 -0
- package/dist/esm/i18n/LocalizedLink.mjs +48 -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/index.mjs +8 -0
- package/dist/esm/manifest.mjs +117 -0
- package/dist/esm/router-client.mjs +98 -0
- package/dist/esm/router-handler.mjs +130 -0
- package/dist/esm/router-injection.mjs +101 -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 +12 -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 +183 -0
- package/dist/esm-node/bootstrap.mjs +24 -0
- package/dist/esm-node/manifest.mjs +117 -0
- package/dist/esm-node/plugin/compiler.mjs +70 -0
- package/dist/esm-node/plugin/create.mjs +227 -0
- package/dist/esm-node/plugin/index.mjs +103 -0
- package/dist/esm-node/plugin/profile.mjs +51 -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 +36 -0
- package/dist/types/entry-application.d.ts +19 -0
- package/dist/types/entry-client.d.ts +8 -0
- package/dist/types/entry-server.d.ts +11 -0
- package/dist/types/federation-context.d.ts +28 -0
- package/dist/types/federation.d.ts +18 -0
- package/dist/types/i18n/I18nProvider.d.ts +8 -0
- package/dist/types/i18n/LocalizedLink.d.ts +41 -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/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-handler.d.ts +13 -0
- package/dist/types/router-injection.d.ts +8 -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 +13 -0
- package/dist/types/router-snapshot.d.ts +14 -0
- package/dist/types/router.d.ts +30 -0
- package/dist/types/routes.d.ts +18 -0
- package/dist/types/server.d.ts +41 -0
- package/dist/types/typecheck.d.ts +31 -0
- package/package.json +216 -4
- package/src/bootstrap.ts +60 -0
- package/src/client.ts +485 -0
- package/src/entry-application.ts +72 -0
- package/src/entry-client.ts +80 -0
- package/src/entry-server.ts +142 -0
- package/src/federation-context.ts +53 -0
- package/src/federation.ts +158 -0
- package/src/i18n/I18nProvider.ts +56 -0
- package/src/i18n/LocalizedLink.ts +112 -0
- package/src/i18n/context.ts +12 -0
- package/src/i18n/index.ts +35 -0
- package/src/i18n/languageSync.ts +132 -0
- package/src/i18n/types.ts +36 -0
- package/src/i18n/useI18n.ts +119 -0
- package/src/index.ts +10 -0
- package/src/manifest.ts +253 -0
- package/src/plugin/compiler-manifest.cjs +178 -0
- package/src/plugin/compiler.ts +112 -0
- package/src/plugin/create.ts +272 -0
- package/src/plugin/index.ts +105 -0
- package/src/plugin/profile.ts +46 -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-handler.ts +182 -0
- package/src/router-injection.ts +145 -0
- package/src/router-server-cleanup.ts +11 -0
- package/src/router-server-snapshot.ts +564 -0
- package/src/router-server.ts +23 -0
- package/src/router-snapshot.ts +251 -0
- package/src/router.ts +192 -0
- package/src/routes.ts +263 -0
- package/src/server.ts +300 -0
- package/src/typecheck.ts +723 -0
- package/README.md +0 -3
|
@@ -0,0 +1,224 @@
|
|
|
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
|
+
renderOctaneApplication: ()=>renderOctaneApplication,
|
|
32
|
+
renderOctaneCSRDocument: ()=>renderOctaneCSRDocument
|
|
33
|
+
});
|
|
34
|
+
const document_namespaceObject = require("@modern-js/renderer-core/document");
|
|
35
|
+
const session_namespaceObject = require("@modern-js/renderer-core/session");
|
|
36
|
+
const server_namespaceObject = require("octane/server");
|
|
37
|
+
const external_bootstrap_js_namespaceObject = require("./bootstrap.js");
|
|
38
|
+
const external_federation_context_js_namespaceObject = require("./federation-context.js");
|
|
39
|
+
function prepareOctaneDocument(session, document, hydrating) {
|
|
40
|
+
(0, external_bootstrap_js_namespaceObject.assertOctaneIdentity)(session.identity);
|
|
41
|
+
if ('node' !== session.platform.kind && 'worker' !== session.platform.kind) throw new Error('An Octane document requires a Node or worker request platform.');
|
|
42
|
+
(0, external_bootstrap_js_namespaceObject.assertNativeHydrationBuildId)(document.nativeHydrationBuildId);
|
|
43
|
+
const nonce = document.nonce;
|
|
44
|
+
return (0, document_namespaceObject.prepareDocument)({
|
|
45
|
+
identity: session.identity,
|
|
46
|
+
documentId: document.documentId,
|
|
47
|
+
hydrating,
|
|
48
|
+
nativeHydrationBuildId: document.nativeHydrationBuildId
|
|
49
|
+
}, {
|
|
50
|
+
rootId: document.rootId,
|
|
51
|
+
lang: document.lang,
|
|
52
|
+
nonce: {
|
|
53
|
+
script: nonce,
|
|
54
|
+
style: nonce
|
|
55
|
+
},
|
|
56
|
+
assets: document.assets,
|
|
57
|
+
inlineData: document.inlineData
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async function resolveDocumentResponse(input) {
|
|
61
|
+
const { session } = input;
|
|
62
|
+
if (input.responsePolicy && input.resolveResponse) throw new Error('Choose one blocking Octane response policy resolver.');
|
|
63
|
+
if (input.resolveResponse) session.resolveResponse(await (0, session_namespaceObject.untilAborted)(input.resolveResponse(session), session.signal));
|
|
64
|
+
else if (input.responsePolicy) session.resolveResponse(input.responsePolicy);
|
|
65
|
+
else if (!session.responsePolicy) session.resolveResponse({
|
|
66
|
+
kind: 'document',
|
|
67
|
+
status: 200,
|
|
68
|
+
headers: [
|
|
69
|
+
[
|
|
70
|
+
'content-type',
|
|
71
|
+
'text/html; charset=utf-8'
|
|
72
|
+
]
|
|
73
|
+
],
|
|
74
|
+
cache: {
|
|
75
|
+
mode: 'no-store'
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
async function renderOctaneCSRDocument(input) {
|
|
80
|
+
const { session } = input;
|
|
81
|
+
try {
|
|
82
|
+
const { rootId, lang, bootstrap, headAssets, entryScripts } = prepareOctaneDocument(session, input.document, false);
|
|
83
|
+
await resolveDocumentResponse(input);
|
|
84
|
+
if (session.responsePolicy?.kind === 'terminal') return session.respond(null);
|
|
85
|
+
session.startRendering();
|
|
86
|
+
const bytes = new TextEncoder().encode(`<!doctype html><html lang="${lang}"><head>${headAssets}</head><body><div id="${rootId}"></div>${bootstrap}${entryScripts}</body></html>`);
|
|
87
|
+
return session.respond(new ReadableStream({
|
|
88
|
+
start (controller) {
|
|
89
|
+
controller.enqueue(bytes);
|
|
90
|
+
controller.close();
|
|
91
|
+
}
|
|
92
|
+
}));
|
|
93
|
+
} catch (error) {
|
|
94
|
+
await session.fail(error);
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async function renderOctaneApplication(input) {
|
|
99
|
+
const { session, document } = input;
|
|
100
|
+
try {
|
|
101
|
+
const { rootId, lang, bootstrap, headAssets, entryScripts } = prepareOctaneDocument(session, document, true);
|
|
102
|
+
const earlyBootstrap = (0, server_namespaceObject.earlySignalBootstrapScript)(void 0 === document.nonce ? {} : {
|
|
103
|
+
nonce: document.nonce
|
|
104
|
+
});
|
|
105
|
+
await resolveDocumentResponse(input);
|
|
106
|
+
if (session.responsePolicy?.kind === 'terminal') return session.respond(null);
|
|
107
|
+
session.startRendering();
|
|
108
|
+
let head = '';
|
|
109
|
+
const federation = input.federation ? (0, external_federation_context_js_namespaceObject.createFederationScope)(input.federation, true, document.nonce) : void 0;
|
|
110
|
+
const App = federation ? ()=>(0, server_namespaceObject.createElement)(external_federation_context_js_namespaceObject.FederationRoot, {
|
|
111
|
+
scope: federation,
|
|
112
|
+
children: 'function' == typeof input.App ? (0, server_namespaceObject.createElement)(input.App, input.props) : input.App
|
|
113
|
+
}) : input.App;
|
|
114
|
+
const nativeStream = await (0, server_namespaceObject.renderToReadableStream)(App, input.props, {
|
|
115
|
+
signal: session.signal,
|
|
116
|
+
...void 0 === document.nonce ? {} : {
|
|
117
|
+
nonce: document.nonce
|
|
118
|
+
},
|
|
119
|
+
earlySignalBootstrap: 'external',
|
|
120
|
+
...void 0 === input.injection ? {} : {
|
|
121
|
+
injection: input.injection
|
|
122
|
+
},
|
|
123
|
+
streamedSignals: {
|
|
124
|
+
buildId: document.nativeHydrationBuildId,
|
|
125
|
+
documentId: document.documentId
|
|
126
|
+
},
|
|
127
|
+
headChannel: 'separate',
|
|
128
|
+
onHeadReady (value) {
|
|
129
|
+
head = value;
|
|
130
|
+
},
|
|
131
|
+
onError (error) {
|
|
132
|
+
if (session.signal.aborted) return;
|
|
133
|
+
session.markFallback();
|
|
134
|
+
console.error('Octane render error:', error);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
const ready = nativeStream.allReady.then(()=>({
|
|
138
|
+
ok: true
|
|
139
|
+
}), (error)=>({
|
|
140
|
+
ok: false,
|
|
141
|
+
error
|
|
142
|
+
}));
|
|
143
|
+
const reader = nativeStream.getReader();
|
|
144
|
+
const encoder = new TextEncoder();
|
|
145
|
+
const prefix = encoder.encode(`<!doctype html><html lang="${lang}"><head>${head}${headAssets}</head><body>${earlyBootstrap}<div id="${rootId}">`);
|
|
146
|
+
const shellBootstrap = encoder.encode(`</div>${bootstrap}${entryScripts}`);
|
|
147
|
+
const suffix = encoder.encode('</body></html>');
|
|
148
|
+
let phase = 'prefix';
|
|
149
|
+
let released = false;
|
|
150
|
+
const release = ()=>{
|
|
151
|
+
if (released) return;
|
|
152
|
+
released = true;
|
|
153
|
+
reader.releaseLock();
|
|
154
|
+
};
|
|
155
|
+
let cancellation;
|
|
156
|
+
const cancelNative = (reason)=>{
|
|
157
|
+
if (cancellation) return cancellation;
|
|
158
|
+
if (released) return Promise.resolve();
|
|
159
|
+
cancellation = reader.cancel(reason).finally(release);
|
|
160
|
+
return cancellation;
|
|
161
|
+
};
|
|
162
|
+
const releaseNative = (reason)=>{
|
|
163
|
+
cancelNative(reason).catch(()=>{});
|
|
164
|
+
};
|
|
165
|
+
try {
|
|
166
|
+
session.registerCleanup(()=>releaseNative(session.signal.reason));
|
|
167
|
+
} catch (error) {
|
|
168
|
+
releaseNative(error);
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
const body = new ReadableStream({
|
|
172
|
+
async pull (controller) {
|
|
173
|
+
try {
|
|
174
|
+
if ('prefix' === phase) {
|
|
175
|
+
phase = 'shell';
|
|
176
|
+
controller.enqueue(prefix);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if ('bootstrap' === phase) {
|
|
180
|
+
phase = 'native';
|
|
181
|
+
controller.enqueue(shellBootstrap);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
const next = await reader.read();
|
|
185
|
+
if (!next.done) {
|
|
186
|
+
if ('shell' === phase) phase = 'bootstrap';
|
|
187
|
+
controller.enqueue(next.value);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if ('shell' === phase) throw new Error('Octane ended before publishing its initial shell.');
|
|
191
|
+
const completion = await ready;
|
|
192
|
+
release();
|
|
193
|
+
if (!completion.ok) throw completion.error;
|
|
194
|
+
phase = 'done';
|
|
195
|
+
controller.enqueue(suffix);
|
|
196
|
+
controller.close();
|
|
197
|
+
} catch (error) {
|
|
198
|
+
phase = 'done';
|
|
199
|
+
releaseNative(error);
|
|
200
|
+
controller.error(error);
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
cancel (reason) {
|
|
204
|
+
phase = 'done';
|
|
205
|
+
releaseNative(reason);
|
|
206
|
+
}
|
|
207
|
+
}, {
|
|
208
|
+
highWaterMark: 0
|
|
209
|
+
});
|
|
210
|
+
return session.respond(body);
|
|
211
|
+
} catch (error) {
|
|
212
|
+
await session.fail(error);
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
exports.renderOctaneApplication = __webpack_exports__.renderOctaneApplication;
|
|
217
|
+
exports.renderOctaneCSRDocument = __webpack_exports__.renderOctaneCSRDocument;
|
|
218
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
219
|
+
"renderOctaneApplication",
|
|
220
|
+
"renderOctaneCSRDocument"
|
|
221
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
222
|
+
Object.defineProperty(exports, '__esModule', {
|
|
223
|
+
value: true
|
|
224
|
+
});
|