@ecopages/radiant 0.3.0-alpha.24 → 0.3.0-alpha.25
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/core/radiant-element-ssr-service.js +2 -2
- package/core/radiant-element-ssr-service.js.map +6 -4
- package/package.json +1 -1
- package/server/host-attribute-serialization.d.ts +46 -0
- package/server/host-attribute-serialization.js +3 -0
- package/server/host-attribute-serialization.js.map +11 -0
- package/server/host-script-composition.d.ts +42 -0
- package/server/host-script-composition.js +3 -0
- package/server/host-script-composition.js.map +10 -0
- package/server/radiant-element-ssr-bridge.js +2 -2
- package/server/radiant-element-ssr-bridge.js.map +6 -4
- package/server/radiant-element-ssr-runtime.js +2 -2
- package/server/radiant-element-ssr-runtime.js.map +6 -4
- package/server/render-component.js +2 -2
- package/server/render-component.js.map +6 -4
- package/server/render-controller.js +2 -2
- package/server/render-controller.js.map +6 -4
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/decorators/legacy/instance-initializers.ts", "../src/utils/attribute-utils.ts", "../src/core/radiant-element-ssr-registry.ts", "../src/core/custom-element-metadata.ts", "../src/core/reactive-prop-metadata.ts", "../src/context/context-ssr-bridge.ts", "../src/server/context-ssr.ts", "../src/core/radiant-element-ssr-service.ts", "../src/core/radiant-element-ssr-host.ts", "../src/server/radiant-element-ssr-extractor.ts", "../src/server/radiant-element-ssr-bridge.ts", "../src/server/html-parser.ts", "../src/server/light-dom-shim.ts", "../src/server/render-component.ts"],
|
|
3
|
+
"sources": ["../src/decorators/legacy/instance-initializers.ts", "../src/utils/attribute-utils.ts", "../src/core/radiant-element-ssr-registry.ts", "../src/core/custom-element-metadata.ts", "../src/core/reactive-prop-metadata.ts", "../src/server/host-attribute-serialization.ts", "../src/context/context-ssr-bridge.ts", "../src/server/context-ssr.ts", "../src/server/host-script-composition.ts", "../src/core/radiant-element-ssr-service.ts", "../src/core/radiant-element-ssr-host.ts", "../src/server/radiant-element-ssr-extractor.ts", "../src/server/radiant-element-ssr-bridge.ts", "../src/server/html-parser.ts", "../src/server/light-dom-shim.ts", "../src/server/render-component.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"type LegacyInstanceInitializer<T extends object = object> = (instance: T) => void;\n\nconst LEGACY_INSTANCE_INITIALIZERS = Symbol.for('@ecopages/radiant.legacy-instance-initializers');\nconst LEGACY_POST_CONSTRUCTION_INITIALIZERS = Symbol.for('@ecopages/radiant.legacy-post-construction-initializers');\nconst LEGACY_EXECUTED_POST_CONSTRUCTION_INITIALIZERS = Symbol.for(\n\t'@ecopages/radiant.legacy-executed-post-construction-initializers',\n);\n\n/**\n * Registers per-instance initialization work for a legacy decorator.\n *\n * Legacy decorators execute against the prototype, so any initialization that\n * needs the concrete element instance must be deferred until construction time.\n */\nexport function registerLegacyInstanceInitializer<T extends object>(\n\tproto: T,\n\tinitializer: LegacyInstanceInitializer<T>,\n): void {\n\tregisterInitializer(proto, LEGACY_INSTANCE_INITIALIZERS, initializer);\n}\n\n/**\n * Registers post-construction work for a legacy decorator.\n *\n * This phase exists for decorators that eagerly write instance fields. With\n * legacy decorators plus `useDefineForClassFields`, subclass field definition\n * can overwrite values written during the base-class constructor.\n */\nexport function registerLegacyPostConstructionInitializer<T extends object>(\n\tproto: T,\n\tinitializer: LegacyInstanceInitializer<T>,\n): void {\n\tregisterInitializer(proto, LEGACY_POST_CONSTRUCTION_INITIALIZERS, initializer);\n}\n\n/**\n * Runs all legacy decorator initializers for a newly constructed element.\n *\n * Initializers are collected from the prototype chain and executed from base to\n * derived class so inherited setup remains stable.\n */\nexport function runLegacyInstanceInitializers<T extends object>(instance: T): void {\n\trunLegacyInitializers(instance, LEGACY_INSTANCE_INITIALIZERS);\n}\n\n/**\n * Runs legacy decorator setup that must happen after subclass field\n * initialization has completed.\n *\n * Each initializer runs at most once per instance even if multiple lifecycle\n * entrypoints call this helper.\n */\nexport function runLegacyPostConstructionInitializers<T extends object>(instance: T): void {\n\tconst target = instance as Record<PropertyKey, unknown>;\n\n\trunLegacyInitializers(\n\t\tinstance,\n\t\tLEGACY_POST_CONSTRUCTION_INITIALIZERS,\n\t\t(target[LEGACY_EXECUTED_POST_CONSTRUCTION_INITIALIZERS] ??= new Set()) as Set<LegacyInstanceInitializer<T>>,\n\t);\n}\n\nfunction registerInitializer<T extends object>(proto: T, key: symbol, initializer: LegacyInstanceInitializer<T>): void {\n\tconst target = proto as Record<PropertyKey, unknown>;\n\tconst ownInitializers = Object.prototype.hasOwnProperty.call(target, key) ? target[key] : undefined;\n\n\tif (Array.isArray(ownInitializers)) {\n\t\townInitializers.push(initializer);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(target, key, {\n\t\tvalue: [initializer],\n\t});\n}\n\nfunction runLegacyInitializers<T extends object>(\n\tinstance: T,\n\tkey: symbol,\n\texecutedInitializers?: Set<LegacyInstanceInitializer<T>>,\n\tprototype: object | null = Object.getPrototypeOf(instance),\n): void {\n\tif (!prototype || prototype === Object.prototype) {\n\t\treturn;\n\t}\n\n\trunLegacyInitializers(instance, key, executedInitializers, Object.getPrototypeOf(prototype));\n\n\tconst initializers = (prototype as Record<PropertyKey, unknown>)[key] as LegacyInstanceInitializer<T>[] | undefined;\n\n\tif (!Array.isArray(initializers)) {\n\t\treturn;\n\t}\n\n\tfor (const initializer of initializers) {\n\t\tif (executedInitializers?.has(initializer)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tinitializer(instance);\n\t\texecutedInitializers?.add(initializer);\n\t}\n}\n",
|
|
6
6
|
"import type { RadiantElement } from '../core/radiant-element';\n\nexport type AttributeTypeConstant = typeof Array | typeof Boolean | typeof Number | typeof Object | typeof String;\n\nexport type AttributeTypeDefault = Array<unknown> | boolean | number | Record<string, unknown> | string;\n\n/**\n * Parses the given attribute type constant and returns its corresponding string representation.\n *\n * @param constant - The attribute type constant to parse.\n * @returns The string representation of the attribute type constant.\n */\nexport function parseAttributeTypeConstant(constant?: AttributeTypeConstant) {\n\tswitch (constant) {\n\t\tcase Array:\n\t\t\treturn 'array';\n\t\tcase Boolean:\n\t\t\treturn 'boolean';\n\t\tcase Number:\n\t\t\treturn 'number';\n\t\tcase Object:\n\t\t\treturn 'object';\n\t\tcase String:\n\t\t\treturn 'string';\n\t}\n}\n\n/**\n * Parses the attribute type default value and returns its type as a string.\n *\n * @param defaultValue - The default value of the attribute type.\n * @returns The type of the default value as a string.\n */\nexport function parseAttributeTypeDefault(defaultValue?: AttributeTypeDefault) {\n\tswitch (typeof defaultValue) {\n\t\tcase 'boolean':\n\t\t\treturn 'boolean';\n\t\tcase 'number':\n\t\t\treturn 'number';\n\t\tcase 'string':\n\t\t\treturn 'string';\n\t}\n\n\tif (Array.isArray(defaultValue)) return 'array';\n\tif (Object.prototype.toString.call(defaultValue) === '[object Object]') return 'object';\n}\n\n/**\n * Returns the default value for a given attribute type.\n *\n * @param type - The attribute type constant.\n * @returns The default value for the specified attribute type.\n */\nexport function defaultValueForType(type: AttributeTypeConstant): unknown {\n\tswitch (type) {\n\t\tcase Number:\n\t\t\treturn 0;\n\t\tcase String:\n\t\t\treturn '';\n\t\tcase Boolean:\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\ntype Reader = (value: string) => number | string | boolean | object | unknown[];\n\n/**\n * Utility function to parse a JSON string safely\n */\nfunction parseJSON<T>(value: string): T {\n\ttry {\n\t\treturn JSON.parse(value);\n\t} catch {\n\t\tthrow new TypeError('Invalid JSON string');\n\t}\n}\n\n/**\n * Object that maps attribute types to reader functions.\n * @type {Object.<string, Reader>}\n */\nconst readers: { [type: string]: Reader } = {\n\tarray(value: string): unknown[] {\n\t\tconst array = parseJSON<unknown[]>(value);\n\t\tif (!Array.isArray(array)) {\n\t\t\tthrow new TypeError(`Expected an array but got a value of type \"${typeof array}\"`);\n\t\t}\n\t\treturn array;\n\t},\n\n\tboolean(value: string): boolean {\n\t\treturn !(value === '0' || String(value).toLowerCase() === 'false');\n\t},\n\n\tnumber(value: string): number {\n\t\tconst number = Number(value.replace(/_/g, ''));\n\t\treturn number;\n\t},\n\n\tobject(value: string): object {\n\t\tconst object = JSON.parse(value);\n\t\tif (object === null || typeof object !== 'object' || Array.isArray(object)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseAttributeTypeDefault(\n\t\t\t\t\tobject,\n\t\t\t\t)}\"`,\n\t\t\t);\n\t\t}\n\t\treturn object;\n\t},\n\n\tstring(value: string): string {\n\t\treturn value;\n\t},\n};\n\ntype Writer = (value: unknown) => string;\n\n/**\n * Object that maps attribute types to writer functions.\n * @type {Object.<string, Writer>}\n */\nconst writers: { [type: string]: Writer } = {\n\tdefault: writeString,\n\tarray: writeJSON,\n\tobject: writeJSON,\n};\n\nfunction writeJSON(value: unknown) {\n\treturn JSON.stringify(value);\n}\n\nfunction writeString(value: unknown) {\n\treturn `${value}`;\n}\n\n/**\n * Reads the attribute value based on the provided type.\n * @param value - The attribute value to be read.\n * @param type - The type of the attribute.\n * @returns The parsed attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function readAttributeValue(value: string, type: AttributeTypeConstant) {\n\tconst readerType = parseAttributeTypeConstant(type);\n\tif (!readerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n\treturn readers[readerType]!(value);\n}\n\nexport type ReadAttributeValueReturnType = ReturnType<typeof readAttributeValue>;\n\n/**\n * Writes the attribute value based on the provided type.\n *\n * @param value - The value to be written.\n * @param type - The type of the attribute.\n * @returns The written attribute value.\n * @throws {TypeError} If the provided type is unknown.\n */\nexport function writeAttributeValue(value: unknown, type: AttributeTypeConstant) {\n\tconst writerType = parseAttributeTypeConstant(type);\n\tif (!writerType) throw new TypeError(`[radiant-element] Unknown type \"${type}\"`);\n\tconst writer: Writer = writers[writerType] ?? writers.default ?? writeString;\n\treturn writer(value);\n}\n\nexport type WriteAttributeValueReturnType = ReturnType<typeof writeAttributeValue>;\n\n/*\n * Type guard functions for each type in AttributeTypeConstant\n */\nfunction isBoolean(value: unknown): value is boolean {\n\treturn typeof value === 'boolean';\n}\n\nfunction isNumber(value: unknown): value is number {\n\treturn typeof value === 'number';\n}\n\nfunction isString(value: unknown): value is string {\n\treturn typeof value === 'string';\n}\n\nfunction isArray(value: unknown): value is Array<unknown> {\n\treturn Array.isArray(value);\n}\n\nfunction isObject(value: unknown): value is object {\n\treturn typeof value === 'object' && !Array.isArray(value) && value !== null;\n}\n\n/*\n * Check function to ensure defaultValue matches the type\n */\nexport function isValueOfType(type: AttributeTypeConstant, defaultValue: unknown): boolean {\n\tswitch (type) {\n\t\tcase Boolean:\n\t\t\treturn isBoolean(defaultValue);\n\t\tcase Number:\n\t\t\treturn isNumber(defaultValue);\n\t\tcase String:\n\t\t\treturn isString(defaultValue);\n\t\tcase Array:\n\t\t\treturn isArray(defaultValue);\n\t\tcase Object:\n\t\t\treturn isObject(defaultValue);\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport const getInitialValue = (\n\ttarget: RadiantElement,\n\ttype: AttributeTypeConstant,\n\tattributeKey: string,\n\tdefaultValue: unknown,\n) => {\n\tif (type === Boolean) {\n\t\tconst attributeValue = target.getAttribute(attributeKey);\n\t\tif (attributeValue === null) {\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\treturn attributeValue === '' ? true : readAttributeValue(attributeValue, type);\n\t}\n\n\tconst attributeValue = target.getAttribute(attributeKey);\n\treturn attributeValue !== null\n\t\t? readAttributeValue(attributeValue, type)\n\t\t: (defaultValue ?? (defaultValueForType(type) as typeof defaultValue));\n};\n",
|
|
7
7
|
"import type { JsxRenderable } from '@ecopages/jsx';\nimport { getActiveSsrScopeValue, type RenderToStringOptions, withActiveSsrScopeValue } from '@ecopages/jsx/server';\n\nexport type RadiantElementRenderBridge = {\n\trenderHost?: () => JsxRenderable;\n\trenderHostToString?: (options?: RenderToStringOptions) => string;\n};\n\n/**\n * SSR host shape used by explicit server rendering entrypoints.\n *\n * Server-side attribute serialization is derived from ordinary host state in\n * the server pipeline rather than through a dedicated host SSR hook.\n */\nexport type RadiantElementServerRenderSsrCapable = object;\n\n/**\n * SSR host shape required when the server runtime renders the tracked component\n * view directly.\n */\nexport type RadiantElementTrackedRenderSsrCapable = object;\n\n/**\n * Shared SSR runtime contract carried on the active JSX SSR render scope.\n *\n * Server entrypoints install one implementation that both direct component SSR\n * and nested JSX custom-element SSR can reuse without importing client-only\n * internals into every call site.\n */\nexport type RadiantElementSsrRuntime = {\n\tgetHostAttributes(component: RadiantElementServerRenderSsrCapable): Record<string, string>;\n\trenderHost(component: RadiantElementServerRenderSsrCapable): JsxRenderable;\n\trenderHostToString(component: RadiantElementServerRenderSsrCapable, options?: RenderToStringOptions): string;\n\tresolveRenderBridge(component: object): RadiantElementRenderBridge | undefined;\n\trenderView(component: RadiantElementTrackedRenderSsrCapable, options?: RenderToStringOptions): string;\n};\n\nconst RADIANT_ELEMENT_SSR_RUNTIME_SYMBOL = Symbol.for('@ecopages/radiant.element-ssr-runtime');\n\n/**\n * Reads the active Radiant SSR runtime from the current render scope.\n *\n * Returns `undefined` when no server render is currently in progress.\n */\nexport function getRadiantElementSsrRuntime(): RadiantElementSsrRuntime | undefined {\n\treturn getActiveSsrScopeValue<RadiantElementSsrRuntime>(RADIANT_ELEMENT_SSR_RUNTIME_SYMBOL);\n}\n\n/**\n * Runs work within an active Radiant SSR runtime scope.\n *\n * The runtime remains visible across built entrypoint boundaries through the\n * active JSX SSR render scope, but only for the duration of the active render call.\n */\nexport function withRadiantElementSsrRuntime<T>(runtime: RadiantElementSsrRuntime, render: () => T): T {\n\treturn withActiveSsrScopeValue(RADIANT_ELEMENT_SSR_RUNTIME_SYMBOL, runtime, render);\n}\n",
|
|
8
8
|
"export const CUSTOM_ELEMENT_TAG_NAME = Symbol.for('@ecopages/radiant.customElementTagName');\n\ntype CustomElementConstructorWithMetadata = CustomElementConstructor & {\n\t[CUSTOM_ELEMENT_TAG_NAME]?: string;\n};\n\n/**\n * Sets the custom element tag name for a given constructor.\n * This is used internally to associate a class with its custom element tag, which is necessary for features like hydration and SSR support.\n * @param target The constructor of the custom element.\n * @param tagName The tag name to associate with the custom element.\n */\nexport function setCustomElementTagName(target: CustomElementConstructor, tagName: string): void {\n\t(target as CustomElementConstructorWithMetadata)[CUSTOM_ELEMENT_TAG_NAME] = tagName;\n}\n\n/**\n * Retrieves the custom element tag name associated with a given constructor.\n * @param target The constructor of the custom element.\n * @returns The tag name associated with the custom element, or `undefined` if not set.\n */\nexport function getCustomElementTagName(target: CustomElementConstructor): string | undefined {\n\treturn (target as CustomElementConstructorWithMetadata)[CUSTOM_ELEMENT_TAG_NAME];\n}\n",
|
|
9
9
|
"import type { ReactivePropertyOptions } from './reactive-prop-core';\n\nconst REACTIVE_PROP_DEFINITIONS = Symbol.for('@ecopages/radiant.reactivePropDefinitions');\n\nexport type ReactivePropDefinition = {\n\tname: string;\n\toptions: ReactivePropertyOptions<unknown>;\n};\n\ntype RadiantConstructorWithReactiveProps = CustomElementConstructor & {\n\t[REACTIVE_PROP_DEFINITIONS]?: ReactivePropDefinition[];\n};\n\nexport function registerReactivePropDefinition(\n\ttarget: object,\n\tpropertyName: string,\n\toptions: ReactivePropertyOptions<unknown>,\n): void {\n\tconst constructor = target.constructor as RadiantConstructorWithReactiveProps;\n\tconst definitions = constructor[REACTIVE_PROP_DEFINITIONS] ?? [];\n\n\tif (definitions.some((definition) => definition.name === propertyName)) {\n\t\treturn;\n\t}\n\n\tdefinitions.push({ name: propertyName, options });\n\tconstructor[REACTIVE_PROP_DEFINITIONS] = definitions;\n}\n\nexport function getReactivePropDefinitions(target: object): ReactivePropDefinition[] {\n\treturn ((target.constructor as RadiantConstructorWithReactiveProps)[REACTIVE_PROP_DEFINITIONS] ?? []).slice();\n}\n",
|
|
10
|
+
"import type { ReactiveProperty } from '../core/reactive-prop-core';\nimport type { ReactivePropDefinition } from '../core/reactive-prop-metadata';\nimport { writeAttributeValue } from '../utils/attribute-utils';\n\n/**\n * Minimal host shape needed by the attribute serialization policy.\n *\n * This interface defines the narrow contract that the serialization module\n * consumes, keeping it independent of the full {@link RadiantElementSsrHost}.\n */\nexport type HostAttributeSource = {\n\tgetReactiveProperties: () => ReactiveProperty[];\n\tgetReactivePropDefinitions: () => ReactivePropDefinition[];\n\tgetPropertyValue: (name: string) => unknown;\n\tlistAttributeNames: () => string[];\n\tgetAttributeValue: (name: string) => string | null;\n};\n\n/**\n * Resolves the final set of SSR host attributes from a Radiant Element Host.\n *\n * ## Source precedence (highest to lowest)\n *\n * 1. **Reactive properties** — legacy attribute reflection via `property.converter`.\n * These are already-registered reactive properties with established converters.\n * Falsy values (`undefined`, `null`, `false`) are omitted.\n *\n * 2. **Reactive prop definitions** — decorator-based definitions. Skipped when the\n * target attribute name was already emitted by source 1 (dedup via `seenAttributes`).\n * Uses `writeAttributeValue` for type-aware conversion.\n *\n * 3. **Authored attributes** — raw host-level attributes from the original markup.\n * These always win if present, regardless of whether sources 1 or 2 already\n * set the same name. This preserves explicit author intent in templates.\n *\n * @param host Host shape providing reactive state and attribute accessors.\n * @returns Flat record of attribute name → serialized value.\n */\nexport function resolveHostAttributes(host: HostAttributeSource): Record<string, string> {\n\tconst attributes: Record<string, string> = {};\n\tconst seenAttributes = new Set<string>();\n\n\tappendReactivePropertyAttributes(host, attributes, seenAttributes);\n\tappendReactivePropDefinitionAttributes(host, attributes, seenAttributes);\n\tappendAuthoredAttributes(host, attributes);\n\n\treturn attributes;\n}\n\n/**\n * Serializes a flat attribute record into an HTML attribute string.\n *\n * Each entry becomes ` name=\"escaped-value\"` with the leading space included.\n * The combined string is safe for direct interpolation into an opening tag.\n *\n * @param attributes Flat attribute record to serialize.\n * @returns HTML attribute string.\n */\nexport function stringifyHostAttributes(attributes: Record<string, string>): string {\n\treturn Object.entries(attributes)\n\t\t.map(([name, value]) => ` ${name}=\"${escapeAttribute(value)}\"`)\n\t\t.join('');\n}\n\n/**\n * Source 1: Reactive properties with established converters.\n *\n * Falsy runtime values are omitted — they should not appear as attributes\n * in SSR output.\n */\nfunction appendReactivePropertyAttributes(\n\thost: HostAttributeSource,\n\tattributes: Record<string, string>,\n\tseenAttributes: Set<string>,\n): void {\n\tfor (const property of host.getReactiveProperties()) {\n\t\tconst currentValue = host.getPropertyValue(property.name);\n\t\tif (currentValue === undefined || currentValue === null || currentValue === false) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tattributes[property.attribute] = String(property.converter.toAttribute(currentValue));\n\t\tseenAttributes.add(property.attribute);\n\t}\n}\n\n/**\n * Source 2: Decorator-based reactive prop definitions.\n *\n * Skipped when the attribute name was already emitted by source 1, preventing\n * duplicate or conflicting attribute values.\n */\nfunction appendReactivePropDefinitionAttributes(\n\thost: HostAttributeSource,\n\tattributes: Record<string, string>,\n\tseenAttributes: Set<string>,\n): void {\n\tfor (const definition of host.getReactivePropDefinitions()) {\n\t\tconst attributeName = definition.options.attribute ?? definition.name;\n\n\t\tif (seenAttributes.has(attributeName)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst currentValue = host.getPropertyValue(definition.name);\n\n\t\tif (currentValue === undefined || currentValue === null || currentValue === false) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tattributes[attributeName] = String(writeAttributeValue(currentValue, definition.options.type));\n\t\tseenAttributes.add(attributeName);\n\t}\n}\n\n/**\n * Source 3: Authored attributes from the original markup.\n *\n * These always overwrite — when an author explicitly sets an attribute in\n * markup, that intent takes precedence over reactive property reflection.\n */\nfunction appendAuthoredAttributes(host: HostAttributeSource, attributes: Record<string, string>): void {\n\tfor (const attributeName of host.listAttributeNames()) {\n\t\tconst attributeValue = host.getAttributeValue(attributeName);\n\t\tif (attributeValue !== null) {\n\t\t\tattributes[attributeName] = attributeValue;\n\t\t}\n\t}\n}\n\nfunction escapeAttribute(value: string): string {\n\treturn value.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>');\n}\n",
|
|
10
11
|
"import type { SsrSerializableContextProvider } from './context-provider';\nimport type { UnknownContext } from './types';\n\ntype SsrContextProviderResolver = (context: UnknownContext) => SsrSerializableContextProvider | undefined;\n\nconst SSR_CONTEXT_PROVIDER_RESOLVER_SYMBOL = Symbol.for('@ecopages/radiant.ssr-context-provider-resolver');\n\ntype GlobalResolverScope = typeof globalThis & {\n\t[SSR_CONTEXT_PROVIDER_RESOLVER_SYMBOL]?: SsrContextProviderResolver;\n};\n\nfunction getGlobalResolverScope(): GlobalResolverScope {\n\treturn globalThis as GlobalResolverScope;\n}\n\n/**\n * Installs the ambient SSR provider resolver used by shared context runtime helpers.\n *\n * Server-side rendering infrastructure owns the actual provider stack storage and\n * publishes a lookup function here so client/runtime code does not need to import\n * server-oriented modules.\n */\nexport function installSsrContextProviderResolver(resolver: SsrContextProviderResolver): void {\n\tgetGlobalResolverScope()[SSR_CONTEXT_PROVIDER_RESOLVER_SYMBOL] = resolver;\n}\n\n/**\n * Resolves an ambient SSR provider when a server render has published one.\n */\nexport function resolveAmbientSsrContextProvider(context: UnknownContext): SsrSerializableContextProvider | undefined {\n\treturn getGlobalResolverScope()[SSR_CONTEXT_PROVIDER_RESOLVER_SYMBOL]?.(context);\n}\n",
|
|
11
12
|
"import type { AsyncLocalStorage } from 'node:async_hooks';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport { installSsrContextProviderResolver } from '../context/context-ssr-bridge';\nimport type { ContextType, UnknownContext } from '../context/types';\n\ntype ProviderFrame = Map<UnknownContext, SsrSerializableContextProvider>;\ntype ProviderStack = ProviderFrame[];\n\nlet resolvedAsyncLocalStorage: AsyncLocalStorage<ProviderStack> | null | undefined;\n\n/**\n * Lazily resolves `AsyncLocalStorage` from `node:async_hooks`.\n *\n * The dynamic `require` is necessary because browser-based SSR tests import\n * this server-oriented module directly. A top-level static import would break\n * those browser bundles even though normal application SSR runs on the server.\n *\n * On the server (Node.js, Bun, Cloudflare Workers) the import always succeeds.\n * In browser test environments where SSR rendering is exercised without a real\n * server, the fallback global stack is used instead.\n */\nfunction getAsyncLocalStorage(): AsyncLocalStorage<ProviderStack> | null {\n\tif (resolvedAsyncLocalStorage !== undefined) {\n\t\treturn resolvedAsyncLocalStorage;\n\t}\n\n\ttry {\n\t\tconst { AsyncLocalStorage: ALS } = require('node:async_hooks') as typeof import('node:async_hooks');\n\t\tresolvedAsyncLocalStorage = new ALS<ProviderStack>();\n\t\treturn resolvedAsyncLocalStorage;\n\t} catch {\n\t\tresolvedAsyncLocalStorage = null;\n\t\treturn null;\n\t}\n}\n\nconst SSR_CONTEXT_FALLBACK_STACK_SYMBOL = Symbol.for('@ecopages/radiant.ssr-context-fallback-stack');\n\nfunction getFallbackStack(): ProviderStack {\n\tconst g = globalThis as typeof globalThis & { [SSR_CONTEXT_FALLBACK_STACK_SYMBOL]?: ProviderStack };\n\tg[SSR_CONTEXT_FALLBACK_STACK_SYMBOL] ??= [];\n\treturn g[SSR_CONTEXT_FALLBACK_STACK_SYMBOL];\n}\n\n/**\n * Pushes a temporary provider frame onto the SSR context stack.\n *\n * On the server, each call creates an isolated `AsyncLocalStorage` context so\n * concurrent renders cannot corrupt each other.\n *\n * In browser test environments where `AsyncLocalStorage` is unavailable, a\n * synchronous global stack is used as a fallback.\n */\nexport function withSsrContextProviders(providers: readonly SsrSerializableContextProvider[]): () => void {\n\tif (providers.length === 0) {\n\t\treturn () => undefined;\n\t}\n\n\tconst frame = new Map<UnknownContext, SsrSerializableContextProvider>();\n\n\tfor (const provider of providers) {\n\t\tframe.set(provider.getContextKey(), provider);\n\t}\n\n\tconst als = getAsyncLocalStorage();\n\n\tif (als) {\n\t\tconst parentStack = als.getStore() ?? [];\n\t\tconst childStack = [...parentStack, frame];\n\t\tals.enterWith(childStack);\n\n\t\treturn () => {\n\t\t\tals.enterWith(parentStack);\n\t\t};\n\t}\n\n\tconst stack = getFallbackStack();\n\tstack.push(frame);\n\n\treturn () => {\n\t\tconst index = stack.lastIndexOf(frame);\n\t\tif (index >= 0) stack.splice(index, 1);\n\t};\n}\n\n/**\n * Resolves the nearest SSR-visible provider for a given context token.\n *\n * Lookup walks the provider frames from innermost to outermost so nested host\n * serialization behaves the same way as runtime context resolution in the DOM.\n */\nexport function resolveSsrContextProvider<T extends UnknownContext>(\n\tcontext: T,\n): SsrSerializableContextProvider | undefined {\n\tconst store = getAsyncLocalStorage()?.getStore() ?? getFallbackStack();\n\n\tfor (let index = store.length - 1; index >= 0; index -= 1) {\n\t\tconst provider = store[index]?.get(context);\n\n\t\tif (provider) {\n\t\t\treturn provider;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Resolves the current SSR-visible value for a given context token.\n *\n * This is the ergonomic helper consumed by SSR-aware decorators and component\n * render paths when they only need the context payload instead of the full\n * provider instance.\n */\nexport function resolveSsrContextValue<T extends UnknownContext>(context: T): ContextType<T> | undefined {\n\tconst provider = resolveSsrContextProvider(context);\n\n\tif (!provider) {\n\t\treturn undefined;\n\t}\n\n\treturn provider.getContext() as ContextType<T>;\n}\n\ninstallSsrContextProviderResolver((context) => resolveSsrContextProvider(context));\n",
|
|
12
|
-
"
|
|
13
|
+
"/**\n * Host script composition for Radiant SSR.\n *\n * This module owns the mode-sensitive ordering and inclusion rules for the\n * script payloads that appear inside a server-rendered Element Host.\n *\n * ## Composition rules\n *\n * | Mode | Order |\n * |-----------|-----------------------------------------------------------------|\n * | `plain` | view content → authored hydration markup → slot projection |\n * | `hydrate` | view content → slot projection → hydration binding scripts |\n *\n * In **plain** mode, authored hydration markup (script tags pre-authored on the\n * host) is preserved because the component may rely on them for standalone\n * behavior. Hydration binding scripts are omitted because there is no client\n * hydrator to consume them.\n *\n * In **hydrate** mode, authored hydration markup is superseded by the formal\n * hydration binding scripts. Slot projection comes before hydration scripts so\n * the client can reconstruct projected content before binding recovery.\n */\n\n/** Individual content parts that make up a server-rendered host's inner HTML. */\nexport type HostContentParts = {\n\t/** The rendered view HTML from `renderViewToString`. */\n\thostContent: string;\n\t/** Authored hydration script markup pre-existing on the host, if any. */\n\tauthoredHydrationMarkup: string;\n\t/** Slot projection JSON payload script tag, if any. */\n\tslotProjectionScript: string;\n\t/** Hydration binding script tags for client-side recovery, if any. */\n\thydrationScripts: string;\n};\n\n/**\n * Assembles the inner HTML of a server-rendered Element Host from its\n * individual content parts, respecting the mode-sensitive ordering rules.\n *\n * @param parts Individual content parts to compose.\n * @param hydrate Whether the output targets client-side hydration.\n * @returns Assembled inner HTML string.\n */\nexport function composeHostContent(parts: HostContentParts, hydrate: boolean): string {\n\tif (!hydrate) {\n\t\treturn `${parts.hostContent}${parts.authoredHydrationMarkup}${parts.slotProjectionScript}`;\n\t}\n\n\treturn `${parts.hostContent}${parts.slotProjectionScript}${parts.hydrationScripts}`;\n}\n",
|
|
14
|
+
"import type { JsxRenderable } from '@ecopages/jsx';\nimport type { RenderToStringOptions } from '@ecopages/jsx/server';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport { withSsrContextProviders } from '../server/context-ssr';\nimport { getCustomElementTagName } from './custom-element-metadata';\nimport type { ReactiveProperty } from './reactive-prop-core';\nimport type { ReactivePropDefinition } from './reactive-prop-metadata';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\nimport { resolveHostAttributes, stringifyHostAttributes } from '../server/host-attribute-serialization';\nimport { composeHostContent } from '../server/host-script-composition';\n\nexport type RadiantElementSsrHost = {\n\tconstructor: CustomElementConstructor;\n\tgetAuthoredHydrationScriptMarkup?: () => string | undefined;\n\tgetContextProviders: () => SsrSerializableContextProvider[];\n\tgetHydrationBindings: () => SsrSerializableHydrationBinding[];\n\tgetSlotProjectionScriptTag?: () => string | undefined;\n\trenderViewToString: (options?: RenderToStringOptions) => string;\n\tgetReactiveProperties: () => ReactiveProperty[];\n\tgetReactivePropDefinitions: () => ReactivePropDefinition[];\n\tgetPropertyValue: (name: string) => unknown;\n\tlistAttributeNames: () => string[];\n\tgetAttributeValue: (name: string) => string | null;\n};\n\nexport class RadiantElementSsrService {\n\tconstructor(private readonly host: RadiantElementSsrHost) {}\n\n\tpublic renderHost(): JsxRenderable {\n\t\treturn {\n\t\t\tnodeType: 1,\n\t\t\touterHTML: this.renderHostToString({ mode: 'hydrate' }),\n\t\t};\n\t}\n\n\tpublic renderHostToString(options: RenderToStringOptions = {}, attributes = this.getHostAttributes()): string {\n\t\tconst tagName = this.getTagName();\n\t\tconst restoreSsrContexts = withSsrContextProviders(this.host.getContextProviders());\n\n\t\ttry {\n\t\t\treturn `<${tagName}${stringifyHostAttributes(attributes)}>${this.renderHostContent(options)}</${tagName}>`;\n\t\t} finally {\n\t\t\trestoreSsrContexts();\n\t\t}\n\t}\n\n\tprivate renderHostContent(options: RenderToStringOptions): string {\n\t\tconst hydrate = options.mode === 'hydrate' || (options.mode === undefined && options.hydrate === true);\n\n\t\tconst hydrationScripts = hydrate\n\t\t\t? this.host\n\t\t\t\t\t.getHydrationBindings()\n\t\t\t\t\t.map((binding) => binding.renderHydrationScriptTag())\n\t\t\t\t\t.filter((markup): markup is string => typeof markup === 'string')\n\t\t\t\t\t.join('')\n\t\t\t: '';\n\n\t\treturn composeHostContent(\n\t\t\t{\n\t\t\t\thostContent: this.host.renderViewToString(options),\n\t\t\t\tauthoredHydrationMarkup: this.host.getAuthoredHydrationScriptMarkup?.() ?? '',\n\t\t\t\tslotProjectionScript: this.host.getSlotProjectionScriptTag?.() ?? '',\n\t\t\t\thydrationScripts,\n\t\t\t},\n\t\t\thydrate,\n\t\t);\n\t}\n\n\tpublic getHostAttributes(): Record<string, string> {\n\t\treturn resolveHostAttributes(this.host);\n\t}\n\n\tprivate getTagName(): string {\n\t\tconst tagName = getCustomElementTagName(this.host.constructor);\n\n\t\tif (!tagName) {\n\t\t\tthrow new Error(`${this.host.constructor.name} is missing @customElement metadata.`);\n\t\t}\n\n\t\treturn tagName;\n\t}\n}\n",
|
|
13
15
|
"import type { JsxRenderable } from '@ecopages/jsx';\nimport type { RenderToStringOptions } from '@ecopages/jsx/server';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport type {\n\tRadiantElementServerRenderSsrCapable,\n\tRadiantElementTrackedRenderSsrCapable,\n} from './radiant-element-ssr-registry';\nimport type { ReactiveProperty } from './reactive-prop-core';\nimport type { SsrSerializableHydrationBinding } from './ssr-hydration-binding';\n\nexport type RadiantElementSsrHostSource = RadiantElementServerRenderSsrCapable &\n\tRadiantElementTrackedRenderSsrCapable & {\n\t\tconstructor: CustomElementConstructor;\n\t\tgetAttribute(name: string): string | null;\n\t\tgetAttributeNames(): string[];\n\t\tgetAuthoredHydrationScriptMarkup(): string | undefined;\n\t\tgetContextProviders(): SsrSerializableContextProvider[];\n\t\tgetHydrationBindings(): SsrSerializableHydrationBinding[];\n\t\tgetPropertyValue(name: string): unknown;\n\t\tgetReactiveProperties(): ReactiveProperty[];\n\t\tgetSlotProjectionScriptTag(): string | undefined;\n\t\tresolveTrackedRenderOutput(): { containsSlots: boolean; value: JsxRenderable };\n\t\trenderViewToString(options?: RenderToStringOptions): string;\n\t};\n\nexport function resolveRadiantElementSsrHostSource(component: object): RadiantElementSsrHostSource | undefined {\n\tif (isRadiantElementSsrHostSource(component)) {\n\t\treturn component;\n\t}\n\n\treturn undefined;\n}\n\nfunction isRadiantElementSsrHostSource(component: object): component is RadiantElementSsrHostSource {\n\treturn (\n\t\ttypeof component.constructor === 'function' &&\n\t\ttypeof (component as { getAttribute?: unknown }).getAttribute === 'function' &&\n\t\ttypeof (component as { getAuthoredHydrationScriptMarkup?: unknown }).getAuthoredHydrationScriptMarkup ===\n\t\t\t'function' &&\n\t\ttypeof (component as { getContextProviders?: unknown }).getContextProviders === 'function' &&\n\t\ttypeof (component as { getHydrationBindings?: unknown }).getHydrationBindings === 'function' &&\n\t\ttypeof (component as { getReactiveProperties?: unknown }).getReactiveProperties === 'function' &&\n\t\ttypeof (component as { getSlotProjectionScriptTag?: unknown }).getSlotProjectionScriptTag === 'function' &&\n\t\ttypeof (component as { resolveTrackedRenderOutput?: unknown }).resolveTrackedRenderOutput === 'function' &&\n\t\ttypeof (component as { renderViewToString?: unknown }).renderViewToString === 'function'\n\t);\n}\n",
|
|
14
16
|
"import { getReactivePropDefinitions } from '../core/reactive-prop-metadata';\nimport { resolveRadiantElementSsrHostSource } from '../core/radiant-element-ssr-host';\nimport type { RadiantElementServerRenderSsrCapable } from '../core/radiant-element-ssr-registry';\nimport type { RadiantElementSsrHost } from '../core/radiant-element-ssr-service';\n\nexport function extractRadiantElementServerRenderHost(\n\tcomponent: RadiantElementServerRenderSsrCapable,\n): RadiantElementSsrHost {\n\tconst source = resolveRadiantElementSsrHostSource(component);\n\n\tif (!source) {\n\t\tthrow new Error('Radiant SSR runtime requires a server extraction host shape on the component.');\n\t}\n\n\treturn {\n\t\tconstructor: source.constructor,\n\t\tgetAuthoredHydrationScriptMarkup: () => source.getAuthoredHydrationScriptMarkup(),\n\t\tgetContextProviders: () => source.getContextProviders(),\n\t\tgetHydrationBindings: () => source.getHydrationBindings(),\n\t\tgetSlotProjectionScriptTag: () => source.getSlotProjectionScriptTag(),\n\t\trenderViewToString: (options) => source.renderViewToString(options),\n\t\tgetReactiveProperties: () => source.getReactiveProperties(),\n\t\tgetReactivePropDefinitions: () => getReactivePropDefinitions(component),\n\t\tgetPropertyValue: (name) => Reflect.get(component, name),\n\t\tlistAttributeNames: () => source.getAttributeNames(),\n\t\tgetAttributeValue: (name) => source.getAttribute(name),\n\t};\n}\n",
|
|
15
17
|
"import type { JsxRenderable } from '@ecopages/jsx';\nimport type { RenderToStringOptions } from '@ecopages/jsx/server';\nimport { renderToString as renderJsxToString } from '@ecopages/jsx/server';\nimport {\n\tcreateServerHydrationBindingState,\n\tisServerRenderHydrationActive,\n\twithForcedServerCustomElementRendering,\n\twithServerCustomElementRenderHook,\n\twithServerHydrationBindingState,\n} from '@ecopages/jsx/server';\nimport { RadiantElementSsrService } from '../core/radiant-element-ssr-service';\nimport { resolveRadiantElementSsrHostSource as resolveInternalRadiantElementSsrHostSource } from '../core/radiant-element-ssr-host';\nimport type {\n\tRadiantElementRenderBridge,\n\tRadiantElementServerRenderSsrCapable,\n\tRadiantElementSsrRuntime,\n\tRadiantElementTrackedRenderSsrCapable,\n} from '../core/radiant-element-ssr-registry';\nimport { withRadiantElementSsrRuntime } from '../core/radiant-element-ssr-registry';\nimport { extractRadiantElementServerRenderHost } from './radiant-element-ssr-extractor';\n\nlet radiantElementSsrRuntime: RadiantElementSsrRuntime | undefined;\n\nexport function createRadiantElementSsrService(\n\tcomponent: RadiantElementServerRenderSsrCapable,\n): RadiantElementSsrService {\n\treturn new RadiantElementSsrService(extractRadiantElementServerRenderHost(component));\n}\n\nexport function renderRadiantElementHost(component: RadiantElementServerRenderSsrCapable): JsxRenderable {\n\treturn {\n\t\tnodeType: 1,\n\t\touterHTML: renderRadiantElementHostToString(component, { mode: 'hydrate' }),\n\t};\n}\n\nexport function renderRegisteredRadiantElementHost(component: unknown): JsxRenderable | undefined {\n\tif (isRadiantElementServerRenderable(component)) {\n\t\treturn renderRadiantElementHost(component);\n\t}\n\n\tif (!isLegacyServerRenderable(component)) {\n\t\treturn undefined;\n\t}\n\n\treturn component.renderHost?.() ?? { nodeType: 1, outerHTML: component.renderHostToString({ mode: 'hydrate' }) };\n}\n\nexport function renderRadiantElementHostToString(\n\tcomponent: RadiantElementServerRenderSsrCapable,\n\toptions: RenderToStringOptions = {},\n): string {\n\treturn withServerRadiantElementSsrRuntime(() =>\n\t\tcreateRadiantElementSsrService(component).renderHostToString(\n\t\t\toptions,\n\t\t\tgetRadiantElementHostSsrAttributes(component),\n\t\t),\n\t);\n}\n\nexport function renderRegisteredRadiantElementHostToString(\n\tcomponent: unknown,\n\toptions: RenderToStringOptions = {},\n): string | undefined {\n\tif (isRadiantElementServerRenderable(component)) {\n\t\treturn renderRadiantElementHostToString(component, options);\n\t}\n\n\tif (!isLegacyServerRenderable(component)) {\n\t\treturn undefined;\n\t}\n\n\treturn component.renderHostToString(options);\n}\n\nexport function resolveRegisteredRadiantElementPreview(component: unknown, markup: string): JsxRenderable | undefined {\n\tif (isRadiantElementServerRenderable(component)) {\n\t\treturn renderRadiantElementHost(component);\n\t}\n\n\tif (!isLegacyServerRenderable(component)) {\n\t\treturn undefined;\n\t}\n\n\treturn component.renderHost?.() ?? { nodeType: 1, outerHTML: markup };\n}\n\nexport function renderRadiantElementViewToString(\n\tcomponent: RadiantElementTrackedRenderSsrCapable,\n\toptions: RenderToStringOptions = {},\n): string {\n\treturn withServerRadiantElementSsrRuntime(() =>\n\t\twithRadiantServerCustomElementRenderBridge(() =>\n\t\t\trenderJsxToString(getRadiantElementTrackedRenderOutput(component).value, options),\n\t\t),\n\t);\n}\n\nexport function getRadiantElementHostSsrAttributes(\n\tcomponent: RadiantElementServerRenderSsrCapable,\n): Record<string, string> {\n\treturn createRadiantElementSsrService(component).getHostAttributes();\n}\n\nexport function resolveRadiantElementRenderBridge(component: object): RadiantElementRenderBridge | undefined {\n\tif (!isRadiantElementServerRenderable(component)) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\trenderHost: () => renderRadiantElementHost(component),\n\t\trenderHostToString: (options) => renderRadiantElementHostToString(component, options),\n\t};\n}\n\nexport function resolveRadiantElementSsrHostBridge(component: object): object | undefined {\n\treturn resolveInternalRadiantElementSsrHostSource(component);\n}\n\nexport function withRadiantServerCustomElementRenderBridge<T>(render: () => T): T {\n\treturn withForcedServerCustomElementRendering(() =>\n\t\twithServerCustomElementRenderHook(({ instance }) => {\n\t\t\tif (isRadiantElementServerRenderable(instance)) {\n\t\t\t\treturn {\n\t\t\t\t\tnodeType: 1,\n\t\t\t\t\tget outerHTML() {\n\t\t\t\t\t\tconst hydrate = isServerRenderHydrationActive();\n\t\t\t\t\t\tconst options: RenderToStringOptions = { hydrate, mode: hydrate ? 'hydrate' : 'plain' };\n\n\t\t\t\t\t\tif (!hydrate) {\n\t\t\t\t\t\t\treturn renderRadiantElementHostToString(instance, options);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn withServerHydrationBindingState(createServerHydrationBindingState(), () =>\n\t\t\t\t\t\t\trenderRadiantElementHostToString(instance, options),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (!isLegacyServerRenderable(instance)) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst legacyInstance: { renderHostToString(options?: RenderToStringOptions): string } = instance;\n\n\t\t\treturn {\n\t\t\t\tnodeType: 1,\n\t\t\t\tget outerHTML() {\n\t\t\t\t\tconst hydrate = isServerRenderHydrationActive();\n\n\t\t\t\t\tif (!hydrate) {\n\t\t\t\t\t\treturn legacyInstance.renderHostToString({ hydrate, mode: hydrate ? 'hydrate' : 'plain' });\n\t\t\t\t\t}\n\n\t\t\t\t\treturn withServerHydrationBindingState(createServerHydrationBindingState(), () =>\n\t\t\t\t\t\tlegacyInstance.renderHostToString({ hydrate, mode: hydrate ? 'hydrate' : 'plain' }),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t};\n\t\t}, render),\n\t);\n}\n\nexport function getRadiantElementTrackedRenderOutput(component: RadiantElementTrackedRenderSsrCapable): {\n\tcontainsSlots: boolean;\n\tvalue: JsxRenderable;\n} {\n\tif (hasTrackedRenderOutput(component)) {\n\t\treturn component.resolveTrackedRenderOutput();\n\t}\n\n\tconst source = resolveInternalRadiantElementSsrHostSource(component);\n\n\tif (!source) {\n\t\tthrow new Error('Radiant SSR runtime requires tracked render output support on the component.');\n\t}\n\n\treturn source.resolveTrackedRenderOutput();\n}\n\nfunction isRadiantElementServerRenderable(component: unknown): component is RadiantElementServerRenderSsrCapable {\n\tif (typeof component !== 'object' || component === null) {\n\t\treturn false;\n\t}\n\n\treturn resolveInternalRadiantElementSsrHostSource(component) !== undefined;\n}\n\nfunction isLegacyServerRenderable(component: unknown): component is {\n\trenderHost?: () => JsxRenderable;\n\trenderHostToString(options?: RenderToStringOptions): string;\n} {\n\tif (typeof component !== 'object' || component === null) {\n\t\treturn false;\n\t}\n\n\treturn typeof (component as { renderHostToString?: unknown }).renderHostToString === 'function';\n}\n\nfunction hasTrackedRenderOutput(component: unknown): component is {\n\tresolveTrackedRenderOutput(): { containsSlots: boolean; value: JsxRenderable };\n} {\n\tif (typeof component !== 'object' || component === null) {\n\t\treturn false;\n\t}\n\n\treturn typeof (component as { resolveTrackedRenderOutput?: unknown }).resolveTrackedRenderOutput === 'function';\n}\n\nexport function getOrCreateRadiantElementSsrRuntime(): RadiantElementSsrRuntime {\n\tif (radiantElementSsrRuntime) {\n\t\treturn radiantElementSsrRuntime;\n\t}\n\n\tradiantElementSsrRuntime = {\n\t\tgetHostAttributes: getRadiantElementHostSsrAttributes,\n\t\trenderHost: renderRadiantElementHost,\n\t\trenderHostToString: renderRadiantElementHostToString,\n\t\tresolveRenderBridge: resolveRadiantElementRenderBridge,\n\t\trenderView: renderRadiantElementViewToString,\n\t};\n\n\treturn radiantElementSsrRuntime;\n}\n\nexport function withServerRadiantElementSsrRuntime<T>(render: () => T): T {\n\treturn withRadiantElementSsrRuntime(getOrCreateRadiantElementSsrRuntime(), render);\n}\n",
|
|
@@ -17,7 +19,7 @@
|
|
|
17
19
|
"import { collectTopLevelHtmlFragments, parseHtmlTagToken, type ParsedHtmlTag } from './html-parser';\n\ntype MinimalCustomElementRegistry = {\n\tdefine(name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions): void;\n\tget(name: string): CustomElementConstructor | undefined;\n};\n\ntype MinimalCssNamespace = {\n\tescape(value: string): string;\n};\n\n/**\n * Minimal window-like runtime surface exposed by the SSR light-DOM shim.\n *\n * This is intentionally much smaller than a browser `window`; it only includes\n * the constructors and registry access that Radiant SSR currently needs.\n */\nexport type LightDomShimWindow = {\n\t/** Event constructor exposed to SSR-created components. */\n\tCustomEvent: typeof CustomEvent;\n\t/** Document constructor exposed to SSR-created components. */\n\tDocument: typeof Document;\n\t/** Element constructor exposed to SSR-created components. */\n\tElement: typeof Element;\n\t/** Event constructor exposed to SSR-created components. */\n\tEvent: typeof Event;\n\t/** EventTarget constructor exposed to SSR-created components. */\n\tEventTarget: typeof EventTarget;\n\t/** HTMLScriptElement constructor used by slot projection payload parsing. */\n\tHTMLScriptElement: typeof HTMLScriptElement;\n\t/** HTMLElement constructor exposed to SSR-created components. */\n\tHTMLElement: typeof HTMLElement;\n\t/** Node constructor exposed to SSR-created components. */\n\tNode: typeof Node;\n\t/** Minimal document instance exposed to SSR-created components. */\n\tdocument: Document;\n\t/** Minimal CSS namespace exposed to SSR-created components. */\n\tCSS: MinimalCssNamespace;\n\t/** Custom element registry used while rendering in SSR. */\n\tcustomElements: MinimalCustomElementRegistry;\n};\n\n/** Host preparation options accepted by the server render environment. */\nexport type PrepareServerRenderHostOptions = {\n\t/** Serialized light-DOM content to attach to the host before SSR. */\n\tauthoredContent?: string;\n};\n\n/** Reusable SSR environment used to prepare component hosts before rendering. */\nexport type ServerRenderEnvironment = {\n\t/** Prepares the host instance for rendering, including authored light-DOM content. */\n\tprepareHost(host: HTMLElement, options?: PrepareServerRenderHostOptions): void;\n};\n\ntype MinimalParentNode = Node & ParentNode;\n\nclass MinimalNode extends EventTarget {\n\tstatic readonly DOCUMENT_NODE = 9;\n\tstatic readonly ELEMENT_NODE = 1;\n\tstatic readonly TEXT_NODE = 3;\n\n\tpublic childNodes: Node[] = [];\n\tpublic ownerDocument: Document | null;\n\tpublic parentNode: MinimalParentNode | null = null;\n\n\tconstructor(\n\t\tpublic readonly nodeType: number,\n\t\townerDocument: Document | null = null,\n\t) {\n\t\tsuper();\n\t\tthis.ownerDocument = ownerDocument;\n\t}\n\n\tappend(...nodes: Array<Node | string>): void {\n\t\tfor (const node of nodes) {\n\t\t\tthis.appendChild(typeof node === 'string' ? createTextNode(node) : node);\n\t\t}\n\t}\n\n\tappendChild<TNode extends Node>(node: TNode): TNode {\n\t\tif ('parentNode' in node && node.parentNode && 'removeChild' in node.parentNode) {\n\t\t\t(node.parentNode as Node & { removeChild(node: Node): Node }).removeChild(node);\n\t\t}\n\n\t\tthis.childNodes.push(node);\n\t\t(node as Node & { ownerDocument: Document | null }).ownerDocument =\n\t\t\tthis.nodeType === MinimalNode.DOCUMENT_NODE ? (this as unknown as Document) : this.ownerDocument;\n\t\t(node as Node & { parentNode: MinimalParentNode | null }).parentNode = this as unknown as MinimalParentNode;\n\t\treturn node;\n\t}\n\n\tremoveChild<TNode extends Node>(node: TNode): TNode {\n\t\tconst nodeIndex = this.childNodes.indexOf(node);\n\n\t\tif (nodeIndex === -1) {\n\t\t\treturn node;\n\t\t}\n\n\t\tthis.childNodes.splice(nodeIndex, 1);\n\t\t(node as Node & { parentNode: MinimalParentNode | null }).parentNode = null;\n\t\treturn node;\n\t}\n\n\treplaceChildren(...nodes: Array<Node | string>): void {\n\t\tfor (const child of this.childNodes) {\n\t\t\t(child as Node & { parentNode: MinimalParentNode | null }).parentNode = null;\n\t\t}\n\n\t\tthis.childNodes = [];\n\t\tthis.append(...nodes);\n\t}\n\n\tget textContent(): string | null {\n\t\treturn this.childNodes.map((child) => child.textContent ?? '').join('');\n\t}\n\n\tset textContent(value: string | null) {\n\t\tthis.replaceChildren(value ?? '');\n\t}\n\n\tgetRootNode(): Node {\n\t\tlet current: Node = this as unknown as Node;\n\n\t\twhile ('parentNode' in current && current.parentNode) {\n\t\t\tcurrent = current.parentNode;\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nclass MinimalTextNode extends MinimalNode {\n\tconstructor(\n\t\tprivate value: string,\n\t\townerDocument: Document | null = getInstalledDocumentLike(),\n\t) {\n\t\tsuper(MinimalNode.TEXT_NODE, ownerDocument);\n\t}\n\n\toverride get textContent(): string {\n\t\treturn this.value;\n\t}\n\n\toverride set textContent(value: string | null) {\n\t\tthis.value = value ?? '';\n\t}\n}\n\nclass MinimalClassList {\n\tconstructor(private readonly element: MinimalElement) {}\n\n\tadd(...tokens: string[]): void {\n\t\tconst nextTokens = new Set(this.readTokens());\n\n\t\tfor (const token of tokens) {\n\t\t\tif (token !== '') {\n\t\t\t\tnextTokens.add(token);\n\t\t\t}\n\t\t}\n\n\t\tthis.writeTokens([...nextTokens]);\n\t}\n\n\tremove(...tokens: string[]): void {\n\t\tconst nextTokens = new Set(this.readTokens());\n\n\t\tfor (const token of tokens) {\n\t\t\tnextTokens.delete(token);\n\t\t}\n\n\t\tthis.writeTokens([...nextTokens]);\n\t}\n\n\ttoggle(token: string, force?: boolean): boolean {\n\t\tconst hasToken = this.contains(token);\n\t\tconst shouldAdd = force ?? !hasToken;\n\n\t\tif (shouldAdd) {\n\t\t\tthis.add(token);\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.remove(token);\n\t\treturn false;\n\t}\n\n\tcontains(token: string): boolean {\n\t\treturn this.readTokens().includes(token);\n\t}\n\n\ttoString(): string {\n\t\treturn this.value;\n\t}\n\n\tget value(): string {\n\t\treturn this.element.getAttribute('class') ?? '';\n\t}\n\n\tprivate readTokens(): string[] {\n\t\treturn this.value\n\t\t\t.split(/\\s+/)\n\t\t\t.map((token) => token.trim())\n\t\t\t.filter((token) => token.length > 0);\n\t}\n\n\tprivate writeTokens(tokens: string[]): void {\n\t\tif (tokens.length === 0) {\n\t\t\tthis.element.removeAttribute('class');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.element.setAttribute('class', tokens.join(' '));\n\t}\n}\n\nclass MinimalElement extends MinimalNode {\n\tprivate attributes = new Map<string, string>();\n\tprivate classListValue?: MinimalClassList;\n\tprivate datasetValue?: DOMStringMap;\n\tprivate fragmentHtml?: string;\n\tprivate fragmentText?: string;\n\n\tpublic readonly localName: string;\n\tpublic readonly tagName: string;\n\n\tconstructor(tagName = 'div', ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper(MinimalNode.ELEMENT_NODE, ownerDocument);\n\t\tthis.localName = tagName.toLowerCase();\n\t\tthis.tagName = this.localName.toUpperCase();\n\t}\n\n\tget id(): string {\n\t\treturn this.getAttribute('id') ?? '';\n\t}\n\n\tset id(value: string) {\n\t\tif (value === '') {\n\t\t\tthis.removeAttribute('id');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setAttribute('id', value);\n\t}\n\n\tget classList(): DOMTokenList {\n\t\tthis.classListValue ??= new MinimalClassList(this);\n\t\treturn this.classListValue as unknown as DOMTokenList;\n\t}\n\n\tget dataset(): DOMStringMap {\n\t\tthis.datasetValue ??= new Proxy(\n\t\t\t{},\n\t\t\t{\n\t\t\t\tdeleteProperty: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.removeAttribute(toDataAttributeName(property));\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tget: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this.getAttribute(toDataAttributeName(property)) ?? undefined;\n\t\t\t\t},\n\t\t\t\tgetOwnPropertyDescriptor: (_target, property) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tvalue: this.getAttribute(toDataAttributeName(property)) ?? undefined,\n\t\t\t\t\t\twritable: true,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\thas: (_target, property) => {\n\t\t\t\t\treturn typeof property === 'string' && this.hasAttribute(toDataAttributeName(property));\n\t\t\t\t},\n\t\t\t\townKeys: () => {\n\t\t\t\t\treturn this.getAttributeNames()\n\t\t\t\t\t\t.filter((name) => name.startsWith('data-'))\n\t\t\t\t\t\t.map((name) => toDatasetPropertyName(name.slice(5)));\n\t\t\t\t},\n\t\t\t\tset: (_target, property, value) => {\n\t\t\t\t\tif (typeof property !== 'string') {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setAttribute(toDataAttributeName(property), String(value));\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t},\n\t\t) as DOMStringMap;\n\n\t\treturn this.datasetValue;\n\t}\n\n\thasAttribute(name: string): boolean {\n\t\treturn this.attributes.has(name);\n\t}\n\n\tgetAttribute(name: string): string | null {\n\t\treturn this.attributes.get(name) ?? null;\n\t}\n\n\tgetAttributeNames(): string[] {\n\t\treturn Array.from(this.attributes.keys());\n\t}\n\n\tsetAttribute(name: string, value: unknown): void {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.attributes.set(name, String(value));\n\t}\n\n\ttoggleAttribute(name: string, force?: boolean): boolean {\n\t\tconst shouldHaveAttribute = force ?? !this.hasAttribute(name);\n\n\t\tif (shouldHaveAttribute) {\n\t\t\tthis.setAttribute(name, '');\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.removeAttribute(name);\n\t\treturn false;\n\t}\n\n\tremoveAttribute(name: string): void {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.attributes.delete(name);\n\t}\n\n\tquerySelector(): Element | null {\n\t\treturn null;\n\t}\n\n\tquerySelectorAll(): Element[] {\n\t\treturn [];\n\t}\n\n\tmatches(): boolean {\n\t\treturn false;\n\t}\n\n\tget outerHTML(): string {\n\t\tif (this.fragmentHtml !== undefined) {\n\t\t\treturn this.fragmentHtml;\n\t\t}\n\n\t\tconst attributes = Array.from(this.attributes.entries())\n\t\t\t.map(([name, value]) => ` ${name}=\"${escapeHtmlAttribute(value)}\"`)\n\t\t\t.join('');\n\n\t\treturn `<${this.localName}${attributes}>${this.innerHTML}</${this.localName}>`;\n\t}\n\n\tget innerHTML(): string {\n\t\treturn this.childNodes.map((child) => serializeNodeHtml(child)).join('');\n\t}\n\n\tset innerHTML(html: string) {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.fragmentText = undefined;\n\t\tthis.replaceChildren(...parseHtmlToNodes(html, this.ownerDocument));\n\t}\n\n\toverride get textContent(): string {\n\t\treturn this.fragmentText ?? super.textContent ?? '';\n\t}\n\n\toverride set textContent(value: string | null) {\n\t\tthis.fragmentHtml = undefined;\n\t\tthis.fragmentText = value ?? '';\n\t\tsuper.textContent = value;\n\t}\n\n\tsetSerializedFragment(fragmentHtml: string, fragmentText: string, attributes: Record<string, string>): void {\n\t\tthis.fragmentHtml = fragmentHtml;\n\t\tthis.fragmentText = fragmentText;\n\t\tthis.attributes = new Map(Object.entries(attributes));\n\t\tthis.replaceChildren();\n\t}\n}\n\nclass MinimalEvent {\n\tpublic readonly bubbles: boolean;\n\tpublic readonly cancelable: boolean;\n\tpublic readonly composed: boolean;\n\tpublic readonly type: string;\n\n\tconstructor(type: string, eventInitDict: EventInit = {}) {\n\t\tthis.type = type;\n\t\tthis.bubbles = eventInitDict.bubbles ?? false;\n\t\tthis.cancelable = eventInitDict.cancelable ?? false;\n\t\tthis.composed = eventInitDict.composed ?? false;\n\t}\n}\n\nclass MinimalCustomEvent<T = unknown> extends MinimalEvent {\n\tpublic readonly detail: T;\n\n\tconstructor(type: string, eventInitDict: CustomEventInit<T> = {}) {\n\t\tsuper(type, eventInitDict);\n\t\tthis.detail = eventInitDict.detail as T;\n\t}\n}\n\nclass MinimalHTMLElement extends MinimalElement {\n\tpublic isConnected = false;\n\n\tconstructor(tagName = 'div', ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper(tagName, ownerDocument);\n\t}\n\n\tinsertAdjacentHTML(_position: InsertPosition, html: string): void {\n\t\tthis.append(...parseHtmlToNodes(html, this.ownerDocument));\n\t}\n\n\tconnectedCallback?(): void;\n\tattributeChangedCallback?(name: string, oldValue: string | null, newValue: string | null): void;\n\tdisconnectedCallback?(): void;\n}\n\nclass MinimalHtmlScriptElement extends MinimalHTMLElement {\n\tconstructor(ownerDocument: Document | null = getInstalledDocumentLike()) {\n\t\tsuper('script', ownerDocument);\n\t}\n}\n\nclass MinimalDocument extends MinimalNode {\n\tconstructor() {\n\t\tsuper(MinimalNode.DOCUMENT_NODE);\n\t}\n\n\tcreateElement(tagName: string): HTMLElement {\n\t\treturn (tagName.toLowerCase() === 'script'\n\t\t\t? new MinimalHtmlScriptElement(this as unknown as Document)\n\t\t\t: new MinimalHTMLElement(tagName, this as unknown as Document)) as unknown as HTMLElement;\n\t}\n\n\tcreateTextNode(value: string): Text {\n\t\treturn new MinimalTextNode(value, this as unknown as Document) as unknown as Text;\n\t}\n\n\tquerySelector(): Element | null {\n\t\treturn null;\n\t}\n\n\tquerySelectorAll(): Element[] {\n\t\treturn [];\n\t}\n}\n\nclass MinimalCustomElementsRegistry implements MinimalCustomElementRegistry {\n\tprivate definitions = new Map<string, CustomElementConstructor>();\n\n\tdefine(name: string, constructor: CustomElementConstructor): void {\n\t\tif (this.definitions.has(name)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.definitions.set(name, constructor);\n\t}\n\n\tget(name: string): CustomElementConstructor | undefined {\n\t\treturn this.definitions.get(name);\n\t}\n}\n\nlet installedWindow: LightDomShimWindow | undefined;\n\nconst minimalCssNamespace: MinimalCssNamespace = {\n\tescape(value: string): string {\n\t\treturn escapeCssIdentifier(String(value));\n\t},\n};\n\nfunction createTextNode(value: string): Node {\n\treturn new MinimalTextNode(value, getInstalledDocumentLike()) as unknown as Node;\n}\n\nfunction getInstalledDocumentLike(): Document | null {\n\treturn ((globalThis as typeof globalThis & { document?: Document }).document ?? null) as Document | null;\n}\n\nfunction getExistingWindowLike(): LightDomShimWindow | undefined {\n\tconst globalScope = globalThis as typeof globalThis & {\n\t\tCSS?: MinimalCssNamespace;\n\t\tCustomEvent?: typeof CustomEvent;\n\t\tDocument?: typeof Document;\n\t\tElement?: typeof Element;\n\t\tEvent?: typeof Event;\n\t\tEventTarget?: typeof EventTarget;\n\t\tHTMLScriptElement?: typeof HTMLScriptElement;\n\t\tHTMLElement?: typeof HTMLElement;\n\t\tNode?: typeof Node;\n\t\tdocument?: Document;\n\t\tcustomElements?: MinimalCustomElementRegistry;\n\t\twindow?: LightDomShimWindow;\n\t};\n\tconst existingCustomElements = globalScope.customElements;\n\n\tif (\n\t\ttypeof globalScope.Node === 'undefined' ||\n\t\ttypeof globalScope.Document === 'undefined' ||\n\t\ttypeof globalScope.Element === 'undefined' ||\n\t\ttypeof globalScope.HTMLElement === 'undefined' ||\n\t\ttypeof globalScope.document === 'undefined' ||\n\t\t!existingCustomElements ||\n\t\ttypeof existingCustomElements.define !== 'function' ||\n\t\ttypeof existingCustomElements.get !== 'function'\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn (\n\t\tglobalScope.window ?? {\n\t\t\tCSS: globalScope.CSS ?? minimalCssNamespace,\n\t\t\tCustomEvent: (globalScope.CustomEvent ?? MinimalCustomEvent) as typeof CustomEvent,\n\t\t\tDocument: globalScope.Document,\n\t\t\tElement: globalScope.Element,\n\t\t\tEvent: (globalScope.Event ?? MinimalEvent) as typeof Event,\n\t\t\tEventTarget: (globalScope.EventTarget ?? EventTarget) as typeof EventTarget,\n\t\t\tHTMLScriptElement: (globalScope.HTMLScriptElement ?? globalScope.HTMLElement) as typeof HTMLScriptElement,\n\t\t\tHTMLElement: globalScope.HTMLElement,\n\t\t\tNode: globalScope.Node,\n\t\t\tdocument: globalScope.document,\n\t\t\tcustomElements: existingCustomElements,\n\t\t}\n\t);\n}\n\n/** Ensures that a minimal window-like SSR runtime is available and returns it. */\nexport function ensureLightDomShim(): LightDomShimWindow {\n\tconst existingWindow = getExistingWindowLike();\n\n\tif (existingWindow) {\n\t\treturn existingWindow;\n\t}\n\n\treturn installLightDomShim();\n}\n\n/**\n * Creates a reusable SSR environment that can prepare a component host with\n * authored light-DOM content before rendering.\n *\n * Adapters can reuse a single environment across multiple render calls when\n * they want a single host-preparation entrypoint backed by the installed shim.\n */\n\nexport function createServerRenderEnvironment(): ServerRenderEnvironment {\n\tensureLightDomShim();\n\n\treturn {\n\t\tprepareHost(host: HTMLElement, options: PrepareServerRenderHostOptions = {}): void {\n\t\t\tif (options.authoredContent !== undefined) {\n\t\t\t\thost.innerHTML = options.authoredContent;\n\t\t\t}\n\t\t},\n\t};\n}\n\n/**\n * Installs the smallest global surface needed to instantiate Radiant custom elements during SSR.\n */\nexport function installLightDomShim(): LightDomShimWindow {\n\tconst existingWindow = getExistingWindowLike();\n\n\tif (existingWindow) {\n\t\treturn existingWindow;\n\t}\n\n\tif (installedWindow) {\n\t\treturn installedWindow;\n\t}\n\n\tconst customElements = new MinimalCustomElementsRegistry();\n\tconst document = new MinimalDocument() as unknown as Document;\n\tconst EventConstructor = (globalThis.Event ?? MinimalEvent) as typeof Event;\n\tconst CustomEventConstructor = (globalThis.CustomEvent ?? MinimalCustomEvent) as typeof CustomEvent;\n\tconst DocumentConstructor = MinimalDocument as unknown as typeof Document;\n\tconst EventTargetConstructor = (globalThis.EventTarget ?? EventTarget) as typeof EventTarget;\n\tinstalledWindow = {\n\t\tCSS: (globalThis.CSS as MinimalCssNamespace | undefined) ?? minimalCssNamespace,\n\t\tCustomEvent: CustomEventConstructor,\n\t\tDocument: DocumentConstructor,\n\t\tElement: MinimalElement as unknown as typeof Element,\n\t\tEvent: EventConstructor,\n\t\tEventTarget: EventTargetConstructor,\n\t\tHTMLScriptElement: MinimalHtmlScriptElement as unknown as typeof HTMLScriptElement,\n\t\tHTMLElement: MinimalHTMLElement as unknown as typeof HTMLElement,\n\t\tNode: MinimalNode as unknown as typeof Node,\n\t\tdocument,\n\t\tcustomElements,\n\t};\n\n\tObject.assign(globalThis, {\n\t\tCSS: (globalThis.CSS as MinimalCssNamespace | undefined) ?? minimalCssNamespace,\n\t\tCustomEvent: CustomEventConstructor,\n\t\tDocument: DocumentConstructor,\n\t\tElement: MinimalElement,\n\t\tEvent: EventConstructor,\n\t\tEventTarget: EventTargetConstructor,\n\t\tHTMLScriptElement: MinimalHtmlScriptElement,\n\t\tHTMLElement: MinimalHTMLElement,\n\t\tNode: MinimalNode,\n\t\tdocument,\n\t\tcustomElements,\n\t\twindow: installedWindow,\n\t});\n\n\treturn installedWindow;\n}\n\nfunction createElementFromFragment(fragment: string, tag: ParsedHtmlTag, ownerDocument: Document | null): Node {\n\tconst element =\n\t\ttag.tagName === 'script'\n\t\t\t? (new MinimalHtmlScriptElement(ownerDocument) as MinimalElement)\n\t\t\t: new MinimalHTMLElement(tag.tagName, ownerDocument);\n\n\telement.setSerializedFragment(fragment, extractTextContent(tag.innerHtml), tag.attributes);\n\treturn element as unknown as Node;\n}\n\nfunction escapeHtmlAttribute(value: string): string {\n\treturn value.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>');\n}\n\nfunction extractTextContent(html: string): string {\n\treturn html.replace(/<!--.*?-->/gs, '').replace(/<[^>]+>/g, '');\n}\n\nfunction parseHtmlToNodes(html: string, ownerDocument: Document | null = getInstalledDocumentLike()): Node[] {\n\treturn collectTopLevelHtmlFragments(html).map((fragment) => {\n\t\tif (!fragment.startsWith('<')) {\n\t\t\treturn new MinimalTextNode(fragment, ownerDocument) as unknown as Node;\n\t\t}\n\n\t\tconst tag = parseHtmlTagToken(fragment, 0);\n\n\t\tif (!tag || tag.type !== 'open') {\n\t\t\treturn new MinimalTextNode(fragment, ownerDocument) as unknown as Node;\n\t\t}\n\n\t\treturn createElementFromFragment(fragment, tag, ownerDocument);\n\t});\n}\n\nfunction toDataAttributeName(property: string): string {\n\treturn `data-${property.replace(/([A-Z])/g, '-$1').toLowerCase()}`;\n}\n\nfunction toDatasetPropertyName(attributeName: string): string {\n\treturn attributeName.replace(/-([a-z])/g, (_match, character: string) => character.toUpperCase());\n}\n\nfunction escapeCssIdentifier(value: string): string {\n\tlet escaped = '';\n\n\tfor (let index = 0; index < value.length; index += 1) {\n\t\tconst character = value[index] ?? '';\n\t\tconst codePoint = character.codePointAt(0) ?? 0;\n\n\t\tif (codePoint === 0) {\n\t\t\tescaped += '\\uFFFD';\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isControlCharacter = (codePoint >= 0x0001 && codePoint <= 0x001f) || codePoint === 0x007f;\n\t\tconst startsWithDigit = index === 0 && codePoint >= 0x0030 && codePoint <= 0x0039;\n\t\tconst startsWithHyphenDigit =\n\t\t\tindex === 1 && codePoint >= 0x0030 && codePoint <= 0x0039 && (value[0] ?? '') === '-';\n\t\tconst isSingleHyphen = index === 0 && character === '-' && value.length === 1;\n\n\t\tif (isControlCharacter || startsWithDigit || startsWithHyphenDigit) {\n\t\t\tescaped += `\\\\${codePoint.toString(16)} `;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (\n\t\t\tcodePoint >= 0x0080 ||\n\t\t\tcharacter === '-' ||\n\t\t\tcharacter === '_' ||\n\t\t\t(codePoint >= 0x0030 && codePoint <= 0x0039) ||\n\t\t\t(codePoint >= 0x0041 && codePoint <= 0x005a) ||\n\t\t\t(codePoint >= 0x0061 && codePoint <= 0x007a)\n\t\t) {\n\t\t\tescaped += isSingleHyphen ? `\\\\${character}` : character;\n\t\t\tcontinue;\n\t\t}\n\n\t\tescaped += `\\\\${character}`;\n\t}\n\n\treturn escaped;\n}\n\nfunction serializeNodeHtml(node: Node): string {\n\tif (node.nodeType === MinimalNode.TEXT_NODE) {\n\t\treturn node.textContent ?? '';\n\t}\n\n\treturn 'outerHTML' in node && typeof node.outerHTML === 'string' ? node.outerHTML : (node.textContent ?? '');\n}\n",
|
|
18
20
|
"import type { JsxRenderable } from '@ecopages/jsx';\nimport type { RenderToStringOptions } from '@ecopages/jsx/server';\nimport type { SsrSerializableContextProvider } from '../context/context-provider';\nimport { withSsrContextProviders } from './context-ssr';\nimport type { ContextType, UnknownContext } from '../context/types';\nimport { getCustomElementTagName } from '../core/custom-element-metadata';\nimport { runLegacyPostConstructionInitializers } from '../decorators/legacy/instance-initializers';\nimport { createServerRenderEnvironment, type ServerRenderEnvironment } from './light-dom-shim';\nimport {\n\tresolveRegisteredRadiantElementPreview,\n\trenderRegisteredRadiantElementHost,\n\trenderRegisteredRadiantElementHostToString,\n} from './radiant-element-ssr-bridge';\nimport { withRadiantElementSsrRuntime } from '../core/radiant-element-ssr-registry';\nimport { getOrCreateRadiantElementSsrRuntime } from './radiant-element-ssr-runtime';\n\n/** Asset dependency emitted by a rendered fragment. */\nexport type RenderedComponentAsset =\n\t| {\n\t\t\t/** Browser module specifier that must be loaded to activate the fragment. */\n\t\t\tkind: 'script-module';\n\t\t\t/** Runtime loading policy for the module. */\n\t\t\tstage?: 'hydrate' | 'idle' | 'immediate';\n\t\t\t/** Module specifier or browser-importable URL. */\n\t\t\tsrc: string;\n\t }\n\t| {\n\t\t\t/** Module graph preload hint for adapters that control the document head. */\n\t\t\tkind: 'modulepreload';\n\t\t\t/** Module specifier or browser-importable URL. */\n\t\t\thref: string;\n\t }\n\t| {\n\t\t\t/** Stylesheet dependency required by the rendered fragment. */\n\t\t\tkind: 'style';\n\t\t\t/** Browser-importable stylesheet URL. */\n\t\t\thref: string;\n\t\t\t/** Optional media query applied to the stylesheet link. */\n\t\t\tmedia?: string;\n\t };\n\n/** Creates a module asset entry for a rendered fragment. */\nexport function scriptModuleAsset(\n\tsrc: string,\n\tstage: 'hydrate' | 'idle' | 'immediate' = 'hydrate',\n): RenderedComponentAsset {\n\treturn { kind: 'script-module', src, stage };\n}\n\n/** Creates a modulepreload hint for a rendered fragment. */\nexport function modulePreloadAsset(href: string): RenderedComponentAsset {\n\treturn { kind: 'modulepreload', href };\n}\n\n/** Creates a stylesheet asset entry for a rendered fragment. */\nexport function styleAsset(href: string, media?: string): RenderedComponentAsset {\n\treturn media ? { kind: 'style', href, media } : { kind: 'style', href };\n}\n\n/** Portable metadata for a server-rendered custom-element fragment. */\nexport type RenderedComponentMetadata = {\n\t/** Asset dependencies required by the rendered fragment. */\n\tassets: readonly RenderedComponentAsset[];\n\t/** Browser-importable client module URL used to register the component before hydration. */\n\tclientModuleUrl?: string;\n\t/** ISO timestamp describing when the fragment was rendered. */\n\tgeneratedAt: string;\n\t/** Custom-element tag name emitted at the fragment root. */\n\ttagName: string;\n};\n\n/** Canonical server render result returned by `renderComponent()`. */\nexport type RenderedComponent = {\n\t/** Serialized custom-element host markup. */\n\tmarkup: string;\n\t/** Transport-agnostic metadata that adapters can map onto headers or JSON. */\n\tmetadata: RenderedComponentMetadata;\n\t/** JSX-compatible preview value that can be embedded into a larger SSR shell. */\n\tpreview: JsxRenderable;\n};\n\n/** Serializable metadata for a server-rendered custom-element fragment. */\nexport type RenderedComponentPayload = {\n\t/** Asset dependencies required by the rendered fragment. */\n\tassets?: readonly RenderedComponentAsset[];\n\t/** Browser-importable client module URL used to register the component before hydration. */\n\tclientModuleSrc?: string;\n\t/** ISO timestamp describing when the fragment was rendered. */\n\tgeneratedAt: string;\n\t/** Serialized custom-element host markup. */\n\tmarkup: string;\n\t/** Custom-element tag name emitted at the fragment root. */\n\ttagName: string;\n};\n\n/** Full SSR result including a JSX-compatible preview value for shell composition. */\nexport type RenderedComponentWithPreview = RenderedComponentPayload & {\n\t/** JSX-compatible preview value that can be embedded into a larger SSR shell. */\n\tpreview: JsxRenderable;\n};\n\n/** Minimal component contract needed for framework-agnostic SSR helpers. */\nexport type ServerRenderableComponent = object & {\n\trenderHost?: () => JsxRenderable;\n\trenderHostToString?: (options?: RenderToStringOptions) => string;\n};\n\n/** Constructor shape for a server-renderable component. */\nexport type ServerRenderableComponentConstructor<TComponent extends ServerRenderableComponent> =\n\tCustomElementConstructor & {\n\t\tnew (): TComponent;\n\t};\n\n/**\n * Resolves the browser-importable client module URL for a component constructor.\n *\n * Use this when the server adapter can derive the client entry lazily instead of\n * hardcoding `clientModuleSrc` for every render call.\n */\nexport type ResolveRenderedComponentClientModule<TComponent extends ServerRenderableComponent> = (\n\tcomponent: ServerRenderableComponentConstructor<TComponent>,\n) => string | undefined | Promise<string | undefined>;\n\n/**\n * Resolves fragment assets for a component constructor.\n *\n * Prefer this over `resolveClientModuleSrc(...)` for new adapters so assets can\n * describe scripts, styles, and preload hints through one transport-agnostic shape.\n */\nexport type ResolveRenderedComponentAssets<TComponent extends ServerRenderableComponent> = (\n\tcomponent: ServerRenderableComponentConstructor<TComponent>,\n) => readonly RenderedComponentAsset[] | undefined | Promise<readonly RenderedComponentAsset[] | undefined>;\n\n/**\n * Prepares a component host before SSR so slot-aware logic can observe authored\n * light-DOM content during render.\n */\nexport type PrepareRenderedComponentHost<TComponent extends ServerRenderableComponent> = (\n\thost: TComponent & HTMLElement,\n\tenvironment: ServerRenderEnvironment,\n) => void;\n\n/**\n * Ambient SSR context value visible while a standalone component render runs.\n *\n * This lets adapters provide ancestor-like context to `consumeContext(...)` and\n * `contextSelector(...)` without needing to instantiate a real provider host.\n */\nexport type RenderComponentSsrContextEntry<TContext extends UnknownContext = UnknownContext> = {\n\tcontext: TContext;\n\tvalue: ContextType<TContext>;\n};\n\ntype RenderComponentSharedOptions<TComponent extends ServerRenderableComponent> = {\n\t/** Asset dependencies required by the rendered fragment. */\n\tassets?: readonly RenderedComponentAsset[];\n\t/** Serialized authored light-DOM content to attach to the host before rendering. */\n\tauthoredContent?: string;\n\t/** Browser-importable client module URL used to register the component before hydration. */\n\tclientModuleSrc?: string;\n\t/** Initializes the component instance before the host is rendered. */\n\tinitialize?: (component: TComponent) => void;\n\t/** SSR environment responsible for preparing the host runtime and authored content. */\n\tenvironment?: ServerRenderEnvironment;\n\t/**\n\t * Dedicated host-preparation hook for slot-aware SSR.\n\t *\n\t * Use this when the server needs to append or mutate authored light-DOM\n\t * nodes directly instead of passing `authoredContent` as a string.\n\t */\n\tprepareHost?: PrepareRenderedComponentHost<TComponent>;\n\t/**\n\t * Ambient SSR context entries that should be visible while the component is\n\t * instantiated and rendered.\n\t *\n\t * This solves standalone fragment renders that need to consume context from a\n\t * parent-like server environment.\n\t */\n\tssrContext?: readonly RenderComponentSsrContextEntry[];\n\t/** Clock override used by tests and adapters that need deterministic timestamps. */\n\tnow?: () => Date;\n\t/** JSX server-renderer options forwarded to `renderHostToString()`. */\n\trenderOptions?: RenderToStringOptions;\n\t/** Lazy asset resolver used when `assets` are not provided directly. */\n\tresolveAssets?: ResolveRenderedComponentAssets<TComponent>;\n\t/** Lazy client-module resolver used when `clientModuleSrc` is not provided directly. */\n\tresolveClientModuleSrc?: ResolveRenderedComponentClientModule<TComponent>;\n\t/** Explicit tag-name override when `@customElement(...)` metadata is not desired. */\n\ttagName?: string;\n};\n\n/** Options accepted by the reusable SSR component rendering helpers. */\nexport type RenderComponentOptions<TComponent extends ServerRenderableComponent> =\n\tRenderComponentSharedOptions<TComponent> &\n\t\t(\n\t\t\t| {\n\t\t\t\t\tcomponent: ServerRenderableComponentConstructor<TComponent>;\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\tload: () => Promise<ServerRenderableComponentConstructor<TComponent>>;\n\t\t\t }\n\t\t);\n\n/** Call-site options used when the component constructor is passed directly. */\nexport type RenderComponentCallOptions<TComponent extends ServerRenderableComponent> =\n\tRenderComponentSharedOptions<TComponent>;\n\n/**\n * Serializes a custom element into HTML, inferring its tag name from\n * `@customElement(...)` metadata when the caller does not provide one.\n */\nexport function renderComponentToString<TComponent extends ServerRenderableComponent>(\n\tcomponent: ServerRenderableComponentConstructor<TComponent>,\n\toptions?: RenderComponentCallOptions<TComponent>,\n): Promise<string>;\n\nexport function renderComponentToString<TComponent extends ServerRenderableComponent>(\n\toptions: RenderComponentOptions<TComponent>,\n): Promise<string>;\n\nexport async function renderComponentToString<TComponent extends ServerRenderableComponent>(\n\tcomponentOrOptions: ServerRenderableComponentConstructor<TComponent> | RenderComponentOptions<TComponent>,\n\toptions?: RenderComponentCallOptions<TComponent>,\n): Promise<string> {\n\treturn (await renderResolvedComponent(normalizeRenderComponentOptions(componentOrOptions, options))).markup;\n}\n\n/**\n * Renders a custom element into the canonical portable server-rendered shape,\n * separating transport-agnostic metadata from any HTTP-specific adapter.\n */\nexport function renderComponent<TComponent extends ServerRenderableComponent>(\n\tcomponent: ServerRenderableComponentConstructor<TComponent>,\n\toptions?: RenderComponentCallOptions<TComponent>,\n): Promise<RenderedComponent>;\n\nexport function renderComponent<TComponent extends ServerRenderableComponent>(\n\toptions: RenderComponentOptions<TComponent>,\n): Promise<RenderedComponent>;\n\nexport async function renderComponent<TComponent extends ServerRenderableComponent>(\n\tcomponentOrOptions: ServerRenderableComponentConstructor<TComponent> | RenderComponentOptions<TComponent>,\n\toptions?: RenderComponentCallOptions<TComponent>,\n): Promise<RenderedComponent> {\n\treturn renderResolvedComponent(normalizeRenderComponentOptions(componentOrOptions, options));\n}\n\n/**\n * Serializes a custom element into a fragment payload that frameworks can\n * attach to any response shape they prefer.\n */\nexport function renderComponentToPayload<TComponent extends ServerRenderableComponent>(\n\tcomponent: ServerRenderableComponentConstructor<TComponent>,\n\toptions?: RenderComponentCallOptions<TComponent>,\n): Promise<RenderedComponentPayload>;\n\nexport function renderComponentToPayload<TComponent extends ServerRenderableComponent>(\n\toptions: RenderComponentOptions<TComponent>,\n): Promise<RenderedComponentPayload>;\n\nexport async function renderComponentToPayload<TComponent extends ServerRenderableComponent>(\n\tcomponentOrOptions: ServerRenderableComponentConstructor<TComponent> | RenderComponentOptions<TComponent>,\n\toptions?: RenderComponentCallOptions<TComponent>,\n): Promise<RenderedComponentPayload> {\n\treturn toRenderedComponentPayload(\n\t\tawait renderResolvedComponent(normalizeRenderComponentOptions(componentOrOptions, options)),\n\t);\n}\n\n/**\n * Renders a component into both fragment metadata and a JSX-compatible preview\n * value that can be embedded into a larger server-rendered shell.\n */\nexport function renderComponentWithPreview<TComponent extends ServerRenderableComponent>(\n\tcomponent: ServerRenderableComponentConstructor<TComponent>,\n\toptions?: RenderComponentCallOptions<TComponent>,\n): Promise<RenderedComponentWithPreview>;\n\nexport function renderComponentWithPreview<TComponent extends ServerRenderableComponent>(\n\toptions: RenderComponentOptions<TComponent>,\n): Promise<RenderedComponentWithPreview>;\n\nexport async function renderComponentWithPreview<TComponent extends ServerRenderableComponent>(\n\tcomponentOrOptions: ServerRenderableComponentConstructor<TComponent> | RenderComponentOptions<TComponent>,\n\toptions?: RenderComponentCallOptions<TComponent>,\n): Promise<RenderedComponentWithPreview> {\n\treturn toRenderedComponentWithPreview(\n\t\tawait renderResolvedComponent(normalizeRenderComponentOptions(componentOrOptions, options)),\n\t);\n}\n\nasync function renderResolvedComponent<TComponent extends ServerRenderableComponent>(\n\tnormalizedOptions: RenderComponentOptions<TComponent>,\n): Promise<RenderedComponent> {\n\treturn withRadiantElementSsrRuntime(getOrCreateRadiantElementSsrRuntime(), async () => {\n\t\tconst environment = normalizedOptions.environment ?? createServerRenderEnvironment();\n\t\tconst restoreAmbientContext = withSsrContextProviders(\n\t\t\tcreateAmbientSsrContextProviders(normalizedOptions.ssrContext),\n\t\t);\n\n\t\ttry {\n\t\t\tconst Component =\n\t\t\t\t'component' in normalizedOptions ? normalizedOptions.component : await normalizedOptions.load();\n\t\t\tconst component = new Component();\n\t\t\trunLegacyPostConstructionInitializers(component);\n\t\t\tprepareRenderedComponentHost(\n\t\t\t\tenvironment,\n\t\t\t\tcomponent,\n\t\t\t\tnormalizedOptions.authoredContent,\n\t\t\t\tnormalizedOptions.prepareHost,\n\t\t\t);\n\t\t\tnormalizedOptions.initialize?.(component);\n\n\t\t\tconst resolvedClientModuleSrc =\n\t\t\t\tnormalizedOptions.clientModuleSrc ?? (await normalizedOptions.resolveClientModuleSrc?.(Component));\n\t\t\tconst resolvedAssets =\n\t\t\t\tnormalizedOptions.assets ?? (await normalizedOptions.resolveAssets?.(Component)) ?? [];\n\t\t\tconst assets = mergeRenderedComponentAssets(resolvedAssets, resolvedClientModuleSrc);\n\t\t\tconst clientModuleSrc = resolvePrimaryClientModuleSrc(assets) ?? resolvedClientModuleSrc;\n\t\t\tconst tagName = normalizedOptions.tagName ?? resolveRenderedComponentTagName(Component);\n\t\t\tconst generatedAt = (normalizedOptions.now ?? createDefaultRenderTimestamp)().toISOString();\n\t\t\tconst renderOptions = normalizeRenderOptions(normalizedOptions.renderOptions);\n\t\t\tconst markup =\n\t\t\t\trenderRegisteredRadiantElementHostToString(component, renderOptions) ??\n\t\t\t\trequireServerRenderableMarkup(component, renderOptions);\n\t\t\tconst preview = resolveRenderedComponentPreview(component, markup);\n\n\t\t\treturn {\n\t\t\t\tmarkup,\n\t\t\t\tmetadata: {\n\t\t\t\t\tassets,\n\t\t\t\t\tclientModuleUrl: clientModuleSrc,\n\t\t\t\t\tgeneratedAt,\n\t\t\t\t\ttagName,\n\t\t\t\t},\n\t\t\t\tpreview,\n\t\t\t};\n\t\t} finally {\n\t\t\trestoreAmbientContext();\n\t\t}\n\t});\n}\n\n/**\n * Chooses the preview renderable returned by `renderComponent()`.\n *\n * Falls back to the serialized host markup when a generic server-renderable\n * component does not expose a JSX preview surface.\n */\nfunction resolveRenderedComponentPreview<TComponent extends ServerRenderableComponent>(\n\tcomponent: TComponent,\n\tmarkup: string,\n): JsxRenderable {\n\treturn (\n\t\tresolveRegisteredRadiantElementPreview(component, markup) ??\n\t\trenderRegisteredRadiantElementHost(component) ??\n\t\tcomponent.renderHost?.() ?? { nodeType: 1, outerHTML: markup }\n\t);\n}\n\nfunction prepareRenderedComponentHost<TComponent extends ServerRenderableComponent>(\n\tenvironment: ServerRenderEnvironment,\n\tcomponent: TComponent,\n\tauthoredContent: string | undefined,\n\tprepareHost: PrepareRenderedComponentHost<TComponent> | undefined,\n): void {\n\tif (!canPrepareSsrHost(component)) {\n\t\tif (authoredContent === undefined && prepareHost === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`${component.constructor.name} cannot prepare SSR host content because it does not expose an innerHTML host surface.`,\n\t\t);\n\t}\n\n\tenvironment.prepareHost(component, { authoredContent });\n\tprepareHost?.(component, environment);\n}\n\n/**\n * Wraps ad-hoc `ssrContext` values in provider-like objects so the existing SSR\n * context stack can resolve them exactly like real ancestor providers.\n */\nfunction createAmbientSsrContextProviders(\n\tentries: readonly RenderComponentSsrContextEntry[] | undefined,\n): SsrSerializableContextProvider[] {\n\tif (!entries || entries.length === 0) {\n\t\treturn [];\n\t}\n\n\treturn entries.map((entry) => ({\n\t\tgetContext: () => entry.value,\n\t\tgetContextKey: () => entry.context,\n\t\trenderHydrationScript: () => undefined,\n\t\trenderHydrationScriptTag: () => undefined,\n\t}));\n}\n\n/**\n * Drops the preview renderable so the result can be sent through lightweight\n * framework adapters or JSON/HTML fragment endpoints.\n */\nexport function toRenderedComponentPayload(\n\trender: RenderedComponentWithPreview | RenderedComponent,\n): RenderedComponentPayload {\n\tif ('metadata' in render) {\n\t\treturn {\n\t\t\tassets: render.metadata.assets,\n\t\t\tclientModuleSrc: render.metadata.clientModuleUrl,\n\t\t\tgeneratedAt: render.metadata.generatedAt,\n\t\t\tmarkup: render.markup,\n\t\t\ttagName: render.metadata.tagName,\n\t\t};\n\t}\n\n\tconst { preview: _preview, ...payload } = render;\n\treturn payload;\n}\nfunction toRenderedComponentWithPreview(render: RenderedComponent): RenderedComponentWithPreview {\n\treturn {\n\t\tassets: render.metadata.assets,\n\t\tclientModuleSrc: render.metadata.clientModuleUrl,\n\t\tgeneratedAt: render.metadata.generatedAt,\n\t\tmarkup: render.markup,\n\t\tpreview: render.preview,\n\t\ttagName: render.metadata.tagName,\n\t};\n}\n\nfunction createDefaultRenderTimestamp(): Date {\n\treturn new Date();\n}\n\nfunction createRenderedComponentClientModuleAssets(\n\tclientModuleSrc: string | undefined,\n): readonly RenderedComponentAsset[] {\n\tif (!clientModuleSrc) {\n\t\treturn [];\n\t}\n\n\treturn [scriptModuleAsset(clientModuleSrc)];\n}\n\nexport function mergeRenderedComponentAssets(\n\tassets: readonly RenderedComponentAsset[],\n\tclientModuleSrc: string | undefined,\n): readonly RenderedComponentAsset[] {\n\tif (!clientModuleSrc) {\n\t\treturn assets;\n\t}\n\n\tif (assets.some((asset) => asset.kind === 'script-module' && asset.src === clientModuleSrc)) {\n\t\treturn assets;\n\t}\n\n\treturn [...createRenderedComponentClientModuleAssets(clientModuleSrc), ...assets];\n}\n\nexport function resolvePrimaryClientModuleSrc(assets: readonly RenderedComponentAsset[]): string | undefined {\n\treturn assets.find((asset) => asset.kind === 'script-module')?.src;\n}\n\nfunction normalizeRenderComponentOptions<TComponent extends ServerRenderableComponent>(\n\tcomponentOrOptions: ServerRenderableComponentConstructor<TComponent> | RenderComponentOptions<TComponent>,\n\toptions?: RenderComponentCallOptions<TComponent>,\n): RenderComponentOptions<TComponent> {\n\tif (typeof componentOrOptions === 'function') {\n\t\treturn {\n\t\t\t...options,\n\t\t\tcomponent: componentOrOptions,\n\t\t};\n\t}\n\n\treturn componentOrOptions;\n}\n\nexport function normalizeRenderOptions(options: RenderToStringOptions | undefined): RenderToStringOptions {\n\tif (options?.mode !== undefined || options?.hydrate !== undefined) {\n\t\treturn options;\n\t}\n\n\treturn {\n\t\t...options,\n\t\tmode: 'hydrate',\n\t};\n}\n\nfunction canPrepareSsrHost<TComponent extends ServerRenderableComponent>(\n\tcomponent: TComponent,\n): component is TComponent & HTMLElement {\n\treturn 'innerHTML' in component;\n}\n\nfunction requireServerRenderableMarkup<TComponent extends ServerRenderableComponent>(\n\tcomponent: TComponent,\n\toptions: RenderToStringOptions,\n): string {\n\tif (typeof component.renderHostToString === 'function') {\n\t\treturn component.renderHostToString(options);\n\t}\n\n\tthrow new Error(\n\t\t`${component.constructor.name} cannot be server-rendered without a registered Radiant SSR host or renderHostToString().`,\n\t);\n}\n\nfunction resolveRenderedComponentTagName(target: CustomElementConstructor): string {\n\tconst tagName = getCustomElementTagName(target);\n\n\tif (!tagName) {\n\t\tthrow new Error(`${target.name} is missing @customElement metadata.`);\n\t}\n\n\treturn tagName;\n}\n"
|
|
19
21
|
],
|
|
20
|
-
"mappings": "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",
|
|
21
|
-
"debugId": "
|
|
22
|
+
"mappings": "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",
|
|
23
|
+
"debugId": "964A38724EE42F4C64756E2164756E21",
|
|
22
24
|
"names": []
|
|
23
25
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var aR=((R)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(R,{get:(P,g)=>(typeof require<"u"?require:P)[g]}):R)(function(R){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+R+'" is not supported')});var $R=Symbol.for("@ecopages/radiant.legacy-instance-initializers"),jR=Symbol.for("@ecopages/radiant.legacy-post-construction-initializers"),lR=Symbol.for("@ecopages/radiant.legacy-executed-post-construction-initializers");function Pg(R,P){HR(R,$R,P)}function gg(R,P){HR(R,jR,P)}function fg(R){c(R,$R)}function C(R){let P=R;c(R,jR,P[lR]??=new Set)}function HR(R,P,g){let f=R,$=Object.prototype.hasOwnProperty.call(f,P)?f[P]:void 0;if(Array.isArray($)){$.push(g);return}Object.defineProperty(f,P,{value:[g]})}function c(R,P,g,f=Object.getPrototypeOf(R)){if(!f||f===Object.prototype)return;c(R,P,g,Object.getPrototypeOf(f));let $=f[P];if(!Array.isArray($))return;for(let j of $){if(g?.has(j))continue;j(R),g?.add(j)}}function BR(R){switch(R){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function tR(R){switch(typeof R){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(R))return"array";if(Object.prototype.toString.call(R)==="[object Object]")return"object"}function nR(R){switch(R){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function oR(R){try{return JSON.parse(R)}catch{throw TypeError("Invalid JSON string")}}var eR={array(R){let P=oR(R);if(!Array.isArray(P))throw TypeError(`Expected an array but got a value of type "${typeof P}"`);return P},boolean(R){return!(R==="0"||String(R).toLowerCase()==="false")},number(R){return Number(R.replace(/_/g,""))},object(R){let P=JSON.parse(R);if(P===null||typeof P!=="object"||Array.isArray(P))throw TypeError(`expected value of type "object" but instead got value "${R}" of type "${tR(P)}"`);return P},string(R){return R}},qR={default:FR,array:QR,object:QR};function QR(R){return JSON.stringify(R)}function FR(R){return`${R}`}function JR(R,P){let g=BR(P);if(!g)throw TypeError(`[radiant-element] Unknown type "${P}"`);return eR[g](R)}function bR(R,P){let g=BR(P);if(!g)throw TypeError(`[radiant-element] Unknown type "${P}"`);return(qR[g]??qR.default??FR)(R)}function RP(R){return typeof R==="boolean"}function PP(R){return typeof R==="number"}function gP(R){return typeof R==="string"}function fP(R){return Array.isArray(R)}function $P(R){return typeof R==="object"&&!Array.isArray(R)&&R!==null}function jg(R,P){switch(R){case Boolean:return RP(P);case Number:return PP(P);case String:return gP(P);case Array:return fP(P);case Object:return $P(P);default:return!1}}var Hg=(R,P,g,f)=>{if(P===Boolean){let j=R.getAttribute(g);if(j===null)return f;return j===""?!0:JR(j,P)}let $=R.getAttribute(g);return $!==null?JR($,P):f??nR(P)};import{getActiveSsrScopeValue as jP,withActiveSsrScopeValue as HP}from"@ecopages/jsx/server";var ZR=Symbol.for("@ecopages/radiant.element-ssr-runtime");function Jg(){return jP(ZR)}function Z(R,P){return HP(ZR,R,P)}var WR=Symbol.for("@ecopages/radiant.controllerIdentifier");function p(R,P){R[WR]=P}function XR(R){return R[WR]}var B="data-controller",GR=Symbol.for("@ecopages/radiant.controller-registry-state");function qP(){let R=globalThis,P=R[GR];if(P)return P;let g={activeRuntimes:new Set,controllerRegistrationStrategy:"keep-current",controllerRegistry:new Map};return R[GR]=g,g}var k=qP(),F=k.controllerRegistry,W=k.activeRuntimes;function UR(R){let P=R.getAttribute(B);if(!P)return[];return P.split(/\s+/).map((g)=>g.trim()).filter((g)=>g.length>0)}function I(R,P){if(R instanceof Element&&R.hasAttribute(B))P(R);for(let g of Array.from(R.querySelectorAll(`[${B}]`)))P(g)}class KR{root;controllersByElement=new Map;observer;stopped=!1;constructor(R=document){this.root=R;this.start()}stop(){if(this.stopped)return;this.stopped=!0,this.observer?.disconnect(),this.observer=void 0;for(let[R,P]of this.controllersByElement)for(let[g]of P)this.disconnectController(R,g);W.delete(this)}reconcileRegisteredController(R){I(this.root,(P)=>{if(!UR(P).includes(R))return;this.connectController(P,R)})}replaceRegisteredController(R){for(let[P,g]of Array.from(this.controllersByElement.entries())){if(!g.has(R))continue;this.disconnectController(P,R)}this.reconcileRegisteredController(R)}start(){if(I(this.root,(P)=>{this.reconcileElement(P)}),typeof MutationObserver>"u"){W.add(this);return}this.observer=new MutationObserver((P)=>{for(let g of P){if(g.type==="attributes"&&g.target instanceof Element){this.reconcileElement(g.target);continue}for(let f of Array.from(g.removedNodes)){if(!(f instanceof Element))continue;I(f,($)=>{this.disconnectElementControllers($)})}for(let f of Array.from(g.addedNodes)){if(!(f instanceof Element))continue;I(f,($)=>{this.reconcileElement($)})}}});let R=this.root instanceof Document?this.root.documentElement:this.root;this.observer.observe(R,{attributeFilter:[B],attributes:!0,childList:!0,subtree:!0}),W.add(this)}reconcileElement(R){let P=new Set(UR(R)),g=this.controllersByElement.get(R);if(g){for(let f of g.keys())if(!P.has(f))this.disconnectController(R,f)}for(let f of P)this.connectController(R,f)}connectController(R,P){let g=F.get(P);if(!g)return;let f=this.controllersByElement.get(R);if(!f)f=new Map,this.controllersByElement.set(R,f);if(f.has(P))return;let $=new g(R);f.set(P,$),$.connect()}disconnectController(R,P){let g=this.controllersByElement.get(R);if(!g)return;let f=g.get(P);if(!f)return;if(f.disconnect(),g.delete(P),g.size===0)this.controllersByElement.delete(R)}disconnectElementControllers(R){let P=this.controllersByElement.get(R);if(!P)return;for(let g of Array.from(P.keys()))this.disconnectController(R,g)}}function QP(R,P){let g=F.get(R);if(g)return g;p(P,R),F.set(R,P);for(let f of Array.from(W))f.reconcileRegisteredController(R);return P}function Zg(R){return F.has(R)}function Wg(R){return F.get(R)}function JP(R,P){if(F.get(R)===P)return P;p(P,R),F.set(R,P);for(let f of Array.from(W))f.replaceRegisteredController(R);return P}function YR(R){k.controllerRegistrationStrategy=R}function Xg(){YR("replace")}function Gg(){YR("keep-current")}function Ug(R,P){if(k.controllerRegistrationStrategy==="replace")return JP(R,P);return QP(R,P)}function Kg(R=document){return new KR(R)}function Yg(){for(let R of Array.from(W))R.stop()}var xR=Symbol.for("@ecopages/radiant.customElementTagName");function wg(R,P){R[xR]=P}function D(R){return R[xR]}var r=Symbol.for("@ecopages/radiant.reactivePropDefinitions");function Vg(R,P,g){let f=R.constructor,$=f[r]??[];if($.some((j)=>j.name===P))return;$.push({name:P,options:g}),f[r]=$}function wR(R){return(R.constructor[r]??[]).slice()}var AR=Symbol.for("@ecopages/radiant.ssr-context-provider-resolver");function VR(){return globalThis}function hR(R){VR()[AR]=R}function Sg(R){return VR()[AR]?.(R)}var V;function yR(){if(V!==void 0)return V;try{let{AsyncLocalStorage:R}=(()=>{throw new Error("Cannot require module "+"node:async_hooks");})();return V=new R,V}catch{return V=null,null}}var SR=Symbol.for("@ecopages/radiant.ssr-context-fallback-stack");function TR(){let R=globalThis;return R[SR]??=[],R[SR]}function X(R){if(R.length===0)return()=>{return};let P=new Map;for(let $ of R)P.set($.getContextKey(),$);let g=yR();if(g){let $=g.getStore()??[],j=[...$,P];return g.enterWith(j),()=>{g.enterWith($)}}let f=TR();return f.push(P),()=>{let $=f.lastIndexOf(P);if($>=0)f.splice($,1)}}function _R(R){let P=yR()?.getStore()??TR();for(let g=P.length-1;g>=0;g-=1){let f=P[g]?.get(R);if(f)return f}return}function _g(R){let P=_R(R);if(!P)return;return P.getContext()}hR((R)=>_R(R));class i{host;constructor(R){this.host=R}renderHost(){return{nodeType:1,outerHTML:this.renderHostToString({mode:"hydrate"})}}renderHostToString(R={},P=this.getHostAttributes()){let g=this.getTagName(),f=X(this.host.getContextProviders());try{return`<${g}${BP(P)}>${this.renderHostContent(R)}</${g}>`}finally{f()}}renderHostContent(R){let P=this.host.renderViewToString(R),g=this.host.getAuthoredHydrationScriptMarkup?.()??"",f=this.host.getSlotProjectionScriptTag?.()??"";if(!(R.mode==="hydrate"||R.mode===void 0&&R.hydrate===!0))return`${P}${g}${f}`;let j=this.host.getHydrationBindings().map((H)=>H.renderHydrationScriptTag()).filter((H)=>typeof H==="string").join("");return`${P}${f}${j}`}getHostAttributes(){let R={},P=new Set;for(let g of this.host.getReactiveProperties()){let f=this.host.getPropertyValue(g.name);if(f===void 0||f===null||f===!1)continue;R[g.attribute]=String(g.converter.toAttribute(f)),P.add(g.attribute)}for(let g of this.host.getReactivePropDefinitions()){let f=g.options.attribute??g.name;if(P.has(f))continue;let $=this.host.getPropertyValue(g.name);if($===void 0||$===null||$===!1)continue;R[f]=String(bR($,g.options.type)),P.add(f)}for(let g of this.host.listAttributeNames()){let f=this.host.getAttributeValue(g);if(f!==null)R[g]=f}return R}getTagName(){let R=D(this.host.constructor);if(!R)throw Error(`${this.host.constructor.name} is missing @customElement metadata.`);return R}}function BP(R){return Object.entries(R).map(([P,g])=>` ${P}="${FP(g)}"`).join("")}function FP(R){return R.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function G(R){if(bP(R))return R;return}function bP(R){return typeof R.constructor==="function"&&typeof R.getAttribute==="function"&&typeof R.getAuthoredHydrationScriptMarkup==="function"&&typeof R.getContextProviders==="function"&&typeof R.getHydrationBindings==="function"&&typeof R.getReactiveProperties==="function"&&typeof R.getSlotProjectionScriptTag==="function"&&typeof R.resolveTrackedRenderOutput==="function"&&typeof R.renderViewToString==="function"}function LR(R){let P=G(R);if(!P)throw Error("Radiant SSR runtime requires a server extraction host shape on the component.");return{constructor:P.constructor,getAuthoredHydrationScriptMarkup:()=>P.getAuthoredHydrationScriptMarkup(),getContextProviders:()=>P.getContextProviders(),getHydrationBindings:()=>P.getHydrationBindings(),getSlotProjectionScriptTag:()=>P.getSlotProjectionScriptTag(),renderViewToString:(g)=>P.renderViewToString(g),getReactiveProperties:()=>P.getReactiveProperties(),getReactivePropDefinitions:()=>wR(R),getPropertyValue:(g)=>Reflect.get(R,g),listAttributeNames:()=>P.getAttributeNames(),getAttributeValue:(g)=>P.getAttribute(g)}}import{renderToString as ZP}from"@ecopages/jsx/server";import{createServerHydrationBindingState as CR,isServerRenderHydrationActive as IR,withForcedServerCustomElementRendering as WP,withServerCustomElementRenderHook as XP,withServerHydrationBindingState as kR}from"@ecopages/jsx/server";var E;function DR(R){return new i(LR(R))}function z(R){return{nodeType:1,outerHTML:U(R,{mode:"hydrate"})}}function ER(R){if(h(R))return z(R);if(!O(R))return;return R.renderHost?.()??{nodeType:1,outerHTML:R.renderHostToString({mode:"hydrate"})}}function U(R,P={}){return a(()=>DR(R).renderHostToString(P,NR(R)))}function zR(R,P={}){if(h(R))return U(R,P);if(!O(R))return;return R.renderHostToString(P)}function OR(R,P){if(h(R))return z(R);if(!O(R))return;return R.renderHost?.()??{nodeType:1,outerHTML:P}}function GP(R,P={}){return a(()=>m(()=>ZP(KP(R).value,P)))}function NR(R){return DR(R).getHostAttributes()}function UP(R){if(!h(R))return;return{renderHost:()=>z(R),renderHostToString:(P)=>U(R,P)}}function pg(R){return G(R)}function m(R){return WP(()=>XP(({instance:P})=>{if(h(P))return{nodeType:1,get outerHTML(){let f=IR(),$={hydrate:f,mode:f?"hydrate":"plain"};if(!f)return U(P,$);return kR(CR(),()=>U(P,$))}};if(!O(P))return;let g=P;return{nodeType:1,get outerHTML(){let f=IR();if(!f)return g.renderHostToString({hydrate:f,mode:f?"hydrate":"plain"});return kR(CR(),()=>g.renderHostToString({hydrate:f,mode:f?"hydrate":"plain"}))}}},R))}function KP(R){if(YP(R))return R.resolveTrackedRenderOutput();let P=G(R);if(!P)throw Error("Radiant SSR runtime requires tracked render output support on the component.");return P.resolveTrackedRenderOutput()}function h(R){if(typeof R!=="object"||R===null)return!1;return G(R)!==void 0}function O(R){if(typeof R!=="object"||R===null)return!1;return typeof R.renderHostToString==="function"}function YP(R){if(typeof R!=="object"||R===null)return!1;return typeof R.resolveTrackedRenderOutput==="function"}function K(){if(E)return E;return E={getHostAttributes:NR,renderHost:z,renderHostToString:U,resolveRenderBridge:UP,renderView:GP},E}function a(R){return Z(K(),R)}var N=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);function MR(R){let P=[],g=0;while(g<R.length){let f=g;if(R.startsWith("<!--",g)){let H=R.indexOf("-->",g+4);g=H===-1?R.length:H+3,P.push(R.slice(f,g));continue}if(R[g]!=="<"){let H=R.indexOf("<",g);g=H===-1?R.length:H,P.push(R.slice(f,g));continue}let $=S(R,g);if(!$){P.push(R.slice(f));break}if($.type!=="open"||$.selfClosing||N.has($.tagName)){g=$.end,P.push(R.slice(f,g));continue}g=$.end;let j=1;while(g<R.length&&j>0){let H=R.indexOf("<",g);if(H===-1){g=R.length;break}let q=S(R,H);if(!q){g=R.length;break}if(g=q.end,q.type==="comment"||q.type==="declaration")continue;if(q.type==="open"&&!q.selfClosing&&!N.has(q.tagName)){j+=1;continue}if(q.type==="close")j-=1}P.push(R.slice(f,g))}return P.filter((f)=>f!=="")}function xP(R,P){let g;for(let f=P+1;f<R.length;f+=1){let $=R[f];if(g){if($===g)g=void 0;continue}if($==='"'||$==="'"){g=$;continue}if($===">")return f+1}return R.length}function wP(R){let P={},g=/([:^@A-Za-z0-9_.-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>/]+)))?/g;for(let f of R.matchAll(g)){let[,$,j,H,q]=f;if(!$)continue;P[$]=j??H??q??""}return P}function S(R,P){if(R.startsWith("<!--",P)){let b=R.indexOf("-->",P+4);return{end:b===-1?R.length:b+3,type:"comment"}}let g=xP(R,P),f=R.slice(P+1,g-1).trim();if(f==="")return;if(f.startsWith("!")||f.startsWith("?"))return{end:g,type:"declaration"};if(f.startsWith("/"))return{end:g,type:"close"};let $=/\/\s*$/.test(f),j=$?f.replace(/\/\s*$/,"").trim():f,H=j.split(/[\s/>]/,1)[0]?.toLowerCase()??"",q=H.length,J=j.slice(q).trim(),w=$||N.has(H)?"":AP(R,P,g,H);return{attributes:wP(J),end:g,innerHtml:w,selfClosing:$,tagName:H,type:"open"}}function AP(R,P,g,f){let $=g,j=1;while($<R.length&&j>0){let H=R.indexOf("<",$);if(H===-1)return R.slice(g);let q=S(R,H);if(!q)return R.slice(g);if(q.type==="open"&&q.tagName===f&&!q.selfClosing&&!N.has(f))j+=1;if(q.type==="close"){if(R.slice(H+2,q.end-1).trim().toLowerCase()===f){if(j-=1,j===0)return R.slice(g,H)}}$=q.end}return R.slice(g)}class Q extends EventTarget{nodeType;static DOCUMENT_NODE=9;static ELEMENT_NODE=1;static TEXT_NODE=3;childNodes=[];ownerDocument;parentNode=null;constructor(R,P=null){super();this.nodeType=R;this.ownerDocument=P}append(...R){for(let P of R)this.appendChild(typeof P==="string"?VP(P):P)}appendChild(R){if("parentNode"in R&&R.parentNode&&"removeChild"in R.parentNode)R.parentNode.removeChild(R);return this.childNodes.push(R),R.ownerDocument=this.nodeType===Q.DOCUMENT_NODE?this:this.ownerDocument,R.parentNode=this,R}removeChild(R){let P=this.childNodes.indexOf(R);if(P===-1)return R;return this.childNodes.splice(P,1),R.parentNode=null,R}replaceChildren(...R){for(let P of this.childNodes)P.parentNode=null;this.childNodes=[],this.append(...R)}get textContent(){return this.childNodes.map((R)=>R.textContent??"").join("")}set textContent(R){this.replaceChildren(R??"")}getRootNode(){let R=this;while("parentNode"in R&&R.parentNode)R=R.parentNode;return R}}class _ extends Q{value;constructor(R,P=x()){super(Q.TEXT_NODE,P);this.value=R}get textContent(){return this.value}set textContent(R){this.value=R??""}}class vR{element;constructor(R){this.element=R}add(...R){let P=new Set(this.readTokens());for(let g of R)if(g!=="")P.add(g);this.writeTokens([...P])}remove(...R){let P=new Set(this.readTokens());for(let g of R)P.delete(g);this.writeTokens([...P])}toggle(R,P){let g=this.contains(R);if(P??!g)return this.add(R),!0;return this.remove(R),!1}contains(R){return this.readTokens().includes(R)}toString(){return this.value}get value(){return this.element.getAttribute("class")??""}readTokens(){return this.value.split(/\s+/).map((R)=>R.trim()).filter((R)=>R.length>0)}writeTokens(R){if(R.length===0){this.element.removeAttribute("class");return}this.element.setAttribute("class",R.join(" "))}}class M extends Q{attributes=new Map;classListValue;datasetValue;fragmentHtml;fragmentText;localName;tagName;constructor(R="div",P=x()){super(Q.ELEMENT_NODE,P);this.localName=R.toLowerCase(),this.tagName=this.localName.toUpperCase()}get id(){return this.getAttribute("id")??""}set id(R){if(R===""){this.removeAttribute("id");return}this.setAttribute("id",R)}get classList(){return this.classListValue??=new vR(this),this.classListValue}get dataset(){return this.datasetValue??=new Proxy({},{deleteProperty:(R,P)=>{if(typeof P!=="string")return!1;return this.removeAttribute(T(P)),!0},get:(R,P)=>{if(typeof P!=="string")return;return this.getAttribute(T(P))??void 0},getOwnPropertyDescriptor:(R,P)=>{if(typeof P!=="string")return;return{configurable:!0,enumerable:!0,value:this.getAttribute(T(P))??void 0,writable:!0}},has:(R,P)=>{return typeof P==="string"&&this.hasAttribute(T(P))},ownKeys:()=>{return this.getAttributeNames().filter((R)=>R.startsWith("data-")).map((R)=>_P(R.slice(5)))},set:(R,P,g)=>{if(typeof P!=="string")return!1;return this.setAttribute(T(P),String(g)),!0}}),this.datasetValue}hasAttribute(R){return this.attributes.has(R)}getAttribute(R){return this.attributes.get(R)??null}getAttributeNames(){return Array.from(this.attributes.keys())}setAttribute(R,P){this.fragmentHtml=void 0,this.attributes.set(R,String(P))}toggleAttribute(R,P){if(P??!this.hasAttribute(R))return this.setAttribute(R,""),!0;return this.removeAttribute(R),!1}removeAttribute(R){this.fragmentHtml=void 0,this.attributes.delete(R)}querySelector(){return null}querySelectorAll(){return[]}matches(){return!1}get outerHTML(){if(this.fragmentHtml!==void 0)return this.fragmentHtml;let R=Array.from(this.attributes.entries()).map(([P,g])=>` ${P}="${yP(g)}"`).join("");return`<${this.localName}${R}>${this.innerHTML}</${this.localName}>`}get innerHTML(){return this.childNodes.map((R)=>CP(R)).join("")}set innerHTML(R){this.fragmentHtml=void 0,this.fragmentText=void 0,this.replaceChildren(...cR(R,this.ownerDocument))}get textContent(){return this.fragmentText??super.textContent??""}set textContent(R){this.fragmentHtml=void 0,this.fragmentText=R??"",super.textContent=R}setSerializedFragment(R,P,g){this.fragmentHtml=R,this.fragmentText=P,this.attributes=new Map(Object.entries(g)),this.replaceChildren()}}class v{bubbles;cancelable;composed;type;constructor(R,P={}){this.type=R,this.bubbles=P.bubbles??!1,this.cancelable=P.cancelable??!1,this.composed=P.composed??!1}}class n extends v{detail;constructor(R,P={}){super(R,P);this.detail=P.detail}}class Y extends M{isConnected=!1;constructor(R="div",P=x()){super(R,P)}insertAdjacentHTML(R,P){this.append(...cR(P,this.ownerDocument))}}class L extends Y{constructor(R=x()){super("script",R)}}class l extends Q{constructor(){super(Q.DOCUMENT_NODE)}createElement(R){return R.toLowerCase()==="script"?new L(this):new Y(R,this)}createTextNode(R){return new _(R,this)}querySelector(){return null}querySelectorAll(){return[]}}class sR{definitions=new Map;define(R,P){if(this.definitions.has(R))return;this.definitions.set(R,P)}get(R){return this.definitions.get(R)}}var y,t={escape(R){return LP(String(R))}};function VP(R){return new _(R,x())}function x(){return globalThis.document??null}function uR(){let R=globalThis,P=R.customElements;if(typeof R.Node>"u"||typeof R.Document>"u"||typeof R.Element>"u"||typeof R.HTMLElement>"u"||typeof R.document>"u"||!P||typeof P.define!=="function"||typeof P.get!=="function")return;return R.window??{CSS:R.CSS??t,CustomEvent:R.CustomEvent??n,Document:R.Document,Element:R.Element,Event:R.Event??v,EventTarget:R.EventTarget??EventTarget,HTMLScriptElement:R.HTMLScriptElement??R.HTMLElement,HTMLElement:R.HTMLElement,Node:R.Node,document:R.document,customElements:P}}function o(){let R=uR();if(R)return R;return hP()}function dR(){return o(),{prepareHost(R,P={}){if(P.authoredContent!==void 0)R.innerHTML=P.authoredContent}}}function hP(){let R=uR();if(R)return R;if(y)return y;let P=new sR,g=new l,f=globalThis.Event??v,$=globalThis.CustomEvent??n,j=l,H=globalThis.EventTarget??EventTarget;return y={CSS:globalThis.CSS??t,CustomEvent:$,Document:j,Element:M,Event:f,EventTarget:H,HTMLScriptElement:L,HTMLElement:Y,Node:Q,document:g,customElements:P},Object.assign(globalThis,{CSS:globalThis.CSS??t,CustomEvent:$,Document:j,Element:M,Event:f,EventTarget:H,HTMLScriptElement:L,HTMLElement:Y,Node:Q,document:g,customElements:P,window:y}),y}function SP(R,P,g){let f=P.tagName==="script"?new L(g):new Y(P.tagName,g);return f.setSerializedFragment(R,TP(P.innerHtml),P.attributes),f}function yP(R){return R.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function TP(R){return R.replace(/<!--.*?-->/gs,"").replace(/<[^>]+>/g,"")}function cR(R,P=x()){return MR(R).map((g)=>{if(!g.startsWith("<"))return new _(g,P);let f=S(g,0);if(!f||f.type!=="open")return new _(g,P);return SP(g,f,P)})}function T(R){return`data-${R.replace(/([A-Z])/g,"-$1").toLowerCase()}`}function _P(R){return R.replace(/-([a-z])/g,(P,g)=>g.toUpperCase())}function LP(R){let P="";for(let g=0;g<R.length;g+=1){let f=R[g]??"",$=f.codePointAt(0)??0;if($===0){P+="�";continue}let j=$>=1&&$<=31||$===127,H=g===0&&$>=48&&$<=57,q=g===1&&$>=48&&$<=57&&(R[0]??"")==="-",J=g===0&&f==="-"&&R.length===1;if(j||H||q){P+=`\\${$.toString(16)} `;continue}if($>=128||f==="-"||f==="_"||$>=48&&$<=57||$>=65&&$<=90||$>=97&&$<=122){P+=J?`\\${f}`:f;continue}P+=`\\${f}`}return P}function CP(R){if(R.nodeType===Q.TEXT_NODE)return R.textContent??"";return"outerHTML"in R&&typeof R.outerHTML==="string"?R.outerHTML:R.textContent??""}function IP(R,P="hydrate"){return{kind:"script-module",src:R,stage:P}}function $1(R){return{kind:"modulepreload",href:R}}function j1(R,P){return P?{kind:"style",href:R,media:P}:{kind:"style",href:R}}async function H1(R,P){return(await s(u(R,P))).markup}async function q1(R,P){return s(u(R,P))}async function Q1(R,P){return e(await s(u(R,P)))}async function J1(R,P){return zP(await s(u(R,P)))}async function s(R){return Z(K(),async()=>{let P=R.environment??dR(),g=X(EP(R.ssrContext));try{let f="component"in R?R.component:await R.load(),$=new f;C($),DP(P,$,R.authoredContent,R.prepareHost),R.initialize?.($);let j=R.clientModuleSrc??await R.resolveClientModuleSrc?.(f),H=R.assets??await R.resolveAssets?.(f)??[],q=RR(H,j),J=PR(q)??j,w=R.tagName??sP(f),b=(R.now??OP)().toISOString(),A=gR(R.renderOptions),fR=zR($,A)??vP($,A),mR=kP($,fR);return{markup:fR,metadata:{assets:q,clientModuleUrl:J,generatedAt:b,tagName:w},preview:mR}}finally{g()}})}function kP(R,P){return OR(R,P)??ER(R)??R.renderHost?.()??{nodeType:1,outerHTML:P}}function DP(R,P,g,f){if(!MP(P)){if(g===void 0&&f===void 0)return;throw Error(`${P.constructor.name} cannot prepare SSR host content because it does not expose an innerHTML host surface.`)}R.prepareHost(P,{authoredContent:g}),f?.(P,R)}function EP(R){if(!R||R.length===0)return[];return R.map((P)=>({getContext:()=>P.value,getContextKey:()=>P.context,renderHydrationScript:()=>{return},renderHydrationScriptTag:()=>{return}}))}function e(R){if("metadata"in R)return{assets:R.metadata.assets,clientModuleSrc:R.metadata.clientModuleUrl,generatedAt:R.metadata.generatedAt,markup:R.markup,tagName:R.metadata.tagName};let{preview:P,...g}=R;return g}function zP(R){return{assets:R.metadata.assets,clientModuleSrc:R.metadata.clientModuleUrl,generatedAt:R.metadata.generatedAt,markup:R.markup,preview:R.preview,tagName:R.metadata.tagName}}function OP(){return new Date}function NP(R){if(!R)return[];return[IP(R)]}function RR(R,P){if(!P)return R;if(R.some((g)=>g.kind==="script-module"&&g.src===P))return R;return[...NP(P),...R]}function PR(R){return R.find((P)=>P.kind==="script-module")?.src}function u(R,P){if(typeof R==="function")return{...P,component:R};return R}function gR(R){if(R?.mode!==void 0||R?.hydrate!==void 0)return R;return{...R,mode:"hydrate"}}function MP(R){return"innerHTML"in R}function vP(R,P){if(typeof R.renderHostToString==="function")return R.renderHostToString(P);throw Error(`${R.constructor.name} cannot be server-rendered without a registered Radiant SSR host or renderHostToString().`)}function sP(R){let P=D(R);if(!P)throw Error(`${R.name} is missing @customElement metadata.`);return P}import{renderToString as uP}from"@ecopages/jsx/server";async function w1(R,P){return(await d(R,P)).markup}async function A1(R,P){return d(R,P)}async function V1(R,P){return e(await d(R,P))}async function h1(R,P){return dP(await d(R,P))}async function d(R,P){return Z(K(),async()=>{let g=pP(P.tagName),f=rP(g,iP(R,P)),$=new R(f);C($);try{P.initialize?.($),$.runWithSsrLifecycle(()=>$.connect());let j=P.clientModuleSrc??await P.resolveClientModuleSrc?.(R),H=P.assets??await P.resolveAssets?.(R)??[],q=RR(H,j),J=PR(q)??j,w=(P.now??cP)().toISOString(),b=gR(P.renderOptions),A=tP($,g,b);return{markup:A,metadata:{assets:q,clientModuleUrl:J,generatedAt:w,tagName:g},preview:{nodeType:1,outerHTML:A}}}finally{$.disconnect()}})}function dP(R){return{assets:R.metadata.assets,clientModuleSrc:R.metadata.clientModuleUrl,generatedAt:R.metadata.generatedAt,markup:R.markup,preview:R.preview,tagName:R.metadata.tagName}}function cP(){return new Date}function pP(R){let P=R.trim().toLowerCase();if(!P)throw Error("Controller SSR host tagName is required.");return P}function rP(R,P){let f=o().document.createElement(R);for(let[$,j]of Object.entries(P)){if(j===void 0||j===null||j===!1)continue;f.setAttribute($,j===!0?"":String(j))}return f}function iP(R,P){let g={},f=P.host,$=aP(P.attributes?.class,f?.class,f?.classes);if($!==void 0)g.class=$;pR(g,"data",f?.data),pR(g,"aria",f?.aria),mP(g,P.attributes);let j=XR(R);if(j&&g[B]==null)g[B]=j;return g}function pR(R,P,g){if(!iR(g))return;for(let[f,$]of Object.entries(g))R[`${P}-${lP(f)}`]=$}function mP(R,P){if(!P)return;for(let[g,f]of Object.entries(P))R[g]=f}function aP(...R){let P=[];for(let g of R)rR(P,g);return P.length===0?void 0:P.join(" ")}function rR(R,P){if(P===void 0||P===null||P===!1||P===!0)return;if(typeof P==="string"){if(P!=="")R.push(P);return}if(typeof P==="number"||typeof P==="bigint"){R.push(String(P));return}if(Array.isArray(P)){for(let g of P)rR(R,g);return}if(!iR(P))return;for(let[g,f]of Object.entries(P))if(f)R.push(g)}function iR(R){return Object.prototype.toString.call(R)==="[object Object]"}function lP(R){return R.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase()}function tP(R,P,g){let f=X(R.getSsrContextProviders());try{let $=m(()=>uP(R.render(),g)),H=g.mode==="hydrate"||g.mode===void 0&&g.hydrate===!0?R.getSsrHydrationBindings().map((q)=>q.renderHydrationScriptTag()).filter((q)=>typeof q==="string").join(""):"";return`<${P}${nP(R.host)}>${$}${H}</${P}>`}finally{f()}}function nP(R){return R.getAttributeNames().map((P)=>oP(P,R.getAttribute(P))).join("")}function oP(R,P){if(P==="")return` ${R}`;return` ${R}="${eP(P??"")}"`}function eP(R){return R.replaceAll("&","&").replaceAll('"',""").replaceAll("<","<").replaceAll(">",">")}export{h1 as renderControllerWithPreview,w1 as renderControllerToString,V1 as renderControllerToPayload,A1 as renderController};
|
|
1
|
+
var o1=((R)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(R,{get:(P,j)=>(typeof require<"u"?require:P)[j]}):R)(function(R){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+R+'" is not supported')});var $1=Symbol.for("@ecopages/radiant.legacy-instance-initializers"),q1=Symbol.for("@ecopages/radiant.legacy-post-construction-initializers"),t1=Symbol.for("@ecopages/radiant.legacy-executed-post-construction-initializers");function FP(R,P){F1(R,$1,P)}function JP(R,P){F1(R,q1,P)}function ZP(R){p(R,$1)}function z(R){let P=R;p(R,q1,P[t1]??=new Set)}function F1(R,P,j){let Q=R,$=Object.prototype.hasOwnProperty.call(Q,P)?Q[P]:void 0;if(Array.isArray($)){$.push(j);return}Object.defineProperty(Q,P,{value:[j]})}function p(R,P,j,Q=Object.getPrototypeOf(R)){if(!Q||Q===Object.prototype)return;p(R,P,j,Object.getPrototypeOf(Q));let $=Q[P];if(!Array.isArray($))return;for(let q of $){if(j?.has(q))continue;q(R),j?.add(q)}}function W1(R){switch(R){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function e1(R){switch(typeof R){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(R))return"array";if(Object.prototype.toString.call(R)==="[object Object]")return"object"}function RR(R){switch(R){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function PR(R){try{return JSON.parse(R)}catch{throw TypeError("Invalid JSON string")}}var jR={array(R){let P=PR(R);if(!Array.isArray(P))throw TypeError(`Expected an array but got a value of type "${typeof P}"`);return P},boolean(R){return!(R==="0"||String(R).toLowerCase()==="false")},number(R){return Number(R.replace(/_/g,""))},object(R){let P=JSON.parse(R);if(P===null||typeof P!=="object"||Array.isArray(P))throw TypeError(`expected value of type "object" but instead got value "${R}" of type "${e1(P)}"`);return P},string(R){return R}},J1={default:X1,array:Z1,object:Z1};function Z1(R){return JSON.stringify(R)}function X1(R){return`${R}`}function B1(R,P){let j=W1(P);if(!j)throw TypeError(`[radiant-element] Unknown type "${P}"`);return jR[j](R)}function G1(R,P){let j=W1(P);if(!j)throw TypeError(`[radiant-element] Unknown type "${P}"`);return(J1[j]??J1.default??X1)(R)}function QR(R){return typeof R==="boolean"}function $R(R){return typeof R==="number"}function qR(R){return typeof R==="string"}function FR(R){return Array.isArray(R)}function JR(R){return typeof R==="object"&&!Array.isArray(R)&&R!==null}function WP(R,P){switch(R){case Boolean:return QR(P);case Number:return $R(P);case String:return qR(P);case Array:return FR(P);case Object:return JR(P);default:return!1}}var XP=(R,P,j,Q)=>{if(P===Boolean){let q=R.getAttribute(j);if(q===null)return Q;return q===""?!0:B1(q,P)}let $=R.getAttribute(j);return $!==null?B1($,P):Q??RR(P)};import{getActiveSsrScopeValue as ZR,withActiveSsrScopeValue as BR}from"@ecopages/jsx/server";var U1=Symbol.for("@ecopages/radiant.element-ssr-runtime");function KP(){return ZR(U1)}function U(R,P){return BR(U1,R,P)}var K1=Symbol.for("@ecopages/radiant.controllerIdentifier");function s(R,P){R[K1]=P}function Y1(R){return R[K1]}var W="data-controller",H1=Symbol.for("@ecopages/radiant.controller-registry-state");function WR(){let R=globalThis,P=R[H1];if(P)return P;let j={activeRuntimes:new Set,controllerRegistrationStrategy:"keep-current",controllerRegistry:new Map};return R[H1]=j,j}var O=WR(),X=O.controllerRegistry,K=O.activeRuntimes;function w1(R){let P=R.getAttribute(W);if(!P)return[];return P.split(/\s+/).map((j)=>j.trim()).filter((j)=>j.length>0)}function S(R,P){if(R instanceof Element&&R.hasAttribute(W))P(R);for(let j of Array.from(R.querySelectorAll(`[${W}]`)))P(j)}class f1{root;controllersByElement=new Map;observer;stopped=!1;constructor(R=document){this.root=R;this.start()}stop(){if(this.stopped)return;this.stopped=!0,this.observer?.disconnect(),this.observer=void 0;for(let[R,P]of this.controllersByElement)for(let[j]of P)this.disconnectController(R,j);K.delete(this)}reconcileRegisteredController(R){S(this.root,(P)=>{if(!w1(P).includes(R))return;this.connectController(P,R)})}replaceRegisteredController(R){for(let[P,j]of Array.from(this.controllersByElement.entries())){if(!j.has(R))continue;this.disconnectController(P,R)}this.reconcileRegisteredController(R)}start(){if(S(this.root,(P)=>{this.reconcileElement(P)}),typeof MutationObserver>"u"){K.add(this);return}this.observer=new MutationObserver((P)=>{for(let j of P){if(j.type==="attributes"&&j.target instanceof Element){this.reconcileElement(j.target);continue}for(let Q of Array.from(j.removedNodes)){if(!(Q instanceof Element))continue;S(Q,($)=>{this.disconnectElementControllers($)})}for(let Q of Array.from(j.addedNodes)){if(!(Q instanceof Element))continue;S(Q,($)=>{this.reconcileElement($)})}}});let R=this.root instanceof Document?this.root.documentElement:this.root;this.observer.observe(R,{attributeFilter:[W],attributes:!0,childList:!0,subtree:!0}),K.add(this)}reconcileElement(R){let P=new Set(w1(R)),j=this.controllersByElement.get(R);if(j){for(let Q of j.keys())if(!P.has(Q))this.disconnectController(R,Q)}for(let Q of P)this.connectController(R,Q)}connectController(R,P){let j=X.get(P);if(!j)return;let Q=this.controllersByElement.get(R);if(!Q)Q=new Map,this.controllersByElement.set(R,Q);if(Q.has(P))return;let $=new j(R);Q.set(P,$),$.connect()}disconnectController(R,P){let j=this.controllersByElement.get(R);if(!j)return;let Q=j.get(P);if(!Q)return;if(Q.disconnect(),j.delete(P),j.size===0)this.controllersByElement.delete(R)}disconnectElementControllers(R){let P=this.controllersByElement.get(R);if(!P)return;for(let j of Array.from(P.keys()))this.disconnectController(R,j)}}function XR(R,P){let j=X.get(R);if(j)return j;s(P,R),X.set(R,P);for(let Q of Array.from(K))Q.reconcileRegisteredController(R);return P}function fP(R){return X.has(R)}function _P(R){return X.get(R)}function GR(R,P){if(X.get(R)===P)return P;s(P,R),X.set(R,P);for(let Q of Array.from(K))Q.replaceRegisteredController(R);return P}function _1(R){O.controllerRegistrationStrategy=R}function xP(){_1("replace")}function IP(){_1("keep-current")}function LP(R,P){if(O.controllerRegistrationStrategy==="replace")return GR(R,P);return XR(R,P)}function VP(R=document){return new f1(R)}function AP(){for(let R of Array.from(K))R.stop()}var x1=Symbol.for("@ecopages/radiant.customElementTagName");function DP(R,P){R[x1]=P}function b(R){return R[x1]}var m=Symbol.for("@ecopages/radiant.reactivePropDefinitions");function CP(R,P,j){let Q=R.constructor,$=Q[m]??[];if($.some((q)=>q.name===P))return;$.push({name:P,options:j}),Q[m]=$}function I1(R){return(R.constructor[m]??[]).slice()}function L1(R){let P={},j=new Set;return UR(R,P,j),KR(R,P,j),YR(R,P),P}function V1(R){return Object.entries(R).map(([P,j])=>` ${P}="${HR(j)}"`).join("")}function UR(R,P,j){for(let Q of R.getReactiveProperties()){let $=R.getPropertyValue(Q.name);if($===void 0||$===null||$===!1)continue;P[Q.attribute]=String(Q.converter.toAttribute($)),j.add(Q.attribute)}}function KR(R,P,j){for(let Q of R.getReactivePropDefinitions()){let $=Q.options.attribute??Q.name;if(j.has($))continue;let q=R.getPropertyValue(Q.name);if(q===void 0||q===null||q===!1)continue;P[$]=String(G1(q,Q.options.type)),j.add($)}}function YR(R,P){for(let j of R.listAttributeNames()){let Q=R.getAttributeValue(j);if(Q!==null)P[j]=Q}}function HR(R){return R.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}var A1=Symbol.for("@ecopages/radiant.ssr-context-provider-resolver");function T1(){return globalThis}function D1(R){T1()[A1]=R}function OP(R){return T1()[A1]?.(R)}var V;function C1(){if(V!==void 0)return V;try{let{AsyncLocalStorage:R}=(()=>{throw new Error("Cannot require module "+"node:async_hooks");})();return V=new R,V}catch{return V=null,null}}var k1=Symbol.for("@ecopages/radiant.ssr-context-fallback-stack");function E1(){let R=globalThis;return R[k1]??=[],R[k1]}function Y(R){if(R.length===0)return()=>{return};let P=new Map;for(let $ of R)P.set($.getContextKey(),$);let j=C1();if(j){let $=j.getStore()??[],q=[...$,P];return j.enterWith(q),()=>{j.enterWith($)}}let Q=E1();return Q.push(P),()=>{let $=Q.lastIndexOf(P);if($>=0)Q.splice($,1)}}function z1(R){let P=C1()?.getStore()??E1();for(let j=P.length-1;j>=0;j-=1){let Q=P[j]?.get(R);if(Q)return Q}return}function yP(R){let P=z1(R);if(!P)return;return P.getContext()}D1((R)=>z1(R));function S1(R,P){if(!P)return`${R.hostContent}${R.authoredHydrationMarkup}${R.slotProjectionScript}`;return`${R.hostContent}${R.slotProjectionScript}${R.hydrationScripts}`}class a{host;constructor(R){this.host=R}renderHost(){return{nodeType:1,outerHTML:this.renderHostToString({mode:"hydrate"})}}renderHostToString(R={},P=this.getHostAttributes()){let j=this.getTagName(),Q=Y(this.host.getContextProviders());try{return`<${j}${V1(P)}>${this.renderHostContent(R)}</${j}>`}finally{Q()}}renderHostContent(R){let P=R.mode==="hydrate"||R.mode===void 0&&R.hydrate===!0,j=P?this.host.getHydrationBindings().map((Q)=>Q.renderHydrationScriptTag()).filter((Q)=>typeof Q==="string").join(""):"";return S1({hostContent:this.host.renderViewToString(R),authoredHydrationMarkup:this.host.getAuthoredHydrationScriptMarkup?.()??"",slotProjectionScript:this.host.getSlotProjectionScriptTag?.()??"",hydrationScripts:j},P)}getHostAttributes(){return L1(this.host)}getTagName(){let R=b(this.host.constructor);if(!R)throw Error(`${this.host.constructor.name} is missing @customElement metadata.`);return R}}function H(R){if(wR(R))return R;return}function wR(R){return typeof R.constructor==="function"&&typeof R.getAttribute==="function"&&typeof R.getAuthoredHydrationScriptMarkup==="function"&&typeof R.getContextProviders==="function"&&typeof R.getHydrationBindings==="function"&&typeof R.getReactiveProperties==="function"&&typeof R.getSlotProjectionScriptTag==="function"&&typeof R.resolveTrackedRenderOutput==="function"&&typeof R.renderViewToString==="function"}function O1(R){let P=H(R);if(!P)throw Error("Radiant SSR runtime requires a server extraction host shape on the component.");return{constructor:P.constructor,getAuthoredHydrationScriptMarkup:()=>P.getAuthoredHydrationScriptMarkup(),getContextProviders:()=>P.getContextProviders(),getHydrationBindings:()=>P.getHydrationBindings(),getSlotProjectionScriptTag:()=>P.getSlotProjectionScriptTag(),renderViewToString:(j)=>P.renderViewToString(j),getReactiveProperties:()=>P.getReactiveProperties(),getReactivePropDefinitions:()=>I1(R),getPropertyValue:(j)=>Reflect.get(R,j),listAttributeNames:()=>P.getAttributeNames(),getAttributeValue:(j)=>P.getAttribute(j)}}import{renderToString as fR}from"@ecopages/jsx/server";import{createServerHydrationBindingState as b1,isServerRenderHydrationActive as g1,withForcedServerCustomElementRendering as _R,withServerCustomElementRenderHook as xR,withServerHydrationBindingState as y1}from"@ecopages/jsx/server";var g;function N1(R){return new a(O1(R))}function y(R){return{nodeType:1,outerHTML:w(R,{mode:"hydrate"})}}function h1(R){if(A(R))return y(R);if(!N(R))return;return R.renderHost?.()??{nodeType:1,outerHTML:R.renderHostToString({mode:"hydrate"})}}function w(R,P={}){return r(()=>N1(R).renderHostToString(P,u1(R)))}function M1(R,P={}){if(A(R))return w(R,P);if(!N(R))return;return R.renderHostToString(P)}function v1(R,P){if(A(R))return y(R);if(!N(R))return;return R.renderHost?.()??{nodeType:1,outerHTML:P}}function IR(R,P={}){return r(()=>l(()=>fR(VR(R).value,P)))}function u1(R){return N1(R).getHostAttributes()}function LR(R){if(!A(R))return;return{renderHost:()=>y(R),renderHostToString:(P)=>w(R,P)}}function eP(R){return H(R)}function l(R){return _R(()=>xR(({instance:P})=>{if(A(P))return{nodeType:1,get outerHTML(){let Q=g1(),$={hydrate:Q,mode:Q?"hydrate":"plain"};if(!Q)return w(P,$);return y1(b1(),()=>w(P,$))}};if(!N(P))return;let j=P;return{nodeType:1,get outerHTML(){let Q=g1();if(!Q)return j.renderHostToString({hydrate:Q,mode:Q?"hydrate":"plain"});return y1(b1(),()=>j.renderHostToString({hydrate:Q,mode:Q?"hydrate":"plain"}))}}},R))}function VR(R){if(AR(R))return R.resolveTrackedRenderOutput();let P=H(R);if(!P)throw Error("Radiant SSR runtime requires tracked render output support on the component.");return P.resolveTrackedRenderOutput()}function A(R){if(typeof R!=="object"||R===null)return!1;return H(R)!==void 0}function N(R){if(typeof R!=="object"||R===null)return!1;return typeof R.renderHostToString==="function"}function AR(R){if(typeof R!=="object"||R===null)return!1;return typeof R.resolveTrackedRenderOutput==="function"}function f(){if(g)return g;return g={getHostAttributes:u1,renderHost:y,renderHostToString:w,resolveRenderBridge:LR,renderView:IR},g}function r(R){return U(f(),R)}var h=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);function c1(R){let P=[],j=0;while(j<R.length){let Q=j;if(R.startsWith("<!--",j)){let J=R.indexOf("-->",j+4);j=J===-1?R.length:J+3,P.push(R.slice(Q,j));continue}if(R[j]!=="<"){let J=R.indexOf("<",j);j=J===-1?R.length:J,P.push(R.slice(Q,j));continue}let $=T(R,j);if(!$){P.push(R.slice(Q));break}if($.type!=="open"||$.selfClosing||h.has($.tagName)){j=$.end,P.push(R.slice(Q,j));continue}j=$.end;let q=1;while(j<R.length&&q>0){let J=R.indexOf("<",j);if(J===-1){j=R.length;break}let F=T(R,J);if(!F){j=R.length;break}if(j=F.end,F.type==="comment"||F.type==="declaration")continue;if(F.type==="open"&&!F.selfClosing&&!h.has(F.tagName)){q+=1;continue}if(F.type==="close")q-=1}P.push(R.slice(Q,j))}return P.filter((Q)=>Q!=="")}function TR(R,P){let j;for(let Q=P+1;Q<R.length;Q+=1){let $=R[Q];if(j){if($===j)j=void 0;continue}if($==='"'||$==="'"){j=$;continue}if($===">")return Q+1}return R.length}function DR(R){let P={},j=/([:^@A-Za-z0-9_.-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>/]+)))?/g;for(let Q of R.matchAll(j)){let[,$,q,J,F]=Q;if(!$)continue;P[$]=q??J??F??""}return P}function T(R,P){if(R.startsWith("<!--",P)){let G=R.indexOf("-->",P+4);return{end:G===-1?R.length:G+3,type:"comment"}}let j=TR(R,P),Q=R.slice(P+1,j-1).trim();if(Q==="")return;if(Q.startsWith("!")||Q.startsWith("?"))return{end:j,type:"declaration"};if(Q.startsWith("/"))return{end:j,type:"close"};let $=/\/\s*$/.test(Q),q=$?Q.replace(/\/\s*$/,"").trim():Q,J=q.split(/[\s/>]/,1)[0]?.toLowerCase()??"",F=J.length,B=q.slice(F).trim(),I=$||h.has(J)?"":kR(R,P,j,J);return{attributes:DR(B),end:j,innerHtml:I,selfClosing:$,tagName:J,type:"open"}}function kR(R,P,j,Q){let $=j,q=1;while($<R.length&&q>0){let J=R.indexOf("<",$);if(J===-1)return R.slice(j);let F=T(R,J);if(!F)return R.slice(j);if(F.type==="open"&&F.tagName===Q&&!F.selfClosing&&!h.has(Q))q+=1;if(F.type==="close"){if(R.slice(J+2,F.end-1).trim().toLowerCase()===Q){if(q-=1,q===0)return R.slice(j,J)}}$=F.end}return R.slice(j)}class Z extends EventTarget{nodeType;static DOCUMENT_NODE=9;static ELEMENT_NODE=1;static TEXT_NODE=3;childNodes=[];ownerDocument;parentNode=null;constructor(R,P=null){super();this.nodeType=R;this.ownerDocument=P}append(...R){for(let P of R)this.appendChild(typeof P==="string"?CR(P):P)}appendChild(R){if("parentNode"in R&&R.parentNode&&"removeChild"in R.parentNode)R.parentNode.removeChild(R);return this.childNodes.push(R),R.ownerDocument=this.nodeType===Z.DOCUMENT_NODE?this:this.ownerDocument,R.parentNode=this,R}removeChild(R){let P=this.childNodes.indexOf(R);if(P===-1)return R;return this.childNodes.splice(P,1),R.parentNode=null,R}replaceChildren(...R){for(let P of this.childNodes)P.parentNode=null;this.childNodes=[],this.append(...R)}get textContent(){return this.childNodes.map((R)=>R.textContent??"").join("")}set textContent(R){this.replaceChildren(R??"")}getRootNode(){let R=this;while("parentNode"in R&&R.parentNode)R=R.parentNode;return R}}class C extends Z{value;constructor(R,P=x()){super(Z.TEXT_NODE,P);this.value=R}get textContent(){return this.value}set textContent(R){this.value=R??""}}class d1{element;constructor(R){this.element=R}add(...R){let P=new Set(this.readTokens());for(let j of R)if(j!=="")P.add(j);this.writeTokens([...P])}remove(...R){let P=new Set(this.readTokens());for(let j of R)P.delete(j);this.writeTokens([...P])}toggle(R,P){let j=this.contains(R);if(P??!j)return this.add(R),!0;return this.remove(R),!1}contains(R){return this.readTokens().includes(R)}toString(){return this.value}get value(){return this.element.getAttribute("class")??""}readTokens(){return this.value.split(/\s+/).map((R)=>R.trim()).filter((R)=>R.length>0)}writeTokens(R){if(R.length===0){this.element.removeAttribute("class");return}this.element.setAttribute("class",R.join(" "))}}class M extends Z{attributes=new Map;classListValue;datasetValue;fragmentHtml;fragmentText;localName;tagName;constructor(R="div",P=x()){super(Z.ELEMENT_NODE,P);this.localName=R.toLowerCase(),this.tagName=this.localName.toUpperCase()}get id(){return this.getAttribute("id")??""}set id(R){if(R===""){this.removeAttribute("id");return}this.setAttribute("id",R)}get classList(){return this.classListValue??=new d1(this),this.classListValue}get dataset(){return this.datasetValue??=new Proxy({},{deleteProperty:(R,P)=>{if(typeof P!=="string")return!1;return this.removeAttribute(k(P)),!0},get:(R,P)=>{if(typeof P!=="string")return;return this.getAttribute(k(P))??void 0},getOwnPropertyDescriptor:(R,P)=>{if(typeof P!=="string")return;return{configurable:!0,enumerable:!0,value:this.getAttribute(k(P))??void 0,writable:!0}},has:(R,P)=>{return typeof P==="string"&&this.hasAttribute(k(P))},ownKeys:()=>{return this.getAttributeNames().filter((R)=>R.startsWith("data-")).map((R)=>bR(R.slice(5)))},set:(R,P,j)=>{if(typeof P!=="string")return!1;return this.setAttribute(k(P),String(j)),!0}}),this.datasetValue}hasAttribute(R){return this.attributes.has(R)}getAttribute(R){return this.attributes.get(R)??null}getAttributeNames(){return Array.from(this.attributes.keys())}setAttribute(R,P){this.fragmentHtml=void 0,this.attributes.set(R,String(P))}toggleAttribute(R,P){if(P??!this.hasAttribute(R))return this.setAttribute(R,""),!0;return this.removeAttribute(R),!1}removeAttribute(R){this.fragmentHtml=void 0,this.attributes.delete(R)}querySelector(){return null}querySelectorAll(){return[]}matches(){return!1}get outerHTML(){if(this.fragmentHtml!==void 0)return this.fragmentHtml;let R=Array.from(this.attributes.entries()).map(([P,j])=>` ${P}="${SR(j)}"`).join("");return`<${this.localName}${R}>${this.innerHTML}</${this.localName}>`}get innerHTML(){return this.childNodes.map((R)=>yR(R)).join("")}set innerHTML(R){this.fragmentHtml=void 0,this.fragmentText=void 0,this.replaceChildren(...a1(R,this.ownerDocument))}get textContent(){return this.fragmentText??super.textContent??""}set textContent(R){this.fragmentHtml=void 0,this.fragmentText=R??"",super.textContent=R}setSerializedFragment(R,P,j){this.fragmentHtml=R,this.fragmentText=P,this.attributes=new Map(Object.entries(j)),this.replaceChildren()}}class v{bubbles;cancelable;composed;type;constructor(R,P={}){this.type=R,this.bubbles=P.bubbles??!1,this.cancelable=P.cancelable??!1,this.composed=P.composed??!1}}class o extends v{detail;constructor(R,P={}){super(R,P);this.detail=P.detail}}class _ extends M{isConnected=!1;constructor(R="div",P=x()){super(R,P)}insertAdjacentHTML(R,P){this.append(...a1(P,this.ownerDocument))}}class E extends _{constructor(R=x()){super("script",R)}}class i extends Z{constructor(){super(Z.DOCUMENT_NODE)}createElement(R){return R.toLowerCase()==="script"?new E(this):new _(R,this)}createTextNode(R){return new C(R,this)}querySelector(){return null}querySelectorAll(){return[]}}class p1{definitions=new Map;define(R,P){if(this.definitions.has(R))return;this.definitions.set(R,P)}get(R){return this.definitions.get(R)}}var D,n={escape(R){return gR(String(R))}};function CR(R){return new C(R,x())}function x(){return globalThis.document??null}function s1(){let R=globalThis,P=R.customElements;if(typeof R.Node>"u"||typeof R.Document>"u"||typeof R.Element>"u"||typeof R.HTMLElement>"u"||typeof R.document>"u"||!P||typeof P.define!=="function"||typeof P.get!=="function")return;return R.window??{CSS:R.CSS??n,CustomEvent:R.CustomEvent??o,Document:R.Document,Element:R.Element,Event:R.Event??v,EventTarget:R.EventTarget??EventTarget,HTMLScriptElement:R.HTMLScriptElement??R.HTMLElement,HTMLElement:R.HTMLElement,Node:R.Node,document:R.document,customElements:P}}function t(){let R=s1();if(R)return R;return ER()}function m1(){return t(),{prepareHost(R,P={}){if(P.authoredContent!==void 0)R.innerHTML=P.authoredContent}}}function ER(){let R=s1();if(R)return R;if(D)return D;let P=new p1,j=new i,Q=globalThis.Event??v,$=globalThis.CustomEvent??o,q=i,J=globalThis.EventTarget??EventTarget;return D={CSS:globalThis.CSS??n,CustomEvent:$,Document:q,Element:M,Event:Q,EventTarget:J,HTMLScriptElement:E,HTMLElement:_,Node:Z,document:j,customElements:P},Object.assign(globalThis,{CSS:globalThis.CSS??n,CustomEvent:$,Document:q,Element:M,Event:Q,EventTarget:J,HTMLScriptElement:E,HTMLElement:_,Node:Z,document:j,customElements:P,window:D}),D}function zR(R,P,j){let Q=P.tagName==="script"?new E(j):new _(P.tagName,j);return Q.setSerializedFragment(R,OR(P.innerHtml),P.attributes),Q}function SR(R){return R.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function OR(R){return R.replace(/<!--.*?-->/gs,"").replace(/<[^>]+>/g,"")}function a1(R,P=x()){return c1(R).map((j)=>{if(!j.startsWith("<"))return new C(j,P);let Q=T(j,0);if(!Q||Q.type!=="open")return new C(j,P);return zR(j,Q,P)})}function k(R){return`data-${R.replace(/([A-Z])/g,"-$1").toLowerCase()}`}function bR(R){return R.replace(/-([a-z])/g,(P,j)=>j.toUpperCase())}function gR(R){let P="";for(let j=0;j<R.length;j+=1){let Q=R[j]??"",$=Q.codePointAt(0)??0;if($===0){P+="�";continue}let q=$>=1&&$<=31||$===127,J=j===0&&$>=48&&$<=57,F=j===1&&$>=48&&$<=57&&(R[0]??"")==="-",B=j===0&&Q==="-"&&R.length===1;if(q||J||F){P+=`\\${$.toString(16)} `;continue}if($>=128||Q==="-"||Q==="_"||$>=48&&$<=57||$>=65&&$<=90||$>=97&&$<=122){P+=B?`\\${Q}`:Q;continue}P+=`\\${Q}`}return P}function yR(R){if(R.nodeType===Z.TEXT_NODE)return R.textContent??"";return"outerHTML"in R&&typeof R.outerHTML==="string"?R.outerHTML:R.textContent??""}function NR(R,P="hydrate"){return{kind:"script-module",src:R,stage:P}}function U0(R){return{kind:"modulepreload",href:R}}function K0(R,P){return P?{kind:"style",href:R,media:P}:{kind:"style",href:R}}async function Y0(R,P){return(await u(c(R,P))).markup}async function H0(R,P){return u(c(R,P))}async function w0(R,P){return e(await u(c(R,P)))}async function f0(R,P){return uR(await u(c(R,P)))}async function u(R){return U(f(),async()=>{let P=R.environment??m1(),j=Y(vR(R.ssrContext));try{let Q="component"in R?R.component:await R.load(),$=new Q;z($),MR(P,$,R.authoredContent,R.prepareHost),R.initialize?.($);let q=R.clientModuleSrc??await R.resolveClientModuleSrc?.(Q),J=R.assets??await R.resolveAssets?.(Q)??[],F=R1(J,q),B=P1(F)??q,I=R.tagName??mR(Q),G=(R.now??cR)().toISOString(),L=j1(R.renderOptions),Q1=M1($,L)??sR($,L),n1=hR($,Q1);return{markup:Q1,metadata:{assets:F,clientModuleUrl:B,generatedAt:G,tagName:I},preview:n1}}finally{j()}})}function hR(R,P){return v1(R,P)??h1(R)??R.renderHost?.()??{nodeType:1,outerHTML:P}}function MR(R,P,j,Q){if(!pR(P)){if(j===void 0&&Q===void 0)return;throw Error(`${P.constructor.name} cannot prepare SSR host content because it does not expose an innerHTML host surface.`)}R.prepareHost(P,{authoredContent:j}),Q?.(P,R)}function vR(R){if(!R||R.length===0)return[];return R.map((P)=>({getContext:()=>P.value,getContextKey:()=>P.context,renderHydrationScript:()=>{return},renderHydrationScriptTag:()=>{return}}))}function e(R){if("metadata"in R)return{assets:R.metadata.assets,clientModuleSrc:R.metadata.clientModuleUrl,generatedAt:R.metadata.generatedAt,markup:R.markup,tagName:R.metadata.tagName};let{preview:P,...j}=R;return j}function uR(R){return{assets:R.metadata.assets,clientModuleSrc:R.metadata.clientModuleUrl,generatedAt:R.metadata.generatedAt,markup:R.markup,preview:R.preview,tagName:R.metadata.tagName}}function cR(){return new Date}function dR(R){if(!R)return[];return[NR(R)]}function R1(R,P){if(!P)return R;if(R.some((j)=>j.kind==="script-module"&&j.src===P))return R;return[...dR(P),...R]}function P1(R){return R.find((P)=>P.kind==="script-module")?.src}function c(R,P){if(typeof R==="function")return{...P,component:R};return R}function j1(R){if(R?.mode!==void 0||R?.hydrate!==void 0)return R;return{...R,mode:"hydrate"}}function pR(R){return"innerHTML"in R}function sR(R,P){if(typeof R.renderHostToString==="function")return R.renderHostToString(P);throw Error(`${R.constructor.name} cannot be server-rendered without a registered Radiant SSR host or renderHostToString().`)}function mR(R){let P=b(R);if(!P)throw Error(`${R.name} is missing @customElement metadata.`);return P}import{renderToString as aR}from"@ecopages/jsx/server";async function z0(R,P){return(await d(R,P)).markup}async function S0(R,P){return d(R,P)}async function O0(R,P){return e(await d(R,P))}async function b0(R,P){return lR(await d(R,P))}async function d(R,P){return U(f(),async()=>{let j=iR(P.tagName),Q=nR(j,oR(R,P)),$=new R(Q);z($);try{P.initialize?.($),$.runWithSsrLifecycle(()=>$.connect());let q=P.clientModuleSrc??await P.resolveClientModuleSrc?.(R),J=P.assets??await P.resolveAssets?.(R)??[],F=R1(J,q),B=P1(F)??q,I=(P.now??rR)().toISOString(),G=j1(P.renderOptions),L=PP($,j,G);return{markup:L,metadata:{assets:F,clientModuleUrl:B,generatedAt:I,tagName:j},preview:{nodeType:1,outerHTML:L}}}finally{$.disconnect()}})}function lR(R){return{assets:R.metadata.assets,clientModuleSrc:R.metadata.clientModuleUrl,generatedAt:R.metadata.generatedAt,markup:R.markup,preview:R.preview,tagName:R.metadata.tagName}}function rR(){return new Date}function iR(R){let P=R.trim().toLowerCase();if(!P)throw Error("Controller SSR host tagName is required.");return P}function nR(R,P){let Q=t().document.createElement(R);for(let[$,q]of Object.entries(P)){if(q===void 0||q===null||q===!1)continue;Q.setAttribute($,q===!0?"":String(q))}return Q}function oR(R,P){let j={},Q=P.host,$=eR(P.attributes?.class,Q?.class,Q?.classes);if($!==void 0)j.class=$;l1(j,"data",Q?.data),l1(j,"aria",Q?.aria),tR(j,P.attributes);let q=Y1(R);if(q&&j[W]==null)j[W]=q;return j}function l1(R,P,j){if(!i1(j))return;for(let[Q,$]of Object.entries(j))R[`${P}-${RP(Q)}`]=$}function tR(R,P){if(!P)return;for(let[j,Q]of Object.entries(P))R[j]=Q}function eR(...R){let P=[];for(let j of R)r1(P,j);return P.length===0?void 0:P.join(" ")}function r1(R,P){if(P===void 0||P===null||P===!1||P===!0)return;if(typeof P==="string"){if(P!=="")R.push(P);return}if(typeof P==="number"||typeof P==="bigint"){R.push(String(P));return}if(Array.isArray(P)){for(let j of P)r1(R,j);return}if(!i1(P))return;for(let[j,Q]of Object.entries(P))if(Q)R.push(j)}function i1(R){return Object.prototype.toString.call(R)==="[object Object]"}function RP(R){return R.replace(/([a-z0-9])([A-Z])/g,"$1-$2").replace(/[_\s]+/g,"-").toLowerCase()}function PP(R,P,j){let Q=Y(R.getSsrContextProviders());try{let $=l(()=>aR(R.render(),j)),J=j.mode==="hydrate"||j.mode===void 0&&j.hydrate===!0?R.getSsrHydrationBindings().map((F)=>F.renderHydrationScriptTag()).filter((F)=>typeof F==="string").join(""):"";return`<${P}${jP(R.host)}>${$}${J}</${P}>`}finally{Q()}}function jP(R){return R.getAttributeNames().map((P)=>QP(P,R.getAttribute(P))).join("")}function QP(R,P){if(P==="")return` ${R}`;return` ${R}="${$P(P??"")}"`}function $P(R){return R.replaceAll("&","&").replaceAll('"',""").replaceAll("<","<").replaceAll(">",">")}export{b0 as renderControllerWithPreview,z0 as renderControllerToString,O0 as renderControllerToPayload,S0 as renderController};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=6AED500EA3C2DA1E64756E2164756E21
|