// Bun Snapshot v1, https://bun.sh/docs/test/snapshots exports[`compiler output remains snapshot-compatible for the canonical component contract 1`] = ` { "code": "// compiled from .wrn import Button from "@wrnexus/ui/components/Button.wrn"; import { Buffer as __WrnexusBuffer } from "node:buffer"; export const __wrnexusComponent = "Counter"; export const __wrnexusRuntime = "universal"; export const __wrnexusRender = "hybrid"; export const __wrnexusHydrate = "load"; export const __wrnexusHydrationId = "Counter:1skggk6"; export const __wrnexusBehavior = { "functions": "function increment(){\\n count = count + 1\\n output.change(count)\\n }", "outputs": [ { "name": "change", "payload": { "name": "value", "valueType": "number", "optional": false } } ], "computed": [], "effects": [], "lifecycle": {}, "watches": [] }; export interface CounterProps { [attribute: string]: unknown; "label"?: string; } export interface CounterOutputs { "change"(value: number): void; } function __coerce(v: any, def: any, declared: string = "unknown"): any { if (v === undefined || v === null) { return def; } if (declared === "number" || typeof def === "number") { const parsed = Number(v); if (!Number.isFinite(parsed)) throw new TypeError("Expected a finite number prop"); return parsed; } if (declared === "boolean" || typeof def === "boolean") { if (v === true || v === "" || v === "true" || v === 1 || v === "1") return true; if (v === false || v === "false" || v === 0 || v === "0") return false; throw new TypeError("Expected a boolean prop"); } if (declared === "array" || Array.isArray(def)) { if (Array.isArray(v)) { return v; } if (typeof v === "string") { try { const parsed = JSON.parse(v); return Array.isArray(parsed) ? parsed : def; } catch { if (declared === "array") throw new TypeError("Expected an array prop"); return def; } } return def; } if (declared === "object" || (def !== null && typeof def === "object")) { if ( v !== null && typeof v === "object" && !Array.isArray(v) ) { return v; } if (typeof v === "string") { try { const parsed = JSON.parse(v); return ( parsed !== null && typeof parsed === "object" && !Array.isArray(parsed) ) ? parsed : def; } catch { if (declared === "object") throw new TypeError("Expected an object prop"); return def; } } return def; } if (declared === "bigint") return BigInt(v); if (declared === "function" && typeof v !== "function") { throw new TypeError("Expected a function prop"); } return declared === "unknown" && def === undefined ? v : String(v); } function __restProps( props: Record, declared: Set, ): Record { return Object.fromEntries( Object.entries(props).filter(([name]) => !declared.has(name)), ); } function __wireHtml(v: any): string { return String(v == null ? "" : v).replace( /[&<>]/g, (c) => c === "&" ? "&" : c === "<" ? "<" : ">", ); } function __wireAttr(v: any): string { return String(v == null ? "" : v).replace( /[&<>"]/g, (c) => c === "&" ? "&" : c === "<" ? "<" : c === ">" ? ">" : """, ); } function __wireBooleanAttr(name: string, value: any): string { return value === true || value === "true" || value === "" || value === 1 || value === "1" || value === name ? " " + name : ""; } function __wireSpreadAttrs(value: any): string { if (value === null || typeof value !== "object" || Array.isArray(value)) return ""; const booleanAttributes = new Set(["allowfullscreen","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","itemscope","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"]); const attributes: string[] = []; for (const [name, raw] of Object.entries(value)) { const lowerName = name.toLowerCase(); if ( !/^[A-Za-z_:][A-Za-z0-9_.:-]*$/.test(name) || lowerName.startsWith("on") || lowerName === "style" || lowerName === "slot" || lowerName === "data-component" || lowerName.startsWith("data-wrn") ) { continue; } if (booleanAttributes.has(lowerName)) { attributes.push(__wireBooleanAttr(name, raw)); continue; } if (raw === false || raw === null || raw === undefined) continue; attributes.push(" " + name + '="' + __wireAttr(raw) + '"'); } return attributes.join(""); } function __wireProp(v: any): string { const value = v !== null && typeof v === "object" ? JSON.stringify(v) : String(v == null ? "" : v); return __wireAttr(value); } function __wireRaw(v: any): string { return String(v == null ? "" : v); } function __wrnexusSerializeScopeValue(value: any): string { if (value === undefined) { return "undefined"; } if (value === null) { return "null"; } if (typeof value === "number") { return Number.isFinite(value) ? String(value) : "null"; } if (typeof value === "boolean") { return value ? "true" : "false"; } if (typeof value === "string") { return JSON.stringify(value); } try { const serialized = JSON.stringify(value); return serialized === undefined ? "undefined" : serialized; } catch { return "null"; } } function __wrnexusScopeDecl(obj: Record): string { return Object.keys(obj) .map( (key) => key + ": " + __wrnexusSerializeScopeValue( obj[key], ), ) .join(", ") .replace(/&/g, "&") .replace(/"/g, """) .replace(//g, ">"); } export function render(props: CounterProps = {} as CounterProps): string { const __p = props || {}; const label: string = __coerce(__p["label"], ("Count"), "string"); const __attrs = __restProps(__p, new Set(["label"])); let count = (0); const __scopeState = { "label": label, "count": count }; const __scope = __wrnexusScopeDecl(__scopeState); const __scopePayload = __WrnexusBuffer.from(JSON.stringify(__scopeState), "utf8").toString("base64"); return \`
\${__wireHtml(label)}: \${__wireHtml(count)}
\`; } export default { name: "Counter", kind: "component", render }; " , "diagnostics": [], } `;