From 3a4af0d6e01d05c4cd0f6615eb6cf9b9e88d8296 Mon Sep 17 00:00:00 2001 From: dpiercey Date: Mon, 27 Oct 2025 19:33:21 -0700 Subject: [PATCH 1/2] refactor: remove unused getter api from serializer --- .../src/__tests__/serializer.test.ts | 16 +-------- packages/runtime-tags/src/html/serializer.ts | 33 +------------------ packages/runtime-tags/src/html/writer.ts | 1 + 3 files changed, 3 insertions(+), 47 deletions(-) diff --git a/packages/runtime-tags/src/__tests__/serializer.test.ts b/packages/runtime-tags/src/__tests__/serializer.test.ts index 18822394e2..0f515d304f 100644 --- a/packages/runtime-tags/src/__tests__/serializer.test.ts +++ b/packages/runtime-tags/src/__tests__/serializer.test.ts @@ -1,12 +1,7 @@ import assert from "node:assert/strict"; import { inspect } from "node:util"; -import { - register, - registerGetter, - Serializer, - stringify, -} from "../html/serializer"; +import { register, Serializer, stringify } from "../html/serializer"; import type { Boundary } from "../html/writer"; describe("serializer", () => { @@ -889,15 +884,6 @@ describe("serializer", () => { }, ); }); - - it("getter", () => { - const scope = { value: 1 } as any; - const fn = () => scope.value; - fn.toString = () => "()=>s.value"; - const obj = { a: 1, fn }; - registerGetter("value", fn, scope); - assertStringify(obj, `{a:1,fn:(s=>()=>s.value)(_.a={value:1})}`); - }); }); describe("serializer", () => { diff --git a/packages/runtime-tags/src/html/serializer.ts b/packages/runtime-tags/src/html/serializer.ts index 1dd332940c..db2c2f0332 100644 --- a/packages/runtime-tags/src/html/serializer.ts +++ b/packages/runtime-tags/src/html/serializer.ts @@ -11,7 +11,6 @@ interface Registered { id: string; access: string; scope: unknown; - getter: boolean; } enum MutationType { @@ -398,21 +397,6 @@ export function register( id, scope, access: "_._" + toAccess(toObjectKey(id)), - getter: false, - }); - return val; -} - -export function registerGetter( - accessor: string, - val: T, - scope?: unknown, -) { - REGISTRY.set(val, { - id: "", - scope, - access: toAccess(accessor), - getter: true, }); return val; } @@ -649,7 +633,7 @@ function writeRegistered( val: WeakKey, parent: Reference | null, accessor: string, - { access, scope, getter }: Registered, + { access, scope }: Registered, ) { if (scope) { const scopeRef = state.refs.get(scope); @@ -661,21 +645,6 @@ function writeRegistered( ); state.refs.set(val, fnRef); - if (getter) { - if (scopeRef) { - state.buf.push("()=>" + ensureId(state, scopeRef) + access); - return true; - } - - state.buf.push("(s=>()=>s" + access + ")("); - writeProp(state, scope, parent, ""); - state.buf.push(")"); - - const newScopeRef = state.refs.get(scope); - if (newScopeRef) ensureId(state, newScopeRef); - return true; - } - if (scopeRef) { if ( parent && diff --git a/packages/runtime-tags/src/html/writer.ts b/packages/runtime-tags/src/html/writer.ts index e6262c93fc..d2856783aa 100644 --- a/packages/runtime-tags/src/html/writer.ts +++ b/packages/runtime-tags/src/html/writer.ts @@ -135,6 +135,7 @@ export function _var( registryId: string, ) { _scope_with_id(parentScopeId)[scopeOffsetAccessor] = _scope_id(); + // TODO: if the return value is already registered, use that. _scope_with_id(childScopeId)[AccessorProp.TagVariable] = _resume( {}, registryId, From 16f3867e00c51ebf2edc856e9159eb9a91a9a19f Mon Sep 17 00:00:00 2001 From: dpiercey Date: Mon, 27 Oct 2025 20:28:08 -0700 Subject: [PATCH 2/2] fix: function serialization circular issue --- .changeset/all-bobcats-return.md | 5 + .../__snapshots__/resume.expected.md | 28 +-- .../__snapshots__/ssr.expected.md | 32 +-- .../__snapshots__/resume.expected.md | 36 +-- .../__snapshots__/ssr.expected.md | 22 +- .../__snapshots__/resume.expected.md | 12 +- .../__snapshots__/ssr.expected.md | 14 +- .../__snapshots__/resume.expected.md | 30 +-- .../__snapshots__/ssr.expected.md | 36 +-- .../__snapshots__/resume.expected.md | 196 +++++++-------- .../__snapshots__/ssr.expected.md | 198 +++++++-------- .../__snapshots__/resume.expected.md | 16 +- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 24 +- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 36 +-- .../__snapshots__/ssr.expected.md | 14 +- .../__snapshots__/resume.expected.md | 24 +- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 24 +- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 48 ++-- .../__snapshots__/ssr.expected.md | 14 +- .../__snapshots__/resume.expected.md | 112 ++++----- .../__snapshots__/ssr.expected.md | 58 ++--- .../__snapshots__/resume.expected.md | 98 ++++---- .../__snapshots__/ssr.expected.md | 16 +- .../__snapshots__/resume.expected.md | 32 +-- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/ssr.expected.md | 2 +- .../__snapshots__/resume.expected.md | 8 +- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 8 +- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 8 +- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/.name-cache.json | 8 + .../__snapshots__/csr-sanitized.expected.md | 1 + .../__snapshots__/csr.expected.md | 10 + .../__snapshots__/dom.expected/tags/child.js | 10 + .../dom.expected/template.hydrate.js | 11 + .../__snapshots__/dom.expected/template.js | 34 +++ .../__snapshots__/html.expected/tags/child.js | 10 + .../__snapshots__/html.expected/template.js | 25 ++ .../resume-sanitized.expected.md | 1 + .../__snapshots__/resume.expected.md | 22 ++ .../__snapshots__/ssr-sanitized.expected.md | 1 + .../__snapshots__/ssr.expected.md | 36 +++ .../tags/child.marko | 1 + .../template.marko | 5 + .../test.ts | 3 + .../__snapshots__/resume.expected.md | 70 +++--- .../__snapshots__/ssr.expected.md | 16 +- .../__snapshots__/resume.expected.md | 112 ++++----- .../__snapshots__/ssr.expected.md | 16 +- .../__snapshots__/resume.expected.md | 52 ++-- .../__snapshots__/ssr.expected.md | 15 +- .../__snapshots__/resume.expected.md | 56 ++--- .../__snapshots__/ssr.expected.md | 30 +-- .../__snapshots__/resume.expected.md | 70 +++--- .../__snapshots__/ssr.expected.md | 16 +- .../__snapshots__/resume.expected.md | 112 ++++----- .../__snapshots__/ssr.expected.md | 16 +- .../__snapshots__/resume.expected.md | 52 ++-- .../__snapshots__/ssr.expected.md | 15 +- .../__snapshots__/resume.expected.md | 40 +-- .../__snapshots__/ssr.expected.md | 12 +- .../__snapshots__/resume.expected.md | 20 +- .../__snapshots__/ssr.expected.md | 12 +- .../__snapshots__/resume.expected.md | 44 ++-- .../__snapshots__/ssr.expected.md | 13 +- .../__snapshots__/resume.expected.md | 44 ++-- .../__snapshots__/ssr.expected.md | 13 +- .../__snapshots__/resume.expected.md | 44 ++-- .../__snapshots__/ssr.expected.md | 13 +- .../__snapshots__/resume.expected.md | 16 +- .../__snapshots__/ssr.expected.md | 6 +- .../__snapshots__/resume.expected.md | 32 +-- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 32 +-- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 32 +-- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 46 ++-- .../__snapshots__/ssr.expected.md | 25 +- .../__snapshots__/resume.expected.md | 20 +- .../__snapshots__/ssr.expected.md | 6 +- .../__snapshots__/resume.expected.md | 8 +- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 16 +- .../__snapshots__/ssr.expected.md | 18 +- .../__snapshots__/resume.expected.md | 16 +- .../__snapshots__/ssr.expected.md | 18 +- .../__snapshots__/resume.expected.md | 78 +++--- .../__snapshots__/ssr.expected.md | 80 +++--- .../__snapshots__/resume.expected.md | 220 ++++++++--------- .../__snapshots__/ssr.expected.md | 222 ++++++++--------- .../__snapshots__/resume.expected.md | 14 +- .../__snapshots__/ssr.expected.md | 16 +- .../__snapshots__/resume.expected.md | 38 +-- .../__snapshots__/ssr.expected.md | 40 +-- .../__snapshots__/resume.expected.md | 70 +++--- .../__snapshots__/ssr.expected.md | 72 +++--- .../__snapshots__/resume.expected.md | 228 ++++++++--------- .../__snapshots__/ssr.expected.md | 230 +++++++++--------- .../__snapshots__/resume.expected.md | 42 ++-- .../__snapshots__/ssr.expected.md | 44 ++-- .../__snapshots__/resume.expected.md | 18 +- .../__snapshots__/ssr.expected.md | 20 +- .../__snapshots__/resume.expected.md | 23 +- .../__snapshots__/ssr.expected.md | 25 +- .../__snapshots__/resume.expected.md | 8 +- .../hoist-only/__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 24 +- .../__snapshots__/ssr.expected.md | 14 +- .../__snapshots__/resume.expected.md | 40 +-- .../__snapshots__/ssr.expected.md | 12 +- .../__snapshots__/resume.expected.md | 40 +-- .../__snapshots__/ssr.expected.md | 12 +- .../__snapshots__/resume.expected.md | 9 +- .../__snapshots__/ssr.expected.md | 11 +- .../__snapshots__/resume.expected.md | 11 +- .../__snapshots__/ssr.expected.md | 13 +- .../__snapshots__/resume.expected.md | 40 +-- .../__snapshots__/ssr.expected.md | 6 +- .../__snapshots__/resume.expected.md | 14 +- .../__snapshots__/ssr.expected.md | 16 +- .../__snapshots__/resume.expected.md | 14 +- .../__snapshots__/ssr.expected.md | 16 +- .../__snapshots__/resume.expected.md | 8 +- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 8 +- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 14 +- .../__snapshots__/ssr.expected.md | 16 +- .../__snapshots__/.name-cache.json | 12 + .../__snapshots__/csr-sanitized.expected.md | 14 ++ .../__snapshots__/csr.expected.md | 23 ++ .../__snapshots__/dom.expected/tags/setter.js | 27 ++ .../dom.expected/template.hydrate.js | 22 ++ .../__snapshots__/dom.expected/template.js | 25 ++ .../html.expected/tags/setter.js | 19 ++ .../__snapshots__/html.expected/template.js | 26 ++ .../resume-sanitized.expected.md | 14 ++ .../__snapshots__/resume.expected.md | 67 +++++ .../__snapshots__/ssr-sanitized.expected.md | 6 + .../__snapshots__/ssr.expected.md | 47 ++++ .../tags/setter.marko | 2 + .../return-serialize-circular/template.marko | 4 + .../return-serialize-circular/test.ts | 3 + .../__snapshots__/resume.expected.md | 72 +++--- .../__snapshots__/ssr.expected.md | 14 +- .../__snapshots__/resume.expected.md | 40 +-- .../__snapshots__/ssr.expected.md | 12 +- .../__snapshots__/resume.expected.md | 18 +- .../__snapshots__/ssr.expected.md | 4 +- .../__snapshots__/resume.expected.md | 18 +- .../__snapshots__/ssr.expected.md | 4 +- .../__snapshots__/resume.expected.md | 8 +- .../__snapshots__/ssr.expected.md | 10 +- .../__snapshots__/resume.expected.md | 8 +- .../__snapshots__/ssr.expected.md | 10 +- .../src/__tests__/serializer.test.ts | 2 +- packages/runtime-tags/src/html/serializer.ts | 153 ++++++------ packages/runtime-tags/src/html/writer.ts | 6 +- .../__snapshots__/resume.expected.md | 72 +++--- .../__snapshots__/ssr.expected.md | 14 +- .../__snapshots__/resume.expected.md | 132 +++++----- .../__snapshots__/ssr.expected.md | 35 +-- 169 files changed, 2913 insertions(+), 2529 deletions(-) create mode 100644 .changeset/all-bobcats-return.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/.name-cache.json create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/csr-sanitized.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/csr.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/tags/child.js create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/template.hydrate.js create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/template.js create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/html.expected/tags/child.js create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/html.expected/template.js create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/resume-sanitized.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/resume.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/ssr-sanitized.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/ssr.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/tags/child.marko create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/template.marko create mode 100644 packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/.name-cache.json create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/csr-sanitized.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/csr.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/tags/setter.js create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/template.hydrate.js create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/template.js create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/html.expected/tags/setter.js create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/html.expected/template.js create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/resume-sanitized.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/resume.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/ssr-sanitized.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/ssr.expected.md create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/tags/setter.marko create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/template.marko create mode 100644 packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts diff --git a/.changeset/all-bobcats-return.md b/.changeset/all-bobcats-return.md new file mode 100644 index 0000000000..00d8aa9172 --- /dev/null +++ b/.changeset/all-bobcats-return.md @@ -0,0 +1,5 @@ +--- +"@marko/runtime-tags": patch +--- + +Fix circular issue when serializing functions. diff --git a/packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md index f91a46d328..5c809fa0a7 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/resume.expected.md @@ -35,36 +35,36 @@ +
LOADING...
``` # Write ```html -
LOADING...
+
LOADING...
``` # Write @@ -50,36 +50,36 @@ + LOADING A1 ``` # Write ```html -
LOADING B1
+
LOADING B1
``` # Write ```html -
+
``` # Render End @@ -53,40 +53,40 @@ diff --git a/packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/resume.expected.md index 605ae3dca7..b9ecb29006 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/resume.expected.md @@ -83,122 +83,110 @@ +
foo
bar
bar
a
b
c
d
Outside
``` # Render End @@ -88,122 +88,110 @@ + ``` # Render End @@ -15,12 +15,12 @@ + ``` # Render End @@ -15,12 +15,12 @@ + ``` # Render End @@ -28,15 +28,15 @@ + ``` # Render End @@ -19,12 +19,12 @@ + ``` # Render End @@ -15,12 +15,12 @@ + ``` # Render End @@ -15,16 +15,16 @@ +
0.0
0.1
1.0
1.1
``` # Render End @@ -35,34 +35,34 @@ + ``` # Render End @@ -26,23 +26,23 @@ + ``` # Render End @@ -17,20 +17,20 @@ + ab ``` # Write diff --git a/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md index b0f6a1046f..1ed9c90354 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/resume.expected.md @@ -9,13 +9,13 @@ b cd diff --git a/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md index 913aa4c88c..9d9bf39c88 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html - ab + ab ``` # Write @@ -19,13 +19,13 @@ b cd diff --git a/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/resume.expected.md index d6c720cc9b..ac4f8fabc6 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/resume.expected.md @@ -10,13 +10,13 @@ c diff --git a/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/ssr.expected.md index d691c9d9a0..42097cae46 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html - abc + abc ``` # Render End @@ -15,13 +15,13 @@ c diff --git a/packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/resume.expected.md index 64e948aabc..fadcae2567 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/resume.expected.md @@ -10,13 +10,13 @@ d diff --git a/packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/ssr.expected.md index ba8f0bf2fa..edcabca457 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html - aERROR!d + aERROR!d ``` # Render End @@ -15,13 +15,13 @@ d diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/.name-cache.json b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/.name-cache.json new file mode 100644 index 0000000000..bcdddd0707 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/.name-cache.json @@ -0,0 +1,8 @@ +{ + "vars": { + "props": { + "$_": "r", + "$init": "t" + } + } +} diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/csr-sanitized.expected.md b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/csr-sanitized.expected.md new file mode 100644 index 0000000000..ba2aa26adb --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/csr-sanitized.expected.md @@ -0,0 +1 @@ +# Render diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/csr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/csr.expected.md new file mode 100644 index 0000000000..b769359c87 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/csr.expected.md @@ -0,0 +1,10 @@ +# Render +```html + + +``` + +# Mutations +``` +INSERT #comment0, #text, #comment1 +``` \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/tags/child.js b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/tags/child.js new file mode 100644 index 0000000000..352671d127 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/tags/child.js @@ -0,0 +1,10 @@ +export const $template = ""; +export const $walks = ""; +export const $setup = () => {}; +import * as _ from "@marko/runtime-tags/debug/dom"; +const $input_valueChange__script = _._script("__tests__/tags/child.marko_0_input_valueChange", ({ + input_valueChange +}) => input_valueChange(1)); +export const $input_valueChange = /* @__PURE__ */_._const("input_valueChange", $input_valueChange__script); +export const $input = /* @__PURE__ */_._const("input", ($scope, input) => $input_valueChange($scope, input.valueChange)); +export default /* @__PURE__ */_._template("__tests__/tags/child.marko", $template, $walks, $setup, $input); \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/template.hydrate.js b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/template.hydrate.js new file mode 100644 index 0000000000..f1addbc5ec --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/template.hydrate.js @@ -0,0 +1,11 @@ +// size: 143 (min) 85 (brotli) +(_._script("a0", ({ 2: input_valueChange }) => input_valueChange(1)), + _._resume("b1", function ({ _: { 1: setter } }) { + return function () { + setter(); + }; + }), + _._resume("b0", function ($scope) { + return function () {}; + }), + init()); diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/template.js b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/template.js new file mode 100644 index 0000000000..c1e6b58c71 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/template.js @@ -0,0 +1,34 @@ +export const $template = ""; +export const $walks = /* over(1), replace, over(2) */"b%c"; +import { $setup as _child, $input_valueChange as _child_input_valueChange, $template as _child_template, $walks as _child_walks } from "./tags/child.marko"; +const $if_content__setup = $scope => { + _child($scope["#childScope/0"]); + $if_content__setter._($scope); +}; +import * as _ from "@marko/runtime-tags/debug/dom"; +const $if_content__setter = /* @__PURE__ */_._if_closure("setter", "#text/0", 0, ($scope, setter) => _child_input_valueChange($scope["#childScope/0"], $valueChange($scope))); +const $if_content = /* @__PURE__ */_._content_branch(_child_template, /* beginChild, _child_walks, endChild */`/${_child_walks}&`, $if_content__setup); +const $setter2 = /* @__PURE__ */_._const("setter"); +const $if = /* @__PURE__ */_._if("#text/0", $if_content); +export function $setup($scope) { + /* value */0; + $setter2($scope, $setter($scope)); + $if($scope, true ? 0 : 1); +} +function $valueChange({ + _: { + setter + } +}) { + return function () { + setter(); + }; +} +function $setter($scope) { + return function () { + /* value */1; + }; +} +_._resume("__tests__/template.marko_1/valueChange", $valueChange); +_._resume("__tests__/template.marko_0/setter", $setter); +export default /* @__PURE__ */_._template("__tests__/template.marko", $template, $walks, $setup); \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/html.expected/tags/child.js b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/html.expected/tags/child.js new file mode 100644 index 0000000000..085ad46e68 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/html.expected/tags/child.js @@ -0,0 +1,10 @@ +import * as _ from "@marko/runtime-tags/debug/html"; +export default _._template("__tests__/tags/child.marko", input => { + const $scope0_id = _._scope_id(); + _._script($scope0_id, "__tests__/tags/child.marko_0_input_valueChange"); + _._scope($scope0_id, { + input_valueChange: input.valueChange + }, "__tests__/tags/child.marko", 0, { + input_valueChange: ["input.valueChange"] + }); +}); \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/html.expected/template.js b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/html.expected/template.js new file mode 100644 index 0000000000..1959f97d77 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/html.expected/template.js @@ -0,0 +1,25 @@ +import _child from "./tags/child.marko"; +import * as _ from "@marko/runtime-tags/debug/html"; +export default _._template("__tests__/template.marko", input => { + const $scope0_id = _._scope_id(); + let value = 0; + const setter = _._resume(function () { + value = 1; + }, "__tests__/template.marko_0/setter", $scope0_id); + if (true) { + const $scope1_id = _._scope_id(); + _child({ + valueChange: _._resume(function () { + setter(); + }, "__tests__/template.marko_1/valueChange", $scope1_id) + }); + _._scope($scope1_id, { + _: _._scope_with_id($scope0_id) + }, "__tests__/template.marko", "3:2"); + } + _._scope($scope0_id, { + setter + }, "__tests__/template.marko", 0, { + setter: "2:8" + }); +}); \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/resume-sanitized.expected.md b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/resume-sanitized.expected.md new file mode 100644 index 0000000000..ba2aa26adb --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/resume-sanitized.expected.md @@ -0,0 +1 @@ +# Render diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/resume.expected.md new file mode 100644 index 0000000000..ed1de8a0a7 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/resume.expected.md @@ -0,0 +1,22 @@ +# Render +```html + + + + + + +``` diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/ssr-sanitized.expected.md b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/ssr-sanitized.expected.md new file mode 100644 index 0000000000..ef85d03440 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/ssr-sanitized.expected.md @@ -0,0 +1 @@ +# Render End diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/ssr.expected.md new file mode 100644 index 0000000000..b3d90f8689 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/ssr.expected.md @@ -0,0 +1,36 @@ +# Write +```html + +``` + +# Render End +```html + + + + + + +``` + +# Mutations +``` +INSERT html +INSERT html/head +INSERT html/head/script +INSERT html/head/script/#text +INSERT html/body +``` \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/tags/child.marko b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/tags/child.marko new file mode 100644 index 0000000000..d7d12c2cdb --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/tags/child.marko @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/template.marko b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/template.marko new file mode 100644 index 0000000000..55c5d4db59 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/template.marko @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts new file mode 100644 index 0000000000..2e1746dabe --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/test.ts @@ -0,0 +1,3 @@ +import { wait } from "../../utils/resolve"; + +export const steps = [{}, wait(1)]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/resume.expected.md index 36ae9b847a..32c430f656 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/resume.expected.md @@ -56,32 +56,32 @@ mounted 3 +
1
1

1

2
2

2

3
3

3

``` # Render End @@ -56,32 +56,32 @@ +
Outer a
Outer a

Outer a

Middle a
Middle a

Middle a

Inner a
Inner a

Inner a

``` # Render End @@ -65,7 +65,7 @@ +
a
b

c

``` # Render End @@ -27,19 +27,16 @@ +
1
1.1
1.2
1.3
2
2.1
2.2
2.3
3
3.1
3.2
3.3
``` # Render End @@ -92,24 +92,24 @@ +
1
2
3
``` # Render End @@ -29,32 +29,32 @@ +

Outer

Middle

Inner

``` # Render End @@ -46,7 +46,7 @@ +
child
``` # Render End @@ -20,19 +20,16 @@ + false ``` # Render End @@ -18,17 +18,17 @@ + b ``` # Render End @@ -36,17 +36,17 @@ +
Counts: 1,10
``` # Render End @@ -33,16 +33,15 @@ +
Count (hello): 1
``` # Render End @@ -29,16 +29,15 @@ +
Count: 1
``` # Render End @@ -25,15 +25,14 @@ + ``` # Render End @@ -30,7 +30,7 @@ +
Marko 1
``` # Render End @@ -21,16 +21,16 @@ +
1
``` # Render End @@ -21,14 +21,14 @@ +
Child: 1
Parent: 1
``` # Render End @@ -31,14 +31,14 @@ +
default
default ``` # Render End @@ -26,32 +26,29 @@ + ``` # Render End @@ -25,7 +25,7 @@ +
``` # Render End @@ -12,16 +12,16 @@ +
``` # Render End @@ -16,17 +16,17 @@ +
``` # Render End @@ -12,15 +12,15 @@ +
``` # Render End @@ -26,47 +26,47 @@ +


``` # Render End @@ -74,165 +74,165 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => (_.lb = [0, _.H = { "LoopScopeMap:#text/0": new Map(_.a = [ - [0, _.I = { - setHtml: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.b = {}) + [0, _.b = { + setHtml: _.I = {} }], - [1, _.J = { - setHtml: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.c = {}) + [1, _.c = { + setHtml: _.J = {} }], - [2, _.K = { - setHtml: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.d = {}) + [2, _.d = { + setHtml: _.K = {} }], - [3, _.L = { - setHtml: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.e = {}) + [3, _.e = { + setHtml: _.L = {} }], - [4, _.M = { - setHtml: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.f = {}) + [4, _.f = { + setHtml: _.M = {} }], - [5, _.N = { - setHtml: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.g = {}) + [5, _.g = { + setHtml: _.N = {} }] ]), "LoopScopeMap:#text/1": new Map(_.h = [ - [0, _.O = { - setHtml2: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.i = {}) + [0, _.i = { + setHtml2: _.O = {} }], - [1, _.P = { - setHtml2: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.j = {}) + [1, _.j = { + setHtml2: _.P = {} }], - [2, _.Q = { - setHtml2: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.k = {}) + [2, _.k = { + setHtml2: _.Q = {} }], - [3, _.R = { - setHtml2: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.l = {}) + [3, _.l = { + setHtml2: _.R = {} }] ]), "LoopScopeMap:#text/2": new Map(_.m = [ [0, _.S = { "LoopScopeMap:#ul/0": new Map(_.n = [ - [0, _.T = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.o = {}) + [0, _.o = { + setHtml3: _.T = {} }], - [1, _.U = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.p = {}) + [1, _.p = { + setHtml3: _.U = {} }], - [2, _.V = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.q = {}) + [2, _.q = { + setHtml3: _.V = {} }], - [3, _.W = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.r = {}) + [3, _.r = { + setHtml3: _.W = {} }] ]) }], [1, _.X = { "LoopScopeMap:#ul/0": new Map(_.s = [ - [0, _.Y = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.t = {}) + [0, _.t = { + setHtml3: _.Y = {} }], - [1, _.Z = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.u = {}) + [1, _.u = { + setHtml3: _.Z = {} }], - [2, _.$ = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.v = {}) + [2, _.v = { + setHtml3: _.$ = {} }], - [3, _.ab = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.w = {}) + [3, _.w = { + setHtml3: _.ab = {} }] ]) }], [2, _.bb = { "LoopScopeMap:#ul/0": new Map(_.x = [ - [0, _.cb = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.y = {}) + [0, _.y = { + setHtml3: _.cb = {} }], - [1, _.db = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.z = {}) + [1, _.z = { + setHtml3: _.db = {} }], - [2, _.eb = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.A = {}) + [2, _.A = { + setHtml3: _.eb = {} }], - [3, _.fb = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.B = {}) + [3, _.B = { + setHtml3: _.fb = {} }] ]) }], [3, _.gb = { "LoopScopeMap:#ul/0": new Map(_.C = [ - [0, _.hb = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.D = {}) + [0, _.D = { + setHtml3: _.hb = {} }], - [1, _.ib = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.E = {}) + [1, _.E = { + setHtml3: _.ib = {} }], - [2, _.jb = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.F = {}) + [2, _.F = { + setHtml3: _.jb = {} }], - [3, _.kb = { - setHtml3: _._[ - "__tests__/tags/child.marko_0/_return" - ](_.G = {}) + [3, _.G = { + setHtml3: _.kb = {} }] ]) }] ]) - }, _.I, _.b, _.J, _.c, _.K, _.d, _.L, _.e, _.M, _.f, _.N, _.g, _ - .O, _.i, _.P, _.j, _.Q, _.k, _.R, _.l, _.S, _.T, _.o, _.U, _.p, _ - .V, _.q, _.W, _.r, _.X, _.Y, _.t, _.Z, _.u, _.$, _.v, _.ab, _.w, _ - .bb, _.cb, _.y, _.db, _.z, _.eb, _.A, _.fb, _.B, _.gb, _.hb, _.D, - _.ib, _.E, _.jb, _.F, _.kb, _.G + }, _.b, _.I, _.c, _.J, _.d, _.K, _.e, _.L, _.f, _.M, _.g, _.N, _ + .i, _.O, _.j, _.P, _.k, _.Q, _.l, _.R, _.S, _.o, _.T, _.p, _.U, _ + .q, _.V, _.r, _.W, _.X, _.t, _.Y, _.u, _.Z, _.v, _.$, _.w, _.ab, _ + .bb, _.y, _.cb, _.z, _.db, _.A, _.eb, _.B, _.fb, _.gb, _.D, _.hb, + _.E, _.ib, _.F, _.jb, _.G, _.kb ], _.H.$hoisted_setHtml3 = _._[ "__tests__/template.marko_0_$hoisted_setHtml3/hoist" - ](_.H), _.lb), + ](_.H), _.b.setHtml = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.I), _.c.setHtml = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.J), _.d.setHtml = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.K), _.e.setHtml = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.L), _.f.setHtml = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.M), _.g.setHtml = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.N), _.i.setHtml2 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.O), _.j.setHtml2 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.P), _.k.setHtml2 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.Q), _.l.setHtml2 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.R), _.o.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.T), _.p.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.U), _.q.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.V), _.r.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.W), _.t.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.Y), _.u.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.Z), _.v.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.$), _.w.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.ab), _.y.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.cb), _.z.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.db), _.A.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.eb), _.B.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.fb), _.D.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.hb), _.E.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.ib), _.F.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.jb), _.G.setHtml3 = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.kb), _.lb), "__tests__/template.marko_0_$hoisted_setHtml3", 1, "__tests__/template.marko_0", diff --git a/packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/resume.expected.md index 6e8ce60625..76442259e9 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/hoist-custom-tag-var-same-scope/__snapshots__/resume.expected.md @@ -8,14 +8,14 @@ +
``` # Render End @@ -12,14 +12,14 @@ +
``` # Render End @@ -16,31 +16,31 @@ +
``` # Render End @@ -44,71 +44,71 @@ "ClosureScopes:1": _.q = new Set, "ClosureScopes:2": _.s = new Set, "ClosureScopes:4": _.w = new Set - }, 1, _.b = { - "ConditionalScope:#text/0": _.c = {}, + }, 1, _.c = { + "ConditionalScope:#text/0": _.b = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 5 - }, _.c, 1, _.d = { - "ConditionalScope:#text/0": _.e = {}, + }, _.b, 1, _.e = { + "ConditionalScope:#text/0": _.d = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 8 - }, _.e, 2, _.t = { + }, _.d, 2, _.t = { "ClosureScopes:3": _.r = new Set - }, 1, _.f = { - "ConditionalScope:#text/0": _.g = {}, + }, 1, _.g = { + "ConditionalScope:#text/0": _.f = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 14 - }, _.g, 1, _.h = { - "ConditionalScope:#text/0": _.i = {}, + }, _.f, 1, _.i = { + "ConditionalScope:#text/0": _.h = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 17 - }, _.i, 1, _.v = { + }, _.h, 1, _.v = { "ClosureScopes:3": _.u = new Set - }, 1, _.j = { - "ConditionalScope:#text/0": _.k = {}, + }, 1, _.k = { + "ConditionalScope:#text/0": _.j = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 22 - }, _.k, 1, _.l = { - "ConditionalScope:#text/0": _.m = {}, + }, _.j, 1, _.m = { + "ConditionalScope:#text/0": _.l = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 25 - }, _.m, 2, _.n = { - "ConditionalScope:#text/0": _.o = {}, + }, _.l, 2, _.o = { + "ConditionalScope:#text/0": _.n = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 29 - }, _.o], _.a.$hoisted_setHtml = _._[ + }, _.n], _.a.$hoisted_setHtml = _._[ "__tests__/template.marko_0_$hoisted_setHtml/hoist" - ](_.a), _.c["#TagVariable"] = _._[ + ](_.a), _.c.setHtml = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.b), _.b["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.b), _.b.setHtml = _._[ + ](_.c), _.e.setHtml = _._[ "__tests__/tags/child.marko_0/_return" - ](_.c), _.e["#TagVariable"] = _._[ + ](_.d), _.d["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.d), _.d.setHtml = _._[ + ](_.e), _.g.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.e), _.g["#TagVariable"] = _._[ + ](_.f), _.f["#TagVariable"] = _._[ "__tests__/template.marko_3_setHtml2/var" - ](_.f), _.f.setHtml2 = _._[ + ](_.g), _.i.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.g), _.i["#TagVariable"] = _._[ + ](_.h), _.h["#TagVariable"] = _._[ "__tests__/template.marko_3_setHtml2/var" - ](_.h), _.h.setHtml2 = _._[ + ](_.i), _.k.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.i), _.k["#TagVariable"] = _._[ + ](_.j), _.j["#TagVariable"] = _._[ "__tests__/template.marko_3_setHtml2/var" - ](_.j), _.j.setHtml2 = _._[ + ](_.k), _.m.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.k), _.m["#TagVariable"] = _._[ + ](_.l), _.l["#TagVariable"] = _._[ "__tests__/template.marko_3_setHtml2/var" - ](_.l), _.l.setHtml2 = _._[ + ](_.m), _.o.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.m), _.o["#TagVariable"] = _._[ + ](_.n), _.n["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.n), _.n.setHtml3 = _._[ - "__tests__/tags/child.marko_0/_return" - ](_.o), (_.q).add(_.b), _.q.add(_.d), (_.r).add(_.f), _.r.add(_ - .h), (_.s).add(_.t), (_.u).add(_.j), _.u.add(_.l), _.s.add(_.v), (_ - .w).add(_.n), _.p), + ](_.o), (_.q).add(_.c), _.q.add(_.e), (_.r).add(_.g), _.r.add(_ + .i), (_.s).add(_.t), (_.u).add(_.k), _.u.add(_.m), _.s.add(_.v), (_ + .w).add(_.o), _.p), "__tests__/template.marko_0", 1, "__tests__/template.marko_0_$hoisted_setHtml", diff --git a/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/resume.expected.md index a42153e56c..6b1f815f5a 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/resume.expected.md @@ -158,55 +158,55 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => (_.lb = [0, _.gb = { "LoopScopeMap:#text/0": new Map(_.a = [ - [0, _.b = { - "ConditionalScope:#text/0": _.c = {}, + [0, _.c = { + "ConditionalScope:#text/0": _.b = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 4 }], - [1, _.d = { - "ConditionalScope:#text/0": _.e = {}, + [1, _.e = { + "ConditionalScope:#text/0": _.d = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 7 }], - [2, _.f = { - "ConditionalScope:#text/0": _.g = {}, + [2, _.g = { + "ConditionalScope:#text/0": _.f = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 10 }], - [3, _.h = { - "ConditionalScope:#text/0": _.i = {}, + [3, _.i = { + "ConditionalScope:#text/0": _.h = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 13 }], - [4, _.j = { - "ConditionalScope:#text/0": _.k = {}, + [4, _.k = { + "ConditionalScope:#text/0": _.j = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 16 }], - [5, _.l = { - "ConditionalScope:#text/0": _.m = {}, + [5, _.m = { + "ConditionalScope:#text/0": _.l = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 19 }] ]), "LoopScopeMap:#text/1": new Map(_.n = [ - [0, _.o = { - "ConditionalScope:#text/0": _.p = {}, + [0, _.p = { + "ConditionalScope:#text/0": _.o = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 22 }], - [1, _.q = { - "ConditionalScope:#text/0": _.r = {}, + [1, _.r = { + "ConditionalScope:#text/0": _.q = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 25 }], - [2, _.s = { - "ConditionalScope:#text/0": _.t = {}, + [2, _.t = { + "ConditionalScope:#text/0": _.s = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 28 }], - [3, _.u = { - "ConditionalScope:#text/0": _.v = {}, + [3, _.v = { + "ConditionalScope:#text/0": _.u = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 31 }] @@ -214,23 +214,23 @@ "LoopScopeMap:#text/2": new Map(_.w = [ [0, _.hb = { "LoopScopeMap:#ul/0": new Map(_.x = [ - [0, _.y = { - "ConditionalScope:#text/0": _.z = {}, + [0, _.z = { + "ConditionalScope:#text/0": _.y = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 35 }], - [1, _.A = { - "ConditionalScope:#text/0": _.B = {}, + [1, _.B = { + "ConditionalScope:#text/0": _.A = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 38 }], - [2, _.C = { - "ConditionalScope:#text/0": _.D = {}, + [2, _.D = { + "ConditionalScope:#text/0": _.C = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 41 }], - [3, _.E = { - "ConditionalScope:#text/0": _.F = {}, + [3, _.F = { + "ConditionalScope:#text/0": _.E = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 44 }] @@ -238,23 +238,23 @@ }], [1, _.ib = { "LoopScopeMap:#ul/0": new Map(_.G = [ - [0, _.H = { - "ConditionalScope:#text/0": _.I = {}, + [0, _.I = { + "ConditionalScope:#text/0": _.H = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 48 }], - [1, _.J = { - "ConditionalScope:#text/0": _.K = {}, + [1, _.K = { + "ConditionalScope:#text/0": _.J = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 51 }], - [2, _.L = { - "ConditionalScope:#text/0": _.M = {}, + [2, _.M = { + "ConditionalScope:#text/0": _.L = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 54 }], - [3, _.N = { - "ConditionalScope:#text/0": _.O = {}, + [3, _.O = { + "ConditionalScope:#text/0": _.N = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 57 }] @@ -262,23 +262,23 @@ }], [2, _.jb = { "LoopScopeMap:#ul/0": new Map(_.P = [ - [0, _.Q = { - "ConditionalScope:#text/0": _.R = {}, + [0, _.R = { + "ConditionalScope:#text/0": _.Q = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 61 }], - [1, _.S = { - "ConditionalScope:#text/0": _.T = {}, + [1, _.T = { + "ConditionalScope:#text/0": _.S = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 64 }], - [2, _.U = { - "ConditionalScope:#text/0": _.V = {}, + [2, _.V = { + "ConditionalScope:#text/0": _.U = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 67 }], - [3, _.W = { - "ConditionalScope:#text/0": _.X = {}, + [3, _.X = { + "ConditionalScope:#text/0": _.W = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 70 }] @@ -286,142 +286,142 @@ }], [3, _.kb = { "LoopScopeMap:#ul/0": new Map(_.Y = [ - [0, _.Z = { - "ConditionalScope:#text/0": _.$ = {}, + [0, _.$ = { + "ConditionalScope:#text/0": _.Z = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 74 }], - [1, _.ab = { - "ConditionalScope:#text/0": _.bb = {}, + [1, _.bb = { + "ConditionalScope:#text/0": _.ab = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 77 }], - [2, _.cb = { - "ConditionalScope:#text/0": _.db = {}, + [2, _.db = { + "ConditionalScope:#text/0": _.cb = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 80 }], - [3, _.eb = { - "ConditionalScope:#text/0": _.fb = {}, + [3, _.fb = { + "ConditionalScope:#text/0": _.eb = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 83 }] ]) }] ]) - }, _.b, _.c, 1, _.d, _.e, 1, _.f, _.g, 1, _.h, _.i, 1, _.j, _.k, - 1, _.l, _.m, 1, _.o, _.p, 1, _.q, _.r, 1, _.s, _.t, 1, _.u, _.v, - 1, _.hb, _.y, _.z, 1, _.A, _.B, 1, _.C, _.D, 1, _.E, _.F, 1, _.ib, - _.H, _.I, 1, _.J, _.K, 1, _.L, _.M, 1, _.N, _.O, 1, _.jb, _.Q, _ - .R, 1, _.S, _.T, 1, _.U, _.V, 1, _.W, _.X, 1, _.kb, _.Z, _.$, 1, _ - .ab, _.bb, 1, _.cb, _.db, 1, _.eb, _.fb - ], _.c["#TagVariable"] = _._[ + }, _.c, _.b, 1, _.e, _.d, 1, _.g, _.f, 1, _.i, _.h, 1, _.k, _.j, + 1, _.m, _.l, 1, _.p, _.o, 1, _.r, _.q, 1, _.t, _.s, 1, _.v, _.u, + 1, _.hb, _.z, _.y, 1, _.B, _.A, 1, _.D, _.C, 1, _.F, _.E, 1, _.ib, + _.I, _.H, 1, _.K, _.J, 1, _.M, _.L, 1, _.O, _.N, 1, _.jb, _.R, _ + .Q, 1, _.T, _.S, 1, _.V, _.U, 1, _.X, _.W, 1, _.kb, _.$, _.Z, 1, _ + .bb, _.ab, 1, _.db, _.cb, 1, _.fb, _.eb + ], _.gb.$hoisted_setHtml3 = _._[ + "__tests__/template.marko_0_$hoisted_setHtml3/hoist" + ](_.gb), _.c.setHtml = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.b), _.b["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.b), _.b.setHtml = _._[ + ](_.c), _.e.setHtml = _._[ "__tests__/tags/child.marko_0/_return" - ](_.c), _.e["#TagVariable"] = _._[ + ](_.d), _.d["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.d), _.d.setHtml = _._[ + ](_.e), _.g.setHtml = _._[ "__tests__/tags/child.marko_0/_return" - ](_.e), _.g["#TagVariable"] = _._[ + ](_.f), _.f["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.f), _.f.setHtml = _._[ + ](_.g), _.i.setHtml = _._[ "__tests__/tags/child.marko_0/_return" - ](_.g), _.i["#TagVariable"] = _._[ + ](_.h), _.h["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.h), _.h.setHtml = _._[ + ](_.i), _.k.setHtml = _._[ "__tests__/tags/child.marko_0/_return" - ](_.i), _.k["#TagVariable"] = _._[ + ](_.j), _.j["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.j), _.j.setHtml = _._[ + ](_.k), _.m.setHtml = _._[ "__tests__/tags/child.marko_0/_return" - ](_.k), _.m["#TagVariable"] = _._[ + ](_.l), _.l["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.l), _.l.setHtml = _._[ + ](_.m), _.p.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.m), _.p["#TagVariable"] = _._[ + ](_.o), _.o["#TagVariable"] = _._[ "__tests__/template.marko_2_setHtml2/var" - ](_.o), _.o.setHtml2 = _._[ + ](_.p), _.r.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.p), _.r["#TagVariable"] = _._[ + ](_.q), _.q["#TagVariable"] = _._[ "__tests__/template.marko_2_setHtml2/var" - ](_.q), _.q.setHtml2 = _._[ + ](_.r), _.t.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.r), _.t["#TagVariable"] = _._[ + ](_.s), _.s["#TagVariable"] = _._[ "__tests__/template.marko_2_setHtml2/var" - ](_.s), _.s.setHtml2 = _._[ + ](_.t), _.v.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.t), _.v["#TagVariable"] = _._[ + ](_.u), _.u["#TagVariable"] = _._[ "__tests__/template.marko_2_setHtml2/var" - ](_.u), _.u.setHtml2 = _._[ + ](_.v), _.z.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.v), _.z["#TagVariable"] = _._[ + ](_.y), _.y["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.y), _.y.setHtml3 = _._[ + ](_.z), _.B.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.z), _.B["#TagVariable"] = _._[ + ](_.A), _.A["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.A), _.A.setHtml3 = _._[ + ](_.B), _.D.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.B), _.D["#TagVariable"] = _._[ + ](_.C), _.C["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.C), _.C.setHtml3 = _._[ + ](_.D), _.F.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.D), _.F["#TagVariable"] = _._[ + ](_.E), _.E["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.E), _.E.setHtml3 = _._[ + ](_.F), _.I.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.F), _.I["#TagVariable"] = _._[ + ](_.H), _.H["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.H), _.H.setHtml3 = _._[ + ](_.I), _.K.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.I), _.K["#TagVariable"] = _._[ + ](_.J), _.J["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.J), _.J.setHtml3 = _._[ + ](_.K), _.M.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.K), _.M["#TagVariable"] = _._[ + ](_.L), _.L["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.L), _.L.setHtml3 = _._[ + ](_.M), _.O.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.M), _.O["#TagVariable"] = _._[ + ](_.N), _.N["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.N), _.N.setHtml3 = _._[ + ](_.O), _.R.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.O), _.R["#TagVariable"] = _._[ + ](_.Q), _.Q["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.Q), _.Q.setHtml3 = _._[ + ](_.R), _.T.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.R), _.T["#TagVariable"] = _._[ + ](_.S), _.S["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.S), _.S.setHtml3 = _._[ + ](_.T), _.V.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.T), _.V["#TagVariable"] = _._[ + ](_.U), _.U["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.U), _.U.setHtml3 = _._[ + ](_.V), _.X.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.V), _.X["#TagVariable"] = _._[ + ](_.W), _.W["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.W), _.W.setHtml3 = _._[ + ](_.X), _.$.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.X), _.$["#TagVariable"] = _._[ + ](_.Z), _.Z["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.Z), _.Z.setHtml3 = _._[ + ](_.$), _.bb.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.$), _.bb["#TagVariable"] = _._[ + ](_.ab), _.ab["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.ab), _.ab.setHtml3 = _._[ + ](_.bb), _.db.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.bb), _.db["#TagVariable"] = _._[ + ](_.cb), _.cb["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.cb), _.cb.setHtml3 = _._[ + ](_.db), _.fb.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.db), _.fb["#TagVariable"] = _._[ + ](_.eb), _.eb["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.eb), _.eb.setHtml3 = _._[ - "__tests__/tags/child.marko_0/_return" - ](_.fb), _.gb.$hoisted_setHtml3 = _._[ - "__tests__/template.marko_0_$hoisted_setHtml3/hoist" - ](_.gb), _.lb), + ](_.fb), _.lb), "__tests__/template.marko_0_$hoisted_setHtml3", 1, "__tests__/template.marko_0", diff --git a/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/ssr.expected.md index 0c7f8a5c88..4bb64a19a2 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var-many/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html -


+


``` # Render End @@ -126,55 +126,55 @@ WALKER_RUNTIME("M")("_"); M._.r = [_ => (_.lb = [0, _.gb = { "LoopScopeMap:#text/0": new Map(_.a = [ - [0, _.b = { - "ConditionalScope:#text/0": _.c = {}, + [0, _.c = { + "ConditionalScope:#text/0": _.b = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 4 }], - [1, _.d = { - "ConditionalScope:#text/0": _.e = {}, + [1, _.e = { + "ConditionalScope:#text/0": _.d = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 7 }], - [2, _.f = { - "ConditionalScope:#text/0": _.g = {}, + [2, _.g = { + "ConditionalScope:#text/0": _.f = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 10 }], - [3, _.h = { - "ConditionalScope:#text/0": _.i = {}, + [3, _.i = { + "ConditionalScope:#text/0": _.h = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 13 }], - [4, _.j = { - "ConditionalScope:#text/0": _.k = {}, + [4, _.k = { + "ConditionalScope:#text/0": _.j = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 16 }], - [5, _.l = { - "ConditionalScope:#text/0": _.m = {}, + [5, _.m = { + "ConditionalScope:#text/0": _.l = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 19 }] ]), "LoopScopeMap:#text/1": new Map(_.n = [ - [0, _.o = { - "ConditionalScope:#text/0": _.p = {}, + [0, _.p = { + "ConditionalScope:#text/0": _.o = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 22 }], - [1, _.q = { - "ConditionalScope:#text/0": _.r = {}, + [1, _.r = { + "ConditionalScope:#text/0": _.q = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 25 }], - [2, _.s = { - "ConditionalScope:#text/0": _.t = {}, + [2, _.t = { + "ConditionalScope:#text/0": _.s = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 28 }], - [3, _.u = { - "ConditionalScope:#text/0": _.v = {}, + [3, _.v = { + "ConditionalScope:#text/0": _.u = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 31 }] @@ -182,23 +182,23 @@ "LoopScopeMap:#text/2": new Map(_.w = [ [0, _.hb = { "LoopScopeMap:#ul/0": new Map(_.x = [ - [0, _.y = { - "ConditionalScope:#text/0": _.z = {}, + [0, _.z = { + "ConditionalScope:#text/0": _.y = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 35 }], - [1, _.A = { - "ConditionalScope:#text/0": _.B = {}, + [1, _.B = { + "ConditionalScope:#text/0": _.A = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 38 }], - [2, _.C = { - "ConditionalScope:#text/0": _.D = {}, + [2, _.D = { + "ConditionalScope:#text/0": _.C = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 41 }], - [3, _.E = { - "ConditionalScope:#text/0": _.F = {}, + [3, _.F = { + "ConditionalScope:#text/0": _.E = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 44 }] @@ -206,23 +206,23 @@ }], [1, _.ib = { "LoopScopeMap:#ul/0": new Map(_.G = [ - [0, _.H = { - "ConditionalScope:#text/0": _.I = {}, + [0, _.I = { + "ConditionalScope:#text/0": _.H = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 48 }], - [1, _.J = { - "ConditionalScope:#text/0": _.K = {}, + [1, _.K = { + "ConditionalScope:#text/0": _.J = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 51 }], - [2, _.L = { - "ConditionalScope:#text/0": _.M = {}, + [2, _.M = { + "ConditionalScope:#text/0": _.L = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 54 }], - [3, _.N = { - "ConditionalScope:#text/0": _.O = {}, + [3, _.O = { + "ConditionalScope:#text/0": _.N = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 57 }] @@ -230,23 +230,23 @@ }], [2, _.jb = { "LoopScopeMap:#ul/0": new Map(_.P = [ - [0, _.Q = { - "ConditionalScope:#text/0": _.R = {}, + [0, _.R = { + "ConditionalScope:#text/0": _.Q = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 61 }], - [1, _.S = { - "ConditionalScope:#text/0": _.T = {}, + [1, _.T = { + "ConditionalScope:#text/0": _.S = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 64 }], - [2, _.U = { - "ConditionalScope:#text/0": _.V = {}, + [2, _.V = { + "ConditionalScope:#text/0": _.U = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 67 }], - [3, _.W = { - "ConditionalScope:#text/0": _.X = {}, + [3, _.X = { + "ConditionalScope:#text/0": _.W = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 70 }] @@ -254,142 +254,142 @@ }], [3, _.kb = { "LoopScopeMap:#ul/0": new Map(_.Y = [ - [0, _.Z = { - "ConditionalScope:#text/0": _.$ = {}, + [0, _.$ = { + "ConditionalScope:#text/0": _.Z = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 74 }], - [1, _.ab = { - "ConditionalScope:#text/0": _.bb = {}, + [1, _.bb = { + "ConditionalScope:#text/0": _.ab = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 77 }], - [2, _.cb = { - "ConditionalScope:#text/0": _.db = {}, + [2, _.db = { + "ConditionalScope:#text/0": _.cb = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 80 }], - [3, _.eb = { - "ConditionalScope:#text/0": _.fb = {}, + [3, _.fb = { + "ConditionalScope:#text/0": _.eb = {}, "ConditionalRenderer:#text/0": "__tests__/tags/child.marko", "#scopeOffset/1": 83 }] ]) }] ]) - }, _.b, _.c, 1, _.d, _.e, 1, _.f, _.g, 1, _.h, _.i, 1, _.j, _.k, - 1, _.l, _.m, 1, _.o, _.p, 1, _.q, _.r, 1, _.s, _.t, 1, _.u, _.v, - 1, _.hb, _.y, _.z, 1, _.A, _.B, 1, _.C, _.D, 1, _.E, _.F, 1, _.ib, - _.H, _.I, 1, _.J, _.K, 1, _.L, _.M, 1, _.N, _.O, 1, _.jb, _.Q, _ - .R, 1, _.S, _.T, 1, _.U, _.V, 1, _.W, _.X, 1, _.kb, _.Z, _.$, 1, _ - .ab, _.bb, 1, _.cb, _.db, 1, _.eb, _.fb - ], _.c["#TagVariable"] = _._[ + }, _.c, _.b, 1, _.e, _.d, 1, _.g, _.f, 1, _.i, _.h, 1, _.k, _.j, + 1, _.m, _.l, 1, _.p, _.o, 1, _.r, _.q, 1, _.t, _.s, 1, _.v, _.u, + 1, _.hb, _.z, _.y, 1, _.B, _.A, 1, _.D, _.C, 1, _.F, _.E, 1, _.ib, + _.I, _.H, 1, _.K, _.J, 1, _.M, _.L, 1, _.O, _.N, 1, _.jb, _.R, _ + .Q, 1, _.T, _.S, 1, _.V, _.U, 1, _.X, _.W, 1, _.kb, _.$, _.Z, 1, _ + .bb, _.ab, 1, _.db, _.cb, 1, _.fb, _.eb + ], _.gb.$hoisted_setHtml3 = _._[ + "__tests__/template.marko_0_$hoisted_setHtml3/hoist" + ](_.gb), _.c.setHtml = _._[ + "__tests__/tags/child.marko_0/_return" + ](_.b), _.b["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.b), _.b.setHtml = _._[ + ](_.c), _.e.setHtml = _._[ "__tests__/tags/child.marko_0/_return" - ](_.c), _.e["#TagVariable"] = _._[ + ](_.d), _.d["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.d), _.d.setHtml = _._[ + ](_.e), _.g.setHtml = _._[ "__tests__/tags/child.marko_0/_return" - ](_.e), _.g["#TagVariable"] = _._[ + ](_.f), _.f["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.f), _.f.setHtml = _._[ + ](_.g), _.i.setHtml = _._[ "__tests__/tags/child.marko_0/_return" - ](_.g), _.i["#TagVariable"] = _._[ + ](_.h), _.h["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.h), _.h.setHtml = _._[ + ](_.i), _.k.setHtml = _._[ "__tests__/tags/child.marko_0/_return" - ](_.i), _.k["#TagVariable"] = _._[ + ](_.j), _.j["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.j), _.j.setHtml = _._[ + ](_.k), _.m.setHtml = _._[ "__tests__/tags/child.marko_0/_return" - ](_.k), _.m["#TagVariable"] = _._[ + ](_.l), _.l["#TagVariable"] = _._[ "__tests__/template.marko_1_setHtml/var" - ](_.l), _.l.setHtml = _._[ + ](_.m), _.p.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.m), _.p["#TagVariable"] = _._[ + ](_.o), _.o["#TagVariable"] = _._[ "__tests__/template.marko_2_setHtml2/var" - ](_.o), _.o.setHtml2 = _._[ + ](_.p), _.r.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.p), _.r["#TagVariable"] = _._[ + ](_.q), _.q["#TagVariable"] = _._[ "__tests__/template.marko_2_setHtml2/var" - ](_.q), _.q.setHtml2 = _._[ + ](_.r), _.t.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.r), _.t["#TagVariable"] = _._[ + ](_.s), _.s["#TagVariable"] = _._[ "__tests__/template.marko_2_setHtml2/var" - ](_.s), _.s.setHtml2 = _._[ + ](_.t), _.v.setHtml2 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.t), _.v["#TagVariable"] = _._[ + ](_.u), _.u["#TagVariable"] = _._[ "__tests__/template.marko_2_setHtml2/var" - ](_.u), _.u.setHtml2 = _._[ + ](_.v), _.z.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.v), _.z["#TagVariable"] = _._[ + ](_.y), _.y["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.y), _.y.setHtml3 = _._[ + ](_.z), _.B.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.z), _.B["#TagVariable"] = _._[ + ](_.A), _.A["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.A), _.A.setHtml3 = _._[ + ](_.B), _.D.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.B), _.D["#TagVariable"] = _._[ + ](_.C), _.C["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.C), _.C.setHtml3 = _._[ + ](_.D), _.F.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.D), _.F["#TagVariable"] = _._[ + ](_.E), _.E["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.E), _.E.setHtml3 = _._[ + ](_.F), _.I.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.F), _.I["#TagVariable"] = _._[ + ](_.H), _.H["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.H), _.H.setHtml3 = _._[ + ](_.I), _.K.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.I), _.K["#TagVariable"] = _._[ + ](_.J), _.J["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.J), _.J.setHtml3 = _._[ + ](_.K), _.M.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.K), _.M["#TagVariable"] = _._[ + ](_.L), _.L["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.L), _.L.setHtml3 = _._[ + ](_.M), _.O.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.M), _.O["#TagVariable"] = _._[ + ](_.N), _.N["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.N), _.N.setHtml3 = _._[ + ](_.O), _.R.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.O), _.R["#TagVariable"] = _._[ + ](_.Q), _.Q["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.Q), _.Q.setHtml3 = _._[ + ](_.R), _.T.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.R), _.T["#TagVariable"] = _._[ + ](_.S), _.S["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.S), _.S.setHtml3 = _._[ + ](_.T), _.V.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.T), _.V["#TagVariable"] = _._[ + ](_.U), _.U["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.U), _.U.setHtml3 = _._[ + ](_.V), _.X.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.V), _.X["#TagVariable"] = _._[ + ](_.W), _.W["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.W), _.W.setHtml3 = _._[ + ](_.X), _.$.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.X), _.$["#TagVariable"] = _._[ + ](_.Z), _.Z["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.Z), _.Z.setHtml3 = _._[ + ](_.$), _.bb.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.$), _.bb["#TagVariable"] = _._[ + ](_.ab), _.ab["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.ab), _.ab.setHtml3 = _._[ + ](_.bb), _.db.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.bb), _.db["#TagVariable"] = _._[ + ](_.cb), _.cb["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.cb), _.cb.setHtml3 = _._[ + ](_.db), _.fb.setHtml3 = _._[ "__tests__/tags/child.marko_0/_return" - ](_.db), _.fb["#TagVariable"] = _._[ + ](_.eb), _.eb["#TagVariable"] = _._[ "__tests__/template.marko_4_setHtml3/var" - ](_.eb), _.eb.setHtml3 = _._[ - "__tests__/tags/child.marko_0/_return" - ](_.fb), _.gb.$hoisted_setHtml3 = _._[ - "__tests__/template.marko_0_$hoisted_setHtml3/hoist" - ](_.gb), _.lb), + ](_.fb), _.lb), "__tests__/template.marko_0_$hoisted_setHtml3", 1, "__tests__/template.marko_0", diff --git a/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/resume.expected.md index 88e3710ddf..1e9be5816c 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/hoist-dynamic-tag-var/__snapshots__/resume.expected.md @@ -24,43 +24,43 @@ +
``` # Render End @@ -22,43 +22,43 @@ +
``` # Render End @@ -12,21 +12,15 @@ +

``` # Render End @@ -15,25 +15,22 @@ diff --git a/packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/ssr.expected.md index 0317849eff..57ea5579f9 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/hoist-only/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html - + ``` # Render End @@ -13,11 +13,11 @@ "ConditionalScope:#text/0": _.b = { "ConditionalScope:#text/0": _.a = {} } - }, _.b, _.a], _.a._ = _.b, _.b._ = _.c, _.a.hoist3 = _._[ - "__tests__/template.marko_2/hoist2" - ](_.a), _.c.hoist1 = _._[ + }, , _.a], _.a._ = _.d[2] = _.b, _.b._ = _.c, _.c.hoist1 = _._[ "__tests__/template.marko_0/hoist" - ](_.c), (_.e = new Set).add(_.a), _.d)]; + ](_.c), _.a.hoist3 = _._[ + "__tests__/template.marko_2/hoist2" + ](_.a), (_.e = new Set).add(_.a), _.d)]; M._.w() diff --git a/packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/resume.expected.md index 7c215e06e3..d20a20ce71 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/html-comment-var/__snapshots__/resume.expected.md @@ -17,16 +17,16 @@ +
``` # Render End @@ -22,16 +22,16 @@ + source=1 ``` # Render End @@ -32,16 +32,16 @@ +
0 0
``` # Render End @@ -28,18 +28,18 @@ +
``` # Render End @@ -12,12 +12,9 @@ +
Hello
OverriddenCustom content

Hello

Custom content ``` # Render End @@ -46,13 +46,12 @@ "ConditionalRenderer:#strong/4": "__tests__/tags/my-div.marko_1_content", "ConditionalScope:#p/5": _.f = {}, "ConditionalRenderer:#p/5": "__tests__/template.marko_1_content", - input: - { - content: _._[ - "__tests__/template.marko_1_content" - ](_.a = {}) + input: _.a = { + content: _.h = {} } - }, _.c, _.d, 1, _.e, _.f], _.b.CustomContent_content = _._[ + }, _.c, _.d, 1, _.e, _.f], _.a.content = _._[ + "__tests__/template.marko_1_content" + ](_.h), _.b.CustomContent_content = _._[ "__tests__/tags/my-div.marko_1_content" ](_.b), _.g), "__tests__/tags/my-div.marko_0_input_CustomContent_content", diff --git a/packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/resume.expected.md index 91ae402040..ef6594a845 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/resume.expected.md @@ -56,8 +56,8 @@ ]), counts: [0, 0, 0], "ClosureScopes:counts": new Set - }, _.b, _.c, _.e, _.f, _.g, _.h], _.c._ = _.b, _.b._ = _.e._ = _.g - ._ = _.d, _.f._ = _.e, _.h._ = _.g, _.i), + }, , _.c, , _.f, , _.h], _.c._ = _.i[2] = _.b, _.b._ = _.e._ = _.g + ._ = _.d, _.f._ = _.i[4] = _.e, _.h._ = _.i[6] = _.g, _.i), "__tests__/template.marko_3", 3, 5, 7 ]; @@ -135,8 +135,8 @@ buttonIndex = (buttonIndex + 1) % 3; ]), counts: [0, 0, 0], "ClosureScopes:counts": new Set - }, _.b, _.c, _.e, _.f, _.g, _.h], _.c._ = _.b, _.b._ = _.e._ = _.g - ._ = _.d, _.f._ = _.e, _.h._ = _.g, _.i), + }, , _.c, , _.f, , _.h], _.c._ = _.i[2] = _.b, _.b._ = _.e._ = _.g + ._ = _.d, _.f._ = _.i[4] = _.e, _.h._ = _.i[6] = _.g, _.i), "__tests__/template.marko_3", 3, 5, 7 ]; @@ -209,8 +209,8 @@ buttonIndex = (buttonIndex + 1) % 3; ]), counts: [0, 0, 0], "ClosureScopes:counts": new Set - }, _.b, _.c, _.e, _.f, _.g, _.h], _.c._ = _.b, _.b._ = _.e._ = _.g - ._ = _.d, _.f._ = _.e, _.h._ = _.g, _.i), + }, , _.c, , _.f, , _.h], _.c._ = _.i[2] = _.b, _.b._ = _.e._ = _.g + ._ = _.d, _.f._ = _.i[4] = _.e, _.h._ = _.i[6] = _.g, _.i), "__tests__/template.marko_3", 3, 5, 7 ]; @@ -280,8 +280,8 @@ buttonIndex = (buttonIndex + 1) % 3; ]), counts: [0, 0, 0], "ClosureScopes:counts": new Set - }, _.b, _.c, _.e, _.f, _.g, _.h], _.c._ = _.b, _.b._ = _.e._ = _.g - ._ = _.d, _.f._ = _.e, _.h._ = _.g, _.i), + }, , _.c, , _.f, , _.h], _.c._ = _.i[2] = _.b, _.b._ = _.e._ = _.g + ._ = _.d, _.f._ = _.i[4] = _.e, _.h._ = _.i[6] = _.g, _.i), "__tests__/template.marko_3", 3, 5, 7 ]; @@ -351,8 +351,8 @@ buttonIndex = (buttonIndex + 1) % 3; ]), counts: [0, 0, 0], "ClosureScopes:counts": new Set - }, _.b, _.c, _.e, _.f, _.g, _.h], _.c._ = _.b, _.b._ = _.e._ = _.g - ._ = _.d, _.f._ = _.e, _.h._ = _.g, _.i), + }, , _.c, , _.f, , _.h], _.c._ = _.i[2] = _.b, _.b._ = _.e._ = _.g + ._ = _.d, _.f._ = _.i[4] = _.e, _.h._ = _.i[6] = _.g, _.i), "__tests__/template.marko_3", 3, 5, 7 ]; @@ -422,8 +422,8 @@ buttonIndex = (buttonIndex + 1) % 3; ]), counts: [0, 0, 0], "ClosureScopes:counts": new Set - }, _.b, _.c, _.e, _.f, _.g, _.h], _.c._ = _.b, _.b._ = _.e._ = _.g - ._ = _.d, _.f._ = _.e, _.h._ = _.g, _.i), + }, , _.c, , _.f, , _.h], _.c._ = _.i[2] = _.b, _.b._ = _.e._ = _.g + ._ = _.d, _.f._ = _.i[4] = _.e, _.h._ = _.i[6] = _.g, _.i), "__tests__/template.marko_3", 3, 5, 7 ]; @@ -493,8 +493,8 @@ buttonIndex = (buttonIndex + 1) % 3; ]), counts: [0, 0, 0], "ClosureScopes:counts": new Set - }, _.b, _.c, _.e, _.f, _.g, _.h], _.c._ = _.b, _.b._ = _.e._ = _.g - ._ = _.d, _.f._ = _.e, _.h._ = _.g, _.i), + }, , _.c, , _.f, , _.h], _.c._ = _.i[2] = _.b, _.b._ = _.e._ = _.g + ._ = _.d, _.f._ = _.i[4] = _.e, _.h._ = _.i[6] = _.g, _.i), "__tests__/template.marko_3", 3, 5, 7 ]; @@ -564,8 +564,8 @@ buttonIndex = (buttonIndex + 1) % 3; ]), counts: [0, 0, 0], "ClosureScopes:counts": new Set - }, _.b, _.c, _.e, _.f, _.g, _.h], _.c._ = _.b, _.b._ = _.e._ = _.g - ._ = _.d, _.f._ = _.e, _.h._ = _.g, _.i), + }, , _.c, , _.f, , _.h], _.c._ = _.i[2] = _.b, _.b._ = _.e._ = _.g + ._ = _.d, _.f._ = _.i[4] = _.e, _.h._ = _.i[6] = _.g, _.i), "__tests__/template.marko_3", 3, 5, 7 ]; @@ -635,8 +635,8 @@ buttonIndex = (buttonIndex + 1) % 3; ]), counts: [0, 0, 0], "ClosureScopes:counts": new Set - }, _.b, _.c, _.e, _.f, _.g, _.h], _.c._ = _.b, _.b._ = _.e._ = _.g - ._ = _.d, _.f._ = _.e, _.h._ = _.g, _.i), + }, , _.c, , _.f, , _.h], _.c._ = _.i[2] = _.b, _.b._ = _.e._ = _.g + ._ = _.d, _.f._ = _.i[4] = _.e, _.h._ = _.i[6] = _.g, _.i), "__tests__/template.marko_3", 3, 5, 7 ]; @@ -706,8 +706,8 @@ buttonIndex = (buttonIndex + 1) % 3; ]), counts: [0, 0, 0], "ClosureScopes:counts": new Set - }, _.b, _.c, _.e, _.f, _.g, _.h], _.c._ = _.b, _.b._ = _.e._ = _.g - ._ = _.d, _.f._ = _.e, _.h._ = _.g, _.i), + }, , _.c, , _.f, , _.h], _.c._ = _.i[2] = _.b, _.b._ = _.e._ = _.g + ._ = _.d, _.f._ = _.i[4] = _.e, _.h._ = _.i[6] = _.g, _.i), "__tests__/template.marko_3", 3, 5, 7 ]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/ssr.expected.md index 0d66ae5b6e..55c6eb0f80 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/nested-for-if-stateful/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html - + ``` # Render End @@ -61,8 +61,8 @@ ]), counts: [0, 0, 0], "ClosureScopes:counts": new Set - }, _.b, _.c, _.e, _.f, _.g, _.h], _.c._ = _.b, _.b._ = _.e._ = _.g - ._ = _.d, _.f._ = _.e, _.h._ = _.g, _.i), + }, , _.c, , _.f, , _.h], _.c._ = _.i[2] = _.b, _.b._ = _.e._ = _.g + ._ = _.d, _.f._ = _.i[4] = _.e, _.h._ = _.i[6] = _.g, _.i), "__tests__/template.marko_3", 3, 5, 7 ]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/resume.expected.md index c2e79ce2a8..6bf4263df3 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/no-render-content-conditional/__snapshots__/resume.expected.md @@ -10,18 +10,16 @@ +
``` # Render End @@ -12,18 +12,16 @@ +
``` # Render End @@ -12,21 +12,19 @@ diff --git a/packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md index 1baca41aad..19afb1a577 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/placeholder-single/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html - a_A_ebd + a_A_ebd ``` # Write @@ -31,13 +31,13 @@ e diff --git a/packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md index e296ba9cff..b55c288a8e 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/resume.expected.md @@ -10,13 +10,13 @@ c de diff --git a/packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md index ed142ec2e7..c8a69e4945 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/placeholder-skipped/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html - abc + abc ``` # Write @@ -20,13 +20,13 @@ c de diff --git a/packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md index 47ca6c54a3..382978c777 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/resume.expected.md @@ -19,18 +19,18 @@ h diff --git a/packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md index 182ad3a6b7..338e4b79a4 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/placeholders-nested/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html - a_B_hbd_A_eg + a_B_hbd_A_eg ``` # Write @@ -39,18 +39,18 @@ h diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/.name-cache.json b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/.name-cache.json new file mode 100644 index 0000000000..f01c76ff0a --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/.name-cache.json @@ -0,0 +1,12 @@ +{ + "vars": { + "props": { + "$_": "t", + "$init": "r", + "$$input_value__OR__setter": "o", + "$$input_value": "n", + "$$count": "e", + "$$setCount__script": "m" + } + } +} diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/csr-sanitized.expected.md b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/csr-sanitized.expected.md new file mode 100644 index 0000000000..6e9de42947 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/csr-sanitized.expected.md @@ -0,0 +1,14 @@ +# Render +```html +
+ 0 +
+``` + + +# Render ASYNC +```html +
+ 1 +
+``` diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/csr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/csr.expected.md new file mode 100644 index 0000000000..8d521bb1ef --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/csr.expected.md @@ -0,0 +1,23 @@ +# Render +```html +
+ 0 +
+``` + +# Mutations +``` +INSERT div +``` + +# Render ASYNC +```html +
+ 1 +
+``` + +# Mutations +``` +UPDATE div/#text "0" => "1" +``` \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/tags/setter.js b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/tags/setter.js new file mode 100644 index 0000000000..951b4195e2 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/tags/setter.js @@ -0,0 +1,27 @@ +export const $template = ""; +export const $walks = ""; +export const $setup = () => {}; +import * as _ from "@marko/runtime-tags/debug/dom"; +const $input_value__OR__setter = /* @__PURE__ */_._or(5, $scope => { + let { + input_value, + setter + } = $scope; + _._return($scope, (input_value, setter)); +}); +const $setter2 = /* @__PURE__ */_._const("setter", $input_value__OR__setter); +export const $input_valueChange = /* @__PURE__ */_._const("input_valueChange", ($scope, input_valueChange) => $setter2($scope, $setter($scope))); +export const $input_value = /* @__PURE__ */_._const("input_value", $input_value__OR__setter); +export const $input = /* @__PURE__ */_._const("input", ($scope, input) => { + $input_valueChange($scope, input.valueChange); + $input_value($scope, input.value); +}); +function $setter({ + input_valueChange +}) { + return function () { + input_valueChange(1); + }; +} +_._resume("__tests__/tags/setter.marko_0/setter", $setter); +export default /* @__PURE__ */_._template("__tests__/tags/setter.marko", $template, $walks, $setup, $input); \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/template.hydrate.js b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/template.hydrate.js new file mode 100644 index 0000000000..dfdac1ad1c --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/template.hydrate.js @@ -0,0 +1,22 @@ +// size: 295 (min) 186 (brotli) +const $input_value__OR__setter = _._or(5, ($scope) => { + let { 3: input_value, 4: setter } = $scope; + _._return($scope, setter); + }), + $input_value = _._const(3, $input_value__OR__setter); +_._resume("a0", function ({ 2: input_valueChange }) { + return function () { + input_valueChange(1); + }; +}); +const $count = _._let(3, ($scope, count) => { + ($input_value($scope[0], count), _._text($scope[2], count)); + }), + $setCount__script = _._script("b1", ({ 4: setCount }) => setCount()); +(_._var_resume("b2", _._const(4, $setCount__script)), + _._resume("b0", function ($scope) { + return (_new_count) => { + $count($scope, _new_count); + }; + }), + init()); diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/template.js b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/template.js new file mode 100644 index 0000000000..bcfd58e8f3 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/dom.expected/template.js @@ -0,0 +1,25 @@ +export const $template = `${_setter_template}
`; +export const $walks = /* beginChildWithVar, _setter_walks, endChild, next(1), get, out(1) */`0${_setter_walks}&D l`; +import * as _ from "@marko/runtime-tags/debug/dom"; +import { $setup as _setter, $input_value as _setter_input_value, $input_valueChange as _setter_input_valueChange, $template as _setter_template, $walks as _setter_walks } from "./tags/setter.marko"; +const $count = /* @__PURE__ */_._let("count/3", ($scope, count) => { + _setter_input_value($scope["#childScope/0"], count); + _._text($scope["#text/2"], count); +}); +export function $setup($scope) { + _._var($scope, "#childScope/0", $setCount); + _setter($scope["#childScope/0"]); + _setter_input_valueChange($scope["#childScope/0"], $valueChange($scope)); + $count($scope, 0); +} +const $setCount__script = _._script("__tests__/template.marko_0_setCount", ({ + setCount +}) => setCount()); +const $setCount = _._var_resume("__tests__/template.marko_0_setCount/var", /* @__PURE__ */_._const("setCount", $setCount__script)); +function $valueChange($scope) { + return _new_count => { + $count($scope, _new_count); + }; +} +_._resume("__tests__/template.marko_0/valueChange", $valueChange); +export default /* @__PURE__ */_._template("__tests__/template.marko", $template, $walks, $setup); \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/html.expected/tags/setter.js b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/html.expected/tags/setter.js new file mode 100644 index 0000000000..f3cc7106b9 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/html.expected/tags/setter.js @@ -0,0 +1,19 @@ +import * as _ from "@marko/runtime-tags/debug/html"; +export default _._template("__tests__/tags/setter.marko", input => { + const $scope0_reason = _._scope_reason(); + const $scope0_id = _._scope_id(); + const setter = _._resume(function () { + input.valueChange(1); + }, "__tests__/tags/setter.marko_0/setter", $scope0_id); + const $return = (input.value, setter); + _._scope($scope0_id, { + input_valueChange: input.valueChange, + input_value: _._serialize_if($scope0_reason, /* input.valueChange */0) && input.value, + setter: _._serialize_if($scope0_reason, /* input.value */1) && setter + }, "__tests__/tags/setter.marko", 0, { + input_valueChange: ["input.valueChange"], + input_value: ["input.value"], + setter: "1:8" + }); + return $return; +}); \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/html.expected/template.js b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/html.expected/template.js new file mode 100644 index 0000000000..4d85169f3a --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/html.expected/template.js @@ -0,0 +1,26 @@ +import _setter from "./tags/setter.marko"; +import * as _ from "@marko/runtime-tags/debug/html"; +export default _._template("__tests__/template.marko", input => { + const $scope0_id = _._scope_id(); + let count = 0; + const $childScope = _._peek_scope_id(); + _._set_serialize_reason({ + /* input.value */1: /* count */1 + }); + let setCount = _setter({ + value: count, + valueChange: _._resume(_new_count => { + count = _new_count; + }, "__tests__/template.marko_0/valueChange", $scope0_id) + }); + _._var($scope0_id, "#scopeOffset/1", $childScope, "__tests__/template.marko_0_setCount/var"); + _._html(`
${_._escape(count)}${_._el_resume($scope0_id, "#text/2")}
`); + _._script($scope0_id, "__tests__/template.marko_0_setCount"); + _._scope($scope0_id, { + setCount, + "#childScope/0": _._existing_scope($childScope) + }, "__tests__/template.marko", 0, { + setCount: "2:9" + }); + _._resume_branch($scope0_id); +}); \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/resume-sanitized.expected.md b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/resume-sanitized.expected.md new file mode 100644 index 0000000000..6e9de42947 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/resume-sanitized.expected.md @@ -0,0 +1,14 @@ +# Render +```html +
+ 0 +
+``` + + +# Render ASYNC +```html +
+ 1 +
+``` diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/resume.expected.md new file mode 100644 index 0000000000..767101bfe5 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/resume.expected.md @@ -0,0 +1,67 @@ +# Render +```html + + + +
+ 0 + +
+ + + +``` + + +# Render ASYNC +```html + + + +
+ 1 + +
+ + + +``` + +# Mutations +``` +UPDATE html/body/div/#text "0" => "1" +``` \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/ssr-sanitized.expected.md b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/ssr-sanitized.expected.md new file mode 100644 index 0000000000..9a314009ef --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/ssr-sanitized.expected.md @@ -0,0 +1,6 @@ +# Render End +```html +
+ 0 +
+``` diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/ssr.expected.md new file mode 100644 index 0000000000..59fee36efc --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/__snapshots__/ssr.expected.md @@ -0,0 +1,47 @@ +# Write +```html +
0
+``` + +# Render End +```html + + + +
+ 0 + +
+ + + +``` + +# Mutations +``` +INSERT html +INSERT html/head +INSERT html/body +INSERT html/body/div +INSERT html/body/div/#text +INSERT html/body/div/#comment +INSERT html/body/script +INSERT html/body/script/#text +``` \ No newline at end of file diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/tags/setter.marko b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/tags/setter.marko new file mode 100644 index 0000000000..61babe833a --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/tags/setter.marko @@ -0,0 +1,2 @@ + + diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/template.marko b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/template.marko new file mode 100644 index 0000000000..c6bac97058 --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/template.marko @@ -0,0 +1,4 @@ + + + +
${count}
diff --git a/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts new file mode 100644 index 0000000000..2e1746dabe --- /dev/null +++ b/packages/runtime-tags/src/__tests__/fixtures/return-serialize-circular/test.ts @@ -0,0 +1,3 @@ +import { wait } from "../../utils/resolve"; + +export const steps = [{}, wait(1)]; diff --git a/packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/resume.expected.md index 9553dd1293..387d0b5648 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/resume.expected.md @@ -34,17 +34,17 @@ "#childScope/4": _.c }, _.b, 1, _.c], _.b.value = _._[ "__tests__/template.marko_0/onClickOnce" - ](_.a), _.b["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickOnce/var" ](_.a), _.a.onClickOnce = _._[ "__tests__/template.marko_1/_return" - ](_.b), _.c.value = _._[ + ](_.b), _.b["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickOnce/var" + ](_.a), _.c.value = _._[ "__tests__/template.marko_0/onClickTwice" - ](_.a), _.c["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickTwice/var" ](_.a), _.a.onClickTwice = _._[ "__tests__/template.marko_2/_return2" - ](_.c), _.d), + ](_.c), _.c["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickTwice/var" + ](_.a), _.d), "__tests__/template.marko_0_onClickTwice", 1, "__tests__/template.marko_0_onClickOnce", @@ -96,17 +96,17 @@ container.querySelector("button.once").click(); "#childScope/4": _.c }, _.b, 1, _.c], _.b.value = _._[ "__tests__/template.marko_0/onClickOnce" - ](_.a), _.b["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickOnce/var" ](_.a), _.a.onClickOnce = _._[ "__tests__/template.marko_1/_return" - ](_.b), _.c.value = _._[ + ](_.b), _.b["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickOnce/var" + ](_.a), _.c.value = _._[ "__tests__/template.marko_0/onClickTwice" - ](_.a), _.c["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickTwice/var" ](_.a), _.a.onClickTwice = _._[ "__tests__/template.marko_2/_return2" - ](_.c), _.d), + ](_.c), _.c["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickTwice/var" + ](_.a), _.d), "__tests__/template.marko_0_onClickTwice", 1, "__tests__/template.marko_0_onClickOnce", @@ -162,17 +162,17 @@ container.querySelector("button.once").click(); "#childScope/4": _.c }, _.b, 1, _.c], _.b.value = _._[ "__tests__/template.marko_0/onClickOnce" - ](_.a), _.b["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickOnce/var" ](_.a), _.a.onClickOnce = _._[ "__tests__/template.marko_1/_return" - ](_.b), _.c.value = _._[ + ](_.b), _.b["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickOnce/var" + ](_.a), _.c.value = _._[ "__tests__/template.marko_0/onClickTwice" - ](_.a), _.c["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickTwice/var" ](_.a), _.a.onClickTwice = _._[ "__tests__/template.marko_2/_return2" - ](_.c), _.d), + ](_.c), _.c["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickTwice/var" + ](_.a), _.d), "__tests__/template.marko_0_onClickTwice", 1, "__tests__/template.marko_0_onClickOnce", @@ -224,17 +224,17 @@ container.querySelector("button.twice").click(); "#childScope/4": _.c }, _.b, 1, _.c], _.b.value = _._[ "__tests__/template.marko_0/onClickOnce" - ](_.a), _.b["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickOnce/var" ](_.a), _.a.onClickOnce = _._[ "__tests__/template.marko_1/_return" - ](_.b), _.c.value = _._[ + ](_.b), _.b["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickOnce/var" + ](_.a), _.c.value = _._[ "__tests__/template.marko_0/onClickTwice" - ](_.a), _.c["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickTwice/var" ](_.a), _.a.onClickTwice = _._[ "__tests__/template.marko_2/_return2" - ](_.c), _.d), + ](_.c), _.c["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickTwice/var" + ](_.a), _.d), "__tests__/template.marko_0_onClickTwice", 1, "__tests__/template.marko_0_onClickOnce", @@ -290,17 +290,17 @@ container.querySelector("button.twice").click(); "#childScope/4": _.c }, _.b, 1, _.c], _.b.value = _._[ "__tests__/template.marko_0/onClickOnce" - ](_.a), _.b["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickOnce/var" ](_.a), _.a.onClickOnce = _._[ "__tests__/template.marko_1/_return" - ](_.b), _.c.value = _._[ + ](_.b), _.b["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickOnce/var" + ](_.a), _.c.value = _._[ "__tests__/template.marko_0/onClickTwice" - ](_.a), _.c["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickTwice/var" ](_.a), _.a.onClickTwice = _._[ "__tests__/template.marko_2/_return2" - ](_.c), _.d), + ](_.c), _.c["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickTwice/var" + ](_.a), _.d), "__tests__/template.marko_0_onClickTwice", 1, "__tests__/template.marko_0_onClickOnce", @@ -356,17 +356,17 @@ container.querySelector("button.twice").click(); "#childScope/4": _.c }, _.b, 1, _.c], _.b.value = _._[ "__tests__/template.marko_0/onClickOnce" - ](_.a), _.b["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickOnce/var" ](_.a), _.a.onClickOnce = _._[ "__tests__/template.marko_1/_return" - ](_.b), _.c.value = _._[ + ](_.b), _.b["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickOnce/var" + ](_.a), _.c.value = _._[ "__tests__/template.marko_0/onClickTwice" - ](_.a), _.c["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickTwice/var" ](_.a), _.a.onClickTwice = _._[ "__tests__/template.marko_2/_return2" - ](_.c), _.d), + ](_.c), _.c["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickTwice/var" + ](_.a), _.d), "__tests__/template.marko_0_onClickTwice", 1, "__tests__/template.marko_0_onClickOnce", diff --git a/packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/ssr.expected.md index 5a8c7681fa..784042eef5 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/returns-within-define-tag/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html - + ``` # Render End @@ -39,17 +39,17 @@ "#childScope/4": _.c }, _.b, 1, _.c], _.b.value = _._[ "__tests__/template.marko_0/onClickOnce" - ](_.a), _.b["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickOnce/var" ](_.a), _.a.onClickOnce = _._[ "__tests__/template.marko_1/_return" - ](_.b), _.c.value = _._[ + ](_.b), _.b["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickOnce/var" + ](_.a), _.c.value = _._[ "__tests__/template.marko_0/onClickTwice" - ](_.a), _.c["#TagVariable"] = _._[ - "__tests__/template.marko_0_onClickTwice/var" ](_.a), _.a.onClickTwice = _._[ "__tests__/template.marko_2/_return2" - ](_.c), _.d), + ](_.c), _.c["#TagVariable"] = _._[ + "__tests__/template.marko_0_onClickTwice/var" + ](_.a), _.d), "__tests__/template.marko_0_onClickTwice", 1, "__tests__/template.marko_0_onClickOnce", diff --git a/packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/resume.expected.md index e6c8f8e2b9..d2f1a4eca4 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/tag-var-with-serialize-reason/__snapshots__/resume.expected.md @@ -12,15 +12,15 @@ + ``` # Render End @@ -17,15 +17,15 @@ +
``` # Render End @@ -40,7 +40,7 @@ inner: !0, count: 0, "ClosureScopes:count": _.e = new Set - }, _.a, _.b], _.b._ = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), + }, , _.b], _.b._ = _.d[2] = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), "__tests__/template.marko_2_count", 3, "__tests__/template.marko_1_inner", diff --git a/packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/resume.expected.md index 967057acfb..c64bd32f39 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/resume.expected.md @@ -36,7 +36,7 @@ inner: !0, count: 0, "ClosureScopes:count": _.e = new Set - }, _.a, _.b], _.b._ = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), + }, , _.b], _.b._ = _.d[2] = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), "__tests__/template.marko_2_count", 3, "__tests__/template.marko_1_inner", @@ -96,7 +96,7 @@ container.querySelector("#count").click(); inner: !0, count: 0, "ClosureScopes:count": _.e = new Set - }, _.a, _.b], _.b._ = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), + }, , _.b], _.b._ = _.d[2] = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), "__tests__/template.marko_2_count", 3, "__tests__/template.marko_1_inner", @@ -156,7 +156,7 @@ container.querySelector("#count").click(); inner: !0, count: 0, "ClosureScopes:count": _.e = new Set - }, _.a, _.b], _.b._ = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), + }, , _.b], _.b._ = _.d[2] = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), "__tests__/template.marko_2_count", 3, "__tests__/template.marko_1_inner", @@ -210,7 +210,7 @@ container.querySelector("#inner").click(); inner: !0, count: 0, "ClosureScopes:count": _.e = new Set - }, _.a, _.b], _.b._ = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), + }, , _.b], _.b._ = _.d[2] = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), "__tests__/template.marko_2_count", 3, "__tests__/template.marko_1_inner", @@ -270,7 +270,7 @@ container.querySelector("#inner").click(); inner: !0, count: 0, "ClosureScopes:count": _.e = new Set - }, _.a, _.b], _.b._ = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), + }, , _.b], _.b._ = _.d[2] = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), "__tests__/template.marko_2_count", 3, "__tests__/template.marko_1_inner", @@ -330,7 +330,7 @@ container.querySelector("#count").click(); inner: !0, count: 0, "ClosureScopes:count": _.e = new Set - }, _.a, _.b], _.b._ = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), + }, , _.b], _.b._ = _.d[2] = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), "__tests__/template.marko_2_count", 3, "__tests__/template.marko_1_inner", @@ -377,7 +377,7 @@ container.querySelector("#outer").click(); inner: !0, count: 0, "ClosureScopes:count": _.e = new Set - }, _.a, _.b], _.b._ = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), + }, , _.b], _.b._ = _.d[2] = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), "__tests__/template.marko_2_count", 3, "__tests__/template.marko_1_inner", @@ -439,7 +439,7 @@ container.querySelector("#outer").click(); inner: !0, count: 0, "ClosureScopes:count": _.e = new Set - }, _.a, _.b], _.b._ = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), + }, , _.b], _.b._ = _.d[2] = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), "__tests__/template.marko_2_count", 3, "__tests__/template.marko_1_inner", @@ -498,7 +498,7 @@ container.querySelector("#count").click(); inner: !0, count: 0, "ClosureScopes:count": _.e = new Set - }, _.a, _.b], _.b._ = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), + }, , _.b], _.b._ = _.d[2] = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), "__tests__/template.marko_2_count", 3, "__tests__/template.marko_1_inner", diff --git a/packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/ssr.expected.md index 82f30a8222..e9073cb0ca 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/toggle-nested-3/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html -
hello
+
hello
``` # Render End @@ -41,7 +41,7 @@ inner: !0, count: 0, "ClosureScopes:count": _.e = new Set - }, _.a, _.b], _.b._ = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), + }, , _.b], _.b._ = _.d[2] = _.a, _.a._ = _.c, (_.e).add(_.b), _.d), "__tests__/template.marko_2_count", 3, "__tests__/template.marko_1_inner", diff --git a/packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/resume.expected.md b/packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/resume.expected.md index 1b818a22b9..951434816a 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/resume.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/try-effects-catch/__snapshots__/resume.expected.md @@ -14,13 +14,13 @@ +
ERROR!
``` # Render End @@ -17,13 +17,13 @@ diff --git a/packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/ssr.expected.md b/packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/ssr.expected.md index 4b2fff2def..9a1a4a00e1 100644 --- a/packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/ssr.expected.md +++ b/packages/runtime-tags/src/__tests__/fixtures/try-single-throw-sync/__snapshots__/ssr.expected.md @@ -1,6 +1,6 @@ # Write ```html - BeforeERROR!After + BeforeERROR!After ``` # Render End @@ -15,13 +15,13 @@ After diff --git a/packages/runtime-tags/src/__tests__/serializer.test.ts b/packages/runtime-tags/src/__tests__/serializer.test.ts index 0f515d304f..d65dddd5c4 100644 --- a/packages/runtime-tags/src/__tests__/serializer.test.ts +++ b/packages/runtime-tags/src/__tests__/serializer.test.ts @@ -847,7 +847,7 @@ describe("serializer", () => { const scope = { value: 1 }; const obj = { fn: builder(scope) }; register("fn", obj.fn, scope); - assertStringify(obj, `{fn:_._.fn(_.a={value:1})}`, { + assertStringify(obj, `{fn:_.b={value:1}},_.a.fn=_._.fn(_.b)`, { _: { fn: builder }, }); }); diff --git a/packages/runtime-tags/src/html/serializer.ts b/packages/runtime-tags/src/html/serializer.ts index db2c2f0332..36b39ee099 100644 --- a/packages/runtime-tags/src/html/serializer.ts +++ b/packages/runtime-tags/src/html/serializer.ts @@ -11,6 +11,7 @@ interface Registered { id: string; access: string; scope: unknown; + instanceId: number; } enum MutationType { @@ -294,18 +295,20 @@ const KNOWN_OBJECTS = new Map([ class State { ids = 0; flush = 0; + registerInstanceId = 0; flushed = false; wroteUndefined = false; buf = [] as string[]; refs = new WeakMap(); assigned = new Set(); + registered = [] as Reference[]; boundary: Boundary | undefined = undefined; - mutations: Mutation[] = []; + mutated: Mutation[] = []; } class Reference { declare debug?: Debug; - public init = ""; + public registered: null | Registered = null; public assigns: null | string[] = null; constructor( public parent: Reference | null, @@ -367,7 +370,7 @@ export class Serializer { spread?: boolean, ) { const state = this.#state; - state.mutations.push({ + state.mutated.push({ type: MutationType.call, value, object, @@ -378,7 +381,7 @@ export class Serializer { } writeAssign(value: unknown, object: unknown, property: string) { const state = this.#state; - state.mutations.push({ + state.mutated.push({ type: MutationType.assign, value, object, @@ -386,16 +389,26 @@ export class Serializer { }); state.flushed = true; } + register(id: string, val: T, scope?: unknown) { + return register( + id, + val, + scope, + scope ? ++this.#state.registerInstanceId : 0, + ); + } } export function register( id: string, val: T, scope?: unknown, + instanceId?: number, ) { REGISTRY.set(val, { id, scope, + instanceId: instanceId ?? 0, access: "_._" + toAccess(toObjectKey(id)), }); return val; @@ -413,7 +426,7 @@ export function stringify(val: unknown) { } function writeRoot(state: State, root: unknown) { - const { buf, assigned, mutations } = state; + const { buf } = state; const hadBuf = buf.length !== 0; let result = ""; if (hadBuf) { @@ -424,8 +437,12 @@ function writeRoot(state: State, root: unknown) { const rootRef = state.refs.get(root as object); if (rootRef) { const rootId = ensureId(state, rootRef); - if (assigned.size || mutations.length) { - assigned.delete(rootRef!); + if ( + state.assigned.size || + state.registered.length || + state.mutated.length + ) { + state.assigned.delete(rootRef!); writeAssigned(state); buf.push( "," + @@ -462,36 +479,39 @@ function writeRoot(state: State, root: unknown) { function writeAssigned(state: State) { if (state.assigned.size) { - let inits = ""; - let assigns = ""; - for (const valueRef of state.assigned) { - if (valueRef.init) { - inits += - "," + - (valueRef.assigns - ? assignsToString(valueRef.assigns, valueRef.init) - : valueRef.init); - valueRef.init = ""; - } else if (valueRef.assigns) { - assigns += "," + assignsToString(valueRef.assigns, valueRef.id!); - } - - valueRef.assigns = null; + let buf = ""; + for (const ref of state.assigned) { + buf += "," + assignsToString(ref.assigns!, ref.id!); + ref.assigns = null; } - if (assigns) { - state.buf.push(assigns); - } + state.buf.push(buf); + state.assigned = new Set(); + } - if (inits) { - state.buf.push(inits); + if (state.registered.length) { + let buf = ""; + for (const ref of state.registered.sort(compareRegisteredReferences)) { + const scopeRef = state.refs.get(ref.registered!.scope!); + buf += + "," + + assignsToString( + ref.assigns!, + ref.registered!.access + + "(" + + (scopeRef ? ensureId(state, scopeRef) : ref.assigns![0]) + + ")", + ); + ref.assigns = null; + ref.registered = null; } - state.assigned = new Set(); + state.buf.push(buf); + state.registered = []; } - if (state.mutations.length) { - for (const mutation of state.mutations) { + if (state.mutated.length) { + for (const mutation of state.mutated) { const hasSeen = state.refs.get(mutation.object as object)?.id; const objectStartIndex = state.buf.push( state.buf.length === 0 ? "" : ",", @@ -540,9 +560,9 @@ function writeAssigned(state: State) { state.buf.push(")"); } } - state.mutations = []; + state.mutated = []; - if (state.assigned.size) { + if (state.assigned.size || state.registered.length) { writeAssigned(state); } } @@ -591,18 +611,16 @@ function writeReferenceOr( ) { let ref = state.refs.get(val); if (ref) { - if (ref.init) { - addAssignment(ref, ensureId(state, parent!) + toAccess(accessor)); - return false; - } - - if (isCircular(parent, ref)) { - if (!ref.assigns) { + if (parent) { + if (ref.assigns) { + addAssignment(ref, ensureId(state, parent) + toAccess(accessor)); + return false; + } else if (isCircular(parent, ref)) { ensureId(state, ref); state.assigned.add(ref); + addAssignment(ref, ensureId(state, parent) + toAccess(accessor)); + return false; } - addAssignment(ref, ensureId(state, parent!) + toAccess(accessor)); - return false; } state.buf.push(ensureId(state, ref)); @@ -633,55 +651,26 @@ function writeRegistered( val: WeakKey, parent: Reference | null, accessor: string, - { access, scope }: Registered, + registered: Registered, ) { - if (scope) { - const scopeRef = state.refs.get(scope); + if (parent && registered.scope) { const fnRef = new Reference( parent, accessor, state.flush, state.buf.length, ); + fnRef.registered = registered; state.refs.set(val, fnRef); + state.registered.push(fnRef); + addAssignment(fnRef, ensureId(state, parent) + toAccess(accessor)); - if (scopeRef) { - if ( - parent && - (state.assigned.has(scopeRef) || isCircular(parent, scopeRef)) - ) { - // TODO: adding parent here is is probably wrong, but is currently needed to ensure the - // parent of the function has it's assignments before the function so that when the - // function is called the parent is complete. - state.assigned.add(parent); - state.assigned.add(fnRef); - fnRef.init = access + "(" + ensureId(state, scopeRef) + ")"; - addAssignment(fnRef, ensureId(state, parent) + toAccess(accessor)); - return false; - } - - state.buf.push(access + "(" + ensureId(state, scopeRef) + ")"); - } else { - const pos = state.buf.push("") - 1; - const assigns = state.assigned.size; - writeProp(state, scope, parent, ""); - const scopeRef = parent && state.refs.get(scope); - const scopeId = scopeRef && ensureId(state, scopeRef); - if (scopeId && assigns !== state.assigned.size) { - // TODO: adding parent here is is probably wrong, but is currently needed to ensure the - // parent of the function has it's assignments before the function so that when the - // function is called the parent is complete. - state.assigned.add(parent); - state.assigned.add(fnRef); - fnRef.init = access + "(" + scopeId + ")"; - addAssignment(fnRef, ensureId(state, parent) + toAccess(accessor)); - } else { - state.buf[pos] = access + "(" + state.buf[pos]; - state.buf.push(")"); - } - } + return ( + !state.refs.has(registered.scope) && + writeProp(state, registered.scope, null, "") + ); } else { - state.buf.push(access); + state.buf.push(registered.access); } return true; @@ -1738,3 +1727,7 @@ function patchIteratorNext(proto: Iterator) { return next.call(this, value); }; } + +function compareRegisteredReferences(a: Reference, b: Reference) { + return a.registered!.instanceId - b.registered!.instanceId; +} diff --git a/packages/runtime-tags/src/html/writer.ts b/packages/runtime-tags/src/html/writer.ts index d2856783aa..bb0970dde3 100644 --- a/packages/runtime-tags/src/html/writer.ts +++ b/packages/runtime-tags/src/html/writer.ts @@ -150,7 +150,11 @@ export function _resume( ): T { return scopeId === undefined ? serializerRegister(id, val) - : serializerRegister(id, val, _scope_with_id(scopeId)); + : $chunk.boundary.state.serializer.register( + id, + val, + _scope_with_id(scopeId), + ); } export function _id() { diff --git a/packages/translator-interop/src/__tests__/fixtures/interop-basic-tags-to-class/__snapshots__/resume.expected.md b/packages/translator-interop/src/__tests__/fixtures/interop-basic-tags-to-class/__snapshots__/resume.expected.md index cd40173909..f5915424b1 100644 --- a/packages/translator-interop/src/__tests__/fixtures/interop-basic-tags-to-class/__snapshots__/resume.expected.md +++ b/packages/translator-interop/src/__tests__/fixtures/interop-basic-tags-to-class/__snapshots__/resume.expected.md @@ -20,16 +20,16 @@ + # Render End ```html @@ -25,16 +25,16 @@ + # Render End ```html @@ -18,22 +18,23 @@