@takazudo/zfb 4.4.0 → 4.5.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/README.md +14 -0
- package/dist/css.d.ts +45 -0
- package/dist/css.js +137 -0
- package/dist/css.js.map +1 -0
- package/dist/zudo-react/dom-bindings.js +11 -5
- package/dist/zudo-react/dom-bindings.js.map +1 -1
- package/dist/zudo-react/error-boundary-client.d.ts +3 -0
- package/dist/zudo-react/error-boundary-client.js +232 -0
- package/dist/zudo-react/error-boundary-client.js.map +1 -0
- package/dist/zudo-react/error-boundary-type.d.ts +8 -0
- package/dist/zudo-react/error-boundary-type.js +25 -0
- package/dist/zudo-react/error-boundary-type.js.map +1 -0
- package/dist/zudo-react/error-boundary.d.ts +8 -0
- package/dist/zudo-react/error-boundary.js +13 -0
- package/dist/zudo-react/error-boundary.js.map +1 -0
- package/dist/zudo-react/form-recovery.d.ts +2 -0
- package/dist/zudo-react/form-recovery.js +116 -0
- package/dist/zudo-react/form-recovery.js.map +1 -0
- package/dist/zudo-react/forms.d.ts +38 -4
- package/dist/zudo-react/forms.js +143 -172
- package/dist/zudo-react/forms.js.map +1 -1
- package/dist/zudo-react/hydrate.d.ts +68 -0
- package/dist/zudo-react/hydrate.js +177 -89
- package/dist/zudo-react/hydrate.js.map +1 -1
- package/dist/zudo-react/index.d.ts +1 -0
- package/dist/zudo-react/index.js +1 -0
- package/dist/zudo-react/index.js.map +1 -1
- package/dist/zudo-react/render-html.js +55 -10
- package/dist/zudo-react/render-html.js.map +1 -1
- package/dist/zudo-react/scope.d.ts +21 -13
- package/dist/zudo-react/scope.js +141 -113
- package/dist/zudo-react/scope.js.map +1 -1
- package/dist/zudo-react/style.d.ts +0 -1
- package/dist/zudo-react/style.js +11 -503
- package/dist/zudo-react/style.js.map +1 -1
- package/dist/zudo-react/vocabulary.js +12 -49
- package/dist/zudo-react/vocabulary.js.map +1 -1
- package/package.json +11 -7
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { boundaryProps, boundaryRenderer, integrity, recoverable } from "./error-boundary-type.js";
|
|
1
2
|
import { serializeStyle } from "./style.js";
|
|
2
3
|
import { Fragment, descriptionSite, isDescription, } from "./description.js";
|
|
3
4
|
import { escapeAttribute, escapeText } from "./escape.js";
|
|
4
5
|
import { rawHtmlReserved } from "./raw-html.js";
|
|
5
6
|
import { readSnapshot } from "./reactive.js";
|
|
6
|
-
import {
|
|
7
|
+
import { RuntimeScope, withScope } from "./scope.js";
|
|
7
8
|
import { emptyChildren, normalizeProps } from "./props-transport.js";
|
|
8
9
|
import { islandRootType } from "./island-root-type.js";
|
|
9
10
|
import { isShowType, isForType, showProps, forProps, keyed, keyPayload, view, } from "./structure.js";
|
|
@@ -19,7 +20,7 @@ const tableChildren = {
|
|
|
19
20
|
tr: words("td th"),
|
|
20
21
|
colgroup: words("col"),
|
|
21
22
|
};
|
|
22
|
-
function fail(code, context, detail, spelling) {
|
|
23
|
+
function fail(code, context, detail, spelling, fatal = false) {
|
|
23
24
|
const component = context.identity?.component ?? "static render";
|
|
24
25
|
const site = context.node && descriptionSite(context.node);
|
|
25
26
|
const diagnostic = {
|
|
@@ -29,9 +30,10 @@ function fail(code, context, detail, spelling) {
|
|
|
29
30
|
...(spelling && { spelling }),
|
|
30
31
|
...(site && { site }),
|
|
31
32
|
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
const error = Object.assign(new TypeError(`${code}: ${detail} at ${context.path} in ${component}`), { diagnostic });
|
|
34
|
+
throw fatal || code.startsWith("ZR_ISLAND_") || code === "ZR_NESTED_ISLAND"
|
|
35
|
+
? integrity(error)
|
|
36
|
+
: error;
|
|
35
37
|
}
|
|
36
38
|
function reactive(value) {
|
|
37
39
|
return (typeof value === "object" &&
|
|
@@ -45,7 +47,7 @@ function read(value) {
|
|
|
45
47
|
function region(context, kind, content) {
|
|
46
48
|
if (!context.identity)
|
|
47
49
|
return content();
|
|
48
|
-
const id = context.next
|
|
50
|
+
const id = `${context.prefix ?? ""}${context.next++}`;
|
|
49
51
|
return `<!--zr:1:${id}:${kind}-->${content()}<!--/zr:1:${id}-->`;
|
|
50
52
|
}
|
|
51
53
|
function at(context, part, fn) {
|
|
@@ -322,10 +324,10 @@ function element(description, context, namespace, parent) {
|
|
|
322
324
|
if (typeof payload !== "string")
|
|
323
325
|
fail("ZR_RAW_HTML", context, `${tag} requires string rawHtml`);
|
|
324
326
|
if (rawHtmlReserved(payload, tag))
|
|
325
|
-
fail("ZR_RAW_HTML", context, "reserved boundary in rawHtml");
|
|
327
|
+
fail("ZR_RAW_HTML", context, "reserved boundary in rawHtml", undefined, true);
|
|
326
328
|
if ((tag === "script" && /<\/script/i.test(payload)) ||
|
|
327
329
|
(tag === "style" && /<\/style/i.test(payload)))
|
|
328
|
-
fail("ZR_RAW_HTML", context, `closing ${tag} in rawHtml
|
|
330
|
+
fail("ZR_RAW_HTML", context, `closing ${tag} in rawHtml`, undefined, true);
|
|
329
331
|
content = tag === "script" || tag === "style" ? payload : region(context, "h", () => payload);
|
|
330
332
|
}
|
|
331
333
|
else if (tag === "textarea" &&
|
|
@@ -410,6 +412,49 @@ function renderValue(value, context, namespace, parent) {
|
|
|
410
412
|
return island(value, context, namespace, parent);
|
|
411
413
|
if (value.type === Fragment)
|
|
412
414
|
return region(context, "f", () => children(value.props.children, context, namespace, parent));
|
|
415
|
+
if (boundaryRenderer(value.type)) {
|
|
416
|
+
if (parent in tableChildren ||
|
|
417
|
+
["select", "optgroup", "option", "title", "textarea", "script", "style"].includes(parent))
|
|
418
|
+
fail("ZR_PARSER_CONTEXT", context, parent);
|
|
419
|
+
const props = boundaryProps(value);
|
|
420
|
+
const prefix = `${context.prefix ?? ""}${context.next}.`;
|
|
421
|
+
return region(context, "e", () => {
|
|
422
|
+
const attempt = (factory) => {
|
|
423
|
+
const scope = context.scope.child("ErrorBoundary");
|
|
424
|
+
const local = {
|
|
425
|
+
...context,
|
|
426
|
+
scope,
|
|
427
|
+
next: 0,
|
|
428
|
+
prefix,
|
|
429
|
+
radioGroups: new Map([...context.radioGroups].map(([key, group]) => [
|
|
430
|
+
key,
|
|
431
|
+
{ ...group, options: new Set(group.options) },
|
|
432
|
+
])),
|
|
433
|
+
radioNames: new Map(context.radioNames),
|
|
434
|
+
...(context.selectSeen && { selectSeen: new Set(context.selectSeen) }),
|
|
435
|
+
};
|
|
436
|
+
try {
|
|
437
|
+
const output = withScope(scope, () => render(factory(), local, namespace, parent));
|
|
438
|
+
context.radioGroups = local.radioGroups;
|
|
439
|
+
context.radioNames = local.radioNames;
|
|
440
|
+
context.nextFormId = local.nextFormId;
|
|
441
|
+
return output;
|
|
442
|
+
}
|
|
443
|
+
catch (error) {
|
|
444
|
+
scope.dispose();
|
|
445
|
+
throw error;
|
|
446
|
+
}
|
|
447
|
+
};
|
|
448
|
+
try {
|
|
449
|
+
return attempt(props.children);
|
|
450
|
+
}
|
|
451
|
+
catch (error) {
|
|
452
|
+
if (!recoverable(error))
|
|
453
|
+
throw error;
|
|
454
|
+
return attempt(() => props.fallback(error, () => { }));
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
}
|
|
413
458
|
if (isShowType(value.type)) {
|
|
414
459
|
if (parent in tableChildren ||
|
|
415
460
|
["select", "optgroup", "option", "title", "textarea", "script", "style"].includes(parent))
|
|
@@ -505,7 +550,7 @@ function island(description, context, namespace, parent) {
|
|
|
505
550
|
payload = JSON.stringify(props);
|
|
506
551
|
}
|
|
507
552
|
catch (error) {
|
|
508
|
-
throw new TypeError(`ZR_ISLAND_PROPS ${component}: ${error instanceof Error ? error.message : String(error)}`);
|
|
553
|
+
throw integrity(new TypeError(`ZR_ISLAND_PROPS ${component}: ${error instanceof Error ? error.message : String(error)}`));
|
|
509
554
|
}
|
|
510
555
|
const when = options.when ?? "load";
|
|
511
556
|
if (!["load", "idle", "visible", "media"].includes(when) ||
|
|
@@ -547,7 +592,7 @@ function validateRadioGroups(context) {
|
|
|
547
592
|
fail("ZR_MODEL_VALUE", context, `radio has no option ${group.value}`);
|
|
548
593
|
}
|
|
549
594
|
export function renderHtml(node, options) {
|
|
550
|
-
const root =
|
|
595
|
+
const root = new RuntimeScope({ component: options.island?.component ?? "<root>" });
|
|
551
596
|
const context = {
|
|
552
597
|
radioGroups: new Map(),
|
|
553
598
|
radioNames: new Map(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-html.js","sourceRoot":"","sources":["../../src/zudo-react/render-html.ts"],"names":[],"mappings":"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","sourcesContent":["import { serializeStyle } from \"./style.js\";\nimport {\n Fragment,\n descriptionSite,\n isDescription,\n type Child,\n type Description,\n type DescriptionSite,\n} from \"./description.js\";\nimport { escapeAttribute, escapeText } from \"./escape.js\";\nimport { rawHtmlReserved } from \"./raw-html.js\";\nimport type { IslandIdentity } from \"./index.js\";\nimport { readSnapshot } from \"./reactive.js\";\nimport type { ReadonlySignal } from \"./reactive-types.js\";\nimport { createScope, withScope, type RuntimeScope } from \"./scope.js\";\nimport { emptyChildren, normalizeProps } from \"./props-transport.js\";\nimport { islandRootType } from \"./island-root-type.js\";\nimport type { IslandOptions, RenderOptions } from \"./server.js\";\nimport {\n isShowType,\n isForType,\n showProps,\n forProps,\n keyed,\n keyPayload,\n view,\n} from \"./structure.js\";\nimport {\n attributeError,\n attributeText,\n booleanAttrs,\n commonAttrs,\n dialectSuggestion,\n displayOnlyControl,\n emptyIframeChildren,\n formProps,\n htmlAttrs,\n htmlTags,\n isDialectProp,\n reactiveModelSuggestion,\n svgAttrs,\n svgTags,\n type Namespace,\n voidTags,\n} from \"./vocabulary.js\";\n\nconst words = (value: string) => new Set(value.split(\" \"));\nconst reserved = words(\"key ref children rawHtml\");\nconst sensitive = words(\"noscript xmp iframe noembed noframes plaintext\");\nconst tableChildren: Record<string, Set<string>> = {\n table: words(\"caption colgroup thead tbody tfoot\"),\n thead: words(\"tr\"),\n tbody: words(\"tr\"),\n tfoot: words(\"tr\"),\n tr: words(\"td th\"),\n colgroup: words(\"col\"),\n};\ninterface Context {\n identity: IslandIdentity | undefined;\n boundary: boolean;\n next: number;\n scope: RuntimeScope;\n path: string;\n node?: Description | undefined;\n selectValue?: string | undefined;\n selectSeen?: Set<string> | undefined;\n selectMatches?: number | undefined;\n radioGroups: Map<\n unknown,\n { name: string; form: string; value: string | null; options: Set<string> }\n >;\n radioNames: Map<string, unknown>;\n formId: string;\n nextFormId: number;\n}\nexport interface RenderDiagnostic {\n readonly code: string;\n readonly path: string;\n readonly component: string;\n readonly spelling?: { readonly name: string; readonly suggestion?: string };\n readonly site?: DescriptionSite;\n}\nfunction fail(\n code: string,\n context: Context,\n detail: string,\n spelling?: RenderDiagnostic[\"spelling\"],\n): never {\n const component = context.identity?.component ?? \"static render\";\n const site = context.node && descriptionSite(context.node);\n const diagnostic: RenderDiagnostic = {\n code,\n path: context.path,\n component,\n ...(spelling && { spelling }),\n ...(site && { site }),\n };\n throw Object.assign(new TypeError(`${code}: ${detail} at ${context.path} in ${component}`), {\n diagnostic,\n });\n}\nfunction reactive(value: unknown): value is ReadonlySignal<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"$$zudoReactive\" in value &&\n value.$$zudoReactive === \"zudo-react.reactive.v1\"\n );\n}\nfunction read(value: unknown): unknown {\n return reactive(value) ? readSnapshot(value) : value;\n}\nfunction region(context: Context, kind: string, content: () => string): string {\n if (!context.identity) return content();\n const id = context.next++;\n return `<!--zr:1:${id}:${kind}-->${content()}<!--/zr:1:${id}-->`;\n}\nfunction at<T>(context: Context, part: string, fn: () => T): T {\n const old = context.path;\n context.path += part;\n try {\n return fn();\n } finally {\n context.path = old;\n }\n}\nfunction children(value: unknown, context: Context, namespace: Namespace, parent: string): string {\n if (value == null || typeof value === \"boolean\") return \"\";\n if (Array.isArray(value))\n return value\n .map((item, index) =>\n at(context, `[${index}]`, () => render(item, context, namespace, parent)),\n )\n .join(\"\");\n return render(value, context, namespace, parent);\n}\nfunction renderText(value: unknown, context: Context): string {\n if (value == null || typeof value === \"boolean\") return \"\";\n if (typeof value === \"string\" || (typeof value === \"number\" && Number.isFinite(value)))\n return escapeText(String(value));\n fail(\"ZR_CHILD\", context, `invalid scalar ${typeof value}`);\n}\nfunction style(value: unknown, context: Context): string {\n try {\n return serializeStyle(value);\n } catch (error) {\n if (error instanceof TypeError)\n fail(\"ZR_STYLE\", context, error.message.replace(/^ZR_STYLE: /, \"\"));\n throw error;\n }\n}\nfunction attributes(\n tag: string,\n props: Readonly<Record<string, unknown>>,\n context: Context,\n namespace: Namespace,\n custom: boolean,\n): string {\n let output = \"\";\n for (const [name, original] of Object.entries(props)) {\n if (reserved.has(name)) continue;\n if (formProps.has(name)) continue;\n if (isDialectProp(name, namespace, custom)) {\n const suggestion = dialectSuggestion(name, namespace, custom);\n fail(\n \"ZR_PROP_DIALECT\",\n context,\n `${tag}.${name}${suggestion ? ` (use \\`${suggestion}\\` instead of \\`${name}\\`)` : \"\"}`,\n suggestion ? { name, suggestion } : { name },\n );\n }\n if (name.startsWith(\"on:\")) {\n if (!/^on:[A-Za-z][A-Za-z0-9_-]*(?::capture)?$/.test(name))\n fail(\"ZR_LISTENER\", context, `${tag}.${name}`);\n if (typeof original !== \"function\") fail(\"ZR_LISTENER\", context, `${tag}.${name}`);\n const inline = `on${name.slice(3).replace(/:capture$/, \"\")}`;\n if (inline in props) fail(\"ZR_LISTENER_CONFLICT\", context, `${tag}.${inline}`);\n continue;\n }\n if (!/^[A-Za-z_:][A-Za-z0-9_:.-]*$/.test(name)) fail(\"ZR_ATTRIBUTE\", context, `${tag}.${name}`);\n if (\n !custom &&\n !commonAttrs.has(name) &&\n !(namespace === \"svg\" ? svgAttrs.has(name) : htmlAttrs.has(name)) &&\n !/^data-[\\w.-]+$/.test(name) &&\n !/^aria-[\\w.-]+$/.test(name) &&\n !/^on[a-z]+$/.test(name)\n )\n fail(\"ZR_ATTRIBUTE\", context, `${tag}.${name}`);\n const displayValue = name === \"value\" && reactive(original) && displayOnlyControl(tag, props);\n if (displayValue && tag === \"textarea\") continue;\n const value = read(original);\n if ((name === \"value\" || name === \"checked\") && reactive(original) && !displayValue) {\n const suggestion = reactiveModelSuggestion(\n tag,\n name,\n String(read(props.type) ?? \"text\"),\n custom,\n );\n fail(\n \"ZR_MODEL_UNSUPPORTED\",\n context,\n `${tag}.${name} requires ${suggestion ?? \"a static value\"}`,\n );\n }\n if (displayValue && typeof value !== \"string\")\n fail(\"ZR_MODEL_VALUE\", context, `${tag} requires string`);\n if (/^on[a-z]/.test(name) && typeof value === \"function\")\n fail(\"ZR_PROP_DIALECT\", context, `${tag}.${name} must use on:${name.slice(2)}`, {\n name,\n suggestion: `on:${name.slice(2)}`,\n });\n const error = attributeError(name, value, custom);\n if (error) fail(\"ZR_ATTRIBUTE\", context, `${tag}.${name} ${error}`);\n if (value == null) continue;\n const text = name === \"style\" ? style(value, context) : attributeText(name, value);\n if (text === null) continue;\n output +=\n booleanAttrs.has(name) && value === true ? ` ${name}` : ` ${name}=\"${escapeAttribute(text)}\"`;\n }\n return output;\n}\nfunction restricted(\n value: unknown,\n context: Context,\n namespace: Namespace,\n parent: string,\n): string {\n return tracked(value, context, () => restrictedValue(value, context, namespace, parent));\n}\nfunction restrictedValue(\n value: unknown,\n context: Context,\n namespace: Namespace,\n parent: string,\n): string {\n if (value == null || typeof value === \"boolean\") return \"\";\n if (Array.isArray(value))\n return value\n .map((item, index) =>\n at(context, `[${index}]`, () => restricted(item, context, namespace, parent)),\n )\n .join(\"\");\n if (typeof value === \"string\" || typeof value === \"number\") {\n if (parent in tableChildren && String(value).trim())\n fail(\"ZR_PARSER_CONTEXT\", context, `${parent} text`);\n return renderText(value, context);\n }\n if (parent === \"title\" || parent === \"option\")\n fail(\"ZR_PARSER_CONTEXT\", context, `${parent} requires static text`);\n if (!isDescription(value) || typeof value.type !== \"string\")\n fail(\"ZR_PARSER_CONTEXT\", context, `${parent} requires intrinsic children`);\n return element(value, context, namespace, parent);\n}\nfunction element(\n description: Description,\n context: Context,\n namespace: Namespace,\n parent: string,\n): string {\n const tag = description.type as string;\n const custom = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)+$/.test(tag);\n const elementNamespace = tag === \"svg\" || namespace === \"svg\" ? \"svg\" : \"html\";\n const childNamespace = tag === \"foreignObject\" ? \"html\" : elementNamespace;\n if (elementNamespace === \"svg\" ? !svgTags.has(tag) : !custom && !htmlTags.has(tag))\n fail(\"ZR_TAG\", context, tag);\n if (context.identity && (tag === \"template\" || (tag !== \"iframe\" && sensitive.has(tag))))\n fail(\"ZR_PARSER_CONTEXT\", context, tag);\n if (parent in tableChildren && !tableChildren[parent]?.has(tag))\n fail(\"ZR_PARSER_CONTEXT\", context, `${parent} > ${tag}`);\n if (\n (parent === \"select\" && tag !== \"option\" && tag !== \"optgroup\") ||\n (parent === \"optgroup\" && tag !== \"option\")\n )\n fail(\"ZR_PARSER_CONTEXT\", context, `${parent} > ${tag}`);\n const previousFormId = context.formId;\n if (tag === \"form\")\n context.formId =\n typeof description.props.id === \"string\"\n ? `id:${description.props.id}`\n : `form:${context.nextFormId++}`;\n const source = description.props;\n const props: Record<string, unknown> = { ...source };\n if (tag === \"iframe\") {\n if (Object.hasOwn(props, \"rawHtml\")) fail(\"ZR_RAW_HTML\", context, \"iframe forbids rawHtml\");\n if (!emptyIframeChildren(props.children))\n fail(\"ZR_PARSER_CONTEXT\", context, \"iframe requires empty children\");\n }\n const hasValue = source.modelValue !== undefined;\n const hasChecked = source.modelChecked !== undefined;\n if (\n (hasValue && hasChecked) ||\n (source.defaultValue !== undefined && source.value !== undefined) ||\n (source.defaultChecked !== undefined && source.checked !== undefined) ||\n (hasValue &&\n (source.defaultValue !== undefined ||\n (source.type !== \"radio\" && source.value !== undefined))) ||\n (hasChecked && (source.defaultChecked !== undefined || source.checked !== undefined))\n )\n fail(\"ZR_MODEL_CONFLICT\", context, tag);\n if (hasValue || hasChecked) {\n for (const name of [\"type\", \"multiple\", \"name\", \"form\"])\n if (reactive(source[name])) fail(\"ZR_MODEL_UNSUPPORTED\", context, `reactive ${name} shape`);\n const model = hasValue ? source.modelValue : source.modelChecked;\n let prototype = model;\n let writable = false;\n while (prototype && typeof prototype === \"object\") {\n const property = Object.getOwnPropertyDescriptor(prototype, \"value\");\n if (property) {\n writable = typeof property.set === \"function\";\n break;\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n if (\n !reactive(model) ||\n !writable ||\n !(\"$$zudoWritable\" in model) ||\n model.$$zudoWritable !== \"zudo-react.writable.v1\"\n )\n fail(\"ZR_MODEL_READONLY\", context, tag);\n }\n if ((hasValue || hasChecked) && source.contenteditable !== undefined)\n fail(\"ZR_MODEL_UNSUPPORTED\", context, `${tag}[contenteditable]`);\n const inputType = String(source.type ?? \"text\");\n if (\n hasValue &&\n !(\n tag === \"textarea\" ||\n tag === \"select\" ||\n (tag === \"input\" &&\n [\"text\", \"search\", \"email\", \"url\", \"tel\", \"password\", \"radio\"].includes(inputType))\n )\n )\n fail(\"ZR_MODEL_UNSUPPORTED\", context, `${tag}[type=${inputType}]`);\n if (hasChecked && !(tag === \"input\" && inputType === \"checkbox\"))\n fail(\"ZR_MODEL_UNSUPPORTED\", context, tag);\n if (\n source.defaultValue !== undefined &&\n !(tag === \"textarea\" || tag === \"select\" || tag === \"input\")\n )\n fail(\"ZR_MODEL_UNSUPPORTED\", context, tag);\n if (\n source.defaultValue !== undefined &&\n tag === \"input\" &&\n ![\"text\", \"search\", \"email\", \"url\", \"tel\", \"password\"].includes(inputType)\n )\n fail(\"ZR_MODEL_UNSUPPORTED\", context, `${tag}[type=${inputType}]`);\n if (\n source.defaultChecked !== undefined &&\n !(tag === \"input\" && [\"checkbox\", \"radio\"].includes(inputType))\n )\n fail(\"ZR_MODEL_UNSUPPORTED\", context, tag);\n if (tag === \"input\") {\n if (source.defaultValue !== undefined || (hasValue && inputType !== \"radio\"))\n props.value = read(source.modelValue ?? source.defaultValue);\n if (source.defaultChecked !== undefined || hasChecked)\n props.checked = read(source.modelChecked ?? source.defaultChecked);\n if (hasValue && inputType === \"radio\") {\n if (typeof source.name !== \"string\" || !source.name || typeof source.value !== \"string\")\n fail(\"ZR_MODEL_UNSUPPORTED\", context, \"radio requires static name and value\");\n const selected = read(source.modelValue);\n if (selected !== null && typeof selected !== \"string\")\n fail(\"ZR_MODEL_VALUE\", context, \"radio requires string or null\");\n const form = typeof source.form === \"string\" ? `id:${source.form}` : context.formId;\n const key = `${source.name}\\u0000${form}`;\n const owner = context.radioNames.get(key);\n if (owner && owner !== source.modelValue)\n fail(\"ZR_MODEL_CONFLICT\", context, \"same-name radios use different models\");\n context.radioNames.set(key, source.modelValue);\n const group = context.radioGroups.get(source.modelValue);\n if (\n group &&\n (group.name !== source.name || group.form !== form || group.options.has(source.value))\n )\n fail(\"ZR_MODEL_CONFLICT\", context, \"radio membership or duplicate value\");\n if (group) group.options.add(source.value);\n else\n context.radioGroups.set(source.modelValue, {\n name: source.name,\n form,\n value: selected,\n options: new Set([source.value]),\n });\n props.checked = selected === source.value;\n }\n }\n if (tag === \"option\" && context.selectValue !== undefined) {\n const value = source.value;\n if (typeof value !== \"string\")\n fail(\"ZR_MODEL_UNSUPPORTED\", context, \"select option requires static value\");\n if (context.selectSeen!.has(value))\n fail(\"ZR_MODEL_CONFLICT\", context, \"duplicate option value\");\n context.selectSeen!.add(value);\n if (source.selected !== undefined)\n fail(\"ZR_MODEL_CONFLICT\", context, \"select-level value with option selected\");\n props.selected = value === context.selectValue;\n if (props.selected) context.selectMatches = (context.selectMatches ?? 0) + 1;\n }\n if (context.boundary && (\"data-zfb-island\" in props || \"data-zfb-island-skip-ssr\" in props))\n fail(\"ZR_NESTED_ISLAND\", context, tag);\n if (\n tag === \"select\" &&\n read(props.multiple) === true &&\n (context.identity || hasValue || source.defaultValue !== undefined)\n )\n fail(\"ZR_MODEL_UNSUPPORTED\", context, \"select[multiple]\");\n const attrs = attributes(tag, props, context, elementNamespace, custom);\n const raw = props.rawHtml;\n const hasChildren = Object.hasOwn(props, \"children\");\n if (raw !== undefined && hasChildren)\n fail(\"ZR_RAW_HTML\", context, `${tag} has children and rawHtml`);\n if (voidTags.has(tag) && (hasChildren || raw !== undefined))\n fail(\"ZR_VOID_CHILDREN\", context, tag);\n if (\n raw !== undefined &&\n (elementNamespace === \"svg\" ||\n tag === \"textarea\" ||\n tag === \"title\" ||\n tag === \"select\" ||\n tag === \"option\")\n )\n fail(\"ZR_RAW_HTML\", context, tag);\n const displayValue = reactive(source.value) && displayOnlyControl(tag, source);\n if (\n tag === \"textarea\" &&\n hasChildren &&\n (hasValue || source.defaultValue !== undefined || displayValue)\n )\n fail(\"ZR_MODEL_CONFLICT\", context, tag);\n let content = \"\";\n if (raw !== undefined) {\n if ((tag === \"script\" || tag === \"style\") && reactive(raw))\n fail(\"ZR_RAW_HTML\", context, `${tag} requires static rawHtml`);\n const payload = read(raw);\n if (typeof payload !== \"string\") fail(\"ZR_RAW_HTML\", context, `${tag} requires string rawHtml`);\n if (rawHtmlReserved(payload, tag)) fail(\"ZR_RAW_HTML\", context, \"reserved boundary in rawHtml\");\n if (\n (tag === \"script\" && /<\\/script/i.test(payload)) ||\n (tag === \"style\" && /<\\/style/i.test(payload))\n )\n fail(\"ZR_RAW_HTML\", context, `closing ${tag} in rawHtml`);\n content = tag === \"script\" || tag === \"style\" ? payload : region(context, \"h\", () => payload);\n } else if (\n tag === \"textarea\" &&\n (hasValue || source.defaultValue !== undefined || displayValue)\n ) {\n const value = read(source.modelValue ?? source.defaultValue ?? source.value);\n if (typeof value !== \"string\") fail(\"ZR_MODEL_VALUE\", context, \"textarea requires string\");\n content = `${value.startsWith(\"\\n\") ? \"\\n\" : \"\"}${escapeText(value)}`;\n } else if (tag === \"iframe\") {\n // The shell has no owned children; srcdoc belongs to the browser's foreign document.\n } else if (tag === \"script\" || tag === \"style\") {\n if (hasChildren) fail(\"ZR_RAW_HTML\", context, `${tag} requires rawHtml`);\n } else if (\n tag === \"title\" ||\n tag === \"option\" ||\n tag === \"optgroup\" ||\n tag === \"select\" ||\n tag in tableChildren\n ) {\n if (tag === \"select\" && (hasValue || source.defaultValue !== undefined)) {\n const value = read(source.modelValue ?? source.defaultValue);\n if (typeof value !== \"string\") fail(\"ZR_MODEL_VALUE\", context, \"select requires string\");\n const oldValue = context.selectValue;\n const oldSeen = context.selectSeen;\n const oldMatches = context.selectMatches;\n context.selectValue = value;\n context.selectSeen = new Set();\n context.selectMatches = 0;\n try {\n content = restricted(props.children, context, childNamespace, tag);\n if (context.selectMatches !== 1)\n fail(\"ZR_MODEL_VALUE\", context, `select has no option ${value}`);\n } finally {\n context.selectValue = oldValue;\n context.selectSeen = oldSeen;\n context.selectMatches = oldMatches;\n }\n } else content = restricted(props.children, context, childNamespace, tag);\n } else content = children(props.children, context, childNamespace, tag);\n if (tag === \"pre\" && raw === undefined && (content.startsWith(\"\\n\") || content.startsWith(\"\\r\")))\n content = `\\n${content}`;\n context.formId = previousFormId;\n return `<${tag}${attrs}>${voidTags.has(tag) ? \"\" : `${content}</${tag}>`}`;\n}\n// A failure is attributed only to the value being rendered: a description's own site,\n// or no site at all for scalars, promises and other non-description children.\nfunction tracked<T>(value: unknown, context: Context, fn: () => T): T {\n const prior = context.node;\n context.node = isDescription(value) ? value : undefined;\n try {\n return fn();\n } finally {\n context.node = prior;\n }\n}\nfunction render(value: unknown, context: Context, namespace: Namespace, parent: string): string {\n return tracked(value, context, () => renderValue(value, context, namespace, parent));\n}\nfunction renderValue(\n value: unknown,\n context: Context,\n namespace: Namespace,\n parent: string,\n): string {\n if (value == null || typeof value === \"boolean\") return \"\";\n if (Array.isArray(value))\n return region(context, \"f\", () => children(value, context, namespace, parent));\n if (reactive(value)) return region(context, \"t\", () => renderText(read(value), context));\n if (typeof value === \"string\" || typeof value === \"number\") return renderText(value, context);\n if (typeof value === \"object\" && value !== null && \"then\" in value)\n fail(\"ZR_ASYNC_COMPONENT\", context, \"promise child\");\n if (!isDescription(value)) fail(\"ZR_CHILD\", context, typeof value);\n if ((value.type as symbol | typeof value.type) === islandRootType)\n return island(value, context, namespace, parent);\n if (value.type === Fragment)\n return region(context, \"f\", () => children(value.props.children, context, namespace, parent));\n if (isShowType(value.type)) {\n if (\n parent in tableChildren ||\n [\"select\", \"optgroup\", \"option\", \"title\", \"textarea\", \"script\", \"style\"].includes(parent)\n )\n fail(\"ZR_PARSER_CONTEXT\", context, parent);\n const props = showProps(value);\n if (\n !reactive(props.when) ||\n typeof props.children !== \"function\" ||\n (props.fallback !== undefined && typeof props.fallback !== \"function\")\n )\n fail(\"ZR_CHILD\", context, \"Show requires signal and factories\");\n const selected = read(props.when);\n if (typeof selected !== \"boolean\") fail(\"ZR_CHILD\", context, \"Show.when requires boolean\");\n return region(context, `s:${selected ? 1 : 0}`, () => {\n const factory = selected ? props.children : props.fallback;\n if (!factory) return \"\";\n const scope = context.scope.child(\"Show\");\n const previous = context.scope;\n context.scope = scope;\n try {\n return withScope(scope, () => render(factory(), context, namespace, parent));\n } finally {\n context.scope = previous;\n }\n });\n }\n if (isForType(value.type)) {\n if (\n parent in tableChildren ||\n [\"select\", \"optgroup\", \"option\", \"title\", \"textarea\", \"script\", \"style\"].includes(parent)\n )\n fail(\"ZR_PARSER_CONTEXT\", context, parent);\n const props = forProps<unknown>(value);\n if (\n !reactive(props.each) ||\n typeof props.by !== \"function\" ||\n typeof props.children !== \"function\"\n )\n fail(\"ZR_CHILD\", context, \"For requires signal, key and factory\");\n const items = read(props.each);\n if (!Array.isArray(items)) fail(\"ZR_CHILD\", context, \"For.each requires array\");\n const keys = keyed(items, props.by, context.path);\n return region(context, \"l\", () =>\n items\n .map((item, index) => {\n const scope = context.scope.child(\"For\");\n const previous = context.scope;\n context.scope = scope;\n try {\n return region(context, `i:${keyPayload(keys[index]!)}`, () =>\n withScope(scope, () =>\n render(\n props.children(view(item).value, view(index).value),\n context,\n namespace,\n parent,\n ),\n ),\n );\n } finally {\n context.scope = previous;\n }\n })\n .join(\"\"),\n );\n }\n if (typeof value.type === \"string\") return element(value, context, namespace, parent);\n const component = value.type;\n const scope = context.scope.child(component.name || \"Anonymous\");\n const prior = context.scope;\n context.scope = scope;\n try {\n return region(context, \"c\", () => {\n const output = withScope(scope, () => component(value.props));\n if (output && typeof output === \"object\" && \"then\" in output)\n fail(\"ZR_ASYNC_COMPONENT\", context, component.name);\n return render(output, context, namespace, parent);\n });\n } finally {\n context.scope = prior;\n }\n}\nfunction island(\n description: Description,\n context: Context,\n namespace: Namespace,\n parent: string,\n): string {\n if (context.boundary) fail(\"ZR_NESTED_ISLAND\", context, \"nested island\");\n if (namespace !== \"html\" || parent === \"p\" || parent in tableChildren || parent === \"select\")\n fail(\"ZR_PARSER_CONTEXT\", context, \"island wrapper\");\n const child = description.props.child;\n const options = description.props.options as IslandOptions;\n if (!isDescription(child) || typeof child.type !== \"function\")\n fail(\"ZR_ISLAND_CHILD\", context, \"one function component required\");\n if (!options?.identity?.component || !options.identity.build)\n fail(\"ZR_ISLAND_IDENTITY\", context, \"component/build required\");\n const component =\n (child.type as typeof child.type & { displayName?: string }).displayName ?? child.type.name;\n if (component !== options.identity.component)\n fail(\"ZR_ISLAND_IDENTITY\", context, `expected ${options.identity.component}, got ${component}`);\n if (Object.hasOwn(child.props, \"children\") && !emptyChildren(child.props.children))\n fail(\"ZR_ISLAND_CHILD\", context, \"nonempty children\");\n let props: Record<string, unknown>;\n let payload: string;\n try {\n props = normalizeProps(child.props);\n payload = JSON.stringify(props);\n } catch (error) {\n throw new TypeError(\n `ZR_ISLAND_PROPS ${component}: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n const when = options.when ?? \"load\";\n if (\n ![\"load\", \"idle\", \"visible\", \"media\"].includes(when) ||\n (when === \"media\" && !options.media?.trim()) ||\n (when !== \"media\" && options.media !== undefined)\n )\n fail(\"ZR_ISLAND_WHEN\", context, when);\n if (\n options.persist !== undefined &&\n (typeof options.persist !== \"string\" ||\n !options.persist.trim() ||\n options.persist !== options.persist.trim() ||\n /[\\u0000-\\u001f\\u007f]/.test(options.persist))\n )\n fail(\n \"ZR_ISLAND_PERSIST\",\n context,\n \"persist must be a nonempty string without surrounding whitespace or control characters\",\n );\n if (options.persistProps !== undefined && typeof options.persistProps !== \"boolean\")\n fail(\"ZR_ISLAND_PERSIST\", context, \"persistProps must be a boolean\");\n if (options.persistProps !== undefined && options.persist === undefined)\n fail(\"ZR_ISLAND_PERSIST\", context, \"persistProps requires persist\");\n const marker = options.skipSsr ? \"data-zfb-island-skip-ssr\" : \"data-zfb-island\";\n const attrs = ` ${marker}=\"${escapeAttribute(options.identity.component)}\" data-when=\"${when}\"${when === \"media\" ? ` data-media=\"${escapeAttribute(options.media!)}\"` : \"\"} data-zfb-transport=\"json/1\" data-zfb-protocol=\"zudo-react/1\" data-zfb-build=\"${escapeAttribute(options.identity.build)}\" data-props=\"${escapeAttribute(payload)}\"${options.persist === undefined ? \"\" : ` data-zfb-transition-persist=\"${escapeAttribute(options.persist)}\"`}${options.persistProps === true ? ' data-zfb-transition-persist-props=\"true\"' : \"\"}`;\n const local: Context = {\n radioGroups: new Map(),\n radioNames: new Map(),\n formId: \"\",\n nextFormId: 0,\n identity: options.skipSsr ? undefined : options.identity,\n boundary: true,\n next: 0,\n scope: context.scope,\n path: context.path,\n };\n const content = options.skipSsr\n ? children(options.fallback, local, namespace, \"div\")\n : render({ ...child, props }, local, \"html\", \"div\");\n validateRadioGroups(local);\n return `<div${attrs}>${content}</div>`;\n}\nfunction validateRadioGroups(context: Context): void {\n for (const group of context.radioGroups.values())\n if (group.value !== null && !group.options.has(group.value))\n fail(\"ZR_MODEL_VALUE\", context, `radio has no option ${group.value}`);\n}\nexport function renderHtml(node: Child, options: RenderOptions): string {\n const root = createScope({ component: options.island?.component ?? \"<root>\" });\n const context: Context = {\n radioGroups: new Map(),\n radioNames: new Map(),\n formId: \"\",\n nextFormId: 0,\n identity: options.island,\n boundary: options.island !== undefined,\n next: 0,\n scope: root,\n path: \"root\",\n };\n try {\n const html = render(node, context, \"html\", \"\");\n validateRadioGroups(context);\n return html;\n } finally {\n root.dispose();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"render-html.js","sourceRoot":"","sources":["../../src/zudo-react/render-html.ts"],"names":[],"mappings":"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","sourcesContent":["import { boundaryProps, boundaryRenderer, integrity, recoverable } from \"./error-boundary-type.js\";\nimport { serializeStyle } from \"./style.js\";\nimport {\n Fragment,\n descriptionSite,\n isDescription,\n type Child,\n type Description,\n type DescriptionSite,\n} from \"./description.js\";\nimport { escapeAttribute, escapeText } from \"./escape.js\";\nimport { rawHtmlReserved } from \"./raw-html.js\";\nimport type { IslandIdentity } from \"./index.js\";\nimport { readSnapshot } from \"./reactive.js\";\nimport type { ReadonlySignal } from \"./reactive-types.js\";\nimport { RuntimeScope, withScope } from \"./scope.js\";\nimport { emptyChildren, normalizeProps } from \"./props-transport.js\";\nimport { islandRootType } from \"./island-root-type.js\";\nimport type { IslandOptions, RenderOptions } from \"./server.js\";\nimport {\n isShowType,\n isForType,\n showProps,\n forProps,\n keyed,\n keyPayload,\n view,\n} from \"./structure.js\";\nimport {\n attributeError,\n attributeText,\n booleanAttrs,\n commonAttrs,\n dialectSuggestion,\n displayOnlyControl,\n emptyIframeChildren,\n formProps,\n htmlAttrs,\n htmlTags,\n isDialectProp,\n reactiveModelSuggestion,\n svgAttrs,\n svgTags,\n type Namespace,\n voidTags,\n} from \"./vocabulary.js\";\n\nconst words = (value: string) => new Set(value.split(\" \"));\nconst reserved = words(\"key ref children rawHtml\");\nconst sensitive = words(\"noscript xmp iframe noembed noframes plaintext\");\nconst tableChildren: Record<string, Set<string>> = {\n table: words(\"caption colgroup thead tbody tfoot\"),\n thead: words(\"tr\"),\n tbody: words(\"tr\"),\n tfoot: words(\"tr\"),\n tr: words(\"td th\"),\n colgroup: words(\"col\"),\n};\ninterface Context {\n identity: IslandIdentity | undefined;\n boundary: boolean;\n next: number;\n prefix?: string;\n scope: RuntimeScope;\n path: string;\n node?: Description | undefined;\n selectValue?: string | undefined;\n selectSeen?: Set<string> | undefined;\n selectMatches?: number | undefined;\n radioGroups: Map<\n unknown,\n { name: string; form: string; value: string | null; options: Set<string> }\n >;\n radioNames: Map<string, unknown>;\n formId: string;\n nextFormId: number;\n}\nexport interface RenderDiagnostic {\n readonly code: string;\n readonly path: string;\n readonly component: string;\n readonly spelling?: { readonly name: string; readonly suggestion?: string };\n readonly site?: DescriptionSite;\n}\nfunction fail(\n code: string,\n context: Context,\n detail: string,\n spelling?: RenderDiagnostic[\"spelling\"],\n fatal = false,\n): never {\n const component = context.identity?.component ?? \"static render\";\n const site = context.node && descriptionSite(context.node);\n const diagnostic: RenderDiagnostic = {\n code,\n path: context.path,\n component,\n ...(spelling && { spelling }),\n ...(site && { site }),\n };\n const error = Object.assign(\n new TypeError(`${code}: ${detail} at ${context.path} in ${component}`),\n { diagnostic },\n );\n throw fatal || code.startsWith(\"ZR_ISLAND_\") || code === \"ZR_NESTED_ISLAND\"\n ? integrity(error)\n : error;\n}\nfunction reactive(value: unknown): value is ReadonlySignal<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"$$zudoReactive\" in value &&\n value.$$zudoReactive === \"zudo-react.reactive.v1\"\n );\n}\nfunction read(value: unknown): unknown {\n return reactive(value) ? readSnapshot(value) : value;\n}\nfunction region(context: Context, kind: string, content: () => string): string {\n if (!context.identity) return content();\n const id = `${context.prefix ?? \"\"}${context.next++}`;\n return `<!--zr:1:${id}:${kind}-->${content()}<!--/zr:1:${id}-->`;\n}\nfunction at<T>(context: Context, part: string, fn: () => T): T {\n const old = context.path;\n context.path += part;\n try {\n return fn();\n } finally {\n context.path = old;\n }\n}\nfunction children(value: unknown, context: Context, namespace: Namespace, parent: string): string {\n if (value == null || typeof value === \"boolean\") return \"\";\n if (Array.isArray(value))\n return value\n .map((item, index) =>\n at(context, `[${index}]`, () => render(item, context, namespace, parent)),\n )\n .join(\"\");\n return render(value, context, namespace, parent);\n}\nfunction renderText(value: unknown, context: Context): string {\n if (value == null || typeof value === \"boolean\") return \"\";\n if (typeof value === \"string\" || (typeof value === \"number\" && Number.isFinite(value)))\n return escapeText(String(value));\n fail(\"ZR_CHILD\", context, `invalid scalar ${typeof value}`);\n}\nfunction style(value: unknown, context: Context): string {\n try {\n return serializeStyle(value);\n } catch (error) {\n if (error instanceof TypeError)\n fail(\"ZR_STYLE\", context, error.message.replace(/^ZR_STYLE: /, \"\"));\n throw error;\n }\n}\nfunction attributes(\n tag: string,\n props: Readonly<Record<string, unknown>>,\n context: Context,\n namespace: Namespace,\n custom: boolean,\n): string {\n let output = \"\";\n for (const [name, original] of Object.entries(props)) {\n if (reserved.has(name)) continue;\n if (formProps.has(name)) continue;\n if (isDialectProp(name, namespace, custom)) {\n const suggestion = dialectSuggestion(name, namespace, custom);\n fail(\n \"ZR_PROP_DIALECT\",\n context,\n `${tag}.${name}${suggestion ? ` (use \\`${suggestion}\\` instead of \\`${name}\\`)` : \"\"}`,\n suggestion ? { name, suggestion } : { name },\n );\n }\n if (name.startsWith(\"on:\")) {\n if (!/^on:[A-Za-z][A-Za-z0-9_-]*(?::capture)?$/.test(name))\n fail(\"ZR_LISTENER\", context, `${tag}.${name}`);\n if (typeof original !== \"function\") fail(\"ZR_LISTENER\", context, `${tag}.${name}`);\n const inline = `on${name.slice(3).replace(/:capture$/, \"\")}`;\n if (inline in props) fail(\"ZR_LISTENER_CONFLICT\", context, `${tag}.${inline}`);\n continue;\n }\n if (!/^[A-Za-z_:][A-Za-z0-9_:.-]*$/.test(name)) fail(\"ZR_ATTRIBUTE\", context, `${tag}.${name}`);\n if (\n !custom &&\n !commonAttrs.has(name) &&\n !(namespace === \"svg\" ? svgAttrs.has(name) : htmlAttrs.has(name)) &&\n !/^data-[\\w.-]+$/.test(name) &&\n !/^aria-[\\w.-]+$/.test(name) &&\n !/^on[a-z]+$/.test(name)\n )\n fail(\"ZR_ATTRIBUTE\", context, `${tag}.${name}`);\n const displayValue = name === \"value\" && reactive(original) && displayOnlyControl(tag, props);\n if (displayValue && tag === \"textarea\") continue;\n const value = read(original);\n if ((name === \"value\" || name === \"checked\") && reactive(original) && !displayValue) {\n const suggestion = reactiveModelSuggestion(\n tag,\n name,\n String(read(props.type) ?? \"text\"),\n custom,\n );\n fail(\n \"ZR_MODEL_UNSUPPORTED\",\n context,\n `${tag}.${name} requires ${suggestion ?? \"a static value\"}`,\n );\n }\n if (displayValue && typeof value !== \"string\")\n fail(\"ZR_MODEL_VALUE\", context, `${tag} requires string`);\n if (/^on[a-z]/.test(name) && typeof value === \"function\")\n fail(\"ZR_PROP_DIALECT\", context, `${tag}.${name} must use on:${name.slice(2)}`, {\n name,\n suggestion: `on:${name.slice(2)}`,\n });\n const error = attributeError(name, value, custom);\n if (error) fail(\"ZR_ATTRIBUTE\", context, `${tag}.${name} ${error}`);\n if (value == null) continue;\n const text = name === \"style\" ? style(value, context) : attributeText(name, value);\n if (text === null) continue;\n output +=\n booleanAttrs.has(name) && value === true ? ` ${name}` : ` ${name}=\"${escapeAttribute(text)}\"`;\n }\n return output;\n}\nfunction restricted(\n value: unknown,\n context: Context,\n namespace: Namespace,\n parent: string,\n): string {\n return tracked(value, context, () => restrictedValue(value, context, namespace, parent));\n}\nfunction restrictedValue(\n value: unknown,\n context: Context,\n namespace: Namespace,\n parent: string,\n): string {\n if (value == null || typeof value === \"boolean\") return \"\";\n if (Array.isArray(value))\n return value\n .map((item, index) =>\n at(context, `[${index}]`, () => restricted(item, context, namespace, parent)),\n )\n .join(\"\");\n if (typeof value === \"string\" || typeof value === \"number\") {\n if (parent in tableChildren && String(value).trim())\n fail(\"ZR_PARSER_CONTEXT\", context, `${parent} text`);\n return renderText(value, context);\n }\n if (parent === \"title\" || parent === \"option\")\n fail(\"ZR_PARSER_CONTEXT\", context, `${parent} requires static text`);\n if (!isDescription(value) || typeof value.type !== \"string\")\n fail(\"ZR_PARSER_CONTEXT\", context, `${parent} requires intrinsic children`);\n return element(value, context, namespace, parent);\n}\nfunction element(\n description: Description,\n context: Context,\n namespace: Namespace,\n parent: string,\n): string {\n const tag = description.type as string;\n const custom = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)+$/.test(tag);\n const elementNamespace = tag === \"svg\" || namespace === \"svg\" ? \"svg\" : \"html\";\n const childNamespace = tag === \"foreignObject\" ? \"html\" : elementNamespace;\n if (elementNamespace === \"svg\" ? !svgTags.has(tag) : !custom && !htmlTags.has(tag))\n fail(\"ZR_TAG\", context, tag);\n if (context.identity && (tag === \"template\" || (tag !== \"iframe\" && sensitive.has(tag))))\n fail(\"ZR_PARSER_CONTEXT\", context, tag);\n if (parent in tableChildren && !tableChildren[parent]?.has(tag))\n fail(\"ZR_PARSER_CONTEXT\", context, `${parent} > ${tag}`);\n if (\n (parent === \"select\" && tag !== \"option\" && tag !== \"optgroup\") ||\n (parent === \"optgroup\" && tag !== \"option\")\n )\n fail(\"ZR_PARSER_CONTEXT\", context, `${parent} > ${tag}`);\n const previousFormId = context.formId;\n if (tag === \"form\")\n context.formId =\n typeof description.props.id === \"string\"\n ? `id:${description.props.id}`\n : `form:${context.nextFormId++}`;\n const source = description.props;\n const props: Record<string, unknown> = { ...source };\n if (tag === \"iframe\") {\n if (Object.hasOwn(props, \"rawHtml\")) fail(\"ZR_RAW_HTML\", context, \"iframe forbids rawHtml\");\n if (!emptyIframeChildren(props.children))\n fail(\"ZR_PARSER_CONTEXT\", context, \"iframe requires empty children\");\n }\n const hasValue = source.modelValue !== undefined;\n const hasChecked = source.modelChecked !== undefined;\n if (\n (hasValue && hasChecked) ||\n (source.defaultValue !== undefined && source.value !== undefined) ||\n (source.defaultChecked !== undefined && source.checked !== undefined) ||\n (hasValue &&\n (source.defaultValue !== undefined ||\n (source.type !== \"radio\" && source.value !== undefined))) ||\n (hasChecked && (source.defaultChecked !== undefined || source.checked !== undefined))\n )\n fail(\"ZR_MODEL_CONFLICT\", context, tag);\n if (hasValue || hasChecked) {\n for (const name of [\"type\", \"multiple\", \"name\", \"form\"])\n if (reactive(source[name])) fail(\"ZR_MODEL_UNSUPPORTED\", context, `reactive ${name} shape`);\n const model = hasValue ? source.modelValue : source.modelChecked;\n let prototype = model;\n let writable = false;\n while (prototype && typeof prototype === \"object\") {\n const property = Object.getOwnPropertyDescriptor(prototype, \"value\");\n if (property) {\n writable = typeof property.set === \"function\";\n break;\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n if (\n !reactive(model) ||\n !writable ||\n !(\"$$zudoWritable\" in model) ||\n model.$$zudoWritable !== \"zudo-react.writable.v1\"\n )\n fail(\"ZR_MODEL_READONLY\", context, tag);\n }\n if ((hasValue || hasChecked) && source.contenteditable !== undefined)\n fail(\"ZR_MODEL_UNSUPPORTED\", context, `${tag}[contenteditable]`);\n const inputType = String(source.type ?? \"text\");\n if (\n hasValue &&\n !(\n tag === \"textarea\" ||\n tag === \"select\" ||\n (tag === \"input\" &&\n [\"text\", \"search\", \"email\", \"url\", \"tel\", \"password\", \"radio\"].includes(inputType))\n )\n )\n fail(\"ZR_MODEL_UNSUPPORTED\", context, `${tag}[type=${inputType}]`);\n if (hasChecked && !(tag === \"input\" && inputType === \"checkbox\"))\n fail(\"ZR_MODEL_UNSUPPORTED\", context, tag);\n if (\n source.defaultValue !== undefined &&\n !(tag === \"textarea\" || tag === \"select\" || tag === \"input\")\n )\n fail(\"ZR_MODEL_UNSUPPORTED\", context, tag);\n if (\n source.defaultValue !== undefined &&\n tag === \"input\" &&\n ![\"text\", \"search\", \"email\", \"url\", \"tel\", \"password\"].includes(inputType)\n )\n fail(\"ZR_MODEL_UNSUPPORTED\", context, `${tag}[type=${inputType}]`);\n if (\n source.defaultChecked !== undefined &&\n !(tag === \"input\" && [\"checkbox\", \"radio\"].includes(inputType))\n )\n fail(\"ZR_MODEL_UNSUPPORTED\", context, tag);\n if (tag === \"input\") {\n if (source.defaultValue !== undefined || (hasValue && inputType !== \"radio\"))\n props.value = read(source.modelValue ?? source.defaultValue);\n if (source.defaultChecked !== undefined || hasChecked)\n props.checked = read(source.modelChecked ?? source.defaultChecked);\n if (hasValue && inputType === \"radio\") {\n if (typeof source.name !== \"string\" || !source.name || typeof source.value !== \"string\")\n fail(\"ZR_MODEL_UNSUPPORTED\", context, \"radio requires static name and value\");\n const selected = read(source.modelValue);\n if (selected !== null && typeof selected !== \"string\")\n fail(\"ZR_MODEL_VALUE\", context, \"radio requires string or null\");\n const form = typeof source.form === \"string\" ? `id:${source.form}` : context.formId;\n const key = `${source.name}\\u0000${form}`;\n const owner = context.radioNames.get(key);\n if (owner && owner !== source.modelValue)\n fail(\"ZR_MODEL_CONFLICT\", context, \"same-name radios use different models\");\n context.radioNames.set(key, source.modelValue);\n const group = context.radioGroups.get(source.modelValue);\n if (\n group &&\n (group.name !== source.name || group.form !== form || group.options.has(source.value))\n )\n fail(\"ZR_MODEL_CONFLICT\", context, \"radio membership or duplicate value\");\n if (group) group.options.add(source.value);\n else\n context.radioGroups.set(source.modelValue, {\n name: source.name,\n form,\n value: selected,\n options: new Set([source.value]),\n });\n props.checked = selected === source.value;\n }\n }\n if (tag === \"option\" && context.selectValue !== undefined) {\n const value = source.value;\n if (typeof value !== \"string\")\n fail(\"ZR_MODEL_UNSUPPORTED\", context, \"select option requires static value\");\n if (context.selectSeen!.has(value))\n fail(\"ZR_MODEL_CONFLICT\", context, \"duplicate option value\");\n context.selectSeen!.add(value);\n if (source.selected !== undefined)\n fail(\"ZR_MODEL_CONFLICT\", context, \"select-level value with option selected\");\n props.selected = value === context.selectValue;\n if (props.selected) context.selectMatches = (context.selectMatches ?? 0) + 1;\n }\n if (context.boundary && (\"data-zfb-island\" in props || \"data-zfb-island-skip-ssr\" in props))\n fail(\"ZR_NESTED_ISLAND\", context, tag);\n if (\n tag === \"select\" &&\n read(props.multiple) === true &&\n (context.identity || hasValue || source.defaultValue !== undefined)\n )\n fail(\"ZR_MODEL_UNSUPPORTED\", context, \"select[multiple]\");\n const attrs = attributes(tag, props, context, elementNamespace, custom);\n const raw = props.rawHtml;\n const hasChildren = Object.hasOwn(props, \"children\");\n if (raw !== undefined && hasChildren)\n fail(\"ZR_RAW_HTML\", context, `${tag} has children and rawHtml`);\n if (voidTags.has(tag) && (hasChildren || raw !== undefined))\n fail(\"ZR_VOID_CHILDREN\", context, tag);\n if (\n raw !== undefined &&\n (elementNamespace === \"svg\" ||\n tag === \"textarea\" ||\n tag === \"title\" ||\n tag === \"select\" ||\n tag === \"option\")\n )\n fail(\"ZR_RAW_HTML\", context, tag);\n const displayValue = reactive(source.value) && displayOnlyControl(tag, source);\n if (\n tag === \"textarea\" &&\n hasChildren &&\n (hasValue || source.defaultValue !== undefined || displayValue)\n )\n fail(\"ZR_MODEL_CONFLICT\", context, tag);\n let content = \"\";\n if (raw !== undefined) {\n if ((tag === \"script\" || tag === \"style\") && reactive(raw))\n fail(\"ZR_RAW_HTML\", context, `${tag} requires static rawHtml`);\n const payload = read(raw);\n if (typeof payload !== \"string\") fail(\"ZR_RAW_HTML\", context, `${tag} requires string rawHtml`);\n if (rawHtmlReserved(payload, tag))\n fail(\"ZR_RAW_HTML\", context, \"reserved boundary in rawHtml\", undefined, true);\n if (\n (tag === \"script\" && /<\\/script/i.test(payload)) ||\n (tag === \"style\" && /<\\/style/i.test(payload))\n )\n fail(\"ZR_RAW_HTML\", context, `closing ${tag} in rawHtml`, undefined, true);\n content = tag === \"script\" || tag === \"style\" ? payload : region(context, \"h\", () => payload);\n } else if (\n tag === \"textarea\" &&\n (hasValue || source.defaultValue !== undefined || displayValue)\n ) {\n const value = read(source.modelValue ?? source.defaultValue ?? source.value);\n if (typeof value !== \"string\") fail(\"ZR_MODEL_VALUE\", context, \"textarea requires string\");\n content = `${value.startsWith(\"\\n\") ? \"\\n\" : \"\"}${escapeText(value)}`;\n } else if (tag === \"iframe\") {\n // The shell has no owned children; srcdoc belongs to the browser's foreign document.\n } else if (tag === \"script\" || tag === \"style\") {\n if (hasChildren) fail(\"ZR_RAW_HTML\", context, `${tag} requires rawHtml`);\n } else if (\n tag === \"title\" ||\n tag === \"option\" ||\n tag === \"optgroup\" ||\n tag === \"select\" ||\n tag in tableChildren\n ) {\n if (tag === \"select\" && (hasValue || source.defaultValue !== undefined)) {\n const value = read(source.modelValue ?? source.defaultValue);\n if (typeof value !== \"string\") fail(\"ZR_MODEL_VALUE\", context, \"select requires string\");\n const oldValue = context.selectValue;\n const oldSeen = context.selectSeen;\n const oldMatches = context.selectMatches;\n context.selectValue = value;\n context.selectSeen = new Set();\n context.selectMatches = 0;\n try {\n content = restricted(props.children, context, childNamespace, tag);\n if (context.selectMatches !== 1)\n fail(\"ZR_MODEL_VALUE\", context, `select has no option ${value}`);\n } finally {\n context.selectValue = oldValue;\n context.selectSeen = oldSeen;\n context.selectMatches = oldMatches;\n }\n } else content = restricted(props.children, context, childNamespace, tag);\n } else content = children(props.children, context, childNamespace, tag);\n if (tag === \"pre\" && raw === undefined && (content.startsWith(\"\\n\") || content.startsWith(\"\\r\")))\n content = `\\n${content}`;\n context.formId = previousFormId;\n return `<${tag}${attrs}>${voidTags.has(tag) ? \"\" : `${content}</${tag}>`}`;\n}\n// A failure is attributed only to the value being rendered: a description's own site,\n// or no site at all for scalars, promises and other non-description children.\nfunction tracked<T>(value: unknown, context: Context, fn: () => T): T {\n const prior = context.node;\n context.node = isDescription(value) ? value : undefined;\n try {\n return fn();\n } finally {\n context.node = prior;\n }\n}\nfunction render(value: unknown, context: Context, namespace: Namespace, parent: string): string {\n return tracked(value, context, () => renderValue(value, context, namespace, parent));\n}\nfunction renderValue(\n value: unknown,\n context: Context,\n namespace: Namespace,\n parent: string,\n): string {\n if (value == null || typeof value === \"boolean\") return \"\";\n if (Array.isArray(value))\n return region(context, \"f\", () => children(value, context, namespace, parent));\n if (reactive(value)) return region(context, \"t\", () => renderText(read(value), context));\n if (typeof value === \"string\" || typeof value === \"number\") return renderText(value, context);\n if (typeof value === \"object\" && value !== null && \"then\" in value)\n fail(\"ZR_ASYNC_COMPONENT\", context, \"promise child\");\n if (!isDescription(value)) fail(\"ZR_CHILD\", context, typeof value);\n if ((value.type as symbol | typeof value.type) === islandRootType)\n return island(value, context, namespace, parent);\n if (value.type === Fragment)\n return region(context, \"f\", () => children(value.props.children, context, namespace, parent));\n if (boundaryRenderer(value.type)) {\n if (\n parent in tableChildren ||\n [\"select\", \"optgroup\", \"option\", \"title\", \"textarea\", \"script\", \"style\"].includes(parent)\n )\n fail(\"ZR_PARSER_CONTEXT\", context, parent);\n const props = boundaryProps(value);\n const prefix = `${context.prefix ?? \"\"}${context.next}.`;\n return region(context, \"e\", () => {\n const attempt = (factory: () => Child): string => {\n const scope = context.scope.child(\"ErrorBoundary\");\n const local: Context = {\n ...context,\n scope,\n next: 0,\n prefix,\n radioGroups: new Map(\n [...context.radioGroups].map(([key, group]) => [\n key,\n { ...group, options: new Set(group.options) },\n ]),\n ),\n radioNames: new Map(context.radioNames),\n ...(context.selectSeen && { selectSeen: new Set(context.selectSeen) }),\n };\n try {\n const output = withScope(scope, () => render(factory(), local, namespace, parent));\n context.radioGroups = local.radioGroups;\n context.radioNames = local.radioNames;\n context.nextFormId = local.nextFormId;\n return output;\n } catch (error) {\n scope.dispose();\n throw error;\n }\n };\n try {\n return attempt(props.children);\n } catch (error) {\n if (!recoverable(error)) throw error;\n return attempt(() => props.fallback(error, () => {}));\n }\n });\n }\n if (isShowType(value.type)) {\n if (\n parent in tableChildren ||\n [\"select\", \"optgroup\", \"option\", \"title\", \"textarea\", \"script\", \"style\"].includes(parent)\n )\n fail(\"ZR_PARSER_CONTEXT\", context, parent);\n const props = showProps(value);\n if (\n !reactive(props.when) ||\n typeof props.children !== \"function\" ||\n (props.fallback !== undefined && typeof props.fallback !== \"function\")\n )\n fail(\"ZR_CHILD\", context, \"Show requires signal and factories\");\n const selected = read(props.when);\n if (typeof selected !== \"boolean\") fail(\"ZR_CHILD\", context, \"Show.when requires boolean\");\n return region(context, `s:${selected ? 1 : 0}`, () => {\n const factory = selected ? props.children : props.fallback;\n if (!factory) return \"\";\n const scope = context.scope.child(\"Show\");\n const previous = context.scope;\n context.scope = scope;\n try {\n return withScope(scope, () => render(factory(), context, namespace, parent));\n } finally {\n context.scope = previous;\n }\n });\n }\n if (isForType(value.type)) {\n if (\n parent in tableChildren ||\n [\"select\", \"optgroup\", \"option\", \"title\", \"textarea\", \"script\", \"style\"].includes(parent)\n )\n fail(\"ZR_PARSER_CONTEXT\", context, parent);\n const props = forProps<unknown>(value);\n if (\n !reactive(props.each) ||\n typeof props.by !== \"function\" ||\n typeof props.children !== \"function\"\n )\n fail(\"ZR_CHILD\", context, \"For requires signal, key and factory\");\n const items = read(props.each);\n if (!Array.isArray(items)) fail(\"ZR_CHILD\", context, \"For.each requires array\");\n const keys = keyed(items, props.by, context.path);\n return region(context, \"l\", () =>\n items\n .map((item, index) => {\n const scope = context.scope.child(\"For\");\n const previous = context.scope;\n context.scope = scope;\n try {\n return region(context, `i:${keyPayload(keys[index]!)}`, () =>\n withScope(scope, () =>\n render(\n props.children(view(item).value, view(index).value),\n context,\n namespace,\n parent,\n ),\n ),\n );\n } finally {\n context.scope = previous;\n }\n })\n .join(\"\"),\n );\n }\n if (typeof value.type === \"string\") return element(value, context, namespace, parent);\n const component = value.type;\n const scope = context.scope.child(component.name || \"Anonymous\");\n const prior = context.scope;\n context.scope = scope;\n try {\n return region(context, \"c\", () => {\n const output = withScope(scope, () => component(value.props));\n if (output && typeof output === \"object\" && \"then\" in output)\n fail(\"ZR_ASYNC_COMPONENT\", context, component.name);\n return render(output, context, namespace, parent);\n });\n } finally {\n context.scope = prior;\n }\n}\nfunction island(\n description: Description,\n context: Context,\n namespace: Namespace,\n parent: string,\n): string {\n if (context.boundary) fail(\"ZR_NESTED_ISLAND\", context, \"nested island\");\n if (namespace !== \"html\" || parent === \"p\" || parent in tableChildren || parent === \"select\")\n fail(\"ZR_PARSER_CONTEXT\", context, \"island wrapper\");\n const child = description.props.child;\n const options = description.props.options as IslandOptions;\n if (!isDescription(child) || typeof child.type !== \"function\")\n fail(\"ZR_ISLAND_CHILD\", context, \"one function component required\");\n if (!options?.identity?.component || !options.identity.build)\n fail(\"ZR_ISLAND_IDENTITY\", context, \"component/build required\");\n const component =\n (child.type as typeof child.type & { displayName?: string }).displayName ?? child.type.name;\n if (component !== options.identity.component)\n fail(\"ZR_ISLAND_IDENTITY\", context, `expected ${options.identity.component}, got ${component}`);\n if (Object.hasOwn(child.props, \"children\") && !emptyChildren(child.props.children))\n fail(\"ZR_ISLAND_CHILD\", context, \"nonempty children\");\n let props: Record<string, unknown>;\n let payload: string;\n try {\n props = normalizeProps(child.props);\n payload = JSON.stringify(props);\n } catch (error) {\n throw integrity(\n new TypeError(\n `ZR_ISLAND_PROPS ${component}: ${error instanceof Error ? error.message : String(error)}`,\n ),\n );\n }\n const when = options.when ?? \"load\";\n if (\n ![\"load\", \"idle\", \"visible\", \"media\"].includes(when) ||\n (when === \"media\" && !options.media?.trim()) ||\n (when !== \"media\" && options.media !== undefined)\n )\n fail(\"ZR_ISLAND_WHEN\", context, when);\n if (\n options.persist !== undefined &&\n (typeof options.persist !== \"string\" ||\n !options.persist.trim() ||\n options.persist !== options.persist.trim() ||\n /[\\u0000-\\u001f\\u007f]/.test(options.persist))\n )\n fail(\n \"ZR_ISLAND_PERSIST\",\n context,\n \"persist must be a nonempty string without surrounding whitespace or control characters\",\n );\n if (options.persistProps !== undefined && typeof options.persistProps !== \"boolean\")\n fail(\"ZR_ISLAND_PERSIST\", context, \"persistProps must be a boolean\");\n if (options.persistProps !== undefined && options.persist === undefined)\n fail(\"ZR_ISLAND_PERSIST\", context, \"persistProps requires persist\");\n const marker = options.skipSsr ? \"data-zfb-island-skip-ssr\" : \"data-zfb-island\";\n const attrs = ` ${marker}=\"${escapeAttribute(options.identity.component)}\" data-when=\"${when}\"${when === \"media\" ? ` data-media=\"${escapeAttribute(options.media!)}\"` : \"\"} data-zfb-transport=\"json/1\" data-zfb-protocol=\"zudo-react/1\" data-zfb-build=\"${escapeAttribute(options.identity.build)}\" data-props=\"${escapeAttribute(payload)}\"${options.persist === undefined ? \"\" : ` data-zfb-transition-persist=\"${escapeAttribute(options.persist)}\"`}${options.persistProps === true ? ' data-zfb-transition-persist-props=\"true\"' : \"\"}`;\n const local: Context = {\n radioGroups: new Map(),\n radioNames: new Map(),\n formId: \"\",\n nextFormId: 0,\n identity: options.skipSsr ? undefined : options.identity,\n boundary: true,\n next: 0,\n scope: context.scope,\n path: context.path,\n };\n const content = options.skipSsr\n ? children(options.fallback, local, namespace, \"div\")\n : render({ ...child, props }, local, \"html\", \"div\");\n validateRadioGroups(local);\n return `<div${attrs}>${content}</div>`;\n}\nfunction validateRadioGroups(context: Context): void {\n for (const group of context.radioGroups.values())\n if (group.value !== null && !group.options.has(group.value))\n fail(\"ZR_MODEL_VALUE\", context, `radio has no option ${group.value}`);\n}\nexport function renderHtml(node: Child, options: RenderOptions): string {\n const root = new RuntimeScope({ component: options.island?.component ?? \"<root>\" });\n const context: Context = {\n radioGroups: new Map(),\n radioNames: new Map(),\n formId: \"\",\n nextFormId: 0,\n identity: options.island,\n boundary: options.island !== undefined,\n next: 0,\n scope: root,\n path: \"root\",\n };\n try {\n const html = render(node, context, \"html\", \"\");\n validateRadioGroups(context);\n return html;\n } finally {\n root.dispose();\n }\n}\n"]}
|
|
@@ -16,24 +16,32 @@ export declare class RuntimeScope implements Scope {
|
|
|
16
16
|
private readonly protocol;
|
|
17
17
|
private readonly build;
|
|
18
18
|
private readonly children;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
readonly cleanups: Cleanup[];
|
|
20
|
+
activations: Array<() => void | Cleanup>;
|
|
21
|
+
effects: Array<{
|
|
22
|
+
start: () => void;
|
|
23
|
+
dispose: () => void;
|
|
24
|
+
}>;
|
|
25
|
+
expose?: (scope: RuntimeScope) => RuntimeScope;
|
|
26
|
+
start?: () => void;
|
|
27
|
+
stop?: () => void;
|
|
28
|
+
recovery: ((scope: RuntimeScope, error: unknown) => (() => void) | undefined) | undefined;
|
|
29
|
+
renderRecovery: ((error: unknown) => () => void) | undefined;
|
|
30
|
+
controller: AbortController | undefined;
|
|
31
|
+
live: boolean;
|
|
32
|
+
activated: boolean;
|
|
33
|
+
readonly jobReporter: (code: string, actual: string) => void;
|
|
34
|
+
root(): RuntimeScope;
|
|
27
35
|
constructor(options: ScopeOptions);
|
|
28
36
|
get active(): boolean;
|
|
29
37
|
get isActivated(): boolean;
|
|
30
|
-
|
|
31
|
-
private ensureSetup;
|
|
38
|
+
readonly abortSignal: AbortSignal;
|
|
32
39
|
report(code: string, phase: Diagnostic["phase"], actual: string): void;
|
|
33
|
-
onCleanup
|
|
34
|
-
onActivate
|
|
35
|
-
effect
|
|
40
|
+
onCleanup: Scope["onCleanup"];
|
|
41
|
+
onActivate: Scope["onActivate"];
|
|
42
|
+
effect: Scope["effect"];
|
|
36
43
|
child(component: string): RuntimeScope;
|
|
44
|
+
recoverRender(error: unknown): boolean;
|
|
37
45
|
activate(): void;
|
|
38
46
|
dispose(): void;
|
|
39
47
|
}
|