@ecopages/radiant 0.3.0-alpha.12 → 0.3.0-alpha.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/context/decorators/consume-context.js +2 -2
- package/dist/context/decorators/consume-context.js.map +4 -4
- package/dist/context/decorators/context-selector.js +2 -2
- package/dist/context/decorators/context-selector.js.map +5 -5
- package/dist/context/decorators/legacy/consume-context.js +2 -2
- package/dist/context/decorators/legacy/consume-context.js.map +4 -4
- package/dist/context/decorators/legacy/context-selector-field.js +2 -2
- package/dist/context/decorators/legacy/context-selector-field.js.map +4 -4
- package/dist/context/decorators/legacy/context-selector.js +2 -2
- package/dist/context/decorators/legacy/context-selector.js.map +4 -4
- package/dist/context/decorators/legacy/provide-context.js +2 -2
- package/dist/context/decorators/legacy/provide-context.js.map +4 -4
- package/dist/context/decorators/on-context-update.js +2 -2
- package/dist/context/decorators/on-context-update.js.map +4 -4
- package/dist/context/decorators/provide-context.js +2 -2
- package/dist/context/decorators/provide-context.js.map +4 -4
- package/dist/context/index.js +2 -2
- package/dist/context/index.js.map +9 -9
- package/dist/core/radiant-controller.d.ts +34 -11
- package/dist/core/radiant-controller.js +2 -2
- package/dist/core/radiant-controller.js.map +10 -6
- package/dist/core/radiant-element-ssr-host.d.ts +23 -0
- package/dist/core/radiant-element-ssr-host.js +3 -0
- package/dist/core/radiant-element-ssr-host.js.map +10 -0
- package/dist/core/radiant-element-ssr-registry.d.ts +45 -0
- package/dist/core/radiant-element-ssr-registry.js +3 -0
- package/dist/core/radiant-element-ssr-registry.js.map +10 -0
- package/dist/core/{radiant-component-ssr.d.ts → radiant-element-ssr-service.d.ts} +3 -4
- package/dist/core/{radiant-component-ssr.js → radiant-element-ssr-service.js} +2 -2
- package/dist/core/{radiant-component-ssr.js.map → radiant-element-ssr-service.js.map} +4 -4
- package/dist/core/radiant-element.d.ts +17 -124
- package/dist/core/radiant-element.js +2 -2
- package/dist/core/radiant-element.js.map +15 -10
- package/dist/core/reactive-host.d.ts +2 -6
- package/dist/core/reactive-host.js +2 -2
- package/dist/core/reactive-host.js.map +7 -4
- package/dist/core/reactive-jsx-value.d.ts +2 -1
- package/dist/core/reactive-jsx-value.js.map +2 -2
- package/dist/core/reactive-prop-core.d.ts +42 -0
- package/dist/core/reactive-prop-core.js +3 -0
- package/dist/core/reactive-prop-core.js.map +11 -0
- package/dist/core/reactive-prop-metadata.d.ts +1 -1
- package/dist/core/reactive-prop-metadata.js +2 -2
- package/dist/core/reactive-prop-metadata.js.map +2 -2
- package/dist/core/reactivity-adapter.d.ts +8 -0
- package/dist/core/reactivity-adapter.js +3 -0
- package/dist/core/reactivity-adapter.js.map +12 -0
- package/dist/core/reactivity-contract.d.ts +39 -0
- package/dist/core/reactivity-contract.js +2 -0
- package/dist/core/reactivity-contract.js.map +9 -0
- package/dist/core/reactivity-runtime.d.ts +18 -0
- package/dist/core/reactivity-runtime.js +3 -0
- package/dist/core/reactivity-runtime.js.map +11 -0
- package/dist/core/reactivity-signals.d.ts +10 -0
- package/dist/core/reactivity-signals.js +3 -0
- package/dist/core/reactivity-signals.js.map +10 -0
- package/dist/core/render-runtime.d.ts +28 -0
- package/dist/core/render-runtime.js +3 -0
- package/dist/core/render-runtime.js.map +16 -0
- package/dist/core/slot-projection-runtime.js +2 -2
- package/dist/core/slot-projection-runtime.js.map +3 -3
- package/dist/decorators/attr.js +2 -2
- package/dist/decorators/attr.js.map +6 -5
- package/dist/decorators/event.js +2 -2
- package/dist/decorators/event.js.map +3 -3
- package/dist/decorators/legacy/attr.js +2 -2
- package/dist/decorators/legacy/attr.js.map +6 -5
- package/dist/decorators/legacy/event.js +2 -2
- package/dist/decorators/legacy/event.js.map +3 -3
- package/dist/decorators/legacy/instance-initializers.d.ts +16 -0
- package/dist/decorators/legacy/instance-initializers.js +2 -2
- package/dist/decorators/legacy/instance-initializers.js.map +3 -3
- package/dist/decorators/legacy/on-event.js +2 -2
- package/dist/decorators/legacy/on-event.js.map +3 -3
- package/dist/decorators/legacy/on-updated.js +2 -2
- package/dist/decorators/legacy/on-updated.js.map +3 -3
- package/dist/decorators/legacy/query-slot.js +2 -2
- package/dist/decorators/legacy/query-slot.js.map +5 -5
- package/dist/decorators/legacy/query.js +2 -2
- package/dist/decorators/legacy/query.js.map +3 -3
- package/dist/decorators/legacy/reactive-field.js +2 -2
- package/dist/decorators/legacy/reactive-field.js.map +3 -3
- package/dist/decorators/legacy/reactive-prop.d.ts +1 -1
- package/dist/decorators/legacy/reactive-prop.js +2 -2
- package/dist/decorators/legacy/reactive-prop.js.map +7 -6
- package/dist/decorators/legacy/signal.d.ts +1 -1
- package/dist/decorators/legacy/signal.js +2 -2
- package/dist/decorators/legacy/signal.js.map +4 -4
- package/dist/decorators/on-event.js +2 -2
- package/dist/decorators/on-event.js.map +3 -3
- package/dist/decorators/on-updated.js +2 -2
- package/dist/decorators/on-updated.js.map +3 -3
- package/dist/decorators/prop.d.ts +1 -1
- package/dist/decorators/prop.js +2 -2
- package/dist/decorators/prop.js.map +9 -8
- package/dist/decorators/query-slot.js +2 -2
- package/dist/decorators/query-slot.js.map +6 -6
- package/dist/decorators/query.js +2 -2
- package/dist/decorators/query.js.map +3 -3
- package/dist/decorators/shared/reactive-attr.d.ts +1 -1
- package/dist/decorators/shared/reactive-attr.js +2 -2
- package/dist/decorators/shared/reactive-attr.js.map +5 -4
- package/dist/decorators/signal.js +2 -2
- package/dist/decorators/signal.js.map +5 -5
- package/dist/decorators/standard/attr.js +2 -2
- package/dist/decorators/standard/attr.js.map +5 -4
- package/dist/decorators/standard/query-slot.d.ts +0 -1
- package/dist/decorators/standard/query-slot.js +2 -2
- package/dist/decorators/standard/query-slot.js.map +4 -4
- package/dist/decorators/standard/reactive-prop.d.ts +1 -1
- package/dist/decorators/standard/reactive-prop.js +2 -2
- package/dist/decorators/standard/reactive-prop.js.map +6 -5
- package/dist/decorators/standard/signal.d.ts +1 -1
- package/dist/decorators/standard/signal.js.map +1 -1
- package/dist/decorators/state.js +2 -2
- package/dist/decorators/state.js.map +3 -3
- package/dist/helpers/create-query-slot.d.ts +0 -1
- package/dist/helpers/create-query-slot.js +2 -2
- package/dist/helpers/create-query-slot.js.map +3 -3
- package/dist/helpers/index.js +2 -2
- package/dist/helpers/index.js.map +3 -3
- package/dist/index.js +2 -2
- package/dist/index.js.map +26 -21
- package/dist/package.json +1 -1
- package/dist/server/radiant-element-ssr-bridge.d.ts +21 -0
- package/dist/server/radiant-element-ssr-bridge.js +3 -0
- package/dist/server/radiant-element-ssr-bridge.js.map +19 -0
- package/dist/server/radiant-element-ssr-extractor.d.ts +3 -0
- package/dist/server/radiant-element-ssr-extractor.js +3 -0
- package/dist/server/radiant-element-ssr-extractor.js.map +12 -0
- package/dist/server/radiant-element-ssr-runtime.d.ts +1 -0
- package/dist/server/radiant-element-ssr-runtime.js +3 -0
- package/dist/server/radiant-element-ssr-runtime.js.map +19 -0
- package/dist/server/render-component.d.ts +2 -2
- package/dist/server/render-component.js +2 -2
- package/dist/server/render-component.js.map +11 -8
- package/dist/server/render-controller.js +2 -2
- package/dist/server/render-controller.js.map +12 -9
- package/dist/server/slot-projection-html.js +2 -2
- package/dist/server/slot-projection-html.js.map +3 -3
- package/package.json +1 -1
- package/size-budget.json +2 -2
- package/dist/core/radiant-component-ssr-registry.d.ts +0 -54
- package/dist/core/radiant-component-ssr-registry.js +0 -3
- package/dist/core/radiant-component-ssr-registry.js.map +0 -10
- package/dist/server/radiant-component-ssr-runtime.d.ts +0 -9
- package/dist/server/radiant-component-ssr-runtime.js +0 -3
- package/dist/server/radiant-component-ssr-runtime.js.map +0 -17
package/dist/package.json
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { JsxRenderable } from '@ecopages/jsx';
|
|
2
|
+
import type { RenderToStringOptions } from '@ecopages/jsx/server';
|
|
3
|
+
import { RadiantElementSsrService } from '../core/radiant-element-ssr-service';
|
|
4
|
+
import type { RadiantElementRenderBridge, RadiantElementServerRenderSsrCapable, RadiantElementSsrRuntime, RadiantElementTrackedRenderSsrCapable } from '../core/radiant-element-ssr-registry';
|
|
5
|
+
export declare function createRadiantElementSsrService(component: RadiantElementServerRenderSsrCapable): RadiantElementSsrService;
|
|
6
|
+
export declare function renderRadiantElementHost(component: RadiantElementServerRenderSsrCapable): JsxRenderable;
|
|
7
|
+
export declare function renderRegisteredRadiantElementHost(component: unknown): JsxRenderable | undefined;
|
|
8
|
+
export declare function renderRadiantElementHostToString(component: RadiantElementServerRenderSsrCapable, options?: RenderToStringOptions): string;
|
|
9
|
+
export declare function renderRegisteredRadiantElementHostToString(component: unknown, options?: RenderToStringOptions): string | undefined;
|
|
10
|
+
export declare function resolveRegisteredRadiantElementPreview(component: unknown, markup: string): JsxRenderable | undefined;
|
|
11
|
+
export declare function renderRadiantElementViewToString(component: RadiantElementTrackedRenderSsrCapable, options?: RenderToStringOptions): string;
|
|
12
|
+
export declare function getRadiantElementHostSsrAttributes(component: RadiantElementServerRenderSsrCapable): Record<string, string>;
|
|
13
|
+
export declare function resolveRadiantElementRenderBridge(component: object): RadiantElementRenderBridge | undefined;
|
|
14
|
+
export declare function resolveRadiantElementSsrHostBridge(component: object): object | undefined;
|
|
15
|
+
export declare function withRadiantServerCustomElementRenderBridge<T>(render: () => T): T;
|
|
16
|
+
export declare function getRadiantElementTrackedRenderOutput(component: RadiantElementTrackedRenderSsrCapable): {
|
|
17
|
+
containsSlots: boolean;
|
|
18
|
+
value: JsxRenderable;
|
|
19
|
+
};
|
|
20
|
+
export declare function getOrCreateRadiantElementSsrRuntime(): RadiantElementSsrRuntime;
|
|
21
|
+
export declare function withServerRadiantElementSsrRuntime<T>(render: () => T): T;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var O=((r)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(i,t)=>(typeof require<"u"?require:i)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});function C(r){switch(r){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function E(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 G(r){switch(r){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function U(r){try{return JSON.parse(r)}catch{throw TypeError("Invalid JSON string")}}var X={array(r){let i=U(r);if(!Array.isArray(i))throw TypeError(`Expected an array but got a value of type "${typeof i}"`);return i},boolean(r){return!(r==="0"||String(r).toLowerCase()==="false")},number(r){return Number(r.replace(/_/g,""))},object(r){let i=JSON.parse(r);if(i===null||typeof i!=="object"||Array.isArray(i))throw TypeError(`expected value of type "object" but instead got value "${r}" of type "${E(i)}"`);return i},string(r){return r}},b={default:k,array:y,object:y};function y(r){return JSON.stringify(r)}function k(r){return`${r}`}function x(r,i){let t=C(i);if(!t)throw TypeError(`[radiant-element] Unknown type "${i}"`);return X[t](r)}function $(r,i){let t=C(i);if(!t)throw TypeError(`[radiant-element] Unknown type "${i}"`);return(b[t]??b.default??k)(r)}function Y(r){return typeof r==="boolean"}function N(r){return typeof r==="number"}function K(r){return typeof r==="string"}function M(r){return Array.isArray(r)}function L(r){return typeof r==="object"&&!Array.isArray(r)&&r!==null}function Rr(r,i){switch(r){case Boolean:return Y(i);case Number:return N(i);case String:return K(i);case Array:return M(i);case Object:return L(i);default:return!1}}var hr=(r,i,t,s)=>{if(i===Boolean){let n=r.getAttribute(t);if(n===null)return s;return n===""?!0:x(n,i)}let e=r.getAttribute(t);return e!==null?x(e,i):s??G(i)};import{getActiveSsrScopeValue as l,withActiveSsrScopeValue as V}from"@ecopages/jsx/server";var j=Symbol.for("@ecopages/radiant.element-ssr-runtime");function Hr(){return l(j)}function w(r,i){return V(j,r,i)}var u=Symbol.for("@ecopages/radiant.customElementTagName");function yr(r,i){r[u]=i}function z(r){return r[u]}var a=Symbol.for("@ecopages/radiant.reactivePropDefinitions");function Cr(r,i,t){let s=r.constructor,e=s[a]??[];if(e.some((n)=>n.name===i))return;e.push({name:i,options:t}),s[a]=e}function c(r){return(r.constructor[a]??[]).slice()}var D=Symbol.for("@ecopages/radiant.ssr-context-provider-resolver");function W(){return globalThis}function p(r){W()[D]=r}function $r(r){return W()[D]?.(r)}var o;function I(){if(o!==void 0)return o;try{let{AsyncLocalStorage:r}=(()=>{throw new Error("Cannot require module "+"node:async_hooks");})();return o=new r,o}catch{return o=null,null}}var q=Symbol.for("@ecopages/radiant.ssr-context-fallback-stack");function J(){let r=globalThis;return r[q]??=[],r[q]}function T(r){if(r.length===0)return()=>{return};let i=new Map;for(let e of r)i.set(e.getContextKey(),e);let t=I();if(t){let e=t.getStore()??[],n=[...e,i];return t.enterWith(n),()=>{t.enterWith(e)}}let s=J();return s.push(i),()=>{let e=s.lastIndexOf(i);if(e>=0)s.splice(e,1)}}function Q(r){let i=I()?.getStore()??J();for(let t=i.length-1;t>=0;t-=1){let s=i[t]?.get(r);if(s)return s}return}function ur(r){let i=Q(r);if(!i)return;return i.getContext()}p((r)=>Q(r));class H{host;constructor(r){this.host=r}renderHost(){return{nodeType:1,outerHTML:this.renderHostToString({mode:"hydrate"})}}renderHostToString(r={},i=this.getHostAttributes()){let t=this.getTagName(),s=T(this.host.getContextProviders());try{return`<${t}${m(i)}>${this.renderHostContent(r)}</${t}>`}finally{s()}}renderHostContent(r){let i=this.host.renderViewToString(r),t=this.host.getAuthoredHydrationScriptMarkup?.()??"",s=this.host.getSlotProjectionScriptTag?.()??"";if(!(r.mode==="hydrate"||r.mode===void 0&&r.hydrate===!0))return`${i}${t}${s}`;let n=this.host.getHydrationBindings().map((S)=>S.renderHydrationScriptTag()).filter((S)=>typeof S==="string").join("");return`${i}${s}${n}`}getHostAttributes(){let r={},i=new Set;for(let t of this.host.getReactiveProperties()){let s=this.host.getPropertyValue(t.name);if(s===void 0||s===null||s===!1)continue;r[t.attribute]=String(t.converter.toAttribute(s)),i.add(t.attribute)}for(let t of this.host.getReactivePropDefinitions()){let s=t.options.attribute??t.name;if(i.has(s))continue;let e=this.host.getPropertyValue(t.name);if(e===void 0||e===null||e===!1)continue;r[s]=String($(e,t.options.type)),i.add(s)}for(let t of this.host.listAttributeNames()){let s=this.host.getAttributeValue(t);if(s!==null)r[t]=s}return r}getTagName(){let r=z(this.host.constructor);if(!r)throw Error(`${this.host.constructor.name} is missing @customElement metadata.`);return r}}function m(r){return Object.entries(r).map(([i,t])=>` ${i}="${_(t)}"`).join("")}function _(r){return r.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function g(r){if(rr(r))return r;return}function rr(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 Z(r){let i=g(r);if(!i)throw Error("Radiant SSR runtime requires a server extraction host shape on the component.");return{constructor:i.constructor,getAuthoredHydrationScriptMarkup:()=>i.getAuthoredHydrationScriptMarkup(),getContextProviders:()=>i.getContextProviders(),getHydrationBindings:()=>i.getHydrationBindings(),getSlotProjectionScriptTag:()=>i.getSlotProjectionScriptTag(),renderViewToString:(t)=>i.renderViewToString(t),getReactiveProperties:()=>i.getReactiveProperties(),getReactivePropDefinitions:()=>c(r),getPropertyValue:(t)=>Reflect.get(r,t),listAttributeNames:()=>i.getAttributeNames(),getAttributeValue:(t)=>i.getAttribute(t)}}import{renderToString as ir}from"@ecopages/jsx/server";import{isServerRenderHydrationActive as A,withForcedServerCustomElementRendering as tr,withServerCustomElementRenderHook as sr}from"@ecopages/jsx/server";var P;function B(r){return new H(Z(r))}function R(r){return{nodeType:1,outerHTML:d(r,{mode:"hydrate"})}}function Or(r){if(f(r))return R(r);if(!h(r))return;return r.renderHost?.()??{nodeType:1,outerHTML:r.renderHostToString({mode:"hydrate"})}}function d(r,i={}){return v(()=>B(r).renderHostToString(i,F(r)))}function Er(r,i={}){if(f(r))return d(r,i);if(!h(r))return;return r.renderHostToString(i)}function Gr(r,i){if(f(r))return R(r);if(!h(r))return;return r.renderHost?.()??{nodeType:1,outerHTML:i}}function er(r,i={}){return v(()=>gr(()=>ir(or(r).value,i)))}function F(r){return B(r).getHostAttributes()}function nr(r){if(!f(r))return;return{renderHost:()=>R(r),renderHostToString:(i)=>d(r,i)}}function Ur(r){return g(r)}function gr(r){return tr(()=>sr(({instance:i})=>{if(f(i))return{nodeType:1,get outerHTML(){let s=A();return d(i,{hydrate:s,mode:s?"hydrate":"plain"})}};if(!h(i))return;let t=i;return{nodeType:1,get outerHTML(){let s=A();return t.renderHostToString({hydrate:s,mode:s?"hydrate":"plain"})}}},r))}function or(r){if(dr(r))return r.resolveTrackedRenderOutput();let i=g(r);if(!i)throw Error("Radiant SSR runtime requires tracked render output support on the component.");return i.resolveTrackedRenderOutput()}function f(r){if(typeof r!=="object"||r===null)return!1;return g(r)!==void 0}function h(r){if(typeof r!=="object"||r===null)return!1;return typeof r.renderHostToString==="function"}function dr(r){if(typeof r!=="object"||r===null)return!1;return typeof r.resolveTrackedRenderOutput==="function"}function fr(){if(P)return P;return P={getHostAttributes:F,renderHost:R,renderHostToString:d,resolveRenderBridge:nr,renderView:er},P}function v(r){return w(fr(),r)}export{v as withServerRadiantElementSsrRuntime,gr as withRadiantServerCustomElementRenderBridge,Gr as resolveRegisteredRadiantElementPreview,Ur as resolveRadiantElementSsrHostBridge,nr as resolveRadiantElementRenderBridge,Er as renderRegisteredRadiantElementHostToString,Or as renderRegisteredRadiantElementHost,er as renderRadiantElementViewToString,d as renderRadiantElementHostToString,R as renderRadiantElementHost,or as getRadiantElementTrackedRenderOutput,F as getRadiantElementHostSsrAttributes,fr as getOrCreateRadiantElementSsrRuntime,B as createRadiantElementSsrService};
|
|
2
|
+
|
|
3
|
+
//# debugId=8177BBC8BA02E96E64756E2164756E21
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../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"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"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",
|
|
6
|
+
"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",
|
|
7
|
+
"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",
|
|
8
|
+
"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",
|
|
9
|
+
"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",
|
|
10
|
+
"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",
|
|
11
|
+
"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 { writeAttributeValue } from '../utils/attribute-utils';\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}${serializeHostAttributes(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 hostContent = this.host.renderViewToString(options);\n\t\tconst authoredHydrationMarkup = this.host.getAuthoredHydrationScriptMarkup?.() ?? '';\n\t\tconst slotProjectionScript = this.host.getSlotProjectionScriptTag?.() ?? '';\n\t\tconst hydrate = options.mode === 'hydrate' || (options.mode === undefined && options.hydrate === true);\n\n\t\tif (!hydrate) {\n\t\t\treturn `${hostContent}${authoredHydrationMarkup}${slotProjectionScript}`;\n\t\t}\n\n\t\tconst hydrationScripts = this.host\n\t\t\t.getHydrationBindings()\n\t\t\t.map((binding) => binding.renderHydrationScriptTag())\n\t\t\t.filter((markup): markup is string => typeof markup === 'string')\n\t\t\t.join('');\n\n\t\treturn `${hostContent}${slotProjectionScript}${hydrationScripts}`;\n\t}\n\n\tpublic getHostAttributes(): Record<string, string> {\n\t\tconst attributes: Record<string, string> = {};\n\t\tconst seenAttributes = new Set<string>();\n\n\t\tfor (const property of this.host.getReactiveProperties()) {\n\t\t\tconst currentValue = this.host.getPropertyValue(property.name);\n\t\t\tif (currentValue === undefined || currentValue === null || currentValue === false) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tattributes[property.attribute] = String(property.converter.toAttribute(currentValue));\n\t\t\tseenAttributes.add(property.attribute);\n\t\t}\n\n\t\tfor (const definition of this.host.getReactivePropDefinitions()) {\n\t\t\tconst attributeName = definition.options.attribute ?? definition.name;\n\n\t\t\tif (seenAttributes.has(attributeName)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst currentValue = this.host.getPropertyValue(definition.name);\n\n\t\t\tif (currentValue === undefined || currentValue === null || currentValue === false) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tattributes[attributeName] = String(writeAttributeValue(currentValue, definition.options.type));\n\t\t\tseenAttributes.add(attributeName);\n\t\t}\n\n\t\tfor (const attributeName of this.host.listAttributeNames()) {\n\t\t\tconst attributeValue = this.host.getAttributeValue(attributeName);\n\t\t\tif (attributeValue !== null) {\n\t\t\t\tattributes[attributeName] = attributeValue;\n\t\t\t}\n\t\t}\n\n\t\treturn attributes;\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\nfunction serializeHostAttributes(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\nfunction escapeAttribute(value: string): string {\n\treturn value.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>');\n}\n",
|
|
12
|
+
"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",
|
|
13
|
+
"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",
|
|
14
|
+
"import type { JsxRenderable } from '@ecopages/jsx';\nimport type { RenderToStringOptions } from '@ecopages/jsx/server';\nimport { renderToString as renderJsxToString } from '@ecopages/jsx/server';\nimport {\n\tisServerRenderHydrationActive,\n\twithForcedServerCustomElementRendering,\n\twithServerCustomElementRenderHook,\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\treturn renderRadiantElementHostToString(instance, options);\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\t\t\t\t\treturn legacyInstance.renderHostToString({ hydrate, mode: hydrate ? 'hydrate' : 'plain' });\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"
|
|
15
|
+
],
|
|
16
|
+
"mappings": "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",
|
|
17
|
+
"debugId": "8177BBC8BA02E96E64756E2164756E21",
|
|
18
|
+
"names": []
|
|
19
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { RadiantElementServerRenderSsrCapable } from '../core/radiant-element-ssr-registry';
|
|
2
|
+
import type { RadiantElementSsrHost } from '../core/radiant-element-ssr-service';
|
|
3
|
+
export declare function extractRadiantElementServerRenderHost(component: RadiantElementServerRenderSsrCapable): RadiantElementSsrHost;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var u=((t)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var i=Symbol.for("@ecopages/radiant.reactivePropDefinitions");function g(t,e,r){let o=t.constructor,n=o[i]??[];if(n.some((d)=>d.name===e))return;n.push({name:e,options:r}),o[i]=n}function a(t){return(t.constructor[i]??[]).slice()}function s(t){if(p(t))return t;return}function p(t){return typeof t.constructor==="function"&&typeof t.getAttribute==="function"&&typeof t.getAuthoredHydrationScriptMarkup==="function"&&typeof t.getContextProviders==="function"&&typeof t.getHydrationBindings==="function"&&typeof t.getReactiveProperties==="function"&&typeof t.getSlotProjectionScriptTag==="function"&&typeof t.resolveTrackedRenderOutput==="function"&&typeof t.renderViewToString==="function"}function y(t){let e=s(t);if(!e)throw Error("Radiant SSR runtime requires a server extraction host shape on the component.");return{constructor:e.constructor,getAuthoredHydrationScriptMarkup:()=>e.getAuthoredHydrationScriptMarkup(),getContextProviders:()=>e.getContextProviders(),getHydrationBindings:()=>e.getHydrationBindings(),getSlotProjectionScriptTag:()=>e.getSlotProjectionScriptTag(),renderViewToString:(r)=>e.renderViewToString(r),getReactiveProperties:()=>e.getReactiveProperties(),getReactivePropDefinitions:()=>a(t),getPropertyValue:(r)=>Reflect.get(t,r),listAttributeNames:()=>e.getAttributeNames(),getAttributeValue:(r)=>e.getAttribute(r)}}export{y as extractRadiantElementServerRenderHost};
|
|
2
|
+
|
|
3
|
+
//# debugId=53F6F54C3634D92664756E2164756E21
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/core/reactive-prop-metadata.ts", "../src/core/radiant-element-ssr-host.ts", "../src/server/radiant-element-ssr-extractor.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"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",
|
|
6
|
+
"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",
|
|
7
|
+
"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"
|
|
8
|
+
],
|
|
9
|
+
"mappings": "2PAEA,IAAM,EAA4B,OAAO,IAAI,2CAA2C,EAWjF,SAAS,CAA8B,CAC7C,EACA,EACA,EACO,CACP,IAAM,EAAc,EAAO,YACrB,EAAc,EAAY,IAA8B,CAAC,EAE/D,GAAI,EAAY,KAAK,CAAC,IAAe,EAAW,OAAS,CAAY,EACpE,OAGD,EAAY,KAAK,CAAE,KAAM,EAAc,SAAQ,CAAC,EAChD,EAAY,GAA6B,EAGnC,SAAS,CAA0B,CAAC,EAA0C,CACpF,OAAS,EAAO,YAAoD,IAA8B,CAAC,GAAG,MAAM,ECLtG,SAAS,CAAkC,CAAC,EAA4D,CAC9G,GAAI,EAA8B,CAAS,EAC1C,OAAO,EAGR,OAGD,SAAS,CAA6B,CAAC,EAA6D,CACnG,OACC,OAAO,EAAU,cAAgB,YACjC,OAAQ,EAAyC,eAAiB,YAClE,OAAQ,EAA6D,mCACpE,YACD,OAAQ,EAAgD,sBAAwB,YAChF,OAAQ,EAAiD,uBAAyB,YAClF,OAAQ,EAAkD,wBAA0B,YACpF,OAAQ,EAAuD,6BAA+B,YAC9F,OAAQ,EAAuD,6BAA+B,YAC9F,OAAQ,EAA+C,qBAAuB,WCvCzE,SAAS,CAAqC,CACpD,EACwB,CACxB,IAAM,EAAS,EAAmC,CAAS,EAE3D,GAAI,CAAC,EACJ,MAAU,MAAM,+EAA+E,EAGhG,MAAO,CACN,YAAa,EAAO,YACpB,iCAAkC,IAAM,EAAO,iCAAiC,EAChF,oBAAqB,IAAM,EAAO,oBAAoB,EACtD,qBAAsB,IAAM,EAAO,qBAAqB,EACxD,2BAA4B,IAAM,EAAO,2BAA2B,EACpE,mBAAoB,CAAC,IAAY,EAAO,mBAAmB,CAAO,EAClE,sBAAuB,IAAM,EAAO,sBAAsB,EAC1D,2BAA4B,IAAM,EAA2B,CAAS,EACtE,iBAAkB,CAAC,IAAS,QAAQ,IAAI,EAAW,CAAI,EACvD,mBAAoB,IAAM,EAAO,kBAAkB,EACnD,kBAAmB,CAAC,IAAS,EAAO,aAAa,CAAI,CACtD",
|
|
10
|
+
"debugId": "53F6F54C3634D92664756E2164756E21",
|
|
11
|
+
"names": []
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getOrCreateRadiantElementSsrRuntime, withServerRadiantElementSsrRuntime } from './radiant-element-ssr-bridge';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var O=((r)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(t,i)=>(typeof require<"u"?require:t)[i]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+r+'" is not supported')});function k(r){switch(r){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function G(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 U(r){switch(r){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function X(r){try{return JSON.parse(r)}catch{throw TypeError("Invalid JSON string")}}var Y={array(r){let t=X(r);if(!Array.isArray(t))throw TypeError(`Expected an array but got a value of type "${typeof t}"`);return t},boolean(r){return!(r==="0"||String(r).toLowerCase()==="false")},number(r){return Number(r.replace(/_/g,""))},object(r){let t=JSON.parse(r);if(t===null||typeof t!=="object"||Array.isArray(t))throw TypeError(`expected value of type "object" but instead got value "${r}" of type "${G(t)}"`);return t},string(r){return r}},y={default:$,array:x,object:x};function x(r){return JSON.stringify(r)}function $(r){return`${r}`}function C(r,t){let i=k(t);if(!i)throw TypeError(`[radiant-element] Unknown type "${t}"`);return Y[i](r)}function j(r,t){let i=k(t);if(!i)throw TypeError(`[radiant-element] Unknown type "${t}"`);return(y[i]??y.default??$)(r)}function N(r){return typeof r==="boolean"}function K(r){return typeof r==="number"}function M(r){return typeof r==="string"}function l(r){return Array.isArray(r)}function L(r){return typeof r==="object"&&!Array.isArray(r)&&r!==null}function Rr(r,t){switch(r){case Boolean:return N(t);case Number:return K(t);case String:return M(t);case Array:return l(t);case Object:return L(t);default:return!1}}var hr=(r,t,i,s)=>{if(t===Boolean){let n=r.getAttribute(i);if(n===null)return s;return n===""?!0:C(n,t)}let e=r.getAttribute(i);return e!==null?C(e,t):s??U(t)};import{getActiveSsrScopeValue as V,withActiveSsrScopeValue as m}from"@ecopages/jsx/server";var u=Symbol.for("@ecopages/radiant.element-ssr-runtime");function Hr(){return V(u)}function w(r,t){return m(u,r,t)}var z=Symbol.for("@ecopages/radiant.customElementTagName");function yr(r,t){r[z]=t}function c(r){return r[z]}var S=Symbol.for("@ecopages/radiant.reactivePropDefinitions");function Cr(r,t,i){let s=r.constructor,e=s[S]??[];if(e.some((n)=>n.name===t))return;e.push({name:t,options:i}),s[S]=e}function D(r){return(r.constructor[S]??[]).slice()}var W=Symbol.for("@ecopages/radiant.ssr-context-provider-resolver");function p(){return globalThis}function q(r){p()[W]=r}function $r(r){return p()[W]?.(r)}var o;function J(){if(o!==void 0)return o;try{let{AsyncLocalStorage:r}=(()=>{throw new Error("Cannot require module "+"node:async_hooks");})();return o=new r,o}catch{return o=null,null}}var I=Symbol.for("@ecopages/radiant.ssr-context-fallback-stack");function T(){let r=globalThis;return r[I]??=[],r[I]}function Q(r){if(r.length===0)return()=>{return};let t=new Map;for(let e of r)t.set(e.getContextKey(),e);let i=J();if(i){let e=i.getStore()??[],n=[...e,t];return i.enterWith(n),()=>{i.enterWith(e)}}let s=T();return s.push(t),()=>{let e=s.lastIndexOf(t);if(e>=0)s.splice(e,1)}}function Z(r){let t=J()?.getStore()??T();for(let i=t.length-1;i>=0;i-=1){let s=t[i]?.get(r);if(s)return s}return}function wr(r){let t=Z(r);if(!t)return;return t.getContext()}q((r)=>Z(r));class H{host;constructor(r){this.host=r}renderHost(){return{nodeType:1,outerHTML:this.renderHostToString({mode:"hydrate"})}}renderHostToString(r={},t=this.getHostAttributes()){let i=this.getTagName(),s=Q(this.host.getContextProviders());try{return`<${i}${_(t)}>${this.renderHostContent(r)}</${i}>`}finally{s()}}renderHostContent(r){let t=this.host.renderViewToString(r),i=this.host.getAuthoredHydrationScriptMarkup?.()??"",s=this.host.getSlotProjectionScriptTag?.()??"";if(!(r.mode==="hydrate"||r.mode===void 0&&r.hydrate===!0))return`${t}${i}${s}`;let n=this.host.getHydrationBindings().map((a)=>a.renderHydrationScriptTag()).filter((a)=>typeof a==="string").join("");return`${t}${s}${n}`}getHostAttributes(){let r={},t=new Set;for(let i of this.host.getReactiveProperties()){let s=this.host.getPropertyValue(i.name);if(s===void 0||s===null||s===!1)continue;r[i.attribute]=String(i.converter.toAttribute(s)),t.add(i.attribute)}for(let i of this.host.getReactivePropDefinitions()){let s=i.options.attribute??i.name;if(t.has(s))continue;let e=this.host.getPropertyValue(i.name);if(e===void 0||e===null||e===!1)continue;r[s]=String(j(e,i.options.type)),t.add(s)}for(let i of this.host.listAttributeNames()){let s=this.host.getAttributeValue(i);if(s!==null)r[i]=s}return r}getTagName(){let r=c(this.host.constructor);if(!r)throw Error(`${this.host.constructor.name} is missing @customElement metadata.`);return r}}function _(r){return Object.entries(r).map(([t,i])=>` ${t}="${rr(i)}"`).join("")}function rr(r){return r.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function g(r){if(tr(r))return r;return}function tr(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 v(r){let t=g(r);if(!t)throw Error("Radiant SSR runtime requires a server extraction host shape on the component.");return{constructor:t.constructor,getAuthoredHydrationScriptMarkup:()=>t.getAuthoredHydrationScriptMarkup(),getContextProviders:()=>t.getContextProviders(),getHydrationBindings:()=>t.getHydrationBindings(),getSlotProjectionScriptTag:()=>t.getSlotProjectionScriptTag(),renderViewToString:(i)=>t.renderViewToString(i),getReactiveProperties:()=>t.getReactiveProperties(),getReactivePropDefinitions:()=>D(r),getPropertyValue:(i)=>Reflect.get(r,i),listAttributeNames:()=>t.getAttributeNames(),getAttributeValue:(i)=>t.getAttribute(i)}}import{renderToString as ir}from"@ecopages/jsx/server";import{isServerRenderHydrationActive as A,withForcedServerCustomElementRendering as sr,withServerCustomElementRenderHook as er}from"@ecopages/jsx/server";var P;function B(r){return new H(v(r))}function R(r){return{nodeType:1,outerHTML:d(r,{mode:"hydrate"})}}function Er(r){if(f(r))return R(r);if(!h(r))return;return r.renderHost?.()??{nodeType:1,outerHTML:r.renderHostToString({mode:"hydrate"})}}function d(r,t={}){return b(()=>B(r).renderHostToString(t,F(r)))}function Or(r,t={}){if(f(r))return d(r,t);if(!h(r))return;return r.renderHostToString(t)}function Gr(r,t){if(f(r))return R(r);if(!h(r))return;return r.renderHost?.()??{nodeType:1,outerHTML:t}}function nr(r,t={}){return b(()=>or(()=>ir(dr(r).value,t)))}function F(r){return B(r).getHostAttributes()}function gr(r){if(!f(r))return;return{renderHost:()=>R(r),renderHostToString:(t)=>d(r,t)}}function Ur(r){return g(r)}function or(r){return sr(()=>er(({instance:t})=>{if(f(t))return{nodeType:1,get outerHTML(){let s=A();return d(t,{hydrate:s,mode:s?"hydrate":"plain"})}};if(!h(t))return;let i=t;return{nodeType:1,get outerHTML(){let s=A();return i.renderHostToString({hydrate:s,mode:s?"hydrate":"plain"})}}},r))}function dr(r){if(fr(r))return r.resolveTrackedRenderOutput();let t=g(r);if(!t)throw Error("Radiant SSR runtime requires tracked render output support on the component.");return t.resolveTrackedRenderOutput()}function f(r){if(typeof r!=="object"||r===null)return!1;return g(r)!==void 0}function h(r){if(typeof r!=="object"||r===null)return!1;return typeof r.renderHostToString==="function"}function fr(r){if(typeof r!=="object"||r===null)return!1;return typeof r.resolveTrackedRenderOutput==="function"}function E(){if(P)return P;return P={getHostAttributes:F,renderHost:R,renderHostToString:d,resolveRenderBridge:gr,renderView:nr},P}function b(r){return w(E(),r)}export{b as withServerRadiantElementSsrRuntime,E as getOrCreateRadiantElementSsrRuntime};
|
|
2
|
+
|
|
3
|
+
//# debugId=121458B3BB86048C64756E2164756E21
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../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"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"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",
|
|
6
|
+
"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",
|
|
7
|
+
"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",
|
|
8
|
+
"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",
|
|
9
|
+
"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",
|
|
10
|
+
"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",
|
|
11
|
+
"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 { writeAttributeValue } from '../utils/attribute-utils';\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}${serializeHostAttributes(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 hostContent = this.host.renderViewToString(options);\n\t\tconst authoredHydrationMarkup = this.host.getAuthoredHydrationScriptMarkup?.() ?? '';\n\t\tconst slotProjectionScript = this.host.getSlotProjectionScriptTag?.() ?? '';\n\t\tconst hydrate = options.mode === 'hydrate' || (options.mode === undefined && options.hydrate === true);\n\n\t\tif (!hydrate) {\n\t\t\treturn `${hostContent}${authoredHydrationMarkup}${slotProjectionScript}`;\n\t\t}\n\n\t\tconst hydrationScripts = this.host\n\t\t\t.getHydrationBindings()\n\t\t\t.map((binding) => binding.renderHydrationScriptTag())\n\t\t\t.filter((markup): markup is string => typeof markup === 'string')\n\t\t\t.join('');\n\n\t\treturn `${hostContent}${slotProjectionScript}${hydrationScripts}`;\n\t}\n\n\tpublic getHostAttributes(): Record<string, string> {\n\t\tconst attributes: Record<string, string> = {};\n\t\tconst seenAttributes = new Set<string>();\n\n\t\tfor (const property of this.host.getReactiveProperties()) {\n\t\t\tconst currentValue = this.host.getPropertyValue(property.name);\n\t\t\tif (currentValue === undefined || currentValue === null || currentValue === false) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tattributes[property.attribute] = String(property.converter.toAttribute(currentValue));\n\t\t\tseenAttributes.add(property.attribute);\n\t\t}\n\n\t\tfor (const definition of this.host.getReactivePropDefinitions()) {\n\t\t\tconst attributeName = definition.options.attribute ?? definition.name;\n\n\t\t\tif (seenAttributes.has(attributeName)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst currentValue = this.host.getPropertyValue(definition.name);\n\n\t\t\tif (currentValue === undefined || currentValue === null || currentValue === false) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tattributes[attributeName] = String(writeAttributeValue(currentValue, definition.options.type));\n\t\t\tseenAttributes.add(attributeName);\n\t\t}\n\n\t\tfor (const attributeName of this.host.listAttributeNames()) {\n\t\t\tconst attributeValue = this.host.getAttributeValue(attributeName);\n\t\t\tif (attributeValue !== null) {\n\t\t\t\tattributes[attributeName] = attributeValue;\n\t\t\t}\n\t\t}\n\n\t\treturn attributes;\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\nfunction serializeHostAttributes(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\nfunction escapeAttribute(value: string): string {\n\treturn value.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>');\n}\n",
|
|
12
|
+
"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",
|
|
13
|
+
"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",
|
|
14
|
+
"import type { JsxRenderable } from '@ecopages/jsx';\nimport type { RenderToStringOptions } from '@ecopages/jsx/server';\nimport { renderToString as renderJsxToString } from '@ecopages/jsx/server';\nimport {\n\tisServerRenderHydrationActive,\n\twithForcedServerCustomElementRendering,\n\twithServerCustomElementRenderHook,\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\treturn renderRadiantElementHostToString(instance, options);\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\t\t\t\t\treturn legacyInstance.renderHostToString({ hydrate, mode: hydrate ? 'hydrate' : 'plain' });\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"
|
|
15
|
+
],
|
|
16
|
+
"mappings": "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",
|
|
17
|
+
"debugId": "121458B3BB86048C64756E2164756E21",
|
|
18
|
+
"names": []
|
|
19
|
+
}
|
|
@@ -68,9 +68,9 @@ export type RenderedComponentWithPreview = RenderedComponentPayload & {
|
|
|
68
68
|
preview: JsxRenderable;
|
|
69
69
|
};
|
|
70
70
|
/** Minimal component contract needed for framework-agnostic SSR helpers. */
|
|
71
|
-
export type ServerRenderableComponent = {
|
|
71
|
+
export type ServerRenderableComponent = object & {
|
|
72
72
|
renderHost?: () => JsxRenderable;
|
|
73
|
-
renderHostToString
|
|
73
|
+
renderHostToString?: (options?: RenderToStringOptions) => string;
|
|
74
74
|
};
|
|
75
75
|
/** Constructor shape for a server-renderable component. */
|
|
76
76
|
export type ServerRenderableComponentConstructor<TComponent extends ServerRenderableComponent> = CustomElementConstructor & {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Uf=((f)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(f,{get:($,P)=>(typeof require<"u"?require:$)[P]}):f)(function(f){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+f+'" is not supported')});var O=Symbol.for("@ecopages/radiant.component-ssr-runtime");function A(){return globalThis[O]}function v(f){globalThis[O]=f}function r(f){switch(f){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function Xf(f){switch(typeof f){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(f))return"array";if(Object.prototype.toString.call(f)==="[object Object]")return"object"}function Wf(f){switch(f){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function Yf(f){try{return JSON.parse(f)}catch{throw TypeError("Invalid JSON string")}}var Kf={array(f){let $=Yf(f);if(!Array.isArray($))throw TypeError(`Expected an array but got a value of type "${typeof $}"`);return $},boolean(f){return!(f==="0"||String(f).toLowerCase()==="false")},number(f){return Number(f.replace(/_/g,""))},object(f){let $=JSON.parse(f);if($===null||typeof $!=="object"||Array.isArray($))throw TypeError(`expected value of type "object" but instead got value "${f}" of type "${Xf($)}"`);return $},string(f){return f}},c={default:p,array:M,object:M};function M(f){return JSON.stringify(f)}function p(f){return`${f}`}function u(f,$){let P=r($);if(!P)throw TypeError(`[radiant-element] Unknown type "${$}"`);return Kf[P](f)}function i(f,$){let P=r($);if(!P)throw TypeError(`[radiant-element] Unknown type "${$}"`);return(c[P]??c.default??p)(f)}function bf(f){return typeof f==="boolean"}function hf(f){return typeof f==="number"}function Af(f){return typeof f==="string"}function xf(f){return Array.isArray(f)}function gf(f){return typeof f==="object"&&!Array.isArray(f)&&f!==null}function Q1(f,$){switch(f){case Boolean:return bf($);case Number:return hf($);case String:return Af($);case Array:return xf($);case Object:return gf($);default:return!1}}var Z1=(f,$,P,j)=>{if($===Boolean){let Q=f.getAttribute(P);if(Q===null)return j;return Q===""?!0:u(Q,$)}let q=f.getAttribute(P);return q!==null?u(q,$):j??Wf($)};var d=Symbol.for("@ecopages/radiant.customElementTagName");function F1(f,$){f[d]=$}function x(f){return f[d]}var k=Symbol.for("@ecopages/radiant.reactivePropDefinitions");function G1(f,$,P){let j=f.constructor,q=j[k]??[];if(q.some((Q)=>Q.name===$))return;q.push({name:$,options:P}),j[k]=q}function l(f){return(f.constructor[k]??[]).slice()}var t=Symbol.for("@ecopages/radiant.ssr-context-provider-resolver");function m(){return globalThis}function a(f){m()[t]=f}function U1(f){return m()[t]?.(f)}var U;function n(){if(U!==void 0)return U;try{let{AsyncLocalStorage:f}=(()=>{throw new Error("Cannot require module "+"node:async_hooks");})();return U=new f,U}catch{return U=null,null}}var o=Symbol.for("@ecopages/radiant.ssr-context-fallback-stack");function e(){let f=globalThis;return f[o]??=[],f[o]}function g(f){if(f.length===0)return()=>{return};let $=new Map;for(let q of f)$.set(q.getContextKey(),q);let P=n();if(P){let q=P.getStore()??[],Q=[...q,$];return P.enterWith(Q),()=>{P.enterWith(q)}}let j=e();return j.push($),()=>{let q=j.lastIndexOf($);if(q>=0)j.splice(q,1)}}function ff(f){let $=n()?.getStore()??e();for(let P=$.length-1;P>=0;P-=1){let j=$[P]?.get(f);if(j)return j}return}function Y1(f){let $=ff(f);if(!$)return;return $.getContext()}a((f)=>ff(f));class L{host;constructor(f){this.host=f}renderHost(){return{nodeType:1,outerHTML:this.renderHostToString({mode:"hydrate"})}}renderHostToString(f={},$=this.getHostAttributes()){let P=this.getTagName(),j=g(this.host.getContextProviders());try{return`<${P}${Bf($)}>${this.renderHostContent(f)}</${P}>`}finally{j()}}renderHostContent(f){let $=this.host.renderToString(f),P=this.host.getAuthoredHydrationScriptMarkup?.()??"",j=this.host.getSlotProjectionScriptTag?.()??"";if(!(f.mode==="hydrate"||f.mode===void 0&&f.hydrate===!0))return`${$}${P}${j}`;let Q=this.host.getHydrationBindings().map((Z)=>Z.renderHydrationScriptTag()).filter((Z)=>typeof Z==="string").join("");return`${$}${j}${Q}`}getHostAttributes(){let f={},$=new Set;for(let P of this.host.getReactiveProperties()){let j=this.host.getPropertyValue(P.name);if(j===void 0||j===null||j===!1)continue;f[P.attribute]=String(P.converter.toAttribute(j)),$.add(P.attribute)}for(let P of this.host.getReactivePropDefinitions()){let j=P.options.attribute??P.name;if($.has(j))continue;let q=this.host.getPropertyValue(P.name);if(q===void 0||q===null||q===!1)continue;f[j]=String(i(q,P.options.type)),$.add(j)}for(let P of this.host.listAttributeNames()){let j=this.host.getAttributeValue(P);if(j!==null)f[P]=j}return f}getTagName(){let f=x(this.host.constructor);if(!f)throw Error(`${this.host.constructor.name} is missing @customElement metadata.`);return f}}function Bf(f){return Object.entries(f).map(([$,P])=>` ${$}="${If(P)}"`).join("")}function If(f){return f.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}import{renderToString as yf}from"@ecopages/jsx/server";import{withServerCustomElementRenderHook as Vf}from"@ecopages/jsx/server";var zf=Symbol.for("@ecopages/jsx.active-ssr-hydrate"),T=new WeakSet;function _f(f){return{nodeType:1,outerHTML:$f(f,{mode:"hydrate"})}}function $f(f,$={}){return jf(f).renderHostToString($,Pf(f))}function Pf(f){let $=f;if(T.has(f))return jf(f).getHostAttributes();T.add(f);try{return $.getHostSsrAttributes()}finally{T.delete(f)}}function jf(f){let $=f;return new L({constructor:$.constructor,getAuthoredHydrationScriptMarkup:()=>$.getAuthoredHydrationScriptMarkup(),getHydrationBindings:()=>$.getHydrationBindings(),getSlotProjectionScriptTag:()=>$.getSlotProjectionScriptTag(),renderToString:(P)=>$.renderToString(P),getContextProviders:()=>$.getContextProviders(),getReactiveProperties:()=>$.getReactiveProperties(),getReactivePropDefinitions:()=>l(f),getPropertyValue:(P)=>$[P],listAttributeNames:()=>typeof $.getAttributeNames==="function"?$.getAttributeNames():[],getAttributeValue:(P)=>$.getAttribute(P)})}function wf(f){return Vf(({instance:$})=>{let P=qf($);if(!P?.renderHostToString)return;let j=P.renderHostToString;return{nodeType:1,get outerHTML(){let q=kf();return j({hydrate:q,mode:q?"hydrate":"plain"})}}},f)}function qf(f){return f.resolveSsrRenderBridge?.()}function kf(){return globalThis[zf]===!0}function B(){let f=A();if(f)return f;let $={getHostAttributes:Pf,renderHost:_f,renderHostToString:$f,resolveRenderBridge:qf,renderView:(P,j={})=>{let q=P;return wf(()=>yf(q.resolveTrackedRenderOutput().value,j))}};return v($),$}B();var I=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);function Qf(f){let $=[],P=0;while(P<f.length){let j=P;if(f.startsWith("<!--",P)){let Z=f.indexOf("-->",P+4);P=Z===-1?f.length:Z+3,$.push(f.slice(j,P));continue}if(f[P]!=="<"){let Z=f.indexOf("<",P);P=Z===-1?f.length:Z,$.push(f.slice(j,P));continue}let q=X(f,P);if(!q){$.push(f.slice(j));break}if(q.type!=="open"||q.selfClosing||I.has(q.tagName)){P=q.end,$.push(f.slice(j,P));continue}P=q.end;let Q=1;while(P<f.length&&Q>0){let Z=f.indexOf("<",P);if(Z===-1){P=f.length;break}let J=X(f,Z);if(!J){P=f.length;break}if(P=J.end,J.type==="comment"||J.type==="declaration")continue;if(J.type==="open"&&!J.selfClosing&&!I.has(J.tagName)){Q+=1;continue}if(J.type==="close")Q-=1}$.push(f.slice(j,P))}return $.filter((j)=>j!=="")}function Lf(f,$){let P;for(let j=$+1;j<f.length;j+=1){let q=f[j];if(P){if(q===P)P=void 0;continue}if(q==='"'||q==="'"){P=q;continue}if(q===">")return j+1}return f.length}function Tf(f){let $={},P=/([:^@A-Za-z0-9_.-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>/]+)))?/g;for(let j of f.matchAll(P)){let[,q,Q,Z,J]=j;if(!q)continue;$[q]=Q??Z??J??""}return $}function X(f,$){if(f.startsWith("<!--",$)){let h=f.indexOf("-->",$+4);return{end:h===-1?f.length:h+3,type:"comment"}}let P=Lf(f,$),j=f.slice($+1,P-1).trim();if(j==="")return;if(j.startsWith("!")||j.startsWith("?"))return{end:P,type:"declaration"};if(j.startsWith("/"))return{end:P,type:"close"};let q=/\/\s*$/.test(j),Q=q?j.replace(/\/\s*$/,"").trim():j,Z=Q.split(/[\s/>]/,1)[0]?.toLowerCase()??"",J=Z.length,R=Q.slice(J).trim(),w=q||I.has(Z)?"":Cf(f,$,P,Z);return{attributes:Tf(R),end:P,innerHtml:w,selfClosing:q,tagName:Z,type:"open"}}function Cf(f,$,P,j){let q=P,Q=1;while(q<f.length&&Q>0){let Z=f.indexOf("<",q);if(Z===-1)return f.slice(P);let J=X(f,Z);if(!J)return f.slice(P);if(J.type==="open"&&J.tagName===j&&!J.selfClosing&&!I.has(j))Q+=1;if(J.type==="close"){if(f.slice(Z+2,J.end-1).trim().toLowerCase()===j){if(Q-=1,Q===0)return f.slice(P,Z)}}q=J.end}return f.slice(P)}class F extends EventTarget{nodeType;static DOCUMENT_NODE=9;static ELEMENT_NODE=1;static TEXT_NODE=3;childNodes=[];ownerDocument;parentNode=null;constructor(f,$=null){super();this.nodeType=f;this.ownerDocument=$}append(...f){for(let $ of f)this.appendChild(typeof $==="string"?Df($):$)}appendChild(f){if("parentNode"in f&&f.parentNode&&"removeChild"in f.parentNode)f.parentNode.removeChild(f);return this.childNodes.push(f),f.ownerDocument=this.nodeType===F.DOCUMENT_NODE?this:this.ownerDocument,f.parentNode=this,f}removeChild(f){let $=this.childNodes.indexOf(f);if($===-1)return f;return this.childNodes.splice($,1),f.parentNode=null,f}replaceChildren(...f){for(let $ of this.childNodes)$.parentNode=null;this.childNodes=[],this.append(...f)}get textContent(){return this.childNodes.map((f)=>f.textContent??"").join("")}set textContent(f){this.replaceChildren(f??"")}getRootNode(){let f=this;while("parentNode"in f&&f.parentNode)f=f.parentNode;return f}}class K extends F{value;constructor(f,$=H()){super(F.TEXT_NODE,$);this.value=f}get textContent(){return this.value}set textContent(f){this.value=f??""}}class Zf{element;constructor(f){this.element=f}add(...f){let $=new Set(this.readTokens());for(let P of f)if(P!=="")$.add(P);this.writeTokens([...$])}remove(...f){let $=new Set(this.readTokens());for(let P of f)$.delete(P);this.writeTokens([...$])}toggle(f,$){let P=this.contains(f);if($??!P)return this.add(f),!0;return this.remove(f),!1}contains(f){return this.readTokens().includes(f)}toString(){return this.value}get value(){return this.element.getAttribute("class")??""}readTokens(){return this.value.split(/\s+/).map((f)=>f.trim()).filter((f)=>f.length>0)}writeTokens(f){if(f.length===0){this.element.removeAttribute("class");return}this.element.setAttribute("class",f.join(" "))}}class y extends F{attributes=new Map;classListValue;datasetValue;fragmentHtml;fragmentText;localName;tagName;constructor(f="div",$=H()){super(F.ELEMENT_NODE,$);this.localName=f.toLowerCase(),this.tagName=this.localName.toUpperCase()}get classList(){return this.classListValue??=new Zf(this),this.classListValue}get dataset(){return this.datasetValue??=new Proxy({},{deleteProperty:(f,$)=>{if(typeof $!=="string")return!1;return this.removeAttribute(Y($)),!0},get:(f,$)=>{if(typeof $!=="string")return;return this.getAttribute(Y($))??void 0},getOwnPropertyDescriptor:(f,$)=>{if(typeof $!=="string")return;return{configurable:!0,enumerable:!0,value:this.getAttribute(Y($))??void 0,writable:!0}},has:(f,$)=>{return typeof $==="string"&&this.hasAttribute(Y($))},ownKeys:()=>{return this.getAttributeNames().filter((f)=>f.startsWith("data-")).map((f)=>vf(f.slice(5)))},set:(f,$,P)=>{if(typeof $!=="string")return!1;return this.setAttribute(Y($),String(P)),!0}}),this.datasetValue}hasAttribute(f){return this.attributes.has(f)}getAttribute(f){return this.attributes.get(f)??null}getAttributeNames(){return Array.from(this.attributes.keys())}setAttribute(f,$){this.fragmentHtml=void 0,this.attributes.set(f,String($))}toggleAttribute(f,$){if($??!this.hasAttribute(f))return this.setAttribute(f,""),!0;return this.removeAttribute(f),!1}removeAttribute(f){this.fragmentHtml=void 0,this.attributes.delete(f)}querySelector(){return null}querySelectorAll(){return[]}matches(){return!1}get outerHTML(){if(this.fragmentHtml!==void 0)return this.fragmentHtml;let f=Array.from(this.attributes.entries()).map(([$,P])=>` ${$}="${Ef(P)}"`).join("");return`<${this.localName}${f}>${this.innerHTML}</${this.localName}>`}get innerHTML(){return this.childNodes.map((f)=>Mf(f)).join("")}set innerHTML(f){this.fragmentHtml=void 0,this.fragmentText=void 0,this.replaceChildren(...Gf(f,this.ownerDocument))}get textContent(){return this.fragmentText??super.textContent??""}set textContent(f){this.fragmentHtml=void 0,this.fragmentText=f??"",super.textContent=f}setSerializedFragment(f,$,P){this.fragmentHtml=f,this.fragmentText=$,this.attributes=new Map(Object.entries(P)),this.replaceChildren()}}class V{bubbles;cancelable;composed;type;constructor(f,$={}){this.type=f,this.bubbles=$.bubbles??!1,this.cancelable=$.cancelable??!1,this.composed=$.composed??!1}}class S extends V{detail;constructor(f,$={}){super(f,$);this.detail=$.detail}}class G extends y{isConnected=!1;constructor(f="div",$=H()){super(f,$)}insertAdjacentHTML(f,$){this.append(...Gf($,this.ownerDocument))}}class b extends G{constructor(f=H()){super("script",f)}}class C extends F{constructor(){super(F.DOCUMENT_NODE)}createElement(f){return f.toLowerCase()==="script"?new b(this):new G(f,this)}createTextNode(f){return new K(f,this)}querySelector(){return null}querySelectorAll(){return[]}}class Jf{definitions=new Map;define(f,$){if(this.definitions.has(f))return;this.definitions.set(f,$)}get(f){return this.definitions.get(f)}}var W,D={escape(f){return cf(String(f))}};function Df(f){return new K(f,H())}function H(){return globalThis.document??null}function Ff(){let f=globalThis,$=f.customElements;if(typeof f.Node>"u"||typeof f.Document>"u"||typeof f.Element>"u"||typeof f.HTMLElement>"u"||typeof f.document>"u"||!$||typeof $.define!=="function"||typeof $.get!=="function")return;return f.window??{CSS:f.CSS??D,CustomEvent:f.CustomEvent??S,Document:f.Document,Element:f.Element,Event:f.Event??V,EventTarget:f.EventTarget??EventTarget,HTMLScriptElement:f.HTMLScriptElement??f.HTMLElement,HTMLElement:f.HTMLElement,Node:f.Node,document:f.document,customElements:$}}function Sf(){let f=Ff();if(f)return f;return Nf()}function Rf(){return Sf(),{prepareHost(f,$={}){if($.authoredContent!==void 0)f.innerHTML=$.authoredContent}}}function Nf(){let f=Ff();if(f)return f;if(W)return W;let $=new Jf,P=new C,j=globalThis.Event??V,q=globalThis.CustomEvent??S,Q=C,Z=globalThis.EventTarget??EventTarget;return W={CSS:globalThis.CSS??D,CustomEvent:q,Document:Q,Element:y,Event:j,EventTarget:Z,HTMLScriptElement:b,HTMLElement:G,Node:F,document:P,customElements:$},Object.assign(globalThis,{CSS:globalThis.CSS??D,CustomEvent:q,Document:Q,Element:y,Event:j,EventTarget:Z,HTMLScriptElement:b,HTMLElement:G,Node:F,document:P,customElements:$,window:W}),W}function sf(f,$,P){let j=$.tagName==="script"?new b(P):new G($.tagName,P);return j.setSerializedFragment(f,Of($.innerHtml),$.attributes),j}function Ef(f){return f.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Of(f){return f.replace(/<!--.*?-->/gs,"").replace(/<[^>]+>/g,"")}function Gf(f,$=H()){return Qf(f).map((P)=>{if(!P.startsWith("<"))return new K(P,$);let j=X(P,0);if(!j||j.type!=="open")return new K(P,$);return sf(P,j,$)})}function Y(f){return`data-${f.replace(/([A-Z])/g,"-$1").toLowerCase()}`}function vf(f){return f.replace(/-([a-z])/g,($,P)=>P.toUpperCase())}function cf(f){let $="";for(let P=0;P<f.length;P+=1){let j=f[P]??"",q=j.codePointAt(0)??0;if(q===0){$+="�";continue}let Q=q>=1&&q<=31||q===127,Z=P===0&&q>=48&&q<=57,J=P===1&&q>=48&&q<=57&&(f[0]??"")==="-",R=P===0&&j==="-"&&f.length===1;if(Q||Z||J){$+=`\\${q.toString(16)} `;continue}if(q>=128||j==="-"||j==="_"||q>=48&&q<=57||q>=65&&q<=90||q>=97&&q<=122){$+=R?`\\${j}`:j;continue}$+=`\\${j}`}return $}function Mf(f){if(f.nodeType===F.TEXT_NODE)return f.textContent??"";return"outerHTML"in f&&typeof f.outerHTML==="string"?f.outerHTML:f.textContent??""}B();function uf(f,$="hydrate"){return{kind:"script-module",src:f,stage:$}}function N1(f){return{kind:"modulepreload",href:f}}function s1(f,$){return $?{kind:"style",href:f,media:$}:{kind:"style",href:f}}async function E1(f,$){return(await z(_(f,$))).markup}async function O1(f,$){return z(_(f,$))}async function v1(f,$){return tf(await z(_(f,$)))}async function c1(f,$){return mf(await z(_(f,$)))}async function z(f){B();let $=f.environment??Rf(),P=g(lf(f.ssrContext));try{let j="component"in f?f.component:await f.load(),q=new j;df($,q,f.authoredContent,f.prepareHost),f.initialize?.(q);let Q=f.clientModuleSrc??await f.resolveClientModuleSrc?.(j),Z=f.assets??await f.resolveAssets?.(j)??[],J=nf(Z,Q),R=ef(J)??Q,w=f.tagName??P1(j),h=(f.now??af)().toISOString(),N=f1(f.renderOptions),s=rf(q),E=s?.renderHostToString?.(N)??q.renderHostToString(N),Hf=pf(q,s,E);return{markup:E,metadata:{assets:J,clientModuleUrl:R,generatedAt:h,tagName:w},preview:Hf}}finally{P()}}function rf(f){return A()?.resolveRenderBridge(f)}function pf(f,$,P){if(!$)return f.renderHost?.()??{nodeType:1,outerHTML:P};if(!$.renderHostToString&&$.renderHost)return{nodeType:1,outerHTML:P};return $.renderHost?.()??f.renderHost?.()??{nodeType:1,outerHTML:P}}function df(f,$,P,j){if(!$1($)){if(P===void 0&&j===void 0)return;throw Error(`${$.constructor.name} cannot prepare SSR host content because it does not expose an innerHTML host surface.`)}f.prepareHost($,{authoredContent:P}),j?.($,f)}function lf(f){if(!f||f.length===0)return[];return f.map(($)=>({getContext:()=>$.value,getContextKey:()=>$.context,renderHydrationScript:()=>{return},renderHydrationScriptTag:()=>{return}}))}function tf(f){if("metadata"in f)return{assets:f.metadata.assets,clientModuleSrc:f.metadata.clientModuleUrl,generatedAt:f.metadata.generatedAt,markup:f.markup,tagName:f.metadata.tagName};let{preview:$,...P}=f;return P}function mf(f){return{assets:f.metadata.assets,clientModuleSrc:f.metadata.clientModuleUrl,generatedAt:f.metadata.generatedAt,markup:f.markup,preview:f.preview,tagName:f.metadata.tagName}}function af(){return new Date}function of(f){if(!f)return[];return[uf(f)]}function nf(f,$){if(!$)return f;if(f.some((P)=>P.kind==="script-module"&&P.src===$))return f;return[...of($),...f]}function ef(f){return f.find(($)=>$.kind==="script-module")?.src}function _(f,$){if(typeof f==="function")return{...$,component:f};return f}function f1(f){if(f?.mode!==void 0||f?.hydrate!==void 0)return f;return{...f,mode:"hydrate"}}function $1(f){return"innerHTML"in f}function P1(f){let $=x(f);if(!$)throw Error(`${f.name} is missing @customElement metadata.`);return $}export{tf as toRenderedComponentPayload,s1 as styleAsset,uf as scriptModuleAsset,ef as resolvePrimaryClientModuleSrc,c1 as renderComponentWithPreview,E1 as renderComponentToString,v1 as renderComponentToPayload,O1 as renderComponent,f1 as normalizeRenderOptions,N1 as modulePreloadAsset,nf as mergeRenderedComponentAssets};
|
|
1
|
+
var Sf=((f)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(f,{get:(g,R)=>(typeof require<"u"?require:g)[R]}):f)(function(f){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+f+'" is not supported')});var i=Symbol.for("@ecopages/radiant.legacy-instance-initializers"),c=Symbol.for("@ecopages/radiant.legacy-post-construction-initializers"),yf=Symbol.for("@ecopages/radiant.legacy-executed-post-construction-initializers");function Yg(f,g){t(f,i,g)}function Ag(f,g){t(f,c,g)}function Sg(f){D(f,i)}function p(f){let g=f;D(f,c,g[yf]??=new Set)}function t(f,g,R){let P=f,b=Object.prototype.hasOwnProperty.call(P,g)?P[g]:void 0;if(Array.isArray(b)){b.push(R);return}Object.defineProperty(P,g,{value:[R]})}function D(f,g,R,P=Object.getPrototypeOf(f)){if(!P||P===Object.prototype)return;D(f,g,R,Object.getPrototypeOf(P));let b=P[g];if(!Array.isArray(b))return;for(let $ of b){if(R?.has($))continue;$(f),R?.add($)}}function o(f){switch(f){case Array:return"array";case Boolean:return"boolean";case Number:return"number";case Object:return"object";case String:return"string"}}function wf(f){switch(typeof f){case"boolean":return"boolean";case"number":return"number";case"string":return"string"}if(Array.isArray(f))return"array";if(Object.prototype.toString.call(f)==="[object Object]")return"object"}function Vf(f){switch(f){case Number:return 0;case String:return"";case Boolean:return!1;default:return null}}function sf(f){try{return JSON.parse(f)}catch{throw TypeError("Invalid JSON string")}}var Cf={array(f){let g=sf(f);if(!Array.isArray(g))throw TypeError(`Expected an array but got a value of type "${typeof g}"`);return g},boolean(f){return!(f==="0"||String(f).toLowerCase()==="false")},number(f){return Number(f.replace(/_/g,""))},object(f){let g=JSON.parse(f);if(g===null||typeof g!=="object"||Array.isArray(g))throw TypeError(`expected value of type "object" but instead got value "${f}" of type "${wf(g)}"`);return g},string(f){return f}},l={default:n,array:a,object:a};function a(f){return JSON.stringify(f)}function n(f){return`${f}`}function m(f,g){let R=o(g);if(!R)throw TypeError(`[radiant-element] Unknown type "${g}"`);return Cf[R](f)}function e(f,g){let R=o(g);if(!R)throw TypeError(`[radiant-element] Unknown type "${g}"`);return(l[R]??l.default??n)(f)}function kf(f){return typeof f==="boolean"}function Tf(f){return typeof f==="number"}function _f(f){return typeof f==="string"}function If(f){return Array.isArray(f)}function Lf(f){return typeof f==="object"&&!Array.isArray(f)&&f!==null}function wg(f,g){switch(f){case Boolean:return kf(g);case Number:return Tf(g);case String:return _f(g);case Array:return If(g);case Object:return Lf(g);default:return!1}}var Vg=(f,g,R,P)=>{if(g===Boolean){let $=f.getAttribute(R);if($===null)return P;return $===""?!0:m($,g)}let b=f.getAttribute(R);return b!==null?m(b,g):P??Vf(g)};import{getActiveSsrScopeValue as Df,withActiveSsrScopeValue as zf}from"@ecopages/jsx/server";var ff=Symbol.for("@ecopages/radiant.element-ssr-runtime");function kg(){return Df(ff)}function Y(f,g){return zf(ff,f,g)}var gf=Symbol.for("@ecopages/radiant.customElementTagName");function _g(f,g){f[gf]=g}function A(f){return f[gf]}var z=Symbol.for("@ecopages/radiant.reactivePropDefinitions");function Lg(f,g,R){let P=f.constructor,b=P[z]??[];if(b.some(($)=>$.name===g))return;b.push({name:g,options:R}),P[z]=b}function Rf(f){return(f.constructor[z]??[]).slice()}var Pf=Symbol.for("@ecopages/radiant.ssr-context-provider-resolver");function bf(){return globalThis}function $f(f){bf()[Pf]=f}function zg(f){return bf()[Pf]?.(f)}var Z;function Hf(){if(Z!==void 0)return Z;try{let{AsyncLocalStorage:f}=(()=>{throw new Error("Cannot require module "+"node:async_hooks");})();return Z=new f,Z}catch{return Z=null,null}}var jf=Symbol.for("@ecopages/radiant.ssr-context-fallback-stack");function rf(){let f=globalThis;return f[jf]??=[],f[jf]}function S(f){if(f.length===0)return()=>{return};let g=new Map;for(let b of f)g.set(b.getContextKey(),b);let R=Hf();if(R){let b=R.getStore()??[],$=[...b,g];return R.enterWith($),()=>{R.enterWith(b)}}let P=rf();return P.push(g),()=>{let b=P.lastIndexOf(g);if(b>=0)P.splice(b,1)}}function qf(f){let g=Hf()?.getStore()??rf();for(let R=g.length-1;R>=0;R-=1){let P=g[R]?.get(f);if(P)return P}return}function Og(f){let g=qf(f);if(!g)return;return g.getContext()}$f((f)=>qf(f));class E{host;constructor(f){this.host=f}renderHost(){return{nodeType:1,outerHTML:this.renderHostToString({mode:"hydrate"})}}renderHostToString(f={},g=this.getHostAttributes()){let R=this.getTagName(),P=S(this.host.getContextProviders());try{return`<${R}${Ef(g)}>${this.renderHostContent(f)}</${R}>`}finally{P()}}renderHostContent(f){let g=this.host.renderViewToString(f),R=this.host.getAuthoredHydrationScriptMarkup?.()??"",P=this.host.getSlotProjectionScriptTag?.()??"";if(!(f.mode==="hydrate"||f.mode===void 0&&f.hydrate===!0))return`${g}${R}${P}`;let $=this.host.getHydrationBindings().map((j)=>j.renderHydrationScriptTag()).filter((j)=>typeof j==="string").join("");return`${g}${P}${$}`}getHostAttributes(){let f={},g=new Set;for(let R of this.host.getReactiveProperties()){let P=this.host.getPropertyValue(R.name);if(P===void 0||P===null||P===!1)continue;f[R.attribute]=String(R.converter.toAttribute(P)),g.add(R.attribute)}for(let R of this.host.getReactivePropDefinitions()){let P=R.options.attribute??R.name;if(g.has(P))continue;let b=this.host.getPropertyValue(R.name);if(b===void 0||b===null||b===!1)continue;f[P]=String(e(b,R.options.type)),g.add(P)}for(let R of this.host.listAttributeNames()){let P=this.host.getAttributeValue(R);if(P!==null)f[R]=P}return f}getTagName(){let f=A(this.host.constructor);if(!f)throw Error(`${this.host.constructor.name} is missing @customElement metadata.`);return f}}function Ef(f){return Object.entries(f).map(([g,R])=>` ${g}="${Nf(R)}"`).join("")}function Nf(f){return f.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Q(f){if(Of(f))return f;return}function Of(f){return typeof f.constructor==="function"&&typeof f.getAttribute==="function"&&typeof f.getAuthoredHydrationScriptMarkup==="function"&&typeof f.getContextProviders==="function"&&typeof f.getHydrationBindings==="function"&&typeof f.getReactiveProperties==="function"&&typeof f.getSlotProjectionScriptTag==="function"&&typeof f.resolveTrackedRenderOutput==="function"&&typeof f.renderViewToString==="function"}function Qf(f){let g=Q(f);if(!g)throw Error("Radiant SSR runtime requires a server extraction host shape on the component.");return{constructor:g.constructor,getAuthoredHydrationScriptMarkup:()=>g.getAuthoredHydrationScriptMarkup(),getContextProviders:()=>g.getContextProviders(),getHydrationBindings:()=>g.getHydrationBindings(),getSlotProjectionScriptTag:()=>g.getSlotProjectionScriptTag(),renderViewToString:(R)=>g.renderViewToString(R),getReactiveProperties:()=>g.getReactiveProperties(),getReactivePropDefinitions:()=>Rf(f),getPropertyValue:(R)=>Reflect.get(f,R),listAttributeNames:()=>g.getAttributeNames(),getAttributeValue:(R)=>g.getAttribute(R)}}import{renderToString as vf}from"@ecopages/jsx/server";import{isServerRenderHydrationActive as Jf,withForcedServerCustomElementRendering as uf,withServerCustomElementRenderHook as Mf}from"@ecopages/jsx/server";var y;function Bf(f){return new E(Qf(f))}function w(f){return{nodeType:1,outerHTML:F(f,{mode:"hydrate"})}}function Zf(f){if(X(f))return w(f);if(!V(f))return;return f.renderHost?.()??{nodeType:1,outerHTML:f.renderHostToString({mode:"hydrate"})}}function F(f,g={}){return N(()=>Bf(f).renderHostToString(g,xf(f)))}function Ff(f,g={}){if(X(f))return F(f,g);if(!V(f))return;return f.renderHostToString(g)}function Xf(f,g){if(X(f))return w(f);if(!V(f))return;return f.renderHost?.()??{nodeType:1,outerHTML:g}}function df(f,g={}){return N(()=>pf(()=>vf(tf(f).value,g)))}function xf(f){return Bf(f).getHostAttributes()}function cf(f){if(!X(f))return;return{renderHost:()=>w(f),renderHostToString:(g)=>F(f,g)}}function gR(f){return Q(f)}function pf(f){return uf(()=>Mf(({instance:g})=>{if(X(g))return{nodeType:1,get outerHTML(){let P=Jf();return F(g,{hydrate:P,mode:P?"hydrate":"plain"})}};if(!V(g))return;let R=g;return{nodeType:1,get outerHTML(){let P=Jf();return R.renderHostToString({hydrate:P,mode:P?"hydrate":"plain"})}}},f))}function tf(f){if(lf(f))return f.resolveTrackedRenderOutput();let g=Q(f);if(!g)throw Error("Radiant SSR runtime requires tracked render output support on the component.");return g.resolveTrackedRenderOutput()}function X(f){if(typeof f!=="object"||f===null)return!1;return Q(f)!==void 0}function V(f){if(typeof f!=="object"||f===null)return!1;return typeof f.renderHostToString==="function"}function lf(f){if(typeof f!=="object"||f===null)return!1;return typeof f.resolveTrackedRenderOutput==="function"}function s(){if(y)return y;return y={getHostAttributes:xf,renderHost:w,renderHostToString:F,resolveRenderBridge:cf,renderView:df},y}function N(f){return Y(s(),f)}var C=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]);function Gf(f){let g=[],R=0;while(R<f.length){let P=R;if(f.startsWith("<!--",R)){let j=f.indexOf("-->",R+4);R=j===-1?f.length:j+3,g.push(f.slice(P,R));continue}if(f[R]!=="<"){let j=f.indexOf("<",R);R=j===-1?f.length:j,g.push(f.slice(P,R));continue}let b=x(f,R);if(!b){g.push(f.slice(P));break}if(b.type!=="open"||b.selfClosing||C.has(b.tagName)){R=b.end,g.push(f.slice(P,R));continue}R=b.end;let $=1;while(R<f.length&&$>0){let j=f.indexOf("<",R);if(j===-1){R=f.length;break}let H=x(f,j);if(!H){R=f.length;break}if(R=H.end,H.type==="comment"||H.type==="declaration")continue;if(H.type==="open"&&!H.selfClosing&&!C.has(H.tagName)){$+=1;continue}if(H.type==="close")$-=1}g.push(f.slice(P,R))}return g.filter((P)=>P!=="")}function af(f,g){let R;for(let P=g+1;P<f.length;P+=1){let b=f[P];if(R){if(b===R)R=void 0;continue}if(b==='"'||b==="'"){R=b;continue}if(b===">")return P+1}return f.length}function mf(f){let g={},R=/([:^@A-Za-z0-9_.-]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>/]+)))?/g;for(let P of f.matchAll(R)){let[,b,$,j,H]=P;if(!b)continue;g[b]=$??j??H??""}return g}function x(f,g){if(f.startsWith("<!--",g)){let K=f.indexOf("-->",g+4);return{end:K===-1?f.length:K+3,type:"comment"}}let R=af(f,g),P=f.slice(g+1,R-1).trim();if(P==="")return;if(P.startsWith("!")||P.startsWith("?"))return{end:R,type:"declaration"};if(P.startsWith("/"))return{end:R,type:"close"};let b=/\/\s*$/.test(P),$=b?P.replace(/\/\s*$/,"").trim():P,j=$.split(/[\s/>]/,1)[0]?.toLowerCase()??"",H=j.length,q=$.slice(H).trim(),L=b||C.has(j)?"":of(f,g,R,j);return{attributes:mf(q),end:R,innerHtml:L,selfClosing:b,tagName:j,type:"open"}}function of(f,g,R,P){let b=R,$=1;while(b<f.length&&$>0){let j=f.indexOf("<",b);if(j===-1)return f.slice(R);let H=x(f,j);if(!H)return f.slice(R);if(H.type==="open"&&H.tagName===P&&!H.selfClosing&&!C.has(P))$+=1;if(H.type==="close"){if(f.slice(j+2,H.end-1).trim().toLowerCase()===P){if($-=1,$===0)return f.slice(R,j)}}b=H.end}return f.slice(R)}class r extends EventTarget{nodeType;static DOCUMENT_NODE=9;static ELEMENT_NODE=1;static TEXT_NODE=3;childNodes=[];ownerDocument;parentNode=null;constructor(f,g=null){super();this.nodeType=f;this.ownerDocument=g}append(...f){for(let g of f)this.appendChild(typeof g==="string"?nf(g):g)}appendChild(f){if("parentNode"in f&&f.parentNode&&"removeChild"in f.parentNode)f.parentNode.removeChild(f);return this.childNodes.push(f),f.ownerDocument=this.nodeType===r.DOCUMENT_NODE?this:this.ownerDocument,f.parentNode=this,f}removeChild(f){let g=this.childNodes.indexOf(f);if(g===-1)return f;return this.childNodes.splice(g,1),f.parentNode=null,f}replaceChildren(...f){for(let g of this.childNodes)g.parentNode=null;this.childNodes=[],this.append(...f)}get textContent(){return this.childNodes.map((f)=>f.textContent??"").join("")}set textContent(f){this.replaceChildren(f??"")}getRootNode(){let f=this;while("parentNode"in f&&f.parentNode)f=f.parentNode;return f}}class W extends r{value;constructor(f,g=B()){super(r.TEXT_NODE,g);this.value=f}get textContent(){return this.value}set textContent(f){this.value=f??""}}class Uf{element;constructor(f){this.element=f}add(...f){let g=new Set(this.readTokens());for(let R of f)if(R!=="")g.add(R);this.writeTokens([...g])}remove(...f){let g=new Set(this.readTokens());for(let R of f)g.delete(R);this.writeTokens([...g])}toggle(f,g){let R=this.contains(f);if(g??!R)return this.add(f),!0;return this.remove(f),!1}contains(f){return this.readTokens().includes(f)}toString(){return this.value}get value(){return this.element.getAttribute("class")??""}readTokens(){return this.value.split(/\s+/).map((f)=>f.trim()).filter((f)=>f.length>0)}writeTokens(f){if(f.length===0){this.element.removeAttribute("class");return}this.element.setAttribute("class",f.join(" "))}}class k extends r{attributes=new Map;classListValue;datasetValue;fragmentHtml;fragmentText;localName;tagName;constructor(f="div",g=B()){super(r.ELEMENT_NODE,g);this.localName=f.toLowerCase(),this.tagName=this.localName.toUpperCase()}get classList(){return this.classListValue??=new Uf(this),this.classListValue}get dataset(){return this.datasetValue??=new Proxy({},{deleteProperty:(f,g)=>{if(typeof g!=="string")return!1;return this.removeAttribute(U(g)),!0},get:(f,g)=>{if(typeof g!=="string")return;return this.getAttribute(U(g))??void 0},getOwnPropertyDescriptor:(f,g)=>{if(typeof g!=="string")return;return{configurable:!0,enumerable:!0,value:this.getAttribute(U(g))??void 0,writable:!0}},has:(f,g)=>{return typeof g==="string"&&this.hasAttribute(U(g))},ownKeys:()=>{return this.getAttributeNames().filter((f)=>f.startsWith("data-")).map((f)=>bg(f.slice(5)))},set:(f,g,R)=>{if(typeof g!=="string")return!1;return this.setAttribute(U(g),String(R)),!0}}),this.datasetValue}hasAttribute(f){return this.attributes.has(f)}getAttribute(f){return this.attributes.get(f)??null}getAttributeNames(){return Array.from(this.attributes.keys())}setAttribute(f,g){this.fragmentHtml=void 0,this.attributes.set(f,String(g))}toggleAttribute(f,g){if(g??!this.hasAttribute(f))return this.setAttribute(f,""),!0;return this.removeAttribute(f),!1}removeAttribute(f){this.fragmentHtml=void 0,this.attributes.delete(f)}querySelector(){return null}querySelectorAll(){return[]}matches(){return!1}get outerHTML(){if(this.fragmentHtml!==void 0)return this.fragmentHtml;let f=Array.from(this.attributes.entries()).map(([g,R])=>` ${g}="${Rg(R)}"`).join("");return`<${this.localName}${f}>${this.innerHTML}</${this.localName}>`}get innerHTML(){return this.childNodes.map((f)=>jg(f)).join("")}set innerHTML(f){this.fragmentHtml=void 0,this.fragmentText=void 0,this.replaceChildren(...Yf(f,this.ownerDocument))}get textContent(){return this.fragmentText??super.textContent??""}set textContent(f){this.fragmentHtml=void 0,this.fragmentText=f??"",super.textContent=f}setSerializedFragment(f,g,R){this.fragmentHtml=f,this.fragmentText=g,this.attributes=new Map(Object.entries(R)),this.replaceChildren()}}class T{bubbles;cancelable;composed;type;constructor(f,g={}){this.type=f,this.bubbles=g.bubbles??!1,this.cancelable=g.cancelable??!1,this.composed=g.composed??!1}}class u extends T{detail;constructor(f,g={}){super(f,g);this.detail=g.detail}}class J extends k{isConnected=!1;constructor(f="div",g=B()){super(f,g)}insertAdjacentHTML(f,g){this.append(...Yf(g,this.ownerDocument))}}class h extends J{constructor(f=B()){super("script",f)}}class O extends r{constructor(){super(r.DOCUMENT_NODE)}createElement(f){return f.toLowerCase()==="script"?new h(this):new J(f,this)}createTextNode(f){return new W(f,this)}querySelector(){return null}querySelectorAll(){return[]}}class Wf{definitions=new Map;define(f,g){if(this.definitions.has(f))return;this.definitions.set(f,g)}get(f){return this.definitions.get(f)}}var G,v={escape(f){return $g(String(f))}};function nf(f){return new W(f,B())}function B(){return globalThis.document??null}function hf(){let f=globalThis,g=f.customElements;if(typeof f.Node>"u"||typeof f.Document>"u"||typeof f.Element>"u"||typeof f.HTMLElement>"u"||typeof f.document>"u"||!g||typeof g.define!=="function"||typeof g.get!=="function")return;return f.window??{CSS:f.CSS??v,CustomEvent:f.CustomEvent??u,Document:f.Document,Element:f.Element,Event:f.Event??T,EventTarget:f.EventTarget??EventTarget,HTMLScriptElement:f.HTMLScriptElement??f.HTMLElement,HTMLElement:f.HTMLElement,Node:f.Node,document:f.document,customElements:g}}function ef(){let f=hf();if(f)return f;return fg()}function Kf(){return ef(),{prepareHost(f,g={}){if(g.authoredContent!==void 0)f.innerHTML=g.authoredContent}}}function fg(){let f=hf();if(f)return f;if(G)return G;let g=new Wf,R=new O,P=globalThis.Event??T,b=globalThis.CustomEvent??u,$=O,j=globalThis.EventTarget??EventTarget;return G={CSS:globalThis.CSS??v,CustomEvent:b,Document:$,Element:k,Event:P,EventTarget:j,HTMLScriptElement:h,HTMLElement:J,Node:r,document:R,customElements:g},Object.assign(globalThis,{CSS:globalThis.CSS??v,CustomEvent:b,Document:$,Element:k,Event:P,EventTarget:j,HTMLScriptElement:h,HTMLElement:J,Node:r,document:R,customElements:g,window:G}),G}function gg(f,g,R){let P=g.tagName==="script"?new h(R):new J(g.tagName,R);return P.setSerializedFragment(f,Pg(g.innerHtml),g.attributes),P}function Rg(f){return f.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Pg(f){return f.replace(/<!--.*?-->/gs,"").replace(/<[^>]+>/g,"")}function Yf(f,g=B()){return Gf(f).map((R)=>{if(!R.startsWith("<"))return new W(R,g);let P=x(R,0);if(!P||P.type!=="open")return new W(R,g);return gg(R,P,g)})}function U(f){return`data-${f.replace(/([A-Z])/g,"-$1").toLowerCase()}`}function bg(f){return f.replace(/-([a-z])/g,(g,R)=>R.toUpperCase())}function $g(f){let g="";for(let R=0;R<f.length;R+=1){let P=f[R]??"",b=P.codePointAt(0)??0;if(b===0){g+="�";continue}let $=b>=1&&b<=31||b===127,j=R===0&&b>=48&&b<=57,H=R===1&&b>=48&&b<=57&&(f[0]??"")==="-",q=R===0&&P==="-"&&f.length===1;if($||j||H){g+=`\\${b.toString(16)} `;continue}if(b>=128||P==="-"||P==="_"||b>=48&&b<=57||b>=65&&b<=90||b>=97&&b<=122){g+=q?`\\${P}`:P;continue}g+=`\\${P}`}return g}function jg(f){if(f.nodeType===r.TEXT_NODE)return f.textContent??"";return"outerHTML"in f&&typeof f.outerHTML==="string"?f.outerHTML:f.textContent??""}function Hg(f,g="hydrate"){return{kind:"script-module",src:f,stage:g}}function XR(f){return{kind:"modulepreload",href:f}}function xR(f,g){return g?{kind:"style",href:f,media:g}:{kind:"style",href:f}}async function GR(f,g){return(await _(I(f,g))).markup}async function UR(f,g){return _(I(f,g))}async function WR(f,g){return Jg(await _(I(f,g)))}async function hR(f,g){return Bg(await _(I(f,g)))}async function _(f){return Y(s(),async()=>{let g=f.environment??Kf(),R=S(Qg(f.ssrContext));try{let P="component"in f?f.component:await f.load(),b=new P;p(b),qg(g,b,f.authoredContent,f.prepareHost),f.initialize?.(b);let $=f.clientModuleSrc??await f.resolveClientModuleSrc?.(P),j=f.assets??await f.resolveAssets?.(P)??[],H=Xg(j,$),q=xg(H)??$,L=f.tagName??hg(P),K=(f.now??Zg)().toISOString(),M=Gg(f.renderOptions),d=Ff(b,M)??Wg(b,M),Af=rg(b,d);return{markup:d,metadata:{assets:H,clientModuleUrl:q,generatedAt:K,tagName:L},preview:Af}}finally{R()}})}function rg(f,g){return Xf(f,g)??Zf(f)??f.renderHost?.()??{nodeType:1,outerHTML:g}}function qg(f,g,R,P){if(!Ug(g)){if(R===void 0&&P===void 0)return;throw Error(`${g.constructor.name} cannot prepare SSR host content because it does not expose an innerHTML host surface.`)}f.prepareHost(g,{authoredContent:R}),P?.(g,f)}function Qg(f){if(!f||f.length===0)return[];return f.map((g)=>({getContext:()=>g.value,getContextKey:()=>g.context,renderHydrationScript:()=>{return},renderHydrationScriptTag:()=>{return}}))}function Jg(f){if("metadata"in f)return{assets:f.metadata.assets,clientModuleSrc:f.metadata.clientModuleUrl,generatedAt:f.metadata.generatedAt,markup:f.markup,tagName:f.metadata.tagName};let{preview:g,...R}=f;return R}function Bg(f){return{assets:f.metadata.assets,clientModuleSrc:f.metadata.clientModuleUrl,generatedAt:f.metadata.generatedAt,markup:f.markup,preview:f.preview,tagName:f.metadata.tagName}}function Zg(){return new Date}function Fg(f){if(!f)return[];return[Hg(f)]}function Xg(f,g){if(!g)return f;if(f.some((R)=>R.kind==="script-module"&&R.src===g))return f;return[...Fg(g),...f]}function xg(f){return f.find((g)=>g.kind==="script-module")?.src}function I(f,g){if(typeof f==="function")return{...g,component:f};return f}function Gg(f){if(f?.mode!==void 0||f?.hydrate!==void 0)return f;return{...f,mode:"hydrate"}}function Ug(f){return"innerHTML"in f}function Wg(f,g){if(typeof f.renderHostToString==="function")return f.renderHostToString(g);throw Error(`${f.constructor.name} cannot be server-rendered without a registered Radiant SSR host or renderHostToString().`)}function hg(f){let g=A(f);if(!g)throw Error(`${f.name} is missing @customElement metadata.`);return g}export{Jg as toRenderedComponentPayload,xR as styleAsset,Hg as scriptModuleAsset,xg as resolvePrimaryClientModuleSrc,hR as renderComponentWithPreview,GR as renderComponentToString,WR as renderComponentToPayload,UR as renderComponent,Gg as normalizeRenderOptions,XR as modulePreloadAsset,Xg as mergeRenderedComponentAssets};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=61E6115A35663D9B64756E2164756E21
|