@nexus_js/server 0.7.2 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions.d.ts +14 -2
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +235 -25
- package/dist/actions.js.map +1 -1
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -0
- package/dist/context.d.ts +13 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +7 -3
- package/dist/context.js.map +1 -1
- package/dist/csrf.d.ts.map +1 -1
- package/dist/csrf.js +20 -18
- package/dist/csrf.js.map +1 -1
- package/dist/dev-assets.d.ts +1 -1
- package/dist/dev-assets.d.ts.map +1 -1
- package/dist/dev-assets.js +7 -3
- package/dist/dev-assets.js.map +1 -1
- package/dist/dev-error-html.d.ts +19 -0
- package/dist/dev-error-html.d.ts.map +1 -0
- package/dist/dev-error-html.js +101 -0
- package/dist/dev-error-html.js.map +1 -0
- package/dist/dev-hot.d.ts +8 -0
- package/dist/dev-hot.d.ts.map +1 -0
- package/dist/dev-hot.js +30 -0
- package/dist/dev-hot.js.map +1 -0
- package/dist/dev-vault.d.ts +7 -0
- package/dist/dev-vault.d.ts.map +1 -0
- package/dist/dev-vault.js +66 -0
- package/dist/dev-vault.js.map +1 -0
- package/dist/devradar.d.ts +96 -0
- package/dist/devradar.d.ts.map +1 -0
- package/dist/devradar.js +69 -0
- package/dist/devradar.js.map +1 -0
- package/dist/handler.d.ts +7 -0
- package/dist/handler.d.ts.map +1 -0
- package/dist/handler.js +7 -0
- package/dist/handler.js.map +1 -0
- package/dist/index.d.ts +21 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +187 -27
- package/dist/index.js.map +1 -1
- package/dist/inspector.d.ts +9 -0
- package/dist/inspector.d.ts.map +1 -0
- package/dist/inspector.js +8 -0
- package/dist/inspector.js.map +1 -0
- package/dist/load-module.d.ts +4 -3
- package/dist/load-module.d.ts.map +1 -1
- package/dist/load-module.js +66 -51
- package/dist/load-module.js.map +1 -1
- package/dist/logger.d.ts +0 -11
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +2 -1
- package/dist/logger.js.map +1 -1
- package/dist/navigate.d.ts.map +1 -1
- package/dist/navigate.js +73 -12
- package/dist/navigate.js.map +1 -1
- package/dist/renderer.d.ts +32 -1
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +268 -46
- package/dist/renderer.js.map +1 -1
- package/dist/shield-runtime.d.ts +7 -0
- package/dist/shield-runtime.d.ts.map +1 -0
- package/dist/shield-runtime.js +34 -0
- package/dist/shield-runtime.js.map +1 -0
- package/dist/streaming.d.ts +14 -3
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +26 -9
- package/dist/streaming.js.map +1 -1
- package/dist/streaming.test.d.ts +2 -0
- package/dist/streaming.test.d.ts.map +1 -0
- package/dist/streaming.test.js +63 -0
- package/dist/streaming.test.js.map +1 -0
- package/package.json +32 -7
package/dist/renderer.js
CHANGED
|
@@ -14,7 +14,12 @@
|
|
|
14
14
|
* 4. Has Suspense boundary → Cache-Control: no-store (streaming, can't cache)
|
|
15
15
|
* 5. Has user session → Cache-Control: private, no-store (never CDN-cache)
|
|
16
16
|
*/
|
|
17
|
+
import { serialize } from '@nexus_js/serialize';
|
|
18
|
+
import { NotFoundSignal, RedirectSignal } from './context.js';
|
|
19
|
+
import { devErrorHtmlPage } from './dev-error-html.js';
|
|
17
20
|
import { loadRouteModule } from './load-module.js';
|
|
21
|
+
import { emitDevRadar } from './devradar.js';
|
|
22
|
+
import { createStreamingResponse, nextStreamBoundaryId } from './streaming.js';
|
|
18
23
|
// ── Cache TTL Registry — populated by cache() calls during render ─────────────
|
|
19
24
|
// Each render creates its own context; this uses AsyncLocalStorage in Node.js.
|
|
20
25
|
// For edge runtimes, we pass the context explicitly.
|
|
@@ -92,9 +97,45 @@ const DOCTYPE = '<!DOCTYPE html>';
|
|
|
92
97
|
* Renders a matched route to a full HTML response.
|
|
93
98
|
* Wraps the page with its layout chain and injects island hydration scripts.
|
|
94
99
|
*/
|
|
95
|
-
|
|
100
|
+
/**
|
|
101
|
+
* Runs `nxPretext` from every layout (outer → inner) and the page in parallel,
|
|
102
|
+
* then shallow-merges results onto `ctx.pretext` (page wins on key collisions).
|
|
103
|
+
*/
|
|
104
|
+
export async function mergeRoutePretext(matched, ctx, opts) {
|
|
105
|
+
const t0 = Date.now();
|
|
106
|
+
const chain = [
|
|
107
|
+
...matched.layouts.map((l) => ({ filepath: l.filepath, pattern: l.pattern })),
|
|
108
|
+
{ filepath: matched.route.filepath, pattern: matched.route.pattern },
|
|
109
|
+
];
|
|
110
|
+
try {
|
|
111
|
+
const mods = await Promise.all(chain.map((c) => loadRouteModule(c.filepath, {
|
|
112
|
+
dev: opts.dev,
|
|
113
|
+
appRoot: opts.appRoot,
|
|
114
|
+
pattern: c.pattern,
|
|
115
|
+
})));
|
|
116
|
+
const results = await Promise.all(mods.map((mod) => {
|
|
117
|
+
const fn = mod.nxPretext;
|
|
118
|
+
return typeof fn === 'function' ? fn(ctx) : Promise.resolve({});
|
|
119
|
+
}));
|
|
120
|
+
const objects = results.map((r) => r && typeof r === 'object' && !Array.isArray(r) ? r : { value: r });
|
|
121
|
+
return Object.assign({}, ...objects);
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
emitDevRadar({
|
|
125
|
+
type: 'devtools:pretext',
|
|
126
|
+
payload: {
|
|
127
|
+
pattern: matched.route.pattern,
|
|
128
|
+
durationMs: Date.now() - t0,
|
|
129
|
+
parallelCount: chain.length,
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Runs layouts + page render after `ctx.pretext` is set (used by buffered and streaming SSR).
|
|
136
|
+
*/
|
|
137
|
+
export async function runLayoutsAndPage(matched, ctx, opts) {
|
|
96
138
|
let pageHtml = '';
|
|
97
|
-
// Execute layouts from outermost to innermost
|
|
98
139
|
const layoutSlots = [];
|
|
99
140
|
for (const layout of matched.layouts) {
|
|
100
141
|
try {
|
|
@@ -109,10 +150,11 @@ export async function renderRoute(matched, ctx, opts) {
|
|
|
109
150
|
}
|
|
110
151
|
}
|
|
111
152
|
catch (err) {
|
|
153
|
+
if (err instanceof RedirectSignal || err instanceof NotFoundSignal)
|
|
154
|
+
throw err;
|
|
112
155
|
console.error(`[Nexus] Layout render error (${layout.filepath}):`, err);
|
|
113
156
|
}
|
|
114
157
|
}
|
|
115
|
-
// Render the page itself
|
|
116
158
|
try {
|
|
117
159
|
const pageMod = await loadRouteModule(matched.route.filepath, {
|
|
118
160
|
dev: opts.dev,
|
|
@@ -125,7 +167,129 @@ export async function renderRoute(matched, ctx, opts) {
|
|
|
125
167
|
}
|
|
126
168
|
}
|
|
127
169
|
catch (err) {
|
|
170
|
+
if (err instanceof RedirectSignal || err instanceof NotFoundSignal)
|
|
171
|
+
throw err;
|
|
128
172
|
console.error(`[Nexus] Page render error (${matched.route.filepath}):`, err);
|
|
173
|
+
return {
|
|
174
|
+
ok: false,
|
|
175
|
+
result: {
|
|
176
|
+
html: errorPage(err, opts.dev),
|
|
177
|
+
headers: {
|
|
178
|
+
'content-type': 'text/html; charset=utf-8',
|
|
179
|
+
'cache-control': 'no-store',
|
|
180
|
+
},
|
|
181
|
+
status: 500,
|
|
182
|
+
cacheTtl: 0,
|
|
183
|
+
islandCount: 0,
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
let content = pageHtml;
|
|
188
|
+
for (const slot of layoutSlots.reverse()) {
|
|
189
|
+
content = slot.replace('<!--nexus:slot-->', content);
|
|
190
|
+
}
|
|
191
|
+
const islandCount = (content.match(/<nexus-island/g) ?? []).length;
|
|
192
|
+
return { ok: true, content, islandCount };
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Progressive SSR: flush the HTML shell (head + skeleton) before `nxPretext` finishes,
|
|
196
|
+
* then stream the real layout/page fragment and update `#__NEXUS_PRETEXT__`.
|
|
197
|
+
*
|
|
198
|
+
* Requires fragment layouts: the composed route must not emit a root `<html>` document.
|
|
199
|
+
*/
|
|
200
|
+
export function renderRouteStreaming(matched, ctx, opts) {
|
|
201
|
+
markStreamingResponse();
|
|
202
|
+
const boundaryId = nextStreamBoundaryId();
|
|
203
|
+
const emptyPretext = serialize({});
|
|
204
|
+
return createStreamingResponse(async (ctrl) => {
|
|
205
|
+
const shellInner = `<style id="nx-stream-skel">` +
|
|
206
|
+
`.nx-pretext-skeleton{min-height:32vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0.75rem;color:#64748b;font-family:system-ui,sans-serif}` +
|
|
207
|
+
`.nx-pretext-skeleton::before{content:"";width:2.5rem;height:2.5rem;border:3px solid #e2e8f0;border-top-color:#6366f1;border-radius:50%;animation:nx-sk-rot .7s linear infinite}` +
|
|
208
|
+
`@keyframes nx-sk-rot{to{transform:rotate(360deg)}}` +
|
|
209
|
+
`</style>` +
|
|
210
|
+
`<div id="nx-hole-${boundaryId}" class="nx-stream-root" role="status" aria-live="polite" aria-busy="true">` +
|
|
211
|
+
`<div class="nx-pretext-skeleton"><span>Loading…</span></div></div>`;
|
|
212
|
+
let shellHtml = wrapWithDocument(shellInner, opts, [], 0, emptyPretext);
|
|
213
|
+
if (!/^<!DOCTYPE/i.test(shellHtml.trimStart())) {
|
|
214
|
+
shellHtml = DOCTYPE + '\n' + shellHtml;
|
|
215
|
+
}
|
|
216
|
+
ctrl.writeShell(shellHtml);
|
|
217
|
+
ctrl.defer({
|
|
218
|
+
id: boundaryId,
|
|
219
|
+
promise: (async () => {
|
|
220
|
+
try {
|
|
221
|
+
ctx.pretext = await mergeRoutePretext(matched, ctx, opts);
|
|
222
|
+
}
|
|
223
|
+
catch (err) {
|
|
224
|
+
if (err instanceof RedirectSignal) {
|
|
225
|
+
return `<script>location.replace(${JSON.stringify(err.location)})</script>`;
|
|
226
|
+
}
|
|
227
|
+
if (err instanceof NotFoundSignal)
|
|
228
|
+
throw err;
|
|
229
|
+
console.error('[Nexus] Pretext error:', err);
|
|
230
|
+
return errorPage(err, opts.dev);
|
|
231
|
+
}
|
|
232
|
+
resetTtlContext();
|
|
233
|
+
const body = await runLayoutsAndPage(matched, ctx, opts);
|
|
234
|
+
if (!body.ok) {
|
|
235
|
+
resetTtlContext();
|
|
236
|
+
return body.result.html;
|
|
237
|
+
}
|
|
238
|
+
const { content, islandCount } = body;
|
|
239
|
+
if (isFullHtmlDocument(content)) {
|
|
240
|
+
if (opts.dev) {
|
|
241
|
+
console.warn('[Nexus] streamingPretext: route output includes a full <html> document. Use fragment layouts or disable server.streamingPretext.');
|
|
242
|
+
}
|
|
243
|
+
resetTtlContext();
|
|
244
|
+
return (`<div data-nx-stream-warning style="padding:1rem;color:#b45309;background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;font-family:system-ui">` +
|
|
245
|
+
'Streaming Pretext requires fragment layouts (no root <html> in route output). Disable <code>server.streamingPretext</code> or change the layout.' +
|
|
246
|
+
'</div>');
|
|
247
|
+
}
|
|
248
|
+
const cacheControl = computeCacheControl(ctx);
|
|
249
|
+
const bridgeLogs = [];
|
|
250
|
+
if (opts.dev) {
|
|
251
|
+
bridgeLogs.push({
|
|
252
|
+
type: 'render',
|
|
253
|
+
path: new URL(ctx.request.url).pathname,
|
|
254
|
+
duration: 0,
|
|
255
|
+
cacheStrategy: cacheControl.strategy,
|
|
256
|
+
cacheHit: cacheControl.strategy === 'swr' || cacheControl.strategy === 'static-immutable',
|
|
257
|
+
});
|
|
258
|
+
if (islandCount > 0) {
|
|
259
|
+
bridgeLogs.push({ type: 'island-count', islandCount });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
const pretextWire = ctx.pretext !== undefined ? serialize(ctx.pretext) : serialize({});
|
|
263
|
+
resetTtlContext();
|
|
264
|
+
const devBridgeScript = opts.dev && bridgeLogs.length > 0
|
|
265
|
+
? `<script>window.__NEXUS_SERVER_LOGS__=${JSON.stringify(bridgeLogs)};window.__NEXUS_BUILD_INFO__=${JSON.stringify({
|
|
266
|
+
totalJs: 8_400 + islandCount * 1_200,
|
|
267
|
+
reactEquivalent: 148_000,
|
|
268
|
+
islandCount,
|
|
269
|
+
})};</script>`
|
|
270
|
+
: undefined;
|
|
271
|
+
const payload = devBridgeScript
|
|
272
|
+
? { html: content, pretextWire, devBridgeScript }
|
|
273
|
+
: { html: content, pretextWire };
|
|
274
|
+
return payload;
|
|
275
|
+
})(),
|
|
276
|
+
});
|
|
277
|
+
}, {
|
|
278
|
+
headers: {
|
|
279
|
+
'x-nexus-cache-strategy': 'streaming-no-store',
|
|
280
|
+
'x-nexus-island-count': '0',
|
|
281
|
+
...(opts.dev ? { 'x-nexus-ttl': String(0) } : {}),
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
export async function renderRoute(matched, ctx, opts) {
|
|
286
|
+
try {
|
|
287
|
+
ctx.pretext = await mergeRoutePretext(matched, ctx, opts);
|
|
288
|
+
}
|
|
289
|
+
catch (err) {
|
|
290
|
+
if (err instanceof RedirectSignal || err instanceof NotFoundSignal)
|
|
291
|
+
throw err;
|
|
292
|
+
console.error('[Nexus] Pretext error:', err);
|
|
129
293
|
return {
|
|
130
294
|
html: errorPage(err, opts.dev),
|
|
131
295
|
headers: {
|
|
@@ -137,13 +301,11 @@ export async function renderRoute(matched, ctx, opts) {
|
|
|
137
301
|
islandCount: 0,
|
|
138
302
|
};
|
|
139
303
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
content = slot.replace('<!--nexus:slot-->', content);
|
|
304
|
+
const body = await runLayoutsAndPage(matched, ctx, opts);
|
|
305
|
+
if (!body.ok) {
|
|
306
|
+
return body.result;
|
|
144
307
|
}
|
|
145
|
-
|
|
146
|
-
const islandCount = (content.match(/<nexus-island/g) ?? []).length;
|
|
308
|
+
const { content, islandCount } = body;
|
|
147
309
|
// Compute smart cache headers BEFORE resetting the context
|
|
148
310
|
const cacheControl = computeCacheControl(ctx);
|
|
149
311
|
const ttl = cacheControl.ttl;
|
|
@@ -163,12 +325,25 @@ export async function renderRoute(matched, ctx, opts) {
|
|
|
163
325
|
bridgeLogs.push({ type: 'island-count', islandCount });
|
|
164
326
|
}
|
|
165
327
|
}
|
|
166
|
-
const
|
|
328
|
+
const pretextWire = ctx.pretext !== undefined ? serialize(ctx.pretext) : null;
|
|
329
|
+
let fullHtml = wrapWithDocument(content, opts, bridgeLogs, islandCount, pretextWire);
|
|
330
|
+
if (!/^<!DOCTYPE/i.test(fullHtml.trimStart())) {
|
|
331
|
+
fullHtml = DOCTYPE + '\n' + fullHtml;
|
|
332
|
+
}
|
|
333
|
+
// Vary header for cache correctness:
|
|
334
|
+
// - 'Accept-Encoding' — responses differ when the proxy applies gzip/br.
|
|
335
|
+
// - 'Accept' — clients negotiating content type get different payloads.
|
|
336
|
+
// Without Vary, shared caches (CDN, Varnish) can serve compressed responses to
|
|
337
|
+
// clients that don't support compression, or serve the wrong content type.
|
|
338
|
+
const vary = cacheControl.strategy === 'private-no-store'
|
|
339
|
+
? undefined // private/no-store: Vary irrelevant, saves a header byte
|
|
340
|
+
: 'Accept, Accept-Encoding';
|
|
167
341
|
return {
|
|
168
|
-
html:
|
|
342
|
+
html: fullHtml,
|
|
169
343
|
headers: {
|
|
170
344
|
'content-type': 'text/html; charset=utf-8',
|
|
171
345
|
'cache-control': cacheControl.header,
|
|
346
|
+
...(vary ? { vary } : {}),
|
|
172
347
|
'x-nexus-cache-strategy': cacheControl.strategy,
|
|
173
348
|
'x-nexus-island-count': String(islandCount),
|
|
174
349
|
...(opts.dev ? { 'x-nexus-ttl': String(ttl) } : {}),
|
|
@@ -178,37 +353,77 @@ export async function renderRoute(matched, ctx, opts) {
|
|
|
178
353
|
islandCount,
|
|
179
354
|
};
|
|
180
355
|
}
|
|
181
|
-
|
|
182
|
-
|
|
356
|
+
/**
|
|
357
|
+
* When the layout already emits a full `<html>...</html>` document (typical `.nx` root layout),
|
|
358
|
+
* inject Nexus runtime (styles, importmap, HMR, island loader) into that document's `<head>`.
|
|
359
|
+
* Nesting `<html>` inside the shell's `<body>` produces invalid markup and blank pages in browsers.
|
|
360
|
+
*/
|
|
361
|
+
function injectBeforeClosingHead(html, injection) {
|
|
362
|
+
const closeIdx = html.search(/<\/head\s*>/i);
|
|
363
|
+
if (closeIdx !== -1) {
|
|
364
|
+
return html.slice(0, closeIdx) + '\n' + injection + '\n' + html.slice(closeIdx);
|
|
365
|
+
}
|
|
366
|
+
const m = html.match(/<head[^>]*>/i);
|
|
367
|
+
if (m?.index !== undefined) {
|
|
368
|
+
const insertAt = m.index + m[0].length;
|
|
369
|
+
return html.slice(0, insertAt) + '\n' + injection + '\n' + html.slice(insertAt);
|
|
370
|
+
}
|
|
371
|
+
return injection + '\n' + html;
|
|
372
|
+
}
|
|
373
|
+
/** Strip leading doctype so we can detect `<html` after optional `<!DOCTYPE html>`. */
|
|
374
|
+
function stripLeadingDoctype(html) {
|
|
375
|
+
return html.replace(/^\s*<!DOCTYPE[^>]*>/i, '').trimStart();
|
|
376
|
+
}
|
|
377
|
+
/** Avoid `</script>` breaking out of inline JSON when embedding serialized pretext. */
|
|
378
|
+
function escapeJsonForScriptPayload(json) {
|
|
379
|
+
return json.replace(/</g, '\\u003c');
|
|
380
|
+
}
|
|
381
|
+
function isFullHtmlDocument(content) {
|
|
382
|
+
const t = content.trimStart();
|
|
383
|
+
if (/^<\s*html[\s>]/i.test(t))
|
|
384
|
+
return true;
|
|
385
|
+
if (/^<!DOCTYPE/i.test(t)) {
|
|
386
|
+
return /^<\s*html[\s>]/i.test(stripLeadingDoctype(content));
|
|
387
|
+
}
|
|
388
|
+
return false;
|
|
389
|
+
}
|
|
390
|
+
/** Default + app `imports` for dynamically imported island bundles (bare specifiers). */
|
|
391
|
+
function buildImportMapScript(extra) {
|
|
392
|
+
const base = {
|
|
393
|
+
'@nexus_js/runtime/island': '/_nexus/rt/island.js',
|
|
394
|
+
'@nexus_js/runtime': '/_nexus/rt/index.js',
|
|
395
|
+
'@nexus_js/serialize': '/_nexus/rt/serialize.js',
|
|
396
|
+
};
|
|
397
|
+
const imports = extra && typeof extra === 'object' ? { ...base, ...extra } : base;
|
|
398
|
+
const json = JSON.stringify({ imports }, null, 2);
|
|
399
|
+
return `<script type="importmap">\n${json}\n</script>`;
|
|
400
|
+
}
|
|
401
|
+
function wrapWithDocument(content, opts, bridgeLogs = [], islandCount = 0, pretextWire = null) {
|
|
402
|
+
const pretextScript = pretextWire !== null
|
|
403
|
+
? `<script type="application/json" id="__NEXUS_PRETEXT__">${escapeJsonForScriptPayload(pretextWire)}</script>`
|
|
404
|
+
: '';
|
|
183
405
|
const styleLinks = opts.assets.styles
|
|
184
406
|
.map((href) => `<link rel="stylesheet" href="${href}">`)
|
|
185
407
|
.join('\n ');
|
|
186
408
|
const runtimeScript = opts.assets.runtime
|
|
187
409
|
? `<script type="module" src="${opts.assets.runtime}"></script>`
|
|
188
410
|
: '';
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
411
|
+
/** Default host box for custom element — avoids full-width flex rows that steal hits on tiny/empty islands. */
|
|
412
|
+
const nexusIslandHostCSS = `<style id="nexus-island-host">
|
|
413
|
+
nexus-island {
|
|
414
|
+
display: inline-block;
|
|
415
|
+
vertical-align: top;
|
|
416
|
+
width: auto;
|
|
417
|
+
max-width: 100%;
|
|
418
|
+
box-sizing: border-box;
|
|
198
419
|
}
|
|
199
|
-
</
|
|
200
|
-
//
|
|
201
|
-
const
|
|
202
|
-
(
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
if (type === 'reload') location.reload();
|
|
207
|
-
if (type === 'hmr') window.__NEXUS_DEV__?.logHmr();
|
|
208
|
-
};
|
|
209
|
-
ws.onerror = () => {};
|
|
210
|
-
})();
|
|
211
|
-
</script>` : '';
|
|
420
|
+
</style>`;
|
|
421
|
+
// Import map — bare specifiers in island bundles (see `browser.importMap` in nexus.config.ts).
|
|
422
|
+
const importMap = buildImportMapScript(opts.browserImportMap ?? null);
|
|
423
|
+
// Dev: SSE to /_nexus/dev/hot — server pushes `reload` after file watcher runs server.reload().
|
|
424
|
+
const hmrScript = opts.dev
|
|
425
|
+
? `<script>(function(){if(typeof EventSource==='undefined')return;new EventSource('/_nexus/dev/hot').addEventListener('reload',function(){location.reload()})})();</script>`
|
|
426
|
+
: '';
|
|
212
427
|
// Server→browser log bridge (dev only)
|
|
213
428
|
const bridgeScript = opts.dev ? `<script>
|
|
214
429
|
window.__NEXUS_DEV__ = true;
|
|
@@ -219,15 +434,24 @@ window.__NEXUS_BUILD_INFO__ = {
|
|
|
219
434
|
islandCount: ${islandCount}
|
|
220
435
|
};
|
|
221
436
|
</script>${nexusClientDevScript}` : '';
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
437
|
+
const headInjection = `
|
|
438
|
+
${pretextScript}
|
|
439
|
+
${nexusIslandHostCSS}
|
|
226
440
|
${styleLinks}
|
|
227
441
|
${importMap}
|
|
228
442
|
${hmrScript}
|
|
229
443
|
${bridgeScript}
|
|
230
444
|
${runtimeScript}
|
|
445
|
+
`;
|
|
446
|
+
if (isFullHtmlDocument(content)) {
|
|
447
|
+
const doc = /^<!DOCTYPE/i.test(content.trimStart()) ? stripLeadingDoctype(content) : content;
|
|
448
|
+
return injectBeforeClosingHead(doc, headInjection);
|
|
449
|
+
}
|
|
450
|
+
return `<html lang="en">
|
|
451
|
+
<head>
|
|
452
|
+
<meta charset="UTF-8">
|
|
453
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
454
|
+
${headInjection}
|
|
231
455
|
</head>
|
|
232
456
|
<body>
|
|
233
457
|
${content}
|
|
@@ -375,12 +599,10 @@ export function wrapIsland(html, opts) {
|
|
|
375
599
|
>${html}</nexus-island>`;
|
|
376
600
|
}
|
|
377
601
|
function errorPage(err, dev) {
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
${dev ? `<pre style="color:#6b6b80;font-size:0.8rem">${stack}</pre>` : ''}
|
|
384
|
-
</body></html>`;
|
|
602
|
+
return devErrorHtmlPage({
|
|
603
|
+
context: dev ? 'SSR / route error' : 'Error',
|
|
604
|
+
err,
|
|
605
|
+
dev,
|
|
606
|
+
});
|
|
385
607
|
}
|
|
386
608
|
//# sourceMappingURL=renderer.js.map
|
package/dist/renderer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shield-lite runtime allowlist — refreshed after server action preload.
|
|
3
|
+
*/
|
|
4
|
+
export declare function setShieldLite(enabled: boolean): void;
|
|
5
|
+
export declare function refreshShieldAllowlist(root: string, dev: boolean): void;
|
|
6
|
+
export declare function isActionBlockedByShield(actionName: string): boolean;
|
|
7
|
+
//# sourceMappingURL=shield-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shield-runtime.d.ts","sourceRoot":"","sources":["../src/shield-runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEpD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAgBvE;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAGnE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shield-lite runtime allowlist — refreshed after server action preload.
|
|
3
|
+
*/
|
|
4
|
+
import { loadShieldManifestFromRoot } from '@nexus_js/security';
|
|
5
|
+
import { getRegisteredActionNames } from './actions.js';
|
|
6
|
+
let shieldLiteEnabled = false;
|
|
7
|
+
let actionAllow = null;
|
|
8
|
+
export function setShieldLite(enabled) {
|
|
9
|
+
shieldLiteEnabled = enabled;
|
|
10
|
+
}
|
|
11
|
+
export function refreshShieldAllowlist(root, dev) {
|
|
12
|
+
if (!shieldLiteEnabled) {
|
|
13
|
+
actionAllow = null;
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const reg = getRegisteredActionNames();
|
|
17
|
+
if (dev) {
|
|
18
|
+
actionAllow = reg.size > 0 ? new Set(reg) : null;
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const file = loadShieldManifestFromRoot(root);
|
|
22
|
+
if (file && file.actions.length > 0) {
|
|
23
|
+
actionAllow = new Set(file.actions);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
actionAllow = reg.size > 0 ? new Set(reg) : null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function isActionBlockedByShield(actionName) {
|
|
30
|
+
if (!shieldLiteEnabled || !actionAllow || actionAllow.size === 0)
|
|
31
|
+
return false;
|
|
32
|
+
return !actionAllow.has(actionName);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=shield-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shield-runtime.js","sourceRoot":"","sources":["../src/shield-runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAExD,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAC9B,IAAI,WAAW,GAAuB,IAAI,CAAC;AAE3C,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,iBAAiB,GAAG,OAAO,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,GAAY;IAC/D,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,wBAAwB,EAAE,CAAC;IACvC,IAAI,GAAG,EAAE,CAAC;QACR,WAAW,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,UAAkB;IACxD,IAAI,CAAC,iBAAiB,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC"}
|
package/dist/streaming.d.ts
CHANGED
|
@@ -38,10 +38,19 @@
|
|
|
38
38
|
* Final chunk (closes stream):
|
|
39
39
|
* <script>__nx_stream_complete()</script>
|
|
40
40
|
*/
|
|
41
|
+
/**
|
|
42
|
+
* Resolved deferred chunk: plain HTML, or body + optional Pretext wire + dev bridge script.
|
|
43
|
+
* Pretext wire must be the same string produced by `serialize(ctx.pretext)` for `#__NEXUS_PRETEXT__`.
|
|
44
|
+
*/
|
|
45
|
+
export type StreamingPromiseValue = string | {
|
|
46
|
+
html: string;
|
|
47
|
+
pretextWire?: string;
|
|
48
|
+
devBridgeScript?: string;
|
|
49
|
+
};
|
|
41
50
|
export interface StreamingBoundary {
|
|
42
51
|
id: string;
|
|
43
|
-
/** The promise that will resolve to HTML */
|
|
44
|
-
promise: Promise<
|
|
52
|
+
/** The promise that will resolve to HTML (or a structured payload for Pretext streaming). */
|
|
53
|
+
promise: Promise<StreamingPromiseValue>;
|
|
45
54
|
/** Fallback HTML shown while loading */
|
|
46
55
|
fallback?: string;
|
|
47
56
|
/** Error boundary HTML (overrides error.nx at component level) */
|
|
@@ -94,5 +103,7 @@ export declare function createSuspenseBoundary<T>(promise: Promise<T>, opts: {
|
|
|
94
103
|
* Pipes a streaming response to a Node.js `ServerResponse`.
|
|
95
104
|
* Used by the Node.js server adapter.
|
|
96
105
|
*/
|
|
97
|
-
export declare function pipeToNodeResponse(webResponse: Response, nodeRes: import('node:http').ServerResponse): Promise<void>;
|
|
106
|
+
export declare function pipeToNodeResponse(webResponse: Response, nodeRes: import('node:http').ServerResponse, mergeHeaders?: (h: Record<string, string>) => Record<string, string | string[] | number>): Promise<void>;
|
|
107
|
+
/** Stable hole id for streaming Pretext (shell + one deferred body chunk). */
|
|
108
|
+
export declare function nextStreamBoundaryId(): string;
|
|
98
109
|
//# sourceMappingURL=streaming.d.ts.map
|
package/dist/streaming.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;
|
|
1
|
+
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAC7B,MAAM,GACN;IACE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,6FAA6F;IAC7F,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxC,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,0CAA0C;IAC1C,KAAK,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,+BAA+B;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AA0BD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC1D,IAAI,GAAE;IACJ,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;CAC/B,GACL,QAAQ,CAqEV;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,IAAI,EAAE;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;CACrD,GACA;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CAoBlE;AAID;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,QAAQ,EACrB,OAAO,EAAE,OAAO,WAAW,EAAE,cAAc,EAC3C,YAAY,CAAC,EAAE,CACb,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KACtB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC,CAuBf;AAkDD,8EAA8E;AAC9E,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
|
package/dist/streaming.js
CHANGED
|
@@ -98,8 +98,8 @@ export function createStreamingResponse(renderFn, opts = {}) {
|
|
|
98
98
|
// Resolve all pending boundaries in parallel
|
|
99
99
|
const tasks = pending.map(async (boundary) => {
|
|
100
100
|
try {
|
|
101
|
-
const
|
|
102
|
-
write(buildFillChunk(boundary.id,
|
|
101
|
+
const resolved = await boundary.promise;
|
|
102
|
+
write(buildFillChunk(boundary.id, resolved));
|
|
103
103
|
}
|
|
104
104
|
catch (err) {
|
|
105
105
|
const errorHtml = boundary.errorFallback ??
|
|
@@ -164,9 +164,13 @@ export function createSuspenseBoundary(promise, opts) {
|
|
|
164
164
|
* Pipes a streaming response to a Node.js `ServerResponse`.
|
|
165
165
|
* Used by the Node.js server adapter.
|
|
166
166
|
*/
|
|
167
|
-
export async function pipeToNodeResponse(webResponse, nodeRes) {
|
|
168
|
-
|
|
169
|
-
webResponse.headers.forEach((value, key) =>
|
|
167
|
+
export async function pipeToNodeResponse(webResponse, nodeRes, mergeHeaders) {
|
|
168
|
+
const headers = {};
|
|
169
|
+
webResponse.headers.forEach((value, key) => {
|
|
170
|
+
headers[key] = value;
|
|
171
|
+
});
|
|
172
|
+
const merged = mergeHeaders ? mergeHeaders(headers) : headers;
|
|
173
|
+
nodeRes.writeHead(webResponse.status, merged);
|
|
170
174
|
if (!webResponse.body) {
|
|
171
175
|
nodeRes.end();
|
|
172
176
|
return;
|
|
@@ -187,13 +191,22 @@ export async function pipeToNodeResponse(webResponse, nodeRes) {
|
|
|
187
191
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
188
192
|
// Helpers
|
|
189
193
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
190
|
-
function buildFillChunk(id,
|
|
191
|
-
|
|
192
|
-
|
|
194
|
+
function buildFillChunk(id, resolved) {
|
|
195
|
+
const html = typeof resolved === 'string' ? resolved : resolved.html;
|
|
196
|
+
const pretextWire = typeof resolved === 'object' && resolved !== null ? resolved.pretextWire : undefined;
|
|
197
|
+
const devBridge = typeof resolved === 'object' && resolved !== null ? resolved.devBridgeScript : undefined;
|
|
198
|
+
const pretextScript = pretextWire !== undefined
|
|
199
|
+
? `<script>(function(){var el=document.getElementById('__NEXUS_PRETEXT__');if(el)el.textContent=${JSON.stringify(pretextWire)};})();</script>`
|
|
200
|
+
: '';
|
|
201
|
+
const bridge = devBridge ?? '';
|
|
202
|
+
return (pretextScript +
|
|
203
|
+
bridge +
|
|
204
|
+
`<template id="nx-fill-${id}">${html}</template>` +
|
|
205
|
+
`<script>__nx_fill("${id}");document.dispatchEvent(new Event("nexus:stream-chunk"));</script>`);
|
|
193
206
|
}
|
|
194
207
|
function buildErrorChunk(id, html) {
|
|
195
208
|
return (`<template id="nx-fill-${id}">${html}</template>` +
|
|
196
|
-
`<script>__nx_fill("${id}")
|
|
209
|
+
`<script>__nx_fill("${id}");document.dispatchEvent(new Event("nexus:stream-chunk"));</script>`);
|
|
197
210
|
}
|
|
198
211
|
function buildFatalErrorChunk(err) {
|
|
199
212
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -210,6 +223,10 @@ function generateBoundaryId() {
|
|
|
210
223
|
_counter = (_counter + 1) % 0xffff;
|
|
211
224
|
return (_counter + Date.now()).toString(16).slice(-6);
|
|
212
225
|
}
|
|
226
|
+
/** Stable hole id for streaming Pretext (shell + one deferred body chunk). */
|
|
227
|
+
export function nextStreamBoundaryId() {
|
|
228
|
+
return generateBoundaryId();
|
|
229
|
+
}
|
|
213
230
|
function htmlEscape(s) {
|
|
214
231
|
return s.replace(/&/g, '&').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
|
|
215
232
|
}
|
package/dist/streaming.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;
|
|
1
|
+
{"version":3,"file":"streaming.js","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAiCH,8CAA8C;AAC9C,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;UAqBf,CAAC;AAEX;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAA0D,EAC1D,OAGI,EAAE;IAEN,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,IAAI,UAAwD,CAAC;IAE7D,MAAM,MAAM,GAAG,IAAI,cAAc,CAAa;QAC5C,KAAK,CAAC,KAAK,CAAC,IAAI;YACd,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;QACnC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,MAAM,UAAU,GAAqB;QACnC,UAAU,CAAC,IAAI;YACb,yCAAyC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,gBAAgB,WAAW,CAAC,CAAC;YACzE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,QAAQ;YACZ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAED,KAAK;YACH,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACjD,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;KACF,CAAC;IAEF,kBAAkB;IAClB,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;YAE3B,6CAA6C;YAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAC3C,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;oBACxC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC/C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,SAAS,GACb,QAAQ,CAAC,aAAa;wBACtB,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC;wBACnB,qBAAqB,CAAC,GAAG,CAAC,CAAC;oBAC7B,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzB,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,EAAE,CAAC;IAEP,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;IACjD,kDAAkD;IAClD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAEzC,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAmB,EACnB,IAIC;IAED,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAEhC,MAAM,WAAW,GAAG,yBAAyB,EAAE,IAC7C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EACvE,cAAc,CAAC;IAEf,MAAM,QAAQ,GAAsB;QAClC,EAAE;QACF,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACrD,CAAC;IACF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACpC,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,QAAQ,CAAC,aAAa,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AACvC,CAAC;AAED,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAqB,EACrB,OAA2C,EAC3C,YAE+C;IAE/C,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACzC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5C,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,SAAS,cAAc,CAAC,EAAU,EAAE,QAA+B;IACjE,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACrE,MAAM,WAAW,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IACzG,MAAM,SAAS,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3G,MAAM,aAAa,GACjB,WAAW,KAAK,SAAS;QACvB,CAAC,CAAC,gGAAgG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,iBAAiB;QAC9I,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,MAAM,GAAG,SAAS,IAAI,EAAE,CAAC;IAE/B,OAAO,CACL,aAAa;QACb,MAAM;QACN,yBAAyB,EAAE,KAAK,IAAI,aAAa;QACjD,sBAAsB,EAAE,sEAAsE,CAC/F,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EAAU,EAAE,IAAY;IAC/C,OAAO,CACL,yBAAyB,EAAE,KAAK,IAAI,aAAa;QACjD,sBAAsB,EAAE,sEAAsE,CAC/F,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAY;IACxC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,wDAAwD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;AACjG,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAY;IACzC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO;8BACqB,UAAU,CAAC,GAAG,CAAC;SACpC,CAAC;AACV,CAAC;AAED,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,SAAS,kBAAkB;IACzB,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;IACnC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB;IAClC,OAAO,kBAAkB,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.test.d.ts","sourceRoot":"","sources":["../src/streaming.test.ts"],"names":[],"mappings":""}
|