@marko/runtime-tags 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/helpers.d.ts +4 -0
- package/dist/common/types.d.ts +90 -0
- package/dist/debug/dom.js +1411 -0
- package/dist/debug/dom.js.map +7 -0
- package/dist/debug/dom.mjs +1388 -0
- package/dist/debug/dom.mjs.map +7 -0
- package/dist/debug/html.js +1323 -0
- package/dist/debug/html.js.map +7 -0
- package/dist/debug/html.mjs +1263 -0
- package/dist/debug/html.mjs.map +7 -0
- package/dist/dom/abort-signal.d.ts +3 -0
- package/dist/dom/control-flow.d.ts +14 -0
- package/dist/dom/dom.d.ts +14 -0
- package/dist/dom/event.d.ts +3 -0
- package/dist/dom/queue.d.ts +10 -0
- package/dist/dom/reconcile-domdiff.d.ts +2 -0
- package/dist/dom/reconcile-listdiff.d.ts +2 -0
- package/dist/dom/reconcile-longest-increasing-subsequence.d.ts +2 -0
- package/dist/dom/reconcile.d.ts +1 -0
- package/dist/dom/renderer.d.ts +20 -0
- package/dist/dom/resume.d.ts +8 -0
- package/dist/dom/schedule.d.ts +2 -0
- package/dist/dom/scope.d.ts +13 -0
- package/dist/dom/signals.d.ts +31 -0
- package/dist/dom/template.d.ts +11 -0
- package/dist/dom/walker.d.ts +4 -0
- package/dist/dom.d.ts +11 -0
- package/dist/dom.js +904 -0
- package/dist/dom.js.map +7 -0
- package/dist/dom.mjs +884 -0
- package/dist/dom.mjs.map +7 -0
- package/dist/html/attrs.d.ts +4 -0
- package/dist/html/content.d.ts +5 -0
- package/dist/html/dynamic-tag.d.ts +12 -0
- package/dist/html/reorder-runtime.d.ts +1 -0
- package/dist/html/serializer.d.ts +38 -0
- package/dist/html/template.d.ts +9 -0
- package/dist/html/writer.d.ts +40 -0
- package/dist/html.d.ts +6 -0
- package/dist/html.js +933 -0
- package/dist/html.js.map +7 -0
- package/dist/html.mjs +876 -0
- package/dist/html.mjs.map +7 -0
- package/package.json +39 -0
package/dist/html.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/html.ts", "../src/html/content.ts", "../src/common/helpers.ts", "../src/html/attrs.ts", "../src/html/serializer.ts", "../src/html/reorder-runtime.ts", "../src/html/writer.ts", "../src/html/dynamic-tag.ts", "../src/html/template.ts"],
|
|
4
|
+
"sourcesContent": ["export {\n toString,\n escapeScript,\n escapeStyle,\n escapeXML,\n escapeAttrValue,\n} from \"./html/content\";\n\nexport { attr, attrs, classAttr, styleAttr } from \"./html/attrs\";\n\nexport {\n dynamicTagInput,\n dynamicTagArgs,\n createRenderer,\n patchDynamicTag,\n} from \"./html/dynamic-tag\";\n\nexport {\n write,\n maybeFlush,\n fork,\n tryPlaceholder,\n tryCatch,\n nextTagId,\n nextScopeId,\n markResumeNode,\n writeEffect,\n writeScope,\n markResumeScopeStart,\n markResumeControlEnd,\n markResumeControlSingleNodeEnd,\n createRenderFn,\n peekSerializedScope,\n $_streamData,\n} from \"./html/writer\";\n\nexport { createTemplate } from \"./html/template\";\n\nexport {\n register,\n makeSerializable,\n serializedScope,\n getRegistryInfo,\n} from \"./html/serializer\";\n", "export function toString(val: unknown) {\n return val || val === 0 ? val + \"\" : \"\";\n}\n\nexport const escapeXML = escapeIfNeeded((val: string) => {\n let result = \"\";\n let lastPos = 0;\n\n for (let i = 0, len = val.length; i < len; i++) {\n let replacement: string;\n\n switch (val[i]) {\n case \"<\":\n replacement = \"<\";\n break;\n case \"&\":\n replacement = \"&\";\n break;\n default:\n continue;\n }\n\n result += val.slice(lastPos, i) + replacement;\n lastPos = i + 1;\n }\n\n if (lastPos) {\n return result + val.slice(lastPos);\n }\n\n return val;\n});\n\nexport const escapeScript = escapeIfNeeded(escapeTagEnding(\"script\"));\nexport const escapeStyle = escapeIfNeeded(escapeTagEnding(\"style\"));\nfunction escapeTagEnding(tagName: string) {\n const openTag = `</${tagName}`;\n const escaped = `<\\\\/${tagName}`;\n\n return (val: string) => {\n let result = \"\";\n let lastPos = 0;\n let i = val.indexOf(openTag, lastPos);\n\n while (i !== -1) {\n result += val.slice(lastPos, i) + escaped;\n lastPos = i + 1;\n i = val.indexOf(openTag, lastPos);\n }\n\n if (lastPos) {\n return result + val.slice(lastPos);\n }\n\n return val;\n };\n}\n\nexport function escapeAttrValue(val: string) {\n const len = val.length;\n let i = 0;\n do {\n switch (val[i]) {\n case '\"':\n return quoteValue(val, i + 1, \"'\", \"'\");\n case \"'\":\n case \">\":\n case \" \":\n case \"\\t\":\n case \"\\n\":\n case \"\\r\":\n case \"\\f\":\n return quoteValue(val, i + 1, '\"', \""\");\n default:\n i++;\n break;\n }\n } while (i < len);\n\n return val;\n}\n\nfunction escapeIfNeeded(escape: (val: string) => string) {\n return (val: unknown) => {\n if (!val && val !== 0) {\n return \"‍\";\n }\n\n switch (typeof val) {\n case \"string\":\n return escape(val);\n case \"boolean\":\n return \"true\";\n case \"number\":\n return val + \"\";\n default:\n return escape(val + \"\");\n }\n };\n}\n\nfunction quoteValue(\n val: string,\n startPos: number,\n quote: string,\n escaped: string,\n) {\n let result = quote;\n let lastPos = 0;\n\n for (let i = startPos, len = val.length; i < len; i++) {\n if (val[i] === quote) {\n result += val.slice(lastPos, i) + escaped;\n lastPos = i + 1;\n }\n }\n\n return result + (lastPos ? val.slice(lastPos) : val) + quote;\n}\n", "export function classValue(value: unknown) {\n return toDelimitedString(value, \" \", stringifyClassObject);\n}\n\nfunction stringifyClassObject(name: string, value: unknown) {\n if (isVoid(value)) {\n return \"\";\n }\n\n return name;\n}\n\nexport function styleValue(value: unknown) {\n return toDelimitedString(value, \";\", stringifyStyleObject);\n}\n\nconst NON_DIMENSIONAL = /^(--|ta|or|li|z)|n-c|i(do|nk|m|t)|w$|we/;\nfunction stringifyStyleObject(name: string, value: unknown) {\n if (isVoid(value)) {\n return \"\";\n }\n\n if (typeof value === \"number\" && value && !NON_DIMENSIONAL.test(name)) {\n (value as unknown as string) += \"px\";\n }\n\n return `${name}:${value}`;\n}\n\nfunction toDelimitedString(\n val: unknown,\n delimiter: string,\n stringify: (n: string, v: unknown) => string | undefined,\n) {\n switch (typeof val) {\n case \"string\":\n return val;\n case \"object\":\n if (val !== null) {\n let result = \"\";\n let curDelimiter = \"\";\n\n if (Array.isArray(val)) {\n for (const v of val) {\n const part = toDelimitedString(v, delimiter, stringify);\n if (part !== \"\") {\n result += curDelimiter + part;\n curDelimiter = delimiter;\n }\n }\n } else {\n for (const name in val) {\n const v = (val as Record<string, unknown>)[name];\n const part = stringify(name, v);\n if (part !== \"\") {\n result += curDelimiter + part;\n curDelimiter = delimiter;\n }\n }\n }\n\n return result;\n }\n }\n\n return \"\";\n}\n\nexport function isVoid(value: unknown) {\n return value == null || value === false;\n}\n\nexport function alphaEncode(num: number): string {\n return num < 52\n ? String.fromCharCode(num < 26 ? num + 97 : num + (65 - 26))\n : alphaEncode((num / 52) | 0) + alphaEncode(num % 52);\n}\n", "import { classValue, isVoid, styleValue } from \"../common/helpers\";\nimport { escapeAttrValue } from \"./content\";\n\nexport function classAttr(val: unknown) {\n return stringAttr(\"class\", classValue(val));\n}\n\nexport function styleAttr(val: unknown) {\n return stringAttr(\"style\", styleValue(val));\n}\n\nexport function attr(name: string, val: unknown) {\n return isVoid(val) ? \"\" : nonVoidUntypedAttr(name, val);\n}\n\nexport function attrs(data: Record<string, unknown>) {\n let result = \"\";\n\n for (const name in data) {\n if (/^on[A-Z-]/.test(name)) {\n continue;\n }\n\n const val = data[name];\n\n switch (name) {\n case \"class\":\n result += classAttr(val);\n break;\n case \"style\":\n result += styleAttr(val);\n break;\n case \"renderBody\":\n break;\n default:\n if (!(isVoid(val) || isInvalidAttrName(name))) {\n result += nonVoidUntypedAttr(name, val);\n }\n }\n }\n\n return result;\n}\n\nfunction stringAttr(name: string, val: string) {\n return val && ` ${name}=${escapeAttrValue(val)}`;\n}\n\nfunction nonVoidUntypedAttr(name: string, val: unknown) {\n switch (typeof val) {\n case \"string\":\n return ` ${name + attrAssignment(val)}`;\n case \"boolean\":\n return ` ${name}`;\n case \"number\":\n return ` ${name}=${val}`;\n case \"object\":\n if (val instanceof RegExp) {\n return ` ${name}=${escapeAttrValue(val.source)}`;\n }\n // eslint-disable-next-line no-fallthrough\n default:\n return ` ${name + attrAssignment(val + \"\")}`;\n }\n}\n\nfunction attrAssignment(val: string) {\n return val ? `=${escapeAttrValue(val)}` : \"\";\n}\n\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// Technically the above includes more invalid characters for attributes.\n// In practice however the only character that does not become an attribute name\n// is when there is a >.\nfunction isInvalidAttrName(name: string) {\n for (let i = name.length; i--; ) {\n if (name[i] === \">\") {\n return true;\n }\n }\n\n return false;\n}\n", "/* eslint \"@typescript-eslint/ban-types\": [\"error\", { \"types\": { \"object\": false }, \"extendDefaults\": true }] */\n\nconst { hasOwnProperty } = Object.prototype;\nconst PARAM_BIND = \"b\";\nconst PARAM_SCOPE = \"s\";\nconst REF_START_CHARS = \"hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_\"; // Avoids chars that could evaluate to a reserved word.\nconst REF_START_CHARS_LEN = REF_START_CHARS.length;\nconst REF_CHARS =\n \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_\";\nconst REF_CHARS_LEN = REF_CHARS.length;\nconst SYMBOL_REGISTRY_ID = Symbol(\"REGISTRY_ID\");\nconst SYMBOL_SCOPE = Symbol(\"SCOPE\");\nconst SYMBOL_SERIALIZE = Symbol(\"SERIALIZE\");\n\nclass Scope {}\nexport const serializedScope = (scopeId: string | number) => {\n const scope = new Scope();\n if (MARKO_DEBUG) {\n (scope as any).id = scopeId;\n }\n return makeSerializable(scope, (s, a) => {\n s.value(s.scopeLookup.get(scopeId as number), a);\n });\n};\n\nexport type Serializable<T> = T & {\n [SYMBOL_REGISTRY_ID]?: string;\n [SYMBOL_SCOPE]?: number;\n [SYMBOL_SERIALIZE]?: (s: Serializer, accessor: string | number) => void;\n};\n\nexport function register<T>(\n entry: T,\n registryId: string,\n scopeId?: number,\n): Serializable<T> {\n (entry as Serializable<T>)[SYMBOL_REGISTRY_ID] = registryId;\n (entry as Serializable<T>)[SYMBOL_SCOPE] = scopeId;\n return entry as Serializable<T>;\n}\n\nexport function getRegistryInfo(entry: Serializable<unknown>) {\n return [entry[SYMBOL_REGISTRY_ID], entry[SYMBOL_SCOPE]];\n}\n\nexport function makeSerializable<T>(\n object: T,\n serialize: (s: Serializer, accessor: string | number) => void,\n): T {\n (object as Serializable<T>)[SYMBOL_SERIALIZE] = serialize;\n return object;\n}\n\nexport function stringify(root: unknown) {\n return new Serializer(new Map()).stringify(root);\n}\nexport class Serializer {\n // TODO: hoist these back out?\n STACK: object[] = [];\n BUFFER: string[] = [\"\"];\n ASSIGNMENTS: Map<string, string> = new Map();\n INDEX_OR_REF: WeakMap<object, number | string> = new WeakMap();\n REF_COUNT = 0;\n // These stay\n PARENTS: WeakMap<object, object> = new WeakMap();\n KEYS: WeakMap<object, number | string> = new WeakMap();\n VALUES: Map<unknown, string | unknown> = new Map();\n scopeLookup: Map<number, any>;\n\n constructor(scopeLookup: Map<number, any>) {\n this.scopeLookup = scopeLookup;\n this.BUFFER.pop();\n }\n\n stringify(root: unknown) {\n if (this.writeProp(root, \"\")) {\n const { BUFFER, REF_COUNT, ASSIGNMENTS, INDEX_OR_REF } = this;\n\n let result = BUFFER[0];\n\n for (let i = 1, len = BUFFER.length; i < len; i++) {\n result += BUFFER[i];\n }\n\n if (REF_COUNT) {\n if (ASSIGNMENTS.size) {\n let ref = INDEX_OR_REF.get(root as object);\n\n if (typeof ref === \"number\") {\n ref = toRefParam(this.REF_COUNT++);\n result = ref + \"=\" + result;\n }\n\n for (const [assignmentRef, assignments] of ASSIGNMENTS) {\n result += \",\" + assignments + assignmentRef;\n }\n\n result += \",\" + ref;\n this.ASSIGNMENTS = new Map();\n }\n\n result =\n \"(\" +\n PARAM_BIND +\n \",\" +\n PARAM_SCOPE +\n \",\" +\n this.refParamsString() +\n \")=>(\" +\n result +\n \")\";\n } else if (root && (root as object).constructor === Object) {\n result = \"(\" + PARAM_BIND + \",\" + PARAM_SCOPE + \")=>(\" + result + \")\";\n }\n\n BUFFER.length = 0;\n this.INDEX_OR_REF = new WeakMap();\n\n return result;\n }\n\n return \"void 0\";\n }\n\n code(code: string) {\n this.BUFFER.push(code);\n return this;\n }\n\n value(value: unknown, accessor: string | number = \"\") {\n // TODO: this should not push the same value twice\n // this should be serialized in some way so we can access these values across flushes\n if (\n !this.writeProp(value, accessor) &&\n !this.STACK.includes(value as object)\n ) {\n this.BUFFER.push(\"void 0\");\n }\n return this;\n }\n\n writeProp(cur: unknown, accessor: string | number): boolean {\n const { BUFFER } = this;\n switch (typeof cur) {\n case \"string\":\n BUFFER.push(quote(cur, 0));\n break;\n\n case \"number\":\n BUFFER.push(cur + \"\");\n break;\n\n case \"boolean\":\n BUFFER.push(cur ? \"!0\" : \"!1\");\n break;\n\n case \"function\":\n case \"object\":\n if (cur === null) {\n BUFFER.push(\"null\");\n } else {\n const ref = this.getRef(cur, accessor);\n\n switch (ref) {\n case true:\n return false;\n case false:\n switch (cur.constructor) {\n case Object:\n this.writeObject(cur as Record<string, unknown>);\n break;\n\n case Array:\n this.writeArray(cur as unknown[]);\n break;\n\n case Date:\n BUFFER.push(\n 'new Date(\"' + (cur as Date).toISOString() + '\")',\n );\n break;\n\n case RegExp:\n BUFFER.push(cur + \"\");\n break;\n\n case Map:\n BUFFER.push(\"new Map(\");\n this.writeArray(\n Array.from(cur as Map<unknown, unknown> | Set<unknown>),\n );\n BUFFER.push(\")\");\n break;\n\n case Set:\n BUFFER.push(\"new Set(\");\n this.writeArray(\n Array.from(cur as Map<unknown, unknown> | Set<unknown>),\n );\n BUFFER.push(\")\");\n break;\n\n case undefined:\n BUFFER.push(\"Object.assign(Object.create(null),\");\n this.writeObject(cur as Record<string, unknown>);\n BUFFER.push(\"))\");\n break;\n\n default:\n return this.writeRegistered(\n cur as Serializable<unknown>,\n accessor,\n );\n }\n break;\n\n default:\n BUFFER.push(ref);\n break;\n }\n }\n break;\n\n default:\n return false;\n }\n\n return true;\n }\n\n writeRegistered(value: Serializable<unknown>, accessor: string | number) {\n const {\n [SYMBOL_REGISTRY_ID]: registryId,\n [SYMBOL_SCOPE]: scopeId,\n [SYMBOL_SERIALIZE]: serialize,\n } = value;\n const { BUFFER } = this;\n if (registryId) {\n // ASSERT: fnId and scopeId don't need `quote` escaping\n const scope =\n scopeId !== undefined\n ? this.scopeLookup.get(scopeId) ?? false\n : undefined;\n const ref = scope && this.getRef(scope, \"\");\n if (ref === true) {\n const { STACK, INDEX_OR_REF, ASSIGNMENTS } = this;\n const parent = STACK[STACK.length - 1];\n const parentRef = INDEX_OR_REF.get(parent) as string;\n const resolvedRef = INDEX_OR_REF.get(scope);\n ASSIGNMENTS.set(\n `${PARAM_BIND}(\"${registryId}\",${resolvedRef})`,\n (ASSIGNMENTS.get(ref) || \"\") +\n toAssignment(parentRef, accessor) +\n \"=\",\n );\n return false;\n } else if (ref === false) {\n throw new Error(\n \"The scope has not yet been defined. This needs to be fixed in the serializer.\",\n );\n } else {\n BUFFER.push(`${PARAM_BIND}(\"${registryId}\"${ref ? \",\" + ref : \"\"})`);\n return true;\n }\n } else if (serialize) {\n const prevSize = BUFFER.length;\n serialize(this, accessor);\n return prevSize !== BUFFER.length;\n }\n return false;\n }\n\n writeObject(obj: Record<string | symbol, unknown>) {\n const { STACK, BUFFER } = this;\n\n let sep = \"{\";\n STACK.push(obj);\n\n for (const key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n const val = obj[key];\n const escapedKey = toObjectKey(key);\n BUFFER.push(sep + escapedKey + \":\");\n if (this.writeProp(val, escapedKey)) {\n sep = \",\";\n } else {\n BUFFER.pop();\n }\n }\n }\n\n if (sep === \"{\") {\n BUFFER.push(\"{}\");\n } else {\n BUFFER.push(\"}\");\n }\n\n STACK.pop();\n }\n\n writeArray(arr: unknown[]) {\n const { STACK, BUFFER } = this;\n\n BUFFER.push(\"[\");\n STACK.push(arr);\n\n this.writeProp(arr[0], 0);\n\n for (let i = 1, len = arr.length; i < len; i++) {\n BUFFER.push(\",\");\n this.writeProp(arr[i], i);\n }\n\n STACK.pop();\n BUFFER.push(\"]\");\n }\n\n getRef(cur: object, accessor: string | number) {\n const { STACK, BUFFER, INDEX_OR_REF, ASSIGNMENTS, PARENTS, KEYS } = this;\n\n let ref = INDEX_OR_REF.get(cur);\n\n if (ref === undefined) {\n INDEX_OR_REF.set(cur, BUFFER.length);\n\n let knownParent = PARENTS.get(cur);\n\n if (knownParent === undefined) {\n const parent = STACK[STACK.length - 1];\n if (!parent) {\n // this.VALUES.set(cur, undefined);\n } else {\n // this.VALUES.delete(cur);\n PARENTS.set(cur, parent!);\n KEYS.set(cur, toObjectKey(accessor));\n }\n return false;\n } else {\n let ref = \"\";\n while (knownParent) {\n ref = toPropertyAccess(KEYS.get(cur)!) + ref;\n knownParent = PARENTS.get((cur = knownParent));\n }\n return PARAM_SCOPE + ref;\n }\n }\n\n if (typeof ref === \"number\") {\n ref = this.insertAndGetRef(cur, ref);\n // if (this.VALUES.has(cur)) {\n // this.VALUES.set(cur, ref);\n // }\n }\n\n if (STACK.includes(cur)) {\n const parent = STACK[STACK.length - 1];\n let parentRef = INDEX_OR_REF.get(parent) as string | number;\n\n if (typeof parentRef === \"number\") {\n parentRef = this.insertAndGetRef(parent, parentRef);\n }\n\n if (accessor !== \"\") {\n ASSIGNMENTS.set(\n ref,\n (ASSIGNMENTS.get(ref) || \"\") +\n toAssignment(parentRef, accessor) +\n \"=\",\n );\n }\n return true;\n }\n\n return ref;\n }\n\n insertAndGetRef(obj: object, pos: number) {\n const ref = toRefParam(this.REF_COUNT++);\n this.INDEX_OR_REF.set(obj, ref);\n if (pos) {\n this.BUFFER[pos - 1] += ref + \"=\";\n } else {\n this.BUFFER[pos] = ref + \"=\" + this.BUFFER[pos];\n }\n\n return ref;\n }\n\n refParamsString() {\n let result = REF_START_CHARS[0];\n\n for (let i = 1; i < this.REF_COUNT; i++) {\n result += \",\" + toRefParam(i);\n }\n\n this.REF_COUNT = 0;\n return result;\n }\n}\n\n// function toObjectKey(name: string) {\n// const invalidPropertyPos = getInvalidPropertyPos(name);\n// return invalidPropertyPos === -1 ? name : quote(name, invalidPropertyPos);\n// }\n\nfunction toAssignment(parent: string, key: string | number) {\n return parent + toPropertyAccess(key);\n}\n\nfunction toPropertyAccess(key: string | number) {\n return typeof key === \"number\" || key[0] === '\"'\n ? \"[\" + key + \"]\"\n : \".\" + key;\n}\n\nfunction toObjectKey(name: string | number) {\n if (typeof name !== \"string\") return name;\n\n let char = name[0];\n if (char >= \"0\" && char <= \"9\") {\n // numeric\n for (let i = 1, len = name.length; i < len; i++) {\n char = name[i];\n if (!(char >= \"0\" && char <= \"9\")) {\n return quote(name, i);\n }\n }\n return parseInt(name, 10);\n } else {\n // or valid identifier\n for (let i = 0, len = name.length; i < len; i++) {\n char = name[i];\n if (\n !(\n (char >= \"a\" && char <= \"z\") ||\n (char >= \"A\" && char <= \"Z\") ||\n (char >= \"0\" && char <= \"9\") ||\n char === \"$\" ||\n char === \"_\"\n )\n ) {\n return quote(name, i);\n }\n }\n }\n\n return name;\n}\n\n// Creates a JavaScript double quoted string and escapes all characters not listed as DoubleStringCharacters on\n// Also includes \"<\" to escape \"</script>\" and \"\\\" to avoid invalid escapes in the output.\n// http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4\nfunction quote(str: string, startPos: number): string {\n let result = \"\";\n let lastPos = 0;\n\n for (let i = startPos, len = str.length; i < len; i++) {\n let replacement: string;\n switch (str[i]) {\n case '\"':\n replacement = '\\\\\"';\n break;\n case \"\\\\\":\n replacement = \"\\\\\\\\\";\n break;\n case \"<\":\n replacement = \"\\\\x3C\";\n break;\n case \"\\n\":\n replacement = \"\\\\n\";\n break;\n case \"\\r\":\n replacement = \"\\\\r\";\n break;\n case \"\\u2028\":\n replacement = \"\\\\u2028\";\n break;\n case \"\\u2029\":\n replacement = \"\\\\u2029\";\n break;\n default:\n continue;\n }\n\n result += str.slice(lastPos, i) + replacement;\n lastPos = i + 1;\n }\n\n if (lastPos === startPos) {\n result = str;\n } else {\n result += str.slice(lastPos);\n }\n\n return '\"' + result + '\"';\n}\n\nfunction toRefParam(index: number) {\n let mod = index % REF_START_CHARS_LEN;\n let ref = REF_START_CHARS[mod];\n index = (index - mod) / REF_START_CHARS_LEN;\n\n while (index > 0) {\n mod = index % REF_CHARS_LEN;\n ref += REF_CHARS[mod];\n index = (index - mod) / REF_CHARS_LEN;\n }\n\n return ref;\n}\n", "/* tslint:disable */\n\nimport type { CommentWalker } from \"../common/types\";\n\nexport default function (\n id: string,\n doc: Document,\n walker: TreeWalker,\n node: Comment,\n replacementNode: Node,\n targetParent: ParentNode & Node,\n targetNode: Node | null | undefined,\n refNode: Node | null | undefined,\n nextNode: Node | null | undefined,\n runtimePrefix: string,\n) {\n runtimePrefix = \"RUNTIME_ID$\";\n id = runtimePrefix + id;\n doc = document;\n walker =\n (doc as any)[runtimePrefix + \"w\"] ||\n ((doc as any)[runtimePrefix + \"w\"] = doc.createTreeWalker(\n doc,\n 128 /** NodeFilter.SHOW_COMMENT */,\n ) as CommentWalker);\n while ((node = walker.nextNode() as Comment)) {\n if (node.data.indexOf(runtimePrefix) === 0) {\n (walker as any)[node.data] = node;\n }\n }\n\n replacementNode = doc.getElementById(id)!;\n targetNode = (walker as any)[id];\n targetParent = targetNode!.parentNode!;\n\n while ((refNode = replacementNode.firstChild)) {\n targetParent.insertBefore(refNode, targetNode!);\n }\n\n nextNode = replacementNode.parentNode!;\n nextNode.removeChild(replacementNode.nextSibling!);\n nextNode.removeChild(replacementNode);\n\n refNode = (walker as any)[id + \"/\"];\n\n while (\n targetNode &&\n ((nextNode = targetNode!.nextSibling),\n targetParent.removeChild(targetNode!) !== refNode)\n ) {\n targetNode = nextNode;\n }\n}\n", "import { type Accessor, type Renderer, ResumeSymbol } from \"../common/types\";\nimport reorderRuntime from \"./reorder-runtime\";\nimport { Serializer, serializedScope } from \"./serializer\";\n\nconst runtimeId = ResumeSymbol.DefaultRuntimeId;\nconst reorderRuntimeString = String(reorderRuntime).replace(\n \"RUNTIME_ID\",\n runtimeId,\n);\n\ntype PartialScope = Record<string | number, unknown> | unknown[];\n\nexport interface Writable {\n write(data: string): void;\n end(): void;\n flush?(): void;\n emit(name: string, data: unknown): void;\n}\n\ninterface Buffer {\n stream?: Writable;\n pending: boolean;\n flushed: boolean;\n disabled: boolean;\n next: Buffer | null;\n prev: Buffer | null;\n content: string;\n calls: string;\n scopes: Record<string, PartialScope> | null;\n onAsync?: (complete: boolean, isPlaceholder?: boolean) => void;\n onReject?: (err: Error) => void;\n}\n\ninterface StreamData {\n scopeId: number;\n tagId: number;\n placeholderId: number;\n scopeLookup: Map<number, PartialScope>;\n runtimeFlushed: boolean;\n global: Record<string, unknown>;\n serializer?: Serializer;\n}\n\nlet $_buffer: Buffer | null = null;\nexport let $_streamData: StreamData | null = null;\n\nexport function createRenderFn(renderer: Renderer) {\n type Input = Parameters<Renderer>[0];\n return (\n stream: Writable,\n input: Input = {},\n $global?: Record<string, unknown>,\n streamState: Partial<StreamData> = {},\n ) => {\n let remainingChildren = 1;\n\n const originalBuffer = $_buffer;\n const originalStreamState = $_streamData;\n const reject = (err: Error) => {\n stream.emit(\"error\", err);\n };\n const async = (complete: boolean) => {\n remainingChildren += complete ? -1 : 1;\n if (!remainingChildren) {\n setImmediate(() => stream.end());\n }\n };\n\n $_buffer = createInitialBuffer(stream);\n streamState.global = $global;\n $_streamData = createStreamState(streamState);\n\n $_buffer.onReject = reject;\n $_buffer.onAsync = async;\n\n try {\n scheduleFlush();\n renderer(input);\n async(true);\n } catch (err) {\n reject(err as Error);\n } finally {\n $_buffer = originalBuffer;\n $_streamData = originalStreamState;\n }\n };\n}\n\nexport function write(data: string) {\n $_buffer!.content += data;\n}\n\nconst TARGET_BUFFER_SIZE = 64000;\nexport function maybeFlush() {\n if (!$_buffer!.prev && $_buffer!.content.length > TARGET_BUFFER_SIZE) {\n // TODO: figure out if we can do this\n // The idea is to flush in a `<for>` if the buffer gets too large.\n //\n // However, a synchronous flush will break the owner scope reference\n // as things are currently implemented: the owner scope object will\n // not have been created if you flush in a scope that closes over it\n // However, a scheduled flush will be too late:\n // the entire contents of the `<for>` will have been written\n // by the time the flush occurs defeating the purpose\n // Additionally, because we aren't eagerly merging buffers,\n // buffer.content.length isn't necessarily 100% accurate\n }\n}\n\nexport function scheduleFlush() {\n const buffer = $_buffer!;\n const streamState = $_streamData!;\n if (!buffer.prev) {\n setImmediate(() => flushToStream(buffer, streamState));\n }\n}\n\nfunction flushToStream(buffer: Buffer, streamState: StreamData) {\n while (buffer.prev) buffer = buffer.prev;\n if (buffer.disabled) return;\n\n const stream = buffer.stream!;\n\n let { content, calls, scopes } = buffer;\n buffer.flushed = true;\n while (!buffer.pending && buffer.next) {\n // TODO: we shouldn't need to clear here\n clearBuffer(buffer);\n buffer = buffer.next;\n buffer.prev = null;\n buffer.flushed = true;\n content += buffer.content;\n calls += buffer.calls;\n if (buffer.scopes) {\n if (scopes) {\n Object.assign(scopes, buffer.scopes);\n } else {\n scopes = buffer.scopes;\n }\n }\n }\n const data = content + getResumeScript(calls, scopes, streamState);\n\n if (data) {\n stream.write(data);\n stream.flush?.();\n }\n\n // TODO: we should only have to call clearBuffer if the buffer is pending\n // (which means it will flush again in the future). Otherwise, it can just\n // be garbage collected.\n clearBuffer(buffer);\n}\n\nfunction createStreamState(state: Partial<StreamData>): StreamData {\n state.scopeId ??= 0;\n state.tagId ??= 0;\n state.placeholderId ??= 0;\n state.scopeLookup ??= new Map();\n state.runtimeFlushed ??= false;\n return state as StreamData;\n}\n\nfunction createNextBuffer(prevBuffer: Buffer): Buffer {\n const newBuffer = {\n stream: prevBuffer.stream,\n pending: false,\n flushed: false,\n disabled: false,\n prev: prevBuffer,\n next: prevBuffer?.next ?? null,\n content: \"\",\n calls: \"\",\n scopes: null,\n onReject: prevBuffer.onReject,\n onAsync: prevBuffer.onAsync,\n };\n if (prevBuffer.next) {\n prevBuffer.next.prev = prevBuffer;\n }\n prevBuffer.next = newBuffer;\n return newBuffer;\n}\n\nfunction createDetatchedBuffer(parentBuffer: Buffer): Buffer {\n return {\n stream: parentBuffer.stream,\n pending: false,\n flushed: false,\n disabled: true,\n prev: null,\n next: null,\n content: \"\",\n calls: \"\",\n scopes: null,\n onReject: parentBuffer.onReject,\n onAsync: parentBuffer.onAsync,\n };\n}\n\nfunction createInitialBuffer(stream: Writable): Buffer {\n return {\n stream,\n pending: false,\n flushed: false,\n disabled: false,\n prev: null,\n next: null,\n content: \"\",\n calls: \"\",\n scopes: null,\n onReject: undefined,\n onAsync: undefined,\n };\n}\n\nexport async function fork<T>(\n promise: Promise<T>,\n renderResult: (result: T) => void,\n) {\n const originalBuffer = $_buffer!;\n const originalStreamState = $_streamData!;\n\n scheduleFlush();\n $_buffer!.pending = true;\n $_buffer!.onAsync?.(false);\n $_buffer = createNextBuffer($_buffer!);\n\n try {\n let result;\n try {\n result = await promise;\n originalBuffer!.pending = false;\n } finally {\n $_buffer = originalBuffer;\n $_streamData = originalStreamState;\n scheduleFlush();\n }\n renderResult(result);\n } catch (err) {\n $_buffer!.onReject?.(err as Error);\n } finally {\n $_buffer!.onAsync?.(true);\n clearScope();\n }\n}\n\nexport function tryCatch(\n renderBody: () => void,\n renderError: (err: Error) => void,\n) {\n const id = nextPlaceholderId();\n let err: Error | null = null;\n\n const originalBuffer = $_buffer!;\n const tryBuffer = createDetatchedBuffer(originalBuffer);\n let finalTryBuffer: Buffer;\n\n tryBuffer.onReject = (asyncErr) => {\n const errorBuffer = createDetatchedBuffer(originalBuffer);\n $_buffer = errorBuffer;\n renderError(asyncErr);\n const finalErrorBuffer = $_buffer;\n replaceBuffers(\n id,\n tryBuffer,\n finalTryBuffer,\n errorBuffer,\n finalErrorBuffer,\n );\n };\n\n try {\n $_buffer = tryBuffer;\n renderBody();\n } catch (_err) {\n err = _err as Error;\n } finally {\n if (err) {\n $_buffer = originalBuffer;\n renderError(err);\n } else {\n tryBuffer.disabled = false;\n originalBuffer.next = tryBuffer;\n tryBuffer.prev = originalBuffer;\n if ($_buffer !== tryBuffer) {\n tryBuffer.content = `<!${marker(id)}>` + tryBuffer.content;\n markReplaceEnd(id);\n finalTryBuffer = $_buffer!;\n $_buffer = createNextBuffer(finalTryBuffer);\n }\n $_buffer.onReject = originalBuffer.onReject;\n }\n }\n}\n\nexport function tryPlaceholder(\n renderBody: () => void,\n renderPlaceholder: () => void,\n) {\n const originalBuffer = $_buffer!;\n const asyncBuffer = createDetatchedBuffer(originalBuffer);\n let id: number,\n placeholderBuffer: Buffer,\n finalPlaceholderBuffer: Buffer,\n finalAsyncBuffer: Buffer;\n let remainingChildren = 0;\n let remainingPlaceholders = 0;\n\n asyncBuffer.onAsync = (complete: boolean, isPlaceholder?: boolean) => {\n const delta = complete ? -1 : 1;\n if (isPlaceholder) {\n remainingPlaceholders += delta;\n } else {\n remainingChildren += delta;\n }\n if (!remainingChildren) {\n if (!isPlaceholder) {\n // last child has finished, replace the placeholder\n // however, the replacement content may contain its own placeholder(s)\n replaceBuffers(\n id,\n placeholderBuffer,\n finalPlaceholderBuffer,\n asyncBuffer,\n finalAsyncBuffer,\n );\n }\n if (!remainingPlaceholders) {\n // all async content under this placeholder is complete\n originalBuffer.onAsync?.(true, true);\n }\n }\n };\n\n $_buffer = asyncBuffer;\n renderBody();\n\n if ($_buffer === asyncBuffer) {\n originalBuffer.next = asyncBuffer;\n asyncBuffer.prev = originalBuffer;\n asyncBuffer.disabled = false;\n asyncBuffer.onAsync = originalBuffer.onAsync;\n } else {\n id = nextPlaceholderId();\n placeholderBuffer = createNextBuffer(originalBuffer);\n finalAsyncBuffer = $_buffer;\n $_buffer = placeholderBuffer;\n markReplaceStart(id);\n renderPlaceholder();\n markReplaceEnd(id);\n finalPlaceholderBuffer = $_buffer;\n $_buffer = createNextBuffer(finalPlaceholderBuffer);\n originalBuffer.onAsync?.(false, true);\n }\n}\n\nfunction clearBuffer(buffer: Buffer) {\n buffer.content = \"\";\n buffer.calls = \"\";\n buffer.scopes = null;\n}\n\nfunction clearScope() {\n $_buffer = $_streamData = null;\n}\n\n/* Async */\n\nexport function markReplaceStart(id: number) {\n return ($_buffer!.content += `<!${marker(id)}>`);\n}\n\nexport function markReplaceEnd(id: number) {\n return ($_buffer!.content += `<!${marker(id)}/>`);\n}\n\nfunction replaceBuffers(\n id: number,\n placeholderStart: Buffer,\n placeholderEnd: Buffer,\n replacementStart: Buffer,\n replacementEnd: Buffer,\n) {\n if (placeholderStart.flushed) {\n addReplacementWrapper(id, replacementStart, replacementEnd);\n\n let next: Buffer | null = placeholderEnd.next;\n if (placeholderEnd.flushed) {\n while (next && !next.pending && next.flushed) {\n next = next.next;\n }\n } else {\n // TODO: ensure the remaining original content cannot flush\n }\n\n if (next) {\n replacementStart.next = next;\n next.prev = replacementEnd;\n }\n\n $_buffer = replacementStart;\n scheduleFlush();\n } else {\n const prev = placeholderStart.prev;\n const next = placeholderEnd.next;\n if (prev) {\n prev.next = replacementStart;\n replacementStart.prev = prev;\n }\n if (next) {\n next.prev = replacementEnd;\n replacementEnd.next = next;\n }\n }\n\n replacementStart.disabled = false;\n}\n\nfunction addReplacementWrapper(\n id: number,\n replacementStart: Buffer,\n replacementEnd: Buffer,\n) {\n let runtimeCall = runtimeId + ResumeSymbol.VarReorderRuntime;\n if (!$_streamData!.runtimeFlushed) {\n runtimeCall = `(${runtimeCall}=${reorderRuntimeString})`;\n $_streamData!.runtimeFlushed = true;\n }\n replacementStart.content =\n `<t id=\"${marker(id)}\">` + replacementStart.content;\n replacementEnd.content += `</t><script>${runtimeCall}(${id})</script>`;\n}\n\nfunction marker(id: number) {\n return `${runtimeId}$${id}`;\n}\n\n/* Hydration */\n\nexport function nextTagId() {\n return \"s\" + $_streamData!.tagId++;\n}\n\nexport function nextPlaceholderId() {\n return $_streamData!.placeholderId++;\n}\n\nexport function nextScopeId() {\n return $_streamData!.scopeId++;\n}\n\nexport function peekNextScopeId() {\n return $_streamData!.scopeId;\n}\n\nexport function peekSerializedScope() {\n return serializedScope(peekNextScopeId());\n}\n\nexport function writeEffect(scopeId: number, fnId: string) {\n $_buffer!.calls += `${scopeId},\"${fnId}\",`;\n}\n\nexport function writeScope(\n scopeId: number,\n scope: PartialScope,\n assignTo:\n | PartialScope\n | PartialScope[]\n | undefined = $_streamData!.scopeLookup.get(scopeId),\n) {\n if (assignTo !== undefined) {\n if (Array.isArray(assignTo)) {\n assignTo.push(scope);\n } else {\n scope = Object.assign(assignTo, scope);\n }\n }\n $_buffer!.scopes ??= {\n $global: getFilteredGlobals($_streamData!.global) as any,\n };\n $_buffer!.scopes[scopeId] = scope;\n $_streamData!.scopeLookup.set(scopeId, scope);\n}\n\nexport function markResumeNode(scopeId: number, index: Accessor) {\n // TODO: can we only include the scope id when it differs from the prvious node marker?\n return `<!${runtimeId}${ResumeSymbol.Node}${scopeId} ${index}>`;\n}\n\nexport function markResumeScopeStart(scopeId: number, key?: string) {\n return `<!${runtimeId}${ResumeSymbol.SectionStart}${scopeId}${\n key ? \" \" + key : \"\"\n }>`;\n}\n\nexport function markResumeControlEnd(scopeId: number, index: Accessor) {\n return `<!${runtimeId}${ResumeSymbol.SectionEnd}${scopeId} ${index}>`;\n}\n\nexport function markResumeControlSingleNodeEnd(\n scopeId: number,\n index: Accessor,\n childScopeIds?: number | number[],\n) {\n return `<!${runtimeId}${\n ResumeSymbol.SectionSingleNodesEnd\n }${scopeId} ${index} ${childScopeIds ?? \"\"}>`;\n}\n\nfunction getResumeScript(\n calls: string,\n scopes: Buffer[\"scopes\"],\n streamState: StreamData,\n) {\n if (calls || scopes) {\n let isFirstFlush;\n let serializer = streamState.serializer;\n if ((isFirstFlush = !serializer)) {\n serializer = streamState.serializer = new Serializer(\n streamState.scopeLookup,\n );\n }\n return `<script>${\n isFirstFlush\n ? `(${runtimeId + ResumeSymbol.VarResume}=[])`\n : runtimeId + ResumeSymbol.VarResume\n }.push(${serializer.stringify(scopes)},[${calls}])</script>`;\n }\n return \"\";\n}\n\nfunction getFilteredGlobals($global: Record<string, unknown>) {\n if (!$global) return undefined;\n\n const serializedGlobals = $global.serializedGlobals as\n | string[]\n | Record<string, boolean>\n | undefined;\n\n if (!serializedGlobals) return undefined;\n\n let filtered: undefined | Record<string, unknown>;\n\n if (Array.isArray(serializedGlobals)) {\n for (const key of serializedGlobals) {\n const value = $global[key];\n if (value !== undefined) {\n if (filtered) {\n filtered[key] = value;\n } else {\n filtered = { [key]: value };\n }\n }\n }\n } else {\n for (const key in serializedGlobals) {\n if (serializedGlobals[key]) {\n const value = $global[key];\n if (value !== undefined) {\n if (filtered) {\n filtered[key] = value;\n } else {\n filtered = { [key]: value };\n }\n }\n }\n }\n }\n\n return filtered;\n}\n", "import type { Renderer } from \"../common/types\";\nimport { attrs } from \"./attrs\";\nimport { serializedScope } from \"./serializer\";\nimport type { ServerTemplate as Template } from \"./template\";\nimport {\n markResumeScopeStart,\n nextScopeId,\n peekNextScopeId,\n write,\n writeScope,\n} from \"./writer\";\n\nconst voidElements = new Set([\n \"area\",\n \"base\",\n \"br\",\n \"col\",\n \"embed\",\n \"hr\",\n \"img\",\n \"input\",\n \"link\",\n \"meta\",\n \"param\",\n \"source\",\n \"track\",\n \"wbr\",\n]);\ninterface RenderBodyObject {\n [x: string]: unknown;\n renderBody: Renderer;\n}\n\nexport function dynamicTagInput(\n tag: unknown | string | Renderer | RenderBodyObject | Template,\n input: Record<string, unknown>,\n renderBody?: () => void,\n) {\n if (!tag && !renderBody) return undefined;\n\n const futureScopeId = peekNextScopeId();\n const futureScope = serializedScope(futureScopeId);\n write(`${markResumeScopeStart(futureScopeId)}`);\n writeScope(futureScopeId, {});\n\n if (!tag) {\n renderBody!();\n\n return futureScope;\n }\n\n if (typeof tag === \"string\") {\n nextScopeId();\n write(`<${tag}${attrs(input)}>`);\n\n if (!voidElements.has(tag)) {\n if (renderBody) {\n renderBody();\n }\n\n write(`</${tag}>`);\n } else if (MARKO_DEBUG && renderBody) {\n throw new Error(\n `A renderBody was provided for a \"${tag}\" tag, which cannot have children.`,\n );\n }\n\n return futureScope;\n }\n\n const renderer = getDynamicRenderer(tag);\n\n if (typeof renderer === \"function\") {\n renderer(renderBody ? { ...input, renderBody } : input);\n return futureScope;\n } else if (MARKO_DEBUG) {\n throw new Error(`Invalid renderer passed for dynamic tag: ${tag}`);\n }\n}\n\nexport function dynamicTagArgs(\n tag: unknown | string | Renderer | RenderBodyObject | Template,\n args: unknown[],\n) {\n if (!tag) return undefined;\n\n const futureScopeId = peekNextScopeId();\n const futureScope = serializedScope(futureScopeId);\n write(`${markResumeScopeStart(futureScopeId)}`);\n writeScope(futureScopeId, {});\n\n if (typeof tag === \"string\") {\n nextScopeId();\n write(`<${tag}${attrs(args[0] as Record<string, unknown>)}></${tag}>`);\n\n // if (!voidElements.has(tag)) {\n // if (renderBody) {\n // renderBody();\n // }\n // write(`</${tag}>`);\n // }\n\n return futureScope;\n }\n\n const renderer = getDynamicRenderer(tag);\n\n if (typeof renderer === \"function\") {\n renderer(...args);\n return futureScope;\n } else if (MARKO_DEBUG) {\n throw new Error(`Invalid renderer passed for dynamic tag: ${tag}`);\n }\n}\n\nlet getDynamicRenderer = (\n tag: unknown | string | Renderer | RenderBodyObject | Template,\n) => (tag as Template)._ || (tag as RenderBodyObject).renderBody || tag;\nexport let createRenderer = (fn: Renderer) => fn;\n\nexport function patchDynamicTag(\n newGetDynamicRenderer: typeof getDynamicRenderer,\n newCreateRenderer: typeof createRenderer,\n) {\n getDynamicRenderer = newGetDynamicRenderer;\n createRenderer = newCreateRenderer;\n}\n", "import type {\n Context,\n Template,\n Input,\n TemplateInstance,\n Renderer,\n RenderResult,\n} from \"../common/types\";\nimport { register } from \"./serializer\";\nimport { type Writable, createRenderFn } from \"./writer\";\n\nexport const createTemplate = (renderer: Renderer, id = \"\") =>\n register(new ServerTemplate(renderer), id);\n\ninterface Deferred<T> {\n promise: Promise<T>;\n resolve(value: T): void;\n reject(reason?: any): void;\n}\n\nfunction deferred<T>(): Deferred<T> {\n let resolve!: (value: T) => void;\n let reject!: (reason?: any) => void;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\n\nasync function stringFromAsync(\n iterable: AsyncIterable<string>,\n): Promise<string> {\n let str = \"\";\n for await (const part of iterable) {\n str += part;\n }\n return str;\n}\n\nclass ServerRenderResult implements RenderResult {\n #iterable: AsyncIterableIterator<string>;\n #promise: Promise<string> | undefined;\n\n constructor(iterable: AsyncIterableIterator<string>) {\n this.#iterable = iterable;\n }\n\n [Symbol.asyncIterator]() {\n return this.#iterable;\n }\n\n [Symbol.toStringTag] = \"RenderResult\";\n\n then<TResult1 = string, TResult2 = never>(\n onfulfilled?:\n | ((value: string) => TResult1 | PromiseLike<TResult1>)\n | undefined\n | null,\n onrejected?:\n | ((reason: any) => TResult2 | PromiseLike<TResult2>)\n | undefined\n | null,\n ): Promise<TResult1 | TResult2> {\n return (this.#promise ||= stringFromAsync(this.#iterable)).then(\n onfulfilled,\n onrejected,\n );\n }\n\n catch<TResult = never>(\n onrejected?:\n | ((reason: any) => TResult | PromiseLike<TResult>)\n | undefined\n | null,\n ): Promise<string | TResult> {\n return this.then(undefined, onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): Promise<string> {\n return this.then(undefined, undefined).finally(onfinally);\n }\n\n toReadable() {\n return new ReadableStream({\n start: async (controller) => {\n try {\n for await (const chunk of this.#iterable) {\n if (chunk) {\n controller.enqueue(chunk);\n }\n }\n controller.close();\n } catch (err) {\n controller.error(err);\n }\n },\n });\n }\n}\n\nexport class ServerTemplate implements Template {\n #writeTo: (writable: Writable, input?: Input, context?: Context) => void;\n\n public _: Renderer;\n\n constructor(renderer: Renderer) {\n this._ = renderer;\n this.#writeTo = createRenderFn(renderer);\n }\n\n mount(): TemplateInstance {\n throw new Error(\n `mount() is not implemented for the HTML compilation of a Marko template`,\n );\n }\n\n render(templateInput: Input = {}): RenderResult {\n const { $global, ...input } = templateInput;\n let buffer = \"\";\n let done = false;\n let pending = deferred<IteratorResult<string>>();\n\n this.#writeTo(\n {\n write(data: string) {\n buffer += data;\n },\n flush() {\n pending.resolve({\n value: buffer,\n done: false,\n });\n buffer = \"\";\n pending = deferred();\n },\n emit(name, error: Error) {\n if (name === \"error\") {\n pending.reject(error);\n }\n },\n end() {\n done = true;\n pending.resolve({\n value: \"\",\n done,\n });\n },\n },\n input,\n $global as Context,\n );\n\n return new ServerRenderResult({\n [Symbol.asyncIterator]() {\n return this;\n },\n async next() {\n if (buffer || done) {\n const value = buffer;\n buffer = \"\";\n return { value, done };\n }\n return pending.promise;\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["quote", "ref"]
|
|
7
|
+
}
|