@askrjs/askr 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -5
- package/dist/chunk-64C7W2AE.js +43 -0
- package/dist/chunk-64C7W2AE.js.map +1 -0
- package/dist/chunk-6FLMH4EL.js +124 -0
- package/dist/chunk-6FLMH4EL.js.map +1 -0
- package/dist/{chunk-JHOGWTAW.js → chunk-FJUXFA72.js} +2 -2
- package/dist/chunk-FJUXFA72.js.map +1 -0
- package/dist/{chunk-H3NSVHA7.js → chunk-VRAEBIJ3.js} +7 -5
- package/dist/chunk-VRAEBIJ3.js.map +1 -0
- package/dist/chunk-WTFWRSHB.js +98 -0
- package/dist/chunk-WTFWRSHB.js.map +1 -0
- package/dist/chunk-XHKZGJE3.js +2907 -0
- package/dist/chunk-XHKZGJE3.js.map +1 -0
- package/dist/chunk-Z5ZSTLYF.js +420 -0
- package/dist/chunk-Z5ZSTLYF.js.map +1 -0
- package/dist/fx/index.cjs +1193 -0
- package/dist/fx/index.cjs.map +1 -0
- package/dist/fx/index.d.cts +186 -0
- package/dist/fx/index.d.ts +186 -0
- package/dist/fx/index.js +418 -0
- package/dist/fx/index.js.map +1 -0
- package/dist/index.cjs +1369 -2525
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +74 -407
- package/dist/index.d.ts +74 -407
- package/dist/index.js +63 -803
- package/dist/index.js.map +1 -1
- package/dist/jsx/jsx-dev-runtime.cjs +1 -1
- package/dist/jsx/jsx-dev-runtime.cjs.map +1 -1
- package/dist/jsx/jsx-dev-runtime.d.cts +3 -2
- package/dist/jsx/jsx-dev-runtime.d.ts +3 -2
- package/dist/jsx/jsx-dev-runtime.js +1 -1
- package/dist/jsx/jsx-runtime.d.cts +2 -1
- package/dist/jsx/jsx-runtime.d.ts +2 -1
- package/dist/jsx/jsx-runtime.js +1 -1
- package/dist/{types-DLTViI21.d.cts → jsx-AzPM8gMS.d.cts} +6 -21
- package/dist/{types-DLTViI21.d.ts → jsx-AzPM8gMS.d.ts} +6 -21
- package/dist/{navigate-CZEUXFPM.js → navigate-LUVYHYZZ.js} +5 -4
- package/dist/resources/index.cjs +1200 -0
- package/dist/resources/index.cjs.map +1 -0
- package/dist/resources/index.d.cts +21 -0
- package/dist/resources/index.d.ts +21 -0
- package/dist/resources/index.js +278 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/{route-USEXGOBT.js → route-BCND6MPK.js} +4 -3
- package/dist/{chunk-2ONGHQ7Z.js → router/index.cjs} +775 -643
- package/dist/router/index.cjs.map +1 -0
- package/dist/router/index.d.cts +64 -0
- package/dist/router/index.d.ts +64 -0
- package/dist/router/index.js +49 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router-DaGtH1Sq.d.cts +36 -0
- package/dist/router-DaGtH1Sq.d.ts +36 -0
- package/dist/ssr/index.cjs +4059 -0
- package/dist/ssr/index.cjs.map +1 -0
- package/dist/ssr/index.d.cts +123 -0
- package/dist/ssr/index.d.ts +123 -0
- package/dist/{chunk-OFW6DFBM.js → ssr/index.js} +202 -252
- package/dist/ssr/index.js.map +1 -0
- package/dist/types-CZ5sWur5.d.cts +23 -0
- package/dist/types-CZHOAiC1.d.ts +23 -0
- package/package.json +19 -6
- package/src/jsx/types.ts +4 -17
- package/dist/chunk-2ONGHQ7Z.js.map +0 -1
- package/dist/chunk-H3NSVHA7.js.map +0 -1
- package/dist/chunk-JHOGWTAW.js.map +0 -1
- package/dist/chunk-OFW6DFBM.js.map +0 -1
- package/dist/ssr-QJ5NTQR6.js +0 -28
- package/dist/ssr-QJ5NTQR6.js.map +0 -1
- /package/dist/{navigate-CZEUXFPM.js.map → navigate-LUVYHYZZ.js.map} +0 -0
- /package/dist/{route-USEXGOBT.js.map → route-BCND6MPK.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/jsx/utils.ts","../src/foundations/portal.tsx","../src/ssr/errors.ts","../src/ssr/context.ts","../src/ssr/escape.ts","../src/ssr/attrs.ts","../src/ssr/sink.ts","../src/ssr/stream-render.ts","../src/ssr/render-keys.ts","../src/ssr/index.ts"],"sourcesContent":["import { ELEMENT_TYPE, JSXElement } from './types';\n\nexport function isElement(value: unknown): value is JSXElement {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as JSXElement).$$typeof === ELEMENT_TYPE\n );\n}\n\nexport function cloneElement(\n element: JSXElement,\n props: Record<string, unknown>\n): JSXElement {\n return {\n ...element,\n props: { ...element.props, ...props },\n };\n}\n","/**\n * Portal / Host primitive.\n *\n * A portal is a named render slot within the existing tree.\n * It does NOT create a second tree or touch the DOM directly.\n */\n\nimport { getCurrentComponentInstance } from '../runtime/component';\nimport { logger } from '../dev/logger';\n\nexport interface Portal<T = unknown> {\n /** Mount point — rendered exactly once */\n (): unknown;\n\n /** Render content into the portal */\n render(props: { children?: T }): unknown;\n}\n\nexport function definePortal<T = unknown>(): Portal<T> {\n // If the runtime primitive isn't installed yet, provide a no-op fallback.\n // Using `typeof createPortalSlot` is safe even if the identifier is not\n // defined at runtime (it returns 'undefined' rather than throwing).\n if (typeof createPortalSlot !== 'function') {\n // Fallback implementation for environments where the runtime primitive\n // isn't available (tests, SSR).\n //\n // Invariants this fallback tries to maintain:\n // - Always use the *current* host instance (update `owner` each render)\n // - Preserve the last `value` written before host mounts and expose it so\n // it can be flushed into a real portal if/when the runtime installs\n // - Schedule `owner.notifyUpdate()` when a host exists so updates are\n // reflected immediately\n // Track all hosts that read the portal so we can deterministically\n // select a single owner and prune stale mounts across islands.\n let hosts: import('../runtime/component').ComponentInstance[] = [];\n let pending: T | undefined;\n\n function HostFallback() {\n // Prune unmounted hosts\n hosts = hosts.filter((h) => h.mounted !== false);\n\n const inst = getCurrentComponentInstance();\n if (inst && !hosts.includes(inst)) hosts.push(inst);\n\n // Owner is the first host that is fully mounted (must be mounted === true)\n // This prevents capturing pre-mount instances which can lead to early-write\n // replay or ghost-toasts. Only a fully-mounted host can be an owner.\n const owner = hosts.find((h) => h.mounted === true) || null;\n\n // If more than one host is mounted at the same time, this is a violation\n // of the portal contract. In dev mode we throw to make the issue explicit.\n const mountedHosts = hosts.filter((h) => h.mounted === true);\n if (mountedHosts.length > 1) {\n // Warn in dev to make multiple mounted hosts visible; do NOT throw\n // because multiple islands mounting is a valid use-case. We assert only\n // that exactly one host may render portal content at a time.\n // Logger will no-op in production, so this check need not be wrapped.\n logger.warn(\n '[Portal] multiple hosts are mounted for same portal; first mounted host will be owner'\n );\n }\n\n // If this reader is not the owner, but a mounted owner exists, warn in dev\n if (inst && owner && owner !== inst) {\n logger.debug(\n '[Portal] non-owner reader detected; only owner renders portal content'\n );\n }\n\n // Dev debug: increment read counter\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n const ns =\n (globalThis as unknown as { __ASKR__?: Record<string, unknown> })\n .__ASKR__ ||\n ((\n globalThis as unknown as { __ASKR__?: Record<string, unknown> }\n ).__ASKR__ = {} as Record<string, unknown>);\n ns.__PORTAL_READS = ((ns.__PORTAL_READS as number) || 0) + 1;\n }\n\n // Only the owner should render the pending value; other readers see nothing\n /* istanbul ignore if */\n if (\n process.env.NODE_ENV !== 'production' &&\n inst &&\n owner &&\n inst === owner\n ) {\n logger.debug('[Portal] owner read ->', inst.id, 'pending=', pending);\n // Dev diagnostic: record whether the owner instance has an attached DOM target\n const ns =\n (globalThis as unknown as { __ASKR__?: Record<string, unknown> })\n .__ASKR__ ||\n ((\n globalThis as unknown as { __ASKR__?: Record<string, unknown> }\n ).__ASKR__ = {} as Record<string, unknown>);\n ns.__PORTAL_HOST_ATTACHED = !!(inst && inst.target);\n ns.__PORTAL_HOST_ID = inst ? inst.id : undefined;\n }\n return inst === owner ? (pending as unknown) : undefined;\n }\n\n HostFallback.render = function RenderFallback(props: { children?: T }) {\n // Refresh host list and determine current owner\n hosts = hosts.filter((h) => h.mounted !== false);\n // Owner must be fully mounted (mounted === true) to accept writes — this\n // prevents capturing pre-mount instances and avoids replaying early writes.\n const owner = hosts.find((h) => h.mounted === true) || null;\n\n // If no owner exists yet, drop the write (avoid buffering early writes)\n if (!owner) {\n // Logger will no-op in production so we can call directly without wrapping.\n logger.debug(\n '[Portal] fallback.write dropped -> no owner or not mounted',\n props?.children\n );\n return null;\n }\n\n // Update pending value for the live owner\n pending = props.children as T | undefined;\n\n // Record debug write counter in dev so tests can assert writes occurred\n // Logger will no-op in production; keep counter update guarded for dev only\n logger.debug('[Portal] fallback.write ->', pending, 'owner=', owner.id);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n const ns =\n (globalThis as unknown as { __ASKR__?: Record<string, unknown> })\n .__ASKR__ ||\n ((\n globalThis as unknown as { __ASKR__?: Record<string, unknown> }\n ).__ASKR__ = {} as Record<string, unknown>);\n ns.__PORTAL_WRITES = ((ns.__PORTAL_WRITES as number) || 0) + 1;\n }\n\n // Schedule an update on the owner so it re-renders\n if (owner && owner.notifyUpdate) {\n if (process.env.NODE_ENV !== 'production')\n logger.debug(\n '[Portal] fallback.write notify ->',\n owner.id,\n !!owner.notifyUpdate\n );\n owner.notifyUpdate();\n }\n return null;\n };\n\n return HostFallback as Portal<T>;\n }\n\n // Runtime-provided slot implementation\n const slot = createPortalSlot<T>();\n\n function PortalHost() {\n return slot.read();\n }\n\n PortalHost.render = function PortalRender(props: { children?: T }) {\n // Logger will no-op in production; keep counter increment guarded for dev-only behavior\n logger.debug('[Portal] write ->', props?.children);\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production') {\n const ns =\n (globalThis as unknown as { __ASKR__?: Record<string, unknown> })\n .__ASKR__ ||\n ((\n globalThis as unknown as { __ASKR__?: Record<string, unknown> }\n ).__ASKR__ = {} as Record<string, unknown>);\n ns.__PORTAL_WRITES = ((ns.__PORTAL_WRITES as number) || 0) + 1;\n }\n slot.write(props.children);\n return null;\n };\n\n return PortalHost as Portal<T>;\n}\n\n// Default portal instance: lazily created wrapper so runtime primitive is not\n// invoked during module initialization (avoids ReferenceError when runtime\n// slot primitive is not yet installed).\nlet _defaultPortal: Portal<unknown> | undefined;\nlet _defaultPortalIsFallback = false;\n\n/**\n * Reset the default portal state. Used by tests to ensure isolation.\n * @internal\n */\nexport function _resetDefaultPortal(): void {\n _defaultPortal = undefined;\n _defaultPortalIsFallback = false;\n}\n\nfunction ensureDefaultPortal(): Portal<unknown> {\n // If a portal hasn't been initialized yet, create a real portal if the\n // runtime primitive exists; otherwise create a fallback. If a fallback\n // was previously created and the runtime primitive becomes available\n // later, replace the fallback with a real portal on first use.\n logger.debug(\n '[DefaultPortal] ensureDefaultPortal _defaultPortalIsFallback=',\n _defaultPortalIsFallback,\n 'createPortalSlot=',\n typeof createPortalSlot === 'function'\n );\n\n if (!_defaultPortal) {\n if (typeof createPortalSlot === 'function') {\n _defaultPortal = definePortal<unknown>();\n _defaultPortalIsFallback = false;\n logger.debug('[DefaultPortal] created real portal');\n } else {\n // Create a fallback via definePortal so it uses the same owner/pending\n // semantics as the non-default portals (keeps runtime and fallback\n // behavior consistent).\n _defaultPortal = definePortal<unknown>();\n _defaultPortalIsFallback = true;\n logger.debug('[DefaultPortal] created fallback portal');\n }\n return _defaultPortal;\n }\n\n // Replace fallback with real portal once runtime primitive becomes available\n // NOTE: We intentionally do NOT replay pending writes from a fallback.\n // Early writes are dropped by design to avoid replaying invisible UI.\n if (_defaultPortalIsFallback && typeof createPortalSlot === 'function') {\n const real = definePortal<unknown>();\n _defaultPortal = real;\n _defaultPortalIsFallback = false;\n }\n\n // If the runtime primitive is removed (tests may simulate this by\n // deleting `createPortalSlot` between runs), revert to a fallback so\n // subsequent tests observe the appropriate fallback semantics.\n if (!_defaultPortalIsFallback && typeof createPortalSlot !== 'function') {\n const fallback = definePortal<unknown>();\n _defaultPortal = fallback;\n _defaultPortalIsFallback = true;\n logger.debug('[DefaultPortal] reverted to fallback portal');\n }\n\n return _defaultPortal;\n}\n\nexport const DefaultPortal: Portal<unknown> = (() => {\n function Host() {\n // Delegate to the lazily-created portal host (created when runtime is ready)\n // Return null when no pending value exists so the component renders nothing\n // (consistent with SSR which renders Fragment children as empty string)\n const v = ensureDefaultPortal()();\n return v === undefined ? null : v;\n }\n Host.render = function Render(props: { children?: unknown }) {\n ensureDefaultPortal().render(props);\n return null;\n };\n return Host as Portal<unknown>;\n})();\n\n/**\n * NOTE:\n * createPortalSlot is a runtime primitive.\n * It owns scheduling, consistency, and SSR behavior.\n */\ndeclare function createPortalSlot<T>(): {\n read(): unknown;\n write(value: T | undefined): void;\n};\n","export class SSRDataMissingError extends Error {\n readonly code = 'SSR_DATA_MISSING';\n constructor(\n message = 'Server-side rendering requires all data to be available synchronously. This component attempted to use async data during SSR.'\n ) {\n super(message);\n this.name = 'SSRDataMissingError';\n Object.setPrototypeOf(this, SSRDataMissingError.prototype);\n }\n}\n\nexport class SSRInvariantError extends Error {\n readonly code = 'SSR_INVARIANT_VIOLATION';\n constructor(message: string) {\n super(message);\n this.name = 'SSRInvariantError';\n Object.setPrototypeOf(this, SSRInvariantError.prototype);\n }\n}\n","/**\n * SSR Context Management\n *\n * Provides context for server-side rendering including:\n * - SSRContext: Full context for sink-based streaming SSR\n * - RenderContext: Lightweight context for sync render passes\n */\n\nimport { SSRDataMissingError } from './errors';\n\nexport type SSRData = Record<string, unknown>;\n\n/** Full context for sink-based streaming SSR */\nexport type SSRContext = {\n url: string;\n seed: number;\n data?: SSRData;\n params?: Record<string, string>;\n signal?: AbortSignal;\n};\n\n// Stack-scoped SSRContext for sink-based rendering\nlet current: SSRContext | null = null;\n\nexport function getSSRContext(): SSRContext | null {\n return current;\n}\n\nexport function withSSRContext<T>(ctx: SSRContext, fn: () => T): T {\n const prev = current;\n current = ctx;\n try {\n return fn();\n } finally {\n current = prev;\n }\n}\n\n/** Lightweight context for synchronous render passes */\nexport type RenderContext = {\n seed: number;\n};\n\nexport function createRenderContext(seed = 12345): RenderContext {\n return { seed };\n}\n\n// Stack-scoped RenderContext for sync SSR detection\nlet currentSSRContext: RenderContext | null = null;\n\nexport function getCurrentSSRContext(): RenderContext | null {\n return currentSSRContext;\n}\n\nexport function runWithSSRContext<T>(ctx: RenderContext, fn: () => T): T {\n const prev = currentSSRContext;\n currentSSRContext = ctx;\n try {\n return fn();\n } finally {\n currentSSRContext = prev;\n }\n}\n\n/**\n * Centralized SSR enforcement helper — throws a consistent error when async\n * data is encountered during synchronous SSR.\n */\nexport function throwSSRDataMissing(): never {\n throw new SSRDataMissingError();\n}\n\nexport { SSRDataMissingError };\n","/**\n * HTML escaping utilities for SSR\n *\n * Centralizes text and attribute escaping to avoid duplication\n * between sync and streaming SSR renderers.\n */\n\n// HTML5 void elements that don't have closing tags\nexport const VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]);\n\n// Escape cache for common values (bounded and clearable for long-running servers)\nconst escapeCache = new Map<string, string>();\nconst MAX_CACHE_SIZE = 256;\n\n/**\n * Clear the escape cache. Call between SSR requests in long-running servers\n * to prevent memory buildup from unique strings.\n */\nexport function clearEscapeCache(): void {\n escapeCache.clear();\n}\n\n/**\n * Escape HTML special characters in text content (optimized with cache)\n */\nexport function escapeText(text: string): string {\n // Only use cache for short strings (likely to be repeated)\n const useCache = text.length <= 64;\n\n if (useCache) {\n const cached = escapeCache.get(text);\n if (cached !== undefined) return cached;\n }\n\n const str = String(text);\n // Fast path: check if escaping needed\n if (!str.includes('&') && !str.includes('<') && !str.includes('>')) {\n if (useCache && escapeCache.size < MAX_CACHE_SIZE) {\n escapeCache.set(text, str);\n }\n return str;\n }\n\n const result = str\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n\n if (useCache && escapeCache.size < MAX_CACHE_SIZE) {\n escapeCache.set(text, result);\n }\n return result;\n}\n\n/**\n * Escape HTML special characters in attribute values\n */\nexport function escapeAttr(value: string): string {\n const str = String(value);\n // Fast path: check if escaping needed\n if (\n !str.includes('&') &&\n !str.includes('\"') &&\n !str.includes(\"'\") &&\n !str.includes('<') &&\n !str.includes('>')\n ) {\n return str;\n }\n\n return str\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n}\n\n/**\n * Escape CSS value to prevent injection attacks.\n * Removes characters that could break out of CSS context.\n */\nfunction escapeCssValue(value: string): string {\n // Remove or escape characters that could enable CSS injection:\n // - Semicolons (could end the property and start a new one)\n // - Curly braces (could break out of rule context)\n // - Angle brackets (could inject HTML in some contexts)\n // - Backslashes (CSS escape sequences)\n // - url() and expression() are common attack vectors\n const str = String(value);\n\n // Block dangerous CSS functions\n if (/(?:url|expression|javascript)\\s*\\(/i.test(str)) {\n return '';\n }\n\n // Remove characters that could break out of CSS value context\n return str.replace(/[{}<>\\\\]/g, '');\n}\n\n/**\n * Convert style object to CSS string with value escaping\n */\nexport function styleObjToCss(value: unknown): string | null {\n if (!value || typeof value !== 'object') return null;\n const entries = Object.entries(value as Record<string, unknown>);\n if (entries.length === 0) return '';\n // camelCase -> kebab-case\n let out = '';\n for (const [k, v] of entries) {\n if (v === null || v === undefined || v === false) continue;\n const prop = k.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n const safeValue = escapeCssValue(String(v));\n if (safeValue) {\n out += `${prop}:${safeValue};`;\n }\n }\n return out;\n}\n","/**\n * HTML attribute rendering for SSR\n */\n\nimport type { Props } from '../shared/types';\nimport { escapeAttr, styleObjToCss } from './escape';\n\n/** Result of renderAttrs including any raw HTML from dangerouslySetInnerHTML */\nexport type AttrsResult = {\n attrs: string;\n dangerousHtml?: string;\n};\n\n/**\n * Render attributes to HTML string, excluding event handlers\n * Optimized for minimal allocations\n *\n * Returns both the attribute string and any dangerouslySetInnerHTML content.\n */\nexport function renderAttrs(props?: Props): string;\nexport function renderAttrs(\n props: Props | undefined,\n opts: { returnDangerousHtml: true }\n): AttrsResult;\nexport function renderAttrs(\n props?: Props,\n opts?: { returnDangerousHtml?: boolean }\n): string | AttrsResult {\n if (!props || typeof props !== 'object') {\n return opts?.returnDangerousHtml ? { attrs: '' } : '';\n }\n\n let result = '';\n let dangerousHtml: string | undefined;\n\n for (const [key, value] of Object.entries(props)) {\n // Skip children in attrs\n if (key === 'children') continue;\n\n // Handle dangerouslySetInnerHTML\n if (key === 'dangerouslySetInnerHTML') {\n if (value && typeof value === 'object' && '__html' in (value as object)) {\n dangerousHtml = String((value as { __html: unknown }).__html);\n }\n continue;\n }\n\n // Skip event handlers (onClick, onChange, etc.)\n // Must have at least 3 chars and 3rd char must be uppercase\n if (\n key.length >= 3 &&\n key[0] === 'o' &&\n key[1] === 'n' &&\n key[2] >= 'A' &&\n key[2] <= 'Z'\n ) {\n continue;\n }\n\n // Skip internal props\n if (key.startsWith('_')) continue;\n\n // Normalize class attribute (`class` preferred, accept `className` for compatibility)\n const attrName = key === 'class' || key === 'className' ? 'class' : key;\n\n // Handle style objects\n if (attrName === 'style') {\n const css = typeof value === 'string' ? value : styleObjToCss(value);\n if (css === null || css === '') continue;\n result += ` style=\"${escapeAttr(css)}\"`;\n continue;\n }\n\n // Boolean attributes\n if (value === true) {\n result += ` ${attrName}`;\n } else if (value === false || value === null || value === undefined) {\n // Skip falsy values\n continue;\n } else {\n // Regular attributes\n result += ` ${attrName}=\"${escapeAttr(String(value))}\"`;\n }\n }\n\n if (opts?.returnDangerousHtml) {\n return { attrs: result, dangerousHtml };\n }\n return result;\n}\n","export interface RenderSink {\n write(html: string): void;\n end(): void;\n}\n\nexport class StringSink implements RenderSink {\n private chunks: string[] = [];\n\n write(html: string) {\n if (html) this.chunks.push(html);\n }\n\n end() {}\n\n toString() {\n return this.chunks.join('');\n }\n}\n\nexport class StreamSink implements RenderSink {\n constructor(\n private readonly onChunk: (html: string) => void,\n private readonly onComplete: () => void\n ) {}\n\n write(html: string) {\n if (html) this.onChunk(html);\n }\n\n end() {\n this.onComplete();\n }\n}\n","import type { JSXElement } from '../jsx/types';\nimport type { Props } from '../shared/types';\nimport type { RenderSink } from './sink';\nimport type { VNode, SSRComponent } from './types';\nimport { Fragment } from '../jsx';\nimport {\n withSSRContext,\n type SSRContext,\n throwSSRDataMissing,\n} from './context';\nimport { VOID_ELEMENTS, escapeText } from './escape';\nimport { renderAttrs } from './attrs';\n\n// Re-export for backwards compatibility\nexport type Component = SSRComponent;\n\nfunction isVNodeLike(x: unknown): x is VNode | JSXElement {\n return (\n !!x && typeof x === 'object' && 'type' in (x as Record<string, unknown>)\n );\n}\n\nfunction normalizeChildren(node: unknown): unknown[] {\n // Prefer explicit node.children; fallback to props.children\n const n = node as Record<string, unknown> | null | undefined;\n const direct = Array.isArray(n?.children) ? (n?.children as unknown[]) : null;\n const fromProps = (n?.props as Record<string, unknown> | undefined)\n ?.children as unknown;\n\n const raw = direct ?? fromProps;\n\n if (raw === null || raw === undefined || raw === false) return [];\n if (Array.isArray(raw)) return raw;\n return [raw];\n}\n\n// Note: renderChildToSink was removed in favor of direct renderNodeToSink inlined calls\n\nfunction renderChildrenToSink(\n children: unknown[],\n sink: RenderSink,\n ctx: SSRContext\n) {\n for (const c of children)\n renderNodeToSink(\n c as VNode | JSXElement | string | number | null,\n sink,\n ctx\n );\n}\n\nfunction isPromiseLike(x: unknown): x is PromiseLike<unknown> {\n if (!x || typeof x !== 'object') return false;\n const then = (x as { then?: unknown }).then;\n return typeof then === 'function';\n}\n\nfunction executeComponent(\n type: Component,\n props: Props | undefined,\n ctx: SSRContext\n): unknown {\n // Synchronous only. If a user returns a Promise, that's a hard error.\n const res = type(props ?? {}, { signal: ctx.signal });\n if (isPromiseLike(res)) {\n // Use centralized SSR failure mode — async components are not allowed during\n // synchronous SSR and must be pre-resolved by the developer.\n throwSSRDataMissing();\n }\n return res;\n}\n\nexport function renderNodeToSink(\n node: VNode | JSXElement | string | number | null,\n sink: RenderSink,\n ctx: SSRContext\n) {\n if (node === null || node === undefined) return;\n\n if (typeof node === 'string') {\n sink.write(escapeText(node));\n return;\n }\n if (typeof node === 'number') {\n sink.write(escapeText(String(node)));\n return;\n }\n\n if (!isVNodeLike(node)) return;\n\n const { type, props } = node as VNode;\n\n // Fragment: render children in-place\n if (\n typeof type === 'symbol' &&\n (type === Fragment || String(type) === 'Symbol(Fragment)')\n ) {\n const children = normalizeChildren(node);\n renderChildrenToSink(children, sink, ctx);\n return;\n }\n\n // Function component\n if (typeof type === 'function') {\n const out = withSSRContext(ctx, () =>\n executeComponent(type as Component, props, ctx)\n );\n renderNodeToSink(\n out as VNode | JSXElement | string | number | null,\n sink,\n ctx\n );\n return;\n }\n\n // Element node\n const tag = String(type);\n const { attrs, dangerousHtml } = renderAttrs(props, {\n returnDangerousHtml: true,\n });\n\n // void element\n if (VOID_ELEMENTS.has(tag)) {\n sink.write(`<${tag}${attrs} />`);\n return;\n }\n\n sink.write(`<${tag}${attrs}>`);\n // If dangerouslySetInnerHTML is set, use it instead of children\n if (dangerousHtml !== undefined) {\n sink.write(dangerousHtml);\n } else {\n const children = normalizeChildren(node);\n renderChildrenToSink(children, sink, ctx);\n }\n sink.write(`</${tag}>`);\n}\n","/**\n * SSR Data Management\n *\n * Manages render-phase keying for deterministic SSR data lookup.\n * Note: SSR collection/prepass APIs have been removed — SSR is strictly synchronous.\n */\n\nimport type { SSRRoute } from './index';\n\nexport type ResourceDescriptor = {\n key: string;\n fn: (opts: { signal?: AbortSignal }) => Promise<unknown> | unknown;\n deps: unknown[];\n index: number;\n};\n\nexport type ResourcePlan = {\n resources: ResourceDescriptor[]; // declarative manifest in stable order\n};\n\n// Internal render-phase state\nlet keyCounter = 0;\nlet currentRenderData: Record<string, unknown> | null = null;\n\nexport function getCurrentRenderData(): Record<string, unknown> | null {\n return currentRenderData;\n}\n\nexport function resetKeyCounter() {\n keyCounter = 0;\n}\n\nexport function getNextKey(): string {\n return `r:${keyCounter++}`;\n}\n\nexport function startRenderPhase(data: Record<string, unknown> | null) {\n currentRenderData = data ?? null;\n resetKeyCounter();\n}\n\nexport function stopRenderPhase() {\n currentRenderData = null;\n resetKeyCounter();\n}\n\n// --- Deprecated APIs (throw descriptive errors) ---\n\nconst PREPASS_REMOVED_MSG =\n 'SSR collection/prepass is removed: SSR is strictly synchronous';\n\n/** @deprecated SSR prepass has been removed */\nexport function startCollection(): never {\n throw new Error(`${PREPASS_REMOVED_MSG}; do not call startCollection()`);\n}\n\n/** @deprecated SSR prepass has been removed */\nexport function stopCollection(): ResourcePlan {\n throw new Error(`${PREPASS_REMOVED_MSG}; do not call stopCollection()`);\n}\n\n/** @deprecated SSR prepass has been removed */\nexport function registerResourceIntent(\n _fn: ResourceDescriptor['fn'],\n _deps: unknown[]\n): string {\n throw new Error(\n `${PREPASS_REMOVED_MSG}; resource() no longer registers intents for prepass`\n );\n}\n\n/** @deprecated SSR prepass has been removed */\nexport async function resolvePlan(\n _plan: ResourcePlan\n): Promise<Record<string, unknown>> {\n throw new Error(\n `${PREPASS_REMOVED_MSG}; async resource plans are not supported`\n );\n}\n\n/** @deprecated SSR prepass has been removed */\nexport function collectResources(_opts: {\n url: string;\n routes: SSRRoute[];\n}): ResourcePlan {\n throw new Error(`${PREPASS_REMOVED_MSG}; collectResources is disabled`);\n}\n\n/** @deprecated Alias for resolvePlan */\nexport const resolveResources = resolvePlan;\n","/**\n * SSR - Server-Side Rendering\n *\n * Renders Askr components to static HTML strings for server-side rendering.\n * SSR is synchronous: async components are not supported; async work should use\n * `resource()` which is rejected during synchronous SSR. This module throws\n * when an async component or async resource is encountered during sync SSR.\n */\n\nimport type { JSXElement } from '../jsx/types';\nimport type { RouteHandler } from '../router/route';\nimport * as RouteModule from '../router/route';\nimport type { Props } from '../shared/types';\nimport { Fragment, ELEMENT_TYPE } from '../jsx';\nimport { DefaultPortal } from '../foundations/portal';\nimport {\n createRenderContext,\n runWithSSRContext,\n throwSSRDataMissing,\n type RenderContext,\n type SSRData,\n} from './context';\nimport {\n createComponentInstance,\n setCurrentComponentInstance,\n getCurrentComponentInstance,\n} from '../runtime/component';\nimport type { ComponentFunction } from '../runtime/component';\nimport { VOID_ELEMENTS, escapeText } from './escape';\nimport { renderAttrs } from './attrs';\nimport type { VNode, SSRComponent } from './types';\n\nimport { logger } from '../dev/logger';\n\nexport { SSRDataMissingError } from './context';\nexport type { VNode, SSRComponent } from './types';\n\n// Re-export for backwards compatibility\nexport type Component = SSRComponent;\n\n// Dev-only SSR strictness guard helpers. We mutate globals in dev to make\n// accidental usage of Math.random/Date.now during sync SSR fail fast.\n// We implement a re-entrant stack so nested or concurrent calls don't clobber\n// global values unexpectedly.\nconst __ssrGuardStack: Array<{ random: () => number; now: () => number }> = [];\n\nexport function pushSSRStrictPurityGuard() {\n /* istanbul ignore if - dev-only guard */\n if (process.env.NODE_ENV === 'production') return;\n __ssrGuardStack.push({\n random: Reflect.get(Math, 'random') as () => number,\n now: Reflect.get(Date, 'now') as () => number,\n });\n Reflect.set(Math, 'random', () => {\n throw new Error(\n 'SSR Strict Purity: Math.random is not allowed during synchronous SSR. Use the provided `ssr` context RNG instead.'\n );\n });\n Reflect.set(Date, 'now', () => {\n throw new Error(\n 'SSR Strict Purity: Date.now is not allowed during synchronous SSR. Pass timestamps explicitly or use deterministic helpers.'\n );\n });\n}\n\nexport function popSSRStrictPurityGuard() {\n /* istanbul ignore if - dev-only guard */\n if (process.env.NODE_ENV === 'production') return;\n const prev = __ssrGuardStack.pop();\n if (prev) {\n Reflect.set(Math, 'random', prev.random);\n Reflect.set(Date, 'now', prev.now);\n }\n}\n\n/**\n * Synchronous rendering helpers (used for strictly synchronous SSR)\n */\nfunction renderChildSync(child: unknown, ctx: RenderContext): string {\n if (typeof child === 'string') return escapeText(child);\n if (typeof child === 'number') return escapeText(String(child));\n if (child === null || child === undefined || child === false) return '';\n if (typeof child === 'object' && child !== null && 'type' in child) {\n // We already verified the shape above; assert as VNode for the sync renderer\n return renderNodeSync(child as VNode, ctx);\n }\n return '';\n}\n\nfunction renderChildrenSync(\n children: unknown[] | undefined,\n ctx: RenderContext\n): string {\n if (!children || !Array.isArray(children) || children.length === 0) return '';\n let result = '';\n for (const child of children) result += renderChildSync(child, ctx);\n return result;\n}\n\n/**\n * Render a VNode synchronously. Throws if an async component is encountered.\n */\nfunction renderNodeSync(node: VNode | JSXElement, ctx: RenderContext): string {\n const { type, props } = node;\n\n /* istanbul ignore if - dev-only debug */\n if (process.env.NODE_ENV !== 'production') {\n try {\n logger.warn('[SSR] renderNodeSync type:', typeof type, type);\n } catch {\n // Ignore coercion errors for Symbols\n }\n }\n\n if (typeof type === 'function') {\n const result = executeComponentSync(type as Component, props, ctx);\n if (result instanceof Promise) {\n // Use centralized SSR error to maintain a single failure mode\n throwSSRDataMissing();\n }\n // executeComponentSync already normalizes primitives into VNode wrappers,\n // so result is always a VNode or JSXElement here. Safe to recurse directly.\n return renderNodeSync(result, ctx);\n }\n\n // Special-case fragments (symbols) - render children directly\n if (typeof type === 'symbol') {\n if (type === Fragment) {\n // Prefer explicit `children` array; fallback to `props.children` for\n // JSX runtimes that place children on props.\n const childrenArr = Array.isArray((node as VNode).children)\n ? (node as VNode).children\n : Array.isArray(props?.children)\n ? (props?.children as unknown[])\n : undefined;\n /* istanbul ignore if - dev-only debug */\n if (process.env.NODE_ENV !== 'production') {\n try {\n logger.warn('[SSR] fragment children length:', childrenArr?.length);\n } catch {\n // Ignore\n }\n }\n return renderChildrenSync(childrenArr, ctx);\n }\n // Unknown symbol type - throw a helpful error instead of letting\n // a built-in TypeError bubble up when attempting to coerce to string.\n throw new Error(\n `renderNodeSync: unsupported VNode symbol type: ${String(type)}`\n );\n }\n\n const typeStr = type as string;\n if (VOID_ELEMENTS.has(typeStr)) {\n const attrs = renderAttrs(props);\n return `<${typeStr}${attrs} />`;\n }\n\n const { attrs, dangerousHtml } = renderAttrs(props, {\n returnDangerousHtml: true,\n });\n // If dangerouslySetInnerHTML is set, use it instead of children\n if (dangerousHtml !== undefined) {\n return `<${typeStr}${attrs}>${dangerousHtml}</${typeStr}>`;\n }\n const children = (node as VNode).children;\n const childrenHtml = renderChildrenSync(children, ctx);\n return `<${typeStr}${attrs}>${childrenHtml}</${typeStr}>`;\n}\n\n/**\n * Execute a component function (synchronously or async) and return VNode\n */\n/**\n * Execute a component synchronously inside a render-only context.\n * This must not create or reuse runtime ComponentInstance objects. We pass\n * the render context explicitly as `context.ssr` in the second argument so\n * components can opt-in to deterministic randomness/time via the provided RNG.\n */\nfunction executeComponentSync(\n component: Component,\n props: Record<string, unknown> | undefined,\n ctx: RenderContext\n): VNode | JSXElement {\n // Dev-only: enforce SSR purity with clear messages. We temporarily override\n // `Math.random` and `Date.now` while rendering to produce a targeted error\n // if components call them directly. We restore them immediately afterwards.\n // Re-entrant guard for dev-only SSR strict purity checks.\n // We avoid clobbering globals permanently by pushing the original functions\n // onto a stack and restoring them on exit. This is safer for nested or\n // stacked SSR render invocations.\n\n try {\n if (process.env.NODE_ENV !== 'production') {\n pushSSRStrictPurityGuard();\n }\n // Create a temporary, lightweight component instance so runtime APIs like\n // `state()` and `route()` can be called during SSR render. We avoid mounting\n // or side-effects by not attaching the instance to any DOM target.\n const prev = getCurrentComponentInstance();\n const temp = createComponentInstance(\n 'ssr-temp',\n component as ComponentFunction,\n (props || {}) as Props,\n null\n );\n temp.ssr = true;\n setCurrentComponentInstance(temp);\n try {\n return runWithSSRContext(ctx, () => {\n const result = component((props || {}) as Props, { ssr: ctx });\n if (result instanceof Promise) {\n // Use the centralized SSR error for async data/components during SSR\n throwSSRDataMissing();\n }\n if (\n typeof result === 'string' ||\n typeof result === 'number' ||\n typeof result === 'boolean' ||\n result === null ||\n result === undefined\n ) {\n // Return a Fragment with the text content, not a div wrapper\n const inner =\n result === null || result === undefined || result === false\n ? ''\n : String(result);\n return {\n $$typeof: ELEMENT_TYPE,\n type: Fragment,\n props: { children: inner ? [inner] : [] },\n } as unknown as VNode | JSXElement;\n }\n return result as VNode | JSXElement;\n });\n } finally {\n // Restore the previous instance (if any)\n setCurrentComponentInstance(prev);\n }\n } finally {\n if (process.env.NODE_ENV !== 'production') popSSRStrictPurityGuard();\n }\n}\n\n/**\n * Single synchronous SSR entrypoint: render a component to an HTML string.\n * This is strictly synchronous and deterministic. Optionally provide a seed\n * for deterministic randomness via `options.seed`.\n */\nexport function renderToStringSync(\n component: (\n props?: Record<string, unknown>\n ) => VNode | JSXElement | string | number | null,\n props?: Record<string, unknown>,\n options?: { seed?: number; data?: SSRData }\n): string {\n const seed = options?.seed ?? 12345;\n // Start render-phase keying (aligns with collectResources)\n const ctx = createRenderContext(seed);\n // Provide optional SSR data via options.data\n startRenderPhase(options?.data ?? null);\n try {\n const wrapped: Component = (\n p?: Record<string, unknown>,\n c?: { signal?: AbortSignal; ssr?: RenderContext }\n ) => {\n const out = (component as unknown as Component)(p ?? {}, c);\n const portalVNode = {\n $$typeof: ELEMENT_TYPE,\n type: DefaultPortal,\n props: {},\n key: '__default_portal',\n } as unknown;\n if (out == null) {\n return {\n $$typeof: ELEMENT_TYPE,\n type: Fragment,\n props: { children: [portalVNode] },\n } as unknown as VNode | JSXElement;\n }\n return {\n $$typeof: ELEMENT_TYPE,\n type: Fragment,\n props: { children: [out as unknown, portalVNode] },\n } as unknown as VNode | JSXElement;\n };\n\n const node = executeComponentSync(wrapped, props || {}, ctx);\n if (!node) {\n throw new Error('renderToStringSync: wrapped component returned empty');\n }\n return renderNodeSync(node, ctx);\n } finally {\n stopRenderPhase();\n }\n}\n\n// Synchronous server render for strict checks. Routes must be resolved before\n// the render pass so no route() calls happen during rendering.\n//\n// ⚠️ WARNING: This function mutates global route state. It is NOT safe to call\n// concurrently from multiple async contexts. In long-running servers, ensure\n// SSR requests are serialized or use isolated route contexts per request.\nexport function renderToStringSyncForUrl(opts: {\n url: string;\n routes: Array<{ path: string; handler: RouteHandler; namespace?: string }>;\n options?: { seed?: number; data?: SSRData };\n}): string {\n const { url, routes, options } = opts;\n // Register routes synchronously using route() (already available in module scope)\n const {\n clearRoutes,\n route,\n setServerLocation,\n lockRouteRegistration,\n resolveRoute,\n } = RouteModule;\n\n clearRoutes();\n for (const r of routes) {\n route(r.path, r.handler, r.namespace);\n }\n\n setServerLocation(url);\n if (process.env.NODE_ENV === 'production') lockRouteRegistration();\n\n const resolved = resolveRoute(url);\n if (!resolved)\n throw new Error(`renderToStringSync: no route found for url: ${url}`);\n\n const seed = options?.seed ?? 12345;\n const ctx = createRenderContext(seed);\n // Start render-phase keying (aligns with collectResources)\n startRenderPhase(options?.data ?? null);\n try {\n const wrapped: Component = (\n p?: Record<string, unknown>,\n c?: { signal?: AbortSignal; ssr?: RenderContext }\n ) => {\n const out = (resolved.handler as unknown as Component)(p ?? {}, c);\n const portalVNode = {\n $$typeof: ELEMENT_TYPE,\n type: DefaultPortal,\n props: {},\n key: '__default_portal',\n } as unknown;\n if (out == null) {\n return {\n $$typeof: ELEMENT_TYPE,\n type: Fragment,\n props: { children: [portalVNode] },\n } as unknown as VNode | JSXElement;\n }\n return {\n $$typeof: ELEMENT_TYPE,\n type: Fragment,\n props: { children: [out as unknown, portalVNode] },\n } as unknown as VNode | JSXElement;\n };\n\n const node = executeComponentSync(wrapped, resolved.params || {}, ctx);\n return renderNodeSync(node, ctx);\n } finally {\n stopRenderPhase();\n }\n}\n\n// --- Streaming sink-based renderer (v2) --------------------------------------------------\nimport { StringSink, StreamSink } from './sink';\nimport { renderNodeToSink } from './stream-render';\nimport {\n startRenderPhase,\n stopRenderPhase,\n collectResources,\n resolvePlan,\n resolveResources,\n ResourcePlan,\n} from './render-keys';\n\nexport type SSRRoute = {\n path: string;\n handler: RouteHandler;\n namespace?: string;\n};\n\nexport function renderToString(\n component: (\n props?: Record<string, unknown>\n ) => VNode | JSXElement | string | number | null\n): string;\nexport function renderToString(opts: {\n url: string;\n routes: SSRRoute[];\n seed?: number;\n data?: SSRData;\n}): string;\nexport function renderToString(arg: unknown): string {\n // Convenience: if a component function is passed, delegate to sync render\n if (typeof arg === 'function') {\n return renderToStringSync(\n arg as (\n props?: Record<string, unknown>\n ) => VNode | JSXElement | string | number | null\n );\n }\n const opts = arg as {\n url: string;\n routes: SSRRoute[];\n seed?: number;\n data?: SSRData;\n };\n const sink = new StringSink();\n renderToSinkInternal({ ...opts, sink });\n sink.end();\n return sink.toString();\n}\n\nexport function renderToStream(opts: {\n url: string;\n routes: SSRRoute[];\n seed?: number;\n data?: SSRData;\n onChunk(html: string): void;\n onComplete(): void;\n}): void {\n const sink = new StreamSink(opts.onChunk, opts.onComplete);\n renderToSinkInternal({ ...opts, sink });\n sink.end();\n}\n\nfunction renderToSinkInternal(opts: {\n url: string;\n routes: SSRRoute[];\n seed?: number;\n data?: SSRData;\n sink: { write(html: string): void; end(): void };\n}) {\n const { url, routes, seed = 12345, data, sink } = opts;\n\n // ⚠️ WARNING: This function mutates global route state. It is NOT safe to call\n // concurrently from multiple async contexts. In long-running servers, ensure\n // SSR requests are serialized or use isolated route contexts per request.\n //\n // Route resolution happens BEFORE render pass\n const {\n clearRoutes,\n route,\n setServerLocation,\n lockRouteRegistration,\n resolveRoute,\n } = RouteModule;\n\n clearRoutes();\n for (const r of routes) route(r.path, r.handler, r.namespace);\n\n setServerLocation(url);\n if (process.env.NODE_ENV === 'production') lockRouteRegistration();\n\n const resolved = resolveRoute(url);\n if (!resolved) throw new Error(`SSR: no route found for url: ${url}`);\n\n const ctx = {\n url,\n seed,\n data,\n params: resolved.params,\n signal: undefined as AbortSignal | undefined,\n };\n\n // Render the resolved handler with params\n const node = resolved.handler(resolved.params) as\n | VNode\n | JSXElement\n | string\n | number\n | null;\n\n // Start render-phase keying so resource() can lookup resolved `data` by key\n startRenderPhase(data || null);\n try {\n renderNodeToSink(node, sink, ctx);\n } finally {\n stopRenderPhase();\n }\n}\n\nexport { collectResources, resolvePlan, resolveResources, ResourcePlan };\n"],"mappings":"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","names":["HostFallback","attrs"]}
|
package/dist/ssr-QJ5NTQR6.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SSRDataMissingError,
|
|
3
|
-
collectResources,
|
|
4
|
-
popSSRStrictPurityGuard,
|
|
5
|
-
pushSSRStrictPurityGuard,
|
|
6
|
-
renderToStream,
|
|
7
|
-
renderToString,
|
|
8
|
-
renderToStringSync,
|
|
9
|
-
renderToStringSyncForUrl,
|
|
10
|
-
resolvePlan,
|
|
11
|
-
resolveResources
|
|
12
|
-
} from "./chunk-OFW6DFBM.js";
|
|
13
|
-
import "./chunk-2ONGHQ7Z.js";
|
|
14
|
-
import "./chunk-SALJX5PZ.js";
|
|
15
|
-
import "./chunk-JHOGWTAW.js";
|
|
16
|
-
export {
|
|
17
|
-
SSRDataMissingError,
|
|
18
|
-
collectResources,
|
|
19
|
-
popSSRStrictPurityGuard,
|
|
20
|
-
pushSSRStrictPurityGuard,
|
|
21
|
-
renderToStream,
|
|
22
|
-
renderToString,
|
|
23
|
-
renderToStringSync,
|
|
24
|
-
renderToStringSyncForUrl,
|
|
25
|
-
resolvePlan,
|
|
26
|
-
resolveResources
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=ssr-QJ5NTQR6.js.map
|
package/dist/ssr-QJ5NTQR6.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
File without changes
|
|
File without changes
|