@vesk/compiler 0.2.42 → 0.2.44
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.map +1 -1
- package/dist/actions.js +17 -1
- package/dist/client-codegen.d.ts +25 -0
- package/dist/client-codegen.d.ts.map +1 -1
- package/dist/client-codegen.js +225 -15
- package/dist/errors.d.ts +14 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +36 -0
- package/dist/ir-generator.d.ts.map +1 -1
- package/dist/ir-generator.js +466 -199
- package/dist/ir.d.ts +22 -1
- package/dist/ir.d.ts.map +1 -1
- package/dist/ir.js +18 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +25 -1
- package/dist/precompile-runtime.d.ts.map +1 -1
- package/dist/precompile-runtime.js +4 -0
- package/dist/precompile.js +6 -2
- package/dist/server-jsgen.d.ts.map +1 -1
- package/dist/server-jsgen.js +8 -1
- package/dist/server-render.d.ts.map +1 -1
- package/dist/server-render.js +138 -56
- package/dist/server-utils.d.ts.map +1 -1
- package/dist/server-utils.js +33 -5
- package/dist/ssr-store.d.ts +60 -0
- package/dist/ssr-store.d.ts.map +1 -1
- package/dist/ssr-store.js +157 -6
- package/dist/tokens.d.ts +28 -0
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +200 -19
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vesk-plugin.d.ts +2 -0
- package/dist/vesk-plugin.d.ts.map +1 -1
- package/dist/vesk-plugin.js +28 -1
- package/dist/vsk-collision.d.ts +44 -0
- package/dist/vsk-collision.d.ts.map +1 -0
- package/dist/vsk-collision.js +73 -0
- package/dist/vsk-imports.d.ts +51 -0
- package/dist/vsk-imports.d.ts.map +1 -1
- package/dist/vsk-imports.js +106 -9
- package/package.json +2 -2
package/dist/ir.d.ts
CHANGED
|
@@ -13,7 +13,28 @@ export declare class IRRoot {
|
|
|
13
13
|
staticProps: string | null;
|
|
14
14
|
loadFn: string | null;
|
|
15
15
|
topLevelCode: string[];
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Same-file specifier exports (`export { A }`, `export { A as B }`) as
|
|
18
|
+
* `{ local, exported }` pairs. These are NOT emitted as JS: components live
|
|
19
|
+
* in the component registry rather than as top-level bindings, so a raw
|
|
20
|
+
* `export { A }` would reference an undefined identifier. The pairs become
|
|
21
|
+
* registry alias entries so the exported name is importable.
|
|
22
|
+
*/
|
|
23
|
+
exportAliases: Array<{
|
|
24
|
+
local: string;
|
|
25
|
+
exported: string;
|
|
26
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* Module specifiers re-exported from this file (`export * from './x.vsk'`,
|
|
29
|
+
* `export { A } from './x.vsk'`, `export * as ns from './x.vsk'`). The
|
|
30
|
+
* statements themselves are dropped — the target file is compiled and
|
|
31
|
+
* merged into this one's component registry instead.
|
|
32
|
+
*/
|
|
33
|
+
reexportSources: string[];
|
|
34
|
+
constructor(components: ComponentIR[], imports?: string[], importedNames?: Set<string>, staticProps?: string | null, loadFn?: string | null, topLevelCode?: string[], exportAliases?: Array<{
|
|
35
|
+
local: string;
|
|
36
|
+
exported: string;
|
|
37
|
+
}>, reexportSources?: string[]);
|
|
17
38
|
}
|
|
18
39
|
export declare class ComponentIR {
|
|
19
40
|
name: string;
|
package/dist/ir.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEjD,qBAAa,UAAU;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;gBAEH,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,EAAE,GAAG,GAAE,UAAU,GAAG,IAAW,EAAE,MAAM,GAAE,MAAM,GAAG,IAAW;CAM1G;AAED,qBAAa,MAAM;IACjB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":"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"}
|
package/dist/ir.js
CHANGED
|
@@ -17,13 +17,30 @@ export class IRRoot {
|
|
|
17
17
|
staticProps;
|
|
18
18
|
loadFn;
|
|
19
19
|
topLevelCode;
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Same-file specifier exports (`export { A }`, `export { A as B }`) as
|
|
22
|
+
* `{ local, exported }` pairs. These are NOT emitted as JS: components live
|
|
23
|
+
* in the component registry rather than as top-level bindings, so a raw
|
|
24
|
+
* `export { A }` would reference an undefined identifier. The pairs become
|
|
25
|
+
* registry alias entries so the exported name is importable.
|
|
26
|
+
*/
|
|
27
|
+
exportAliases;
|
|
28
|
+
/**
|
|
29
|
+
* Module specifiers re-exported from this file (`export * from './x.vsk'`,
|
|
30
|
+
* `export { A } from './x.vsk'`, `export * as ns from './x.vsk'`). The
|
|
31
|
+
* statements themselves are dropped — the target file is compiled and
|
|
32
|
+
* merged into this one's component registry instead.
|
|
33
|
+
*/
|
|
34
|
+
reexportSources;
|
|
35
|
+
constructor(components, imports = [], importedNames = new Set(), staticProps = null, loadFn = null, topLevelCode = [], exportAliases = [], reexportSources = []) {
|
|
21
36
|
this.components = components;
|
|
22
37
|
this.imports = imports;
|
|
23
38
|
this.importedNames = importedNames;
|
|
24
39
|
this.staticProps = staticProps;
|
|
25
40
|
this.loadFn = loadFn;
|
|
26
41
|
this.topLevelCode = topLevelCode;
|
|
42
|
+
this.exportAliases = exportAliases;
|
|
43
|
+
this.reexportSources = reexportSources;
|
|
27
44
|
}
|
|
28
45
|
}
|
|
29
46
|
export class ComponentIR {
|
package/dist/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAOtC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0BD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,cAAc,EAAE,CAAA;CAAE,CA4LpG;AAED,wBAAgB,gBAAgB,IAAI,OAAO,KAAK,CAAC,MAAM,CAEtD;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAuEzE"}
|
package/dist/parser.js
CHANGED
|
@@ -3,6 +3,7 @@ import { tsPlugin } from './acorn-ts-plugin/index.js';
|
|
|
3
3
|
import { VeskParserPlugin } from '@vesk/compiler/src/vesk-plugin';
|
|
4
4
|
import { blankComments, containsForOfIn } from '@vesk/compiler/src/scan';
|
|
5
5
|
import { VeskError, codeFrame } from '@vesk/compiler/src/errors';
|
|
6
|
+
import { findSpecifierExports, hasTopLevelValueDeclaration } from '@vesk/compiler/src/tokens';
|
|
6
7
|
function isIdentChar(code) {
|
|
7
8
|
return ((code >= 97 && code <= 122) || (code >= 65 && code <= 90) || (code >= 48 && code <= 57) || code === 95 || code === 36);
|
|
8
9
|
}
|
|
@@ -258,8 +259,28 @@ export function createBaseParser() {
|
|
|
258
259
|
export function parse(source, options = {}) {
|
|
259
260
|
const ParserClass = createBaseParser();
|
|
260
261
|
const { code, annotations } = preprocessForClauses(blankComments(source));
|
|
262
|
+
// Acorn validates that every `export { X }` names a real top-level binding.
|
|
263
|
+
// A `.vsk` component is a registry entry, not a binding, so acorn rejects
|
|
264
|
+
// `export { MyComponent }`. Remove only those specifier lists — one whose
|
|
265
|
+
// local IS a real declaration keeps native module semantics — and carry the
|
|
266
|
+
// pairs on the AST; the IR generator turns them into registry aliases.
|
|
267
|
+
const vskSource = !options.filename || String(options.filename).endsWith('.vsk');
|
|
268
|
+
const specifierExports = vskSource
|
|
269
|
+
? findSpecifierExports(code).filter((e) => !hasTopLevelValueDeclaration(code, e.local))
|
|
270
|
+
: [];
|
|
271
|
+
let parseable = code;
|
|
272
|
+
if (specifierExports.length > 0) {
|
|
273
|
+
const edits = specifierExports
|
|
274
|
+
.map((e) => code.slice(e.start, e.end))
|
|
275
|
+
.map((text) => text.split('').map((ch) => (ch === '\n' ? '\n' : ' ')).join(''));
|
|
276
|
+
let cut = 0;
|
|
277
|
+
for (const spec of specifierExports) {
|
|
278
|
+
const blanked = edits[cut++];
|
|
279
|
+
parseable = parseable.slice(0, spec.start) + blanked + parseable.slice(spec.end);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
261
282
|
try {
|
|
262
|
-
const ast = ParserClass.parse(
|
|
283
|
+
const ast = ParserClass.parse(parseable, {
|
|
263
284
|
ecmaVersion: 'latest',
|
|
264
285
|
sourceType: 'module',
|
|
265
286
|
locations: true,
|
|
@@ -269,6 +290,9 @@ export function parse(source, options = {}) {
|
|
|
269
290
|
if (annotations.length > 0) {
|
|
270
291
|
ast.__vskAnnotations = annotations;
|
|
271
292
|
}
|
|
293
|
+
if (specifierExports.length > 0) {
|
|
294
|
+
ast.__vskSpecifierExports = specifierExports.map((e) => ({ local: e.local, exported: e.exported }));
|
|
295
|
+
}
|
|
272
296
|
return ast;
|
|
273
297
|
}
|
|
274
298
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"precompile-runtime.d.ts","sourceRoot":"","sources":["../src/precompile-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"precompile-runtime.d.ts","sourceRoot":"","sources":["../src/precompile-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AA0BlE,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAe9F,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACnB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,2CAA2C;IAC3C,UAAU,EAAE,yBAAyB,EAAE,CAAC;IACxC,iEAAiE;IACjE,OAAO,EAAE,uBAAuB,EAAE,CAAC;IACnC,2CAA2C;IAC3C,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,6EAA6E;IAC7E,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0DAA0D;IAC1D,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAqCD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAiBhD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA0BlD;AAgHD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,CAE7E"}
|
|
@@ -2,6 +2,7 @@ import { createRequire } from 'node:module';
|
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { Expression, IRRoot, ComponentIR, StaticNode, TextNode, DynamicBinding, OpaqueDynamicRegion, MapRegion, ComponentRef, ComponentCall, SlotNode, WhileLoop, SwitchCase, SwitchBlock, TryCatch, TrackDecl, RuntimeStatement, ForLoop, ServerBlock, ClientBlock, HeadBlock, } from '@vesk/compiler/src/ir';
|
|
4
4
|
import { loadRuntimeImports, evalTopLevelCode } from '@vesk/compiler/src/server-utils';
|
|
5
|
+
import { applyVskRegistryAliases, vskRegistryAliases } from '@vesk/compiler/src/vsk-imports';
|
|
5
6
|
// ---------------------------------------------------------------------------
|
|
6
7
|
// IR serialization.
|
|
7
8
|
// ---------------------------------------------------------------------------
|
|
@@ -199,6 +200,9 @@ function hydrateFile(plan, seen) {
|
|
|
199
200
|
__vesk[key] = subResult.__vesk[key];
|
|
200
201
|
}
|
|
201
202
|
}
|
|
203
|
+
// `export { A as B }` / `import { A as B } from './x.vsk'` are registry
|
|
204
|
+
// aliases, not emitted JS — register them once every sub-file has merged in.
|
|
205
|
+
applyVskRegistryAliases(componentMap, vskRegistryAliases(plan.runtimeImports || [], ir.exportAliases));
|
|
202
206
|
return { ir, componentMap, __vesk };
|
|
203
207
|
}
|
|
204
208
|
/**
|
package/dist/precompile.js
CHANGED
|
@@ -5,7 +5,7 @@ import { generateIR } from '@vesk/compiler/src/ir-generator';
|
|
|
5
5
|
import { setVskHydrate } from '@vesk/compiler/src/server-utils';
|
|
6
6
|
import { buildComponentEntries } from '@vesk/compiler/src/server-jsgen';
|
|
7
7
|
import { transformTopLevelForActions } from '@vesk/compiler/src/actions';
|
|
8
|
-
import { collectVskImportPaths } from '@vesk/compiler/src/vsk-imports';
|
|
8
|
+
import { collectVskImportPaths, collectVskReexportPaths } from '@vesk/compiler/src/vsk-imports';
|
|
9
9
|
import { inlineMdImportsFrom, guessProjectRoots } from '@vesk/compiler/src/md-inline';
|
|
10
10
|
import { collectModuleBundle, } from '@vesk/compiler/src/module-imports';
|
|
11
11
|
import { irToJSON } from '@vesk/compiler/src/precompile-runtime';
|
|
@@ -50,7 +50,11 @@ function precompileFileInternal(source, sourcePath, seenImportFiles) {
|
|
|
50
50
|
const bindings = sourcePath !== undefined ? collectModuleBundle(ir.imports, dirname(sourcePath), collector) : [];
|
|
51
51
|
const subFiles = [];
|
|
52
52
|
if (sourcePath !== undefined) {
|
|
53
|
-
|
|
53
|
+
const vskPaths = [
|
|
54
|
+
...collectVskImportPaths(ir.imports, sourcePath),
|
|
55
|
+
...collectVskReexportPaths(ir.reexportSources, sourcePath),
|
|
56
|
+
];
|
|
57
|
+
for (const importPath of vskPaths) {
|
|
54
58
|
if (seenImportFiles.has(importPath))
|
|
55
59
|
continue;
|
|
56
60
|
seenImportFiles.add(importPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-jsgen.d.ts","sourceRoot":"","sources":["../src/server-jsgen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOzE,OAAO,EAAkG,KAAK,WAAW,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"server-jsgen.d.ts","sourceRoot":"","sources":["../src/server-jsgen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOzE,OAAO,EAAkG,KAAK,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAoDrK,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,GAAE,OAAe,EAAE,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,MAAM,CAgEjJ;AA4XD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAqD1F;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAkCzE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAYhG"}
|
package/dist/server-jsgen.js
CHANGED
|
@@ -3,6 +3,7 @@ import { isStaticIR, collectTrackedNames, transformTracked, transformTrackedInit
|
|
|
3
3
|
import { unwrapTrackCall, stripTrackGeneric, hasTopLevelComma, skipWhitespace, findBalancedEnd, startsWithIdentifier } from '@vesk/compiler/src/scan';
|
|
4
4
|
import { escapeHtml, indent, exprJS, extractTopLevelNames, extractRuntimeNames, buildParamInit, __vskHydrate, __vskMarkerless, __vskImportedNames, setVskImportedNames, setVskForceClaim, takeVskForceClaim, nextVskId, } from '@vesk/compiler/src/server-utils';
|
|
5
5
|
import { localValueImportNames } from '@vesk/compiler/src/module-imports';
|
|
6
|
+
import { vskImportValueNames } from '@vesk/compiler/src/vsk-imports';
|
|
6
7
|
// Hydrate-mode component-boundary wrapper. Each server-rendered component call
|
|
7
8
|
// is preceded by a `<!--vsk-->` marker and a single container element: the
|
|
8
9
|
// hydration walker adopts that element as the component root
|
|
@@ -580,7 +581,13 @@ export function buildComponentEntries(irRoot) {
|
|
|
580
581
|
const importedNames = new Set([...runtimeNames, ...localValueNames, ...topValueNames]);
|
|
581
582
|
const hasTracked = irRoot.components.some((c) => c.body.some((n) => n instanceof TrackDecl));
|
|
582
583
|
const extraNames = hasTracked ? ['get', 'set', 'track'] : [];
|
|
583
|
-
|
|
584
|
+
// Values exported by a `.vsk` module (`export const MAX = 10`) are hoisted
|
|
585
|
+
// into this file's `__vesk` and must be destructured into component scope.
|
|
586
|
+
// They are excluded from `importedNames` above: a name imported from a `.vsk`
|
|
587
|
+
// file may name a component, and components must keep resolving through the
|
|
588
|
+
// registry rather than a scope local.
|
|
589
|
+
const vskValueNames = vskImportValueNames(irRoot.imports);
|
|
590
|
+
const allNames = [...new Set([...runtimeNames, ...topNames, ...extraNames, ...localValueNames, ...vskValueNames])];
|
|
584
591
|
const scopeDecl = allNames.length > 0 ? `const { ${allNames.join(', ')} } = __vesk;\n` : '';
|
|
585
592
|
setVskImportedNames(importedNames);
|
|
586
593
|
const entries = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-render.d.ts","sourceRoot":"","sources":["../src/server-render.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAqB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"server-render.d.ts","sourceRoot":"","sources":["../src/server-render.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAqB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAuCvJ,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAKhG;AA6DD,wBAAgB,MAAM,CACpB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAa,EAC3C,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C1B;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAa,EAC3C,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsF9C;AAoED,KAAK,gBAAgB,GAAG,OAAO,aAAa,EAAE,UAAU,CAAC;AAEzD,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,gBAAgB,EAAE,GAAG,SAAS,GAAG,IAAI,EAC9C,GAAG,CAAC,EAAE,OAAO,aAAa,EAAE,mBAAmB,GAC9C,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,gBAAgB,EAAE,GAAG,SAAS,GAAG,IAAI,EAC9C,GAAG,CAAC,EAAE,OAAO,aAAa,EAAE,mBAAmB,GAC9C,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,EAC1B,GAAG,CAAC,EAAE,OAAO,aAAa,EAAE,mBAAmB,GAC9C,OAAO,CAAC,MAAM,CAAC,CAQjB;AAED,wBAAsB,GAAG,CACvB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAO,GACnI,OAAO,CAAC,SAAS,CAAC,CA6EpB;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACpD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,CAAC,EAAE,kBAAkB,GAAG,IAAI,GACnC,MAAM,EAAE,CAuBV;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAa,EAC3C,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAiHjB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAa,EAC3C,OAAO,GAAE,eAAoB,GAC5B,cAAc,CAAC,MAAM,CAAC,CAkJxB"}
|
package/dist/server-render.js
CHANGED
|
@@ -8,10 +8,11 @@ import { isStatic, prettifyHtml, resetVskState, loadRuntimeImports, evalTopLevel
|
|
|
8
8
|
import { renderHeadHtml, mergeHeadHtml } from '@vesk/compiler/src/server-head';
|
|
9
9
|
import { buildComponentMap } from '@vesk/compiler/src/server-jsgen';
|
|
10
10
|
import { transformTopLevelForActions } from '@vesk/compiler/src/actions';
|
|
11
|
-
import { collectVskImportPaths } from '@vesk/compiler/src/vsk-imports';
|
|
11
|
+
import { collectVskImportPaths, collectVskReexportPaths, vskRegistryAliases, applyVskRegistryAliases } from '@vesk/compiler/src/vsk-imports';
|
|
12
12
|
import { inlineMdImportsFrom, guessProjectRoots } from '@vesk/compiler/src/md-inline';
|
|
13
|
-
import { withSsrStore, ssrSink } from '@vesk/compiler/src/ssr-store';
|
|
13
|
+
import { withSsrStore, withSsrStoreOf, adoptSsrStore, ssrSink, keepSsrSlot, dropSsrSlot, isSsrSlotLive } from '@vesk/compiler/src/ssr-store';
|
|
14
14
|
import { applyLocalModuleImports } from '@vesk/compiler/src/module-imports';
|
|
15
|
+
import { VskComponentOwners } from '@vesk/compiler/src/vsk-collision';
|
|
15
16
|
// Registry-hoisted sub components are invoked with the caller's `__vesk`,
|
|
16
17
|
// but each component's scope declaration destructures its DEFINING file's
|
|
17
18
|
// top-level bindings. When two `.vsk` files declare the same top-level name
|
|
@@ -22,9 +23,12 @@ function scopedVesk(fn, fallback) {
|
|
|
22
23
|
return fn.__veskScope || fallback;
|
|
23
24
|
}
|
|
24
25
|
export function compileFile(source, options) {
|
|
25
|
-
|
|
26
|
+
const owners = new VskComponentOwners();
|
|
27
|
+
const result = compileFileInternal(source, options?.sourcePath, new Set(), owners);
|
|
28
|
+
owners.report('SSR');
|
|
29
|
+
return result;
|
|
26
30
|
}
|
|
27
|
-
function compileFileInternal(source, sourcePath, seenImportFiles) {
|
|
31
|
+
function compileFileInternal(source, sourcePath, seenImportFiles, owners) {
|
|
28
32
|
if (sourcePath) {
|
|
29
33
|
const dir = dirname(sourcePath);
|
|
30
34
|
source = inlineMdImportsFrom(source, sourcePath, guessProjectRoots(dir));
|
|
@@ -33,10 +37,20 @@ function compileFileInternal(source, sourcePath, seenImportFiles) {
|
|
|
33
37
|
const ir = generateIR(ast, source, sourcePath);
|
|
34
38
|
const componentMap = buildComponentMap(ir, true);
|
|
35
39
|
const ownComponentNames = ir.components.map((c) => c.name);
|
|
40
|
+
// Every component shares one registry, so a name declared in two files
|
|
41
|
+
// resolves to one of them. SSR keeps the FIRST, the client keeps the LAST —
|
|
42
|
+
// report it rather than letting the two sides render different components.
|
|
43
|
+
if (sourcePath && owners)
|
|
44
|
+
for (const n of ownComponentNames)
|
|
45
|
+
owners.claim(n, sourcePath);
|
|
36
46
|
const __vesk = loadRuntimeImports(ir.imports);
|
|
37
47
|
applyLocalModuleImports(__vesk, ir.imports, sourcePath);
|
|
38
48
|
if (sourcePath) {
|
|
39
|
-
|
|
49
|
+
const vskPaths = [
|
|
50
|
+
...collectVskImportPaths(ir.imports, sourcePath),
|
|
51
|
+
...collectVskReexportPaths(ir.reexportSources, sourcePath),
|
|
52
|
+
];
|
|
53
|
+
for (const importPath of vskPaths) {
|
|
40
54
|
if (seenImportFiles.has(importPath))
|
|
41
55
|
continue;
|
|
42
56
|
seenImportFiles.add(importPath);
|
|
@@ -51,7 +65,7 @@ function compileFileInternal(source, sourcePath, seenImportFiles) {
|
|
|
51
65
|
catch {
|
|
52
66
|
continue;
|
|
53
67
|
}
|
|
54
|
-
const sub = compileFileInternal(importedSrc, importPath, seenImportFiles);
|
|
68
|
+
const sub = compileFileInternal(importedSrc, importPath, seenImportFiles, owners);
|
|
55
69
|
for (const [name, fn] of sub.componentMap) {
|
|
56
70
|
if (!componentMap.has(name))
|
|
57
71
|
componentMap.set(name, fn);
|
|
@@ -67,6 +81,9 @@ function compileFileInternal(source, sourcePath, seenImportFiles) {
|
|
|
67
81
|
}
|
|
68
82
|
}
|
|
69
83
|
evalTopLevelCode(transformTopLevelForActions(ir.topLevelCode, 'server'), __vesk);
|
|
84
|
+
// `export { A as B }` and `import { A as B } from './x.vsk'` are registry
|
|
85
|
+
// aliases, not emitted JS — register them once every sub-file has merged in.
|
|
86
|
+
applyVskRegistryAliases(componentMap, vskRegistryAliases(ir.imports, ir.exportAliases));
|
|
70
87
|
// Sub-file components arrive pre-scoped from the recursive call below;
|
|
71
88
|
// scope the remaining (own) components to this file's bindings.
|
|
72
89
|
for (const name of ownComponentNames) {
|
|
@@ -88,32 +105,39 @@ export function render(source, componentName, props = {}, registry = new Map(),
|
|
|
88
105
|
const targetComp = compiled.ir.components.find((c) => c.name === componentName);
|
|
89
106
|
const isAsyncComp = !!(targetComp && (targetComp.isAsync || targetComp.ssrAwait));
|
|
90
107
|
globalThis.__vsk_ssr = true;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
108
|
+
// Resolve the token INSIDE the render scope. The global is an AsyncLocalStorage
|
|
109
|
+
// accessor (see ssr-store.ts), so outside a scope it reads undefined and any
|
|
110
|
+
// assignment is dropped — reading it first would leave renderToken undefined
|
|
111
|
+
// and silently skip the settle/cleanup below.
|
|
112
|
+
return withSsrStore(() => {
|
|
113
|
+
if (!globalThis.__vsk_ssr_token)
|
|
114
|
+
globalThis.__vsk_ssr_token = Math.random().toString(36).slice(2);
|
|
115
|
+
const renderToken = globalThis.__vsk_ssr_token;
|
|
116
|
+
keepSsrSlot(renderToken);
|
|
117
|
+
if (isAsyncComp) {
|
|
118
|
+
return (async () => {
|
|
119
|
+
let bodyHtml;
|
|
120
|
+
try {
|
|
121
|
+
bodyHtml = await renderFn(props, fullRegistry, scopedVesk(renderFn, __vesk));
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
delete globalThis.__vsk_ssr;
|
|
125
|
+
await settleSsrPromises(renderToken);
|
|
126
|
+
clearSsrCells(renderToken);
|
|
127
|
+
}
|
|
128
|
+
return bodyHtml;
|
|
129
|
+
})();
|
|
130
|
+
}
|
|
131
|
+
let bodyHtml;
|
|
132
|
+
try {
|
|
133
|
+
bodyHtml = renderFn(props, fullRegistry, scopedVesk(renderFn, __vesk));
|
|
134
|
+
}
|
|
135
|
+
finally {
|
|
136
|
+
delete globalThis.__vsk_ssr;
|
|
137
|
+
clearSsrCells(renderToken);
|
|
138
|
+
}
|
|
139
|
+
return bodyHtml;
|
|
140
|
+
});
|
|
117
141
|
}
|
|
118
142
|
export function renderPage(source, componentName, props = {}, registry = new Map(), options = {}) {
|
|
119
143
|
resetVskState(!!options.hydrate, options.markerless !== false);
|
|
@@ -144,9 +168,10 @@ export function renderPage(source, componentName, props = {}, registry = new Map
|
|
|
144
168
|
if (!globalThis.__vsk_ssr_token)
|
|
145
169
|
globalThis.__vsk_ssr_token = Math.random().toString(36).slice(2);
|
|
146
170
|
const renderToken = globalThis.__vsk_ssr_token;
|
|
171
|
+
keepSsrSlot(renderToken);
|
|
147
172
|
pruneSsrDataSlots();
|
|
148
173
|
if (targetComp && (targetComp.isAsync || targetComp.ssrAwait)) {
|
|
149
|
-
return
|
|
174
|
+
return (async () => {
|
|
150
175
|
let bodyHtml;
|
|
151
176
|
try {
|
|
152
177
|
bodyHtml = await renderFn(ssrProps, fullRegistry, scopedVesk(renderFn, __vesk));
|
|
@@ -165,11 +190,11 @@ export function renderPage(source, componentName, props = {}, registry = new Map
|
|
|
165
190
|
head: renderHeadHtml(targetComp, ssrProps),
|
|
166
191
|
props: ssrProps
|
|
167
192
|
};
|
|
168
|
-
})()
|
|
193
|
+
})();
|
|
169
194
|
}
|
|
170
195
|
let bodyHtml;
|
|
171
196
|
try {
|
|
172
|
-
bodyHtml =
|
|
197
|
+
bodyHtml = renderFn(ssrProps, fullRegistry, scopedVesk(renderFn, __vesk));
|
|
173
198
|
}
|
|
174
199
|
finally {
|
|
175
200
|
delete globalThis.__vsk_ssr;
|
|
@@ -179,11 +204,11 @@ export function renderPage(source, componentName, props = {}, registry = new Map
|
|
|
179
204
|
if (pending && pending.length > 0) {
|
|
180
205
|
// A sync component still started server resources (useFetch): settle them
|
|
181
206
|
// before returning so the handoff serializes real data, not loading state.
|
|
182
|
-
return
|
|
207
|
+
return (async () => {
|
|
183
208
|
await settleSsrPromises(renderToken);
|
|
184
209
|
clearSsrCells(renderToken);
|
|
185
210
|
return { body: bodyHtml, head: headHtml, props: ssrProps };
|
|
186
|
-
})()
|
|
211
|
+
})();
|
|
187
212
|
}
|
|
188
213
|
clearSsrCells(renderToken);
|
|
189
214
|
return { body: bodyHtml, head: headHtml, props: ssrProps };
|
|
@@ -210,6 +235,10 @@ function clearSsrCells(token) {
|
|
|
210
235
|
return;
|
|
211
236
|
delete globalThis[`__vsk_ssr_promises_${token}`];
|
|
212
237
|
delete globalThis[`__vsk_ssr_failures_${token}`];
|
|
238
|
+
// This render is done with the token: release the slot so the reaper below
|
|
239
|
+
// can collect paths that never run renderFullPage (a bare renderPage/render
|
|
240
|
+
// leaves its data slot behind for the full-page merge).
|
|
241
|
+
dropSsrSlot(token);
|
|
213
242
|
const cells = globalThis.__vsk_ssr_cells;
|
|
214
243
|
if (!cells || !(cells instanceof Map))
|
|
215
244
|
return;
|
|
@@ -226,24 +255,50 @@ function clearSsrCells(token) {
|
|
|
226
255
|
async function settleSsrPromises(token) {
|
|
227
256
|
if (!token)
|
|
228
257
|
return;
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
await
|
|
258
|
+
const key = `__vsk_ssr_promises_${token}`;
|
|
259
|
+
// Drain until the queue stops growing. The runtime only ever pushes onto
|
|
260
|
+
// this array, and settling one promise can register another: an async
|
|
261
|
+
// component body re-runs after its previous await and starts the next
|
|
262
|
+
// fetch. A single allSettled over a snapshot returns before that lands, so
|
|
263
|
+
// the render serializes an empty data slot and ships without its ssr-data
|
|
264
|
+
// script — the client then refetches what SSR already had.
|
|
265
|
+
for (let round = 0; round < 10; round++) {
|
|
266
|
+
const pending = globalThis[key];
|
|
267
|
+
if (!pending || pending.length === 0)
|
|
268
|
+
return;
|
|
269
|
+
const before = pending.length;
|
|
270
|
+
await Promise.allSettled(pending.slice());
|
|
271
|
+
const after = globalThis[key];
|
|
272
|
+
if (!after || after.length <= before)
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
233
275
|
}
|
|
234
276
|
/**
|
|
235
277
|
* Bound the per-token SSR data slots against abandonment (dev-partial
|
|
236
278
|
* renderPage / render() that never runs renderFullPage). Slots are keyed by
|
|
237
|
-
*
|
|
279
|
+
* per-request tokens, so deleted-slot accounting by token can't be cleaned by
|
|
238
280
|
* an owning render; cap the map instead. RenderFullPage/RenderPageStream delete
|
|
239
281
|
* their own slot + token in every path, so this only guards the untracked ones.
|
|
282
|
+
*
|
|
283
|
+
* Live renders are exempt. Slots are only reapable once no render owns them
|
|
284
|
+
* (see isSsrSlotLive) — a cap that ignored ownership would delete a
|
|
285
|
+
* *concurrent* request's handoff, which is the empty-ssr-data bug again, just
|
|
286
|
+
* triggered by load rather than by interleaving.
|
|
240
287
|
*/
|
|
241
288
|
function pruneSsrDataSlots() {
|
|
242
289
|
const g = globalThis;
|
|
243
|
-
const
|
|
244
|
-
|
|
290
|
+
const prefix = '__vsk_ssr_data_';
|
|
291
|
+
const stale = [];
|
|
292
|
+
for (const k of Object.keys(g)) {
|
|
293
|
+
if (typeof k !== 'string' || !k.startsWith(prefix))
|
|
294
|
+
continue;
|
|
295
|
+
if (isSsrSlotLive(k.slice(prefix.length)))
|
|
296
|
+
continue;
|
|
297
|
+
stale.push(k);
|
|
298
|
+
}
|
|
299
|
+
if (stale.length <= 40)
|
|
245
300
|
return;
|
|
246
|
-
|
|
301
|
+
stale.sort().slice(0, stale.length - 40).forEach((k) => {
|
|
247
302
|
delete g[k];
|
|
248
303
|
});
|
|
249
304
|
}
|
|
@@ -404,6 +459,7 @@ export async function renderFullPage(source, componentName, props = {}, registry
|
|
|
404
459
|
if (!globalThis.__vsk_ssr_token)
|
|
405
460
|
globalThis.__vsk_ssr_token = Math.random().toString(36).slice(2);
|
|
406
461
|
const renderToken = globalThis.__vsk_ssr_token;
|
|
462
|
+
keepSsrSlot(renderToken);
|
|
407
463
|
pruneSsrDataSlots();
|
|
408
464
|
// Start this render's handoff store fresh: setSsrData mirrors into
|
|
409
465
|
// globalThis.__vsk_ssr_data (see resource.ts) because the AsyncLocalStorage
|
|
@@ -498,12 +554,24 @@ ${dataScriptBlock}${clientScript}</body>
|
|
|
498
554
|
finally {
|
|
499
555
|
delete globalThis.__vsk_ssr;
|
|
500
556
|
delete globalThis[`__vsk_ssr_data_${renderToken}`];
|
|
501
|
-
|
|
557
|
+
// The token lives in the AsyncLocalStorage store now (see ssr-store.ts);
|
|
558
|
+
// it goes away with the scope. Deleting the global would destroy the
|
|
559
|
+
// request-scoped accessor that generated render code reads.
|
|
560
|
+
dropSsrSlot(renderToken);
|
|
502
561
|
pruneSsrDataSlots();
|
|
503
562
|
}
|
|
504
563
|
});
|
|
505
564
|
}
|
|
506
565
|
export function renderPageStream(source, componentName, props = {}, registry = new Map(), options = {}) {
|
|
566
|
+
// One store for the whole stream. `next()` is driven by the consumer, so a
|
|
567
|
+
// per-`next()` scope would mint a new token every chunk, orphan the slots
|
|
568
|
+
// written by earlier chunks, and leave the tail merge reading an untouched
|
|
569
|
+
// slot (the page then streams with no ssr-data script). Adopting the ambient
|
|
570
|
+
// store keeps the chunks, the promise tracker and that merge on the request's
|
|
571
|
+
// single token; every pull below runs through `withSsrStoreOf(streamStore)`.
|
|
572
|
+
const streamStore = adoptSsrStore();
|
|
573
|
+
keepSsrSlot(streamStore.token);
|
|
574
|
+
const streamToken = streamStore.token;
|
|
507
575
|
async function* raw() {
|
|
508
576
|
const cached = options.cached || undefined;
|
|
509
577
|
const ir = cached ? cached.ir : generateIR(parse(source, options.sourcePath ? { filename: options.sourcePath } : {}), source, options.sourcePath);
|
|
@@ -577,9 +645,7 @@ export function renderPageStream(source, componentName, props = {}, registry = n
|
|
|
577
645
|
globalThis.__vsk_ssr = true;
|
|
578
646
|
// Fresh handoff store per render; see renderFullPage note.
|
|
579
647
|
globalThis.__vsk_ssr_data = {};
|
|
580
|
-
|
|
581
|
-
globalThis.__vsk_ssr_token = Math.random().toString(36).slice(2);
|
|
582
|
-
const renderToken = globalThis.__vsk_ssr_token;
|
|
648
|
+
const renderToken = streamToken;
|
|
583
649
|
pruneSsrDataSlots();
|
|
584
650
|
let bodyHtml;
|
|
585
651
|
try {
|
|
@@ -600,7 +666,7 @@ export function renderPageStream(source, componentName, props = {}, registry = n
|
|
|
600
666
|
console.error(`[render-trace] renderPageStream comp=${componentName} keys=${Object.keys(ssrData).join(',') || '∅'} slot=${Object.keys(slot).join(',') || '∅'} sink=${Object.keys(ssrSink.snapshot()).join(',') || '∅'}`);
|
|
601
667
|
}
|
|
602
668
|
delete globalThis[`__vsk_ssr_data_${renderToken}`];
|
|
603
|
-
|
|
669
|
+
dropSsrSlot(renderToken);
|
|
604
670
|
pruneSsrDataSlots();
|
|
605
671
|
const dataScripts = buildDataScripts(ssrProps, ssrData, options.externalDataScript);
|
|
606
672
|
const dataScriptBlock = dataScripts.length > 0 ? '\n' + dataScripts.join('\n') : '';
|
|
@@ -612,13 +678,29 @@ export function renderPageStream(source, componentName, props = {}, registry = n
|
|
|
612
678
|
yield `\n</div>${dataScriptBlock}${clientScript}</body>\n</html>\n`;
|
|
613
679
|
}
|
|
614
680
|
const gen = raw();
|
|
681
|
+
// Drive every pull in the stream's own store. `gen.next()` is called by the
|
|
682
|
+
// consumer, so it runs in the consumer's context — without this the render
|
|
683
|
+
// would see whatever token the caller's request happens to hold (or none),
|
|
684
|
+
// while the merge above reads `streamToken`.
|
|
615
685
|
async function* scoped() {
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
686
|
+
try {
|
|
687
|
+
let result;
|
|
688
|
+
do {
|
|
689
|
+
result = (await withSsrStoreOf(streamStore, () => gen.next()));
|
|
690
|
+
if (!result.done)
|
|
691
|
+
yield result.value;
|
|
692
|
+
} while (!result.done);
|
|
693
|
+
}
|
|
694
|
+
finally {
|
|
695
|
+
// Release the claim `raw()`'s own clearSsrCells already balanced, then
|
|
696
|
+
// sweep anything the stream left behind.
|
|
697
|
+
dropSsrSlot(streamToken);
|
|
698
|
+
delete globalThis[`__vsk_ssr_data_${streamToken}`];
|
|
699
|
+
delete globalThis[`__vsk_ssr_promises_${streamToken}`];
|
|
700
|
+
delete globalThis[`__vsk_ssr_failures_${streamToken}`];
|
|
701
|
+
delete globalThis.__vsk_ssr_data;
|
|
702
|
+
pruneSsrDataSlots();
|
|
703
|
+
}
|
|
622
704
|
}
|
|
623
705
|
return scoped();
|
|
624
706
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-utils.d.ts","sourceRoot":"","sources":["../src/server-utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server-utils.d.ts","sourceRoot":"","sources":["../src/server-utils.ts"],"names":[],"mappings":"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"}
|