@renderify/runtime 0.1.0
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/LICENSE +21 -0
- package/README.md +62 -0
- package/dist/runtime.cjs.js +3701 -0
- package/dist/runtime.cjs.js.map +1 -0
- package/dist/runtime.d.mts +226 -0
- package/dist/runtime.d.ts +226 -0
- package/dist/runtime.esm.js +3704 -0
- package/dist/runtime.esm.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/embed.ts","../src/jspm-module-loader.ts","../src/manager.ts","../src/module-fetch.ts","../src/runtime-environment.ts","../src/runtime-budget.ts","../src/runtime-component-runtime.ts","../src/runtime-defaults.ts","../src/runtime-node-resolver.ts","../src/template.ts","../src/runtime-plan-imports.ts","../src/runtime-preflight.ts","../src/runtime-source-utils.ts","../src/runtime-specifier.ts","../src/runtime-plan-preflight.ts","../src/sandbox.ts","../src/runtime-source-execution.ts","../src/runtime-source-module-loader.ts","../src/transpiler.ts","../src/runtime-source-runtime.ts","../src/runtime-manager.types.ts","../src/ui-renderer.ts"],"sourcesContent":["export * from \"./embed\";\nexport type { JspmModuleLoaderOptions } from \"./jspm-module-loader\";\nexport { JspmModuleLoader } from \"./jspm-module-loader\";\nexport * from \"./manager\";\nexport * from \"./runtime-manager.types\";\nexport * from \"./transpiler\";\nexport type {\n InteractiveRenderTarget,\n RenderTarget,\n RuntimeEventDispatchRequest,\n UIRenderer,\n} from \"./ui-renderer\";\nexport { DefaultUIRenderer } from \"./ui-renderer\";\n","import type { RuntimePlan } from \"@renderify/ir\";\nimport { DefaultSecurityChecker } from \"@renderify/security\";\nimport { JspmModuleLoader } from \"./jspm-module-loader\";\nimport { DefaultRuntimeManager } from \"./manager\";\nimport {\n type RuntimeEmbedRenderOptions,\n type RuntimeEmbedRenderResult,\n RuntimeSecurityViolationError,\n} from \"./runtime-manager.types\";\nimport { DefaultUIRenderer, type RenderTarget } from \"./ui-renderer\";\n\nconst EMBED_TARGET_RENDER_LOCKS = new WeakMap<HTMLElement, Promise<void>>();\n\nexport async function renderPlanInBrowser(\n plan: RuntimePlan,\n options: RuntimeEmbedRenderOptions = {},\n): Promise<RuntimeEmbedRenderResult> {\n const renderOperation = async (): Promise<RuntimeEmbedRenderResult> => {\n const ui = options.ui ?? new DefaultUIRenderer();\n const runtime =\n options.runtime ??\n new DefaultRuntimeManager({\n moduleLoader: new JspmModuleLoader(),\n ...(options.runtimeOptions ?? {}),\n });\n const security = options.security ?? new DefaultSecurityChecker();\n\n const shouldInitializeRuntime =\n options.autoInitializeRuntime !== false || options.runtime === undefined;\n const shouldTerminateRuntime =\n options.autoTerminateRuntime !== false && options.runtime === undefined;\n\n security.initialize(options.securityInitialization);\n\n if (shouldInitializeRuntime) {\n await runtime.initialize();\n }\n\n try {\n const securityResult = await security.checkPlan(plan);\n if (!securityResult.safe) {\n throw new RuntimeSecurityViolationError(securityResult);\n }\n\n const execution = await runtime.execute({\n plan,\n context: options.context,\n signal: options.signal,\n });\n const html = await ui.render(execution, options.target);\n\n return {\n html,\n execution,\n security: securityResult,\n runtime,\n };\n } finally {\n if (shouldTerminateRuntime) {\n await runtime.terminate();\n }\n }\n };\n\n const shouldSerialize = options.serializeTargetRenders !== false;\n const targetElement = shouldSerialize\n ? resolveEmbedRenderTargetElement(options.target)\n : undefined;\n\n if (targetElement) {\n return withEmbedTargetRenderLock(targetElement, renderOperation);\n }\n\n return renderOperation();\n}\n\nasync function withEmbedTargetRenderLock<T>(\n target: HTMLElement,\n operation: () => Promise<T>,\n): Promise<T> {\n const previousLock =\n EMBED_TARGET_RENDER_LOCKS.get(target) ?? Promise.resolve();\n\n let releaseCurrentLock: (() => void) | undefined;\n const currentLock = new Promise<void>((resolve) => {\n releaseCurrentLock = resolve;\n });\n\n const queuedLock = previousLock\n .catch(() => undefined)\n .then(() => currentLock);\n EMBED_TARGET_RENDER_LOCKS.set(target, queuedLock);\n\n await previousLock.catch(() => undefined);\n\n try {\n return await operation();\n } finally {\n releaseCurrentLock?.();\n if (EMBED_TARGET_RENDER_LOCKS.get(target) === queuedLock) {\n EMBED_TARGET_RENDER_LOCKS.delete(target);\n }\n }\n}\n\nfunction resolveEmbedRenderTargetElement(\n target: RenderTarget | undefined,\n): HTMLElement | undefined {\n if (typeof document === \"undefined\" || !target) {\n return undefined;\n }\n\n if (typeof target === \"string\") {\n return document.querySelector<HTMLElement>(target) ?? undefined;\n }\n\n if (typeof HTMLElement !== \"undefined\" && target instanceof HTMLElement) {\n return target;\n }\n\n if (isInteractiveRenderTargetValue(target)) {\n if (typeof target.element === \"string\") {\n return document.querySelector<HTMLElement>(target.element) ?? undefined;\n }\n\n return target.element;\n }\n\n return undefined;\n}\n\nfunction isInteractiveRenderTargetValue(\n target: RenderTarget,\n): target is { element: string | HTMLElement } {\n return (\n typeof target === \"object\" &&\n target !== null &&\n \"element\" in target &&\n (typeof target.element === \"string\" ||\n (typeof HTMLElement !== \"undefined\" &&\n target.element instanceof HTMLElement))\n );\n}\n","import { DEFAULT_JSPM_SPECIFIER_OVERRIDES } from \"@renderify/ir\";\nimport type { RuntimeModuleLoader } from \"./index\";\n\nexport interface JspmModuleLoaderOptions {\n cdnBaseUrl?: string;\n importMap?: Record<string, string>;\n}\n\ninterface SystemLike {\n import(url: string): Promise<unknown>;\n}\n\nconst NODE_BUILTIN_MODULE_NAMES = new Set([\n \"assert\",\n \"buffer\",\n \"child_process\",\n \"cluster\",\n \"console\",\n \"constants\",\n \"crypto\",\n \"dgram\",\n \"diagnostics_channel\",\n \"dns\",\n \"domain\",\n \"events\",\n \"fs\",\n \"http\",\n \"http2\",\n \"https\",\n \"inspector\",\n \"module\",\n \"net\",\n \"os\",\n \"path\",\n \"perf_hooks\",\n \"process\",\n \"punycode\",\n \"querystring\",\n \"readline\",\n \"repl\",\n \"stream\",\n \"string_decoder\",\n \"sys\",\n \"timers\",\n \"tls\",\n \"tty\",\n \"url\",\n \"util\",\n \"v8\",\n \"vm\",\n \"wasi\",\n \"worker_threads\",\n \"zlib\",\n]);\n\nfunction hasSystemImport(value: unknown): value is SystemLike {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const maybeSystem = value as Partial<SystemLike>;\n return typeof maybeSystem.import === \"function\";\n}\n\nexport class JspmModuleLoader implements RuntimeModuleLoader {\n private readonly cdnBaseUrl: string;\n private readonly importMap: Record<string, string>;\n private readonly cache = new Map<string, unknown>();\n\n constructor(options: JspmModuleLoaderOptions = {}) {\n this.cdnBaseUrl = this.normalizeCdnBaseUrl(options.cdnBaseUrl);\n this.importMap = options.importMap ?? {};\n }\n\n async load(specifier: string): Promise<unknown> {\n const resolved = this.resolveSpecifier(specifier);\n\n if (this.cache.has(resolved)) {\n return this.cache.get(resolved);\n }\n\n const loaded = await this.importWithBestEffort(resolved);\n this.cache.set(resolved, loaded);\n\n return loaded;\n }\n\n async unload(specifier: string): Promise<void> {\n const resolved = this.resolveSpecifier(specifier);\n this.cache.delete(resolved);\n }\n\n resolveSpecifier(specifier: string): string {\n const normalized = specifier.trim();\n if (normalized.length === 0) {\n throw new Error(\"Empty module specifier is not supported\");\n }\n\n const mapped = this.importMap[normalized];\n if (mapped) {\n return mapped;\n }\n\n if (this.isUrl(normalized)) {\n return normalized;\n }\n\n if (this.isNodeBuiltinSpecifier(normalized)) {\n throw new Error(\n `Node.js builtin modules are not supported in JSPM runtime: ${normalized}`,\n );\n }\n\n if (this.hasUnsupportedScheme(normalized)) {\n const scheme = normalized.slice(0, normalized.indexOf(\":\"));\n throw new Error(\n `Unsupported module scheme \"${scheme}\" in specifier: ${normalized}`,\n );\n }\n\n if (normalized.startsWith(\"npm:\")) {\n return this.resolveNpmSpecifier(normalized.slice(4));\n }\n\n if (this.isBareNpmSpecifier(normalized)) {\n return this.resolveNpmSpecifier(normalized);\n }\n\n throw new Error(`Unsupported JSPM specifier: ${normalized}`);\n }\n\n private async importWithBestEffort(resolved: string): Promise<unknown> {\n const globalValue: unknown = globalThis;\n const maybeSystem =\n typeof globalValue === \"object\" && globalValue !== null\n ? (globalValue as Record<string, unknown>).System\n : undefined;\n\n if (hasSystemImport(maybeSystem)) {\n return maybeSystem.import(resolved);\n }\n\n return import(/* webpackIgnore: true */ resolved);\n }\n\n private isUrl(value: string): boolean {\n try {\n const parsed = new URL(value);\n return parsed.protocol === \"http:\" || parsed.protocol === \"https:\";\n } catch {\n return false;\n }\n }\n\n private hasUnsupportedScheme(specifier: string): boolean {\n const schemeMatch = /^([a-zA-Z][a-zA-Z\\d+\\-.]*):/.exec(specifier);\n if (!schemeMatch) {\n return false;\n }\n\n const scheme = schemeMatch[1].toLowerCase();\n return scheme !== \"http\" && scheme !== \"https\" && scheme !== \"npm\";\n }\n\n private isBareNpmSpecifier(specifier: string): boolean {\n if (\n specifier.startsWith(\"./\") ||\n specifier.startsWith(\"../\") ||\n specifier.startsWith(\"/\")\n ) {\n return false;\n }\n\n if (/\\s/.test(specifier)) {\n return false;\n }\n\n return /^[@a-zA-Z0-9][@a-zA-Z0-9._/-]*(?:@[a-zA-Z0-9._-]+)?$/.test(\n specifier,\n );\n }\n\n private isNodeBuiltinSpecifier(specifier: string): boolean {\n if (specifier.startsWith(\"node:\")) {\n const name = specifier.slice(5).split(\"/\")[0];\n return name.length > 0;\n }\n\n const target = specifier.startsWith(\"npm:\")\n ? specifier.slice(4)\n : specifier;\n const topLevel = this.extractTopLevelPackageName(target);\n\n return NODE_BUILTIN_MODULE_NAMES.has(topLevel);\n }\n\n private extractTopLevelPackageName(specifier: string): string {\n if (specifier.startsWith(\"@\")) {\n const segments = specifier.split(\"/\");\n if (segments.length < 2) {\n return specifier;\n }\n const scopedName = segments[1].split(\"@\")[0];\n return `${segments[0]}/${scopedName}`;\n }\n\n const firstSegment = specifier.split(\"/\")[0];\n return firstSegment.split(\"@\")[0];\n }\n\n private resolveNpmSpecifier(specifier: string): string {\n const normalized = specifier.trim();\n if (normalized.length === 0) {\n throw new Error(\"Empty npm specifier is not supported\");\n }\n\n const override = DEFAULT_JSPM_SPECIFIER_OVERRIDES[normalized];\n if (override) {\n return override;\n }\n\n return `${this.cdnBaseUrl}/npm:${normalized}`;\n }\n\n private normalizeCdnBaseUrl(input?: string): string {\n const raw = input?.trim() || \"https://ga.jspm.io\";\n const normalized = raw.replace(/\\/$/, \"\");\n return normalized.endsWith(\"/npm\")\n ? normalized.slice(0, normalized.length - 4)\n : normalized;\n }\n}\n","import {\n asJsonValue,\n cloneJsonValue,\n createElementNode,\n createTextNode,\n isRuntimeNode,\n type RuntimeAction,\n type RuntimeDiagnostic,\n type RuntimeEvent,\n type RuntimeExecutionContext,\n type RuntimeExecutionProfile,\n type RuntimeExecutionResult,\n type RuntimeModuleManifest,\n type RuntimeNode,\n type RuntimePlan,\n type RuntimeSourceModule,\n type RuntimeStateSnapshot,\n resolveRuntimePlanSpecVersion,\n} from \"@renderify/ir\";\nimport {\n type RemoteModuleFetchResult,\n toConfiguredFallbackUrl,\n toEsmFallbackUrl,\n} from \"./module-fetch\";\nimport {\n hasExceededBudget as hasRuntimeExceededBudget,\n isAbortError as isRuntimeAbortError,\n isAborted as isRuntimeAborted,\n throwIfAborted as throwIfRuntimeAborted,\n withRemainingBudget as withRuntimeRemainingBudget,\n} from \"./runtime-budget\";\nimport { createPreactRenderArtifact as createPreactRenderArtifactFromComponentRuntime } from \"./runtime-component-runtime\";\nimport {\n FALLBACK_ALLOW_ISOLATION_FALLBACK,\n FALLBACK_BROWSER_SOURCE_SANDBOX_FAIL_CLOSED,\n FALLBACK_BROWSER_SOURCE_SANDBOX_TIMEOUT_MS,\n FALLBACK_ENABLE_DEPENDENCY_PREFLIGHT,\n FALLBACK_ENFORCE_MODULE_MANIFEST,\n FALLBACK_ESM_CDN_BASE,\n FALLBACK_EXECUTION_PROFILE,\n FALLBACK_FAIL_ON_DEPENDENCY_PREFLIGHT_ERROR,\n FALLBACK_JSPM_CDN_BASE,\n FALLBACK_MAX_COMPONENT_INVOCATIONS,\n FALLBACK_MAX_EXECUTION_MS,\n FALLBACK_MAX_IMPORTS,\n FALLBACK_REMOTE_FETCH_BACKOFF_MS,\n FALLBACK_REMOTE_FETCH_RETRIES,\n FALLBACK_REMOTE_FETCH_TIMEOUT_MS,\n normalizeFallbackCdnBases,\n normalizeNonNegativeInteger,\n normalizePositiveInteger,\n normalizeSourceSandboxMode,\n normalizeSupportedSpecVersions,\n} from \"./runtime-defaults\";\nimport { isBrowserRuntime, nowMs } from \"./runtime-environment\";\nimport type {\n CompileOptions,\n RuntimeExecutionInput,\n RuntimeManager,\n RuntimeManagerOptions,\n RuntimeModuleLoader,\n RuntimePlanProbeResult,\n RuntimeSourceSandboxMode,\n RuntimeSourceTranspiler,\n} from \"./runtime-manager.types\";\nimport { resolveRuntimeNode } from \"./runtime-node-resolver\";\nimport { resolveRuntimePlanImports } from \"./runtime-plan-imports\";\nimport { preflightRuntimePlanDependencies } from \"./runtime-plan-preflight\";\nimport type {\n RuntimeDependencyProbeStatus,\n RuntimeDependencyUsage,\n} from \"./runtime-preflight\";\nimport {\n executeRuntimeSourceRoot,\n type ResolvedSourceOutput,\n} from \"./runtime-source-execution\";\nimport { RuntimeSourceModuleLoader } from \"./runtime-source-module-loader\";\nimport {\n resolveSourceSandboxMode,\n shouldUsePreactSourceRuntime,\n transpileRuntimeSource,\n} from \"./runtime-source-runtime\";\nimport {\n canMaterializeBrowserModules,\n createBrowserBlobModuleUrl,\n normalizeRuntimeSourceOutput,\n revokeBrowserBlobUrls,\n rewriteImportsAsync,\n} from \"./runtime-source-utils\";\nimport {\n resolveRuntimeSourceSpecifier,\n resolveRuntimeSpecifier,\n resolveSourceImportLoaderCandidate,\n} from \"./runtime-specifier\";\nimport { BabelRuntimeSourceTranspiler } from \"./transpiler\";\n\ninterface ExecutionFrame {\n startedAt: number;\n maxExecutionMs: number;\n maxComponentInvocations: number;\n componentInvocations: number;\n executionProfile: RuntimeExecutionProfile;\n signal?: AbortSignal;\n}\n\nexport type { RuntimeComponentFactory } from \"./runtime-component-runtime\";\n\nexport class DefaultRuntimeManager implements RuntimeManager {\n private readonly moduleLoader?: RuntimeModuleLoader;\n private readonly sourceTranspiler: RuntimeSourceTranspiler;\n private readonly states = new Map<string, RuntimeStateSnapshot>();\n private readonly defaultMaxImports: number;\n private readonly defaultMaxComponentInvocations: number;\n private readonly defaultMaxExecutionMs: number;\n private readonly defaultExecutionProfile: RuntimeExecutionProfile;\n private readonly supportedPlanSpecVersions: Set<string>;\n private readonly enforceModuleManifest: boolean;\n private readonly allowIsolationFallback: boolean;\n private readonly browserSourceSandboxMode: RuntimeSourceSandboxMode;\n private readonly browserSourceSandboxTimeoutMs: number;\n private readonly browserSourceSandboxFailClosed: boolean;\n private readonly enableDependencyPreflight: boolean;\n private readonly failOnDependencyPreflightError: boolean;\n private readonly remoteFetchTimeoutMs: number;\n private readonly remoteFetchRetries: number;\n private readonly remoteFetchBackoffMs: number;\n private readonly remoteFallbackCdnBases: string[];\n private readonly browserModuleUrlCache = new Map<string, string>();\n private readonly browserModuleInflight = new Map<string, Promise<string>>();\n private readonly browserBlobUrls = new Set<string>();\n private initialized = false;\n\n constructor(options: RuntimeManagerOptions = {}) {\n this.moduleLoader = options.moduleLoader;\n this.sourceTranspiler =\n options.sourceTranspiler ?? new BabelRuntimeSourceTranspiler();\n this.defaultMaxImports = options.defaultMaxImports ?? FALLBACK_MAX_IMPORTS;\n this.defaultMaxComponentInvocations =\n options.defaultMaxComponentInvocations ??\n FALLBACK_MAX_COMPONENT_INVOCATIONS;\n this.defaultMaxExecutionMs =\n options.defaultMaxExecutionMs ?? FALLBACK_MAX_EXECUTION_MS;\n this.defaultExecutionProfile =\n options.defaultExecutionProfile ?? FALLBACK_EXECUTION_PROFILE;\n this.supportedPlanSpecVersions = normalizeSupportedSpecVersions(\n options.supportedPlanSpecVersions,\n );\n this.enforceModuleManifest =\n options.enforceModuleManifest ?? FALLBACK_ENFORCE_MODULE_MANIFEST;\n this.allowIsolationFallback =\n options.allowIsolationFallback ?? FALLBACK_ALLOW_ISOLATION_FALLBACK;\n this.browserSourceSandboxMode = normalizeSourceSandboxMode(\n options.browserSourceSandboxMode,\n );\n this.browserSourceSandboxTimeoutMs = normalizePositiveInteger(\n options.browserSourceSandboxTimeoutMs,\n FALLBACK_BROWSER_SOURCE_SANDBOX_TIMEOUT_MS,\n );\n this.browserSourceSandboxFailClosed =\n options.browserSourceSandboxFailClosed ??\n FALLBACK_BROWSER_SOURCE_SANDBOX_FAIL_CLOSED;\n this.enableDependencyPreflight =\n options.enableDependencyPreflight ?? FALLBACK_ENABLE_DEPENDENCY_PREFLIGHT;\n this.failOnDependencyPreflightError =\n options.failOnDependencyPreflightError ??\n FALLBACK_FAIL_ON_DEPENDENCY_PREFLIGHT_ERROR;\n this.remoteFetchTimeoutMs = normalizePositiveInteger(\n options.remoteFetchTimeoutMs,\n FALLBACK_REMOTE_FETCH_TIMEOUT_MS,\n );\n this.remoteFetchRetries = normalizeNonNegativeInteger(\n options.remoteFetchRetries,\n FALLBACK_REMOTE_FETCH_RETRIES,\n );\n this.remoteFetchBackoffMs = normalizeNonNegativeInteger(\n options.remoteFetchBackoffMs,\n FALLBACK_REMOTE_FETCH_BACKOFF_MS,\n );\n this.remoteFallbackCdnBases = normalizeFallbackCdnBases(\n options.remoteFallbackCdnBases,\n );\n }\n\n async initialize(): Promise<void> {\n if (this.initialized) {\n return;\n }\n this.initialized = true;\n }\n\n async terminate(): Promise<void> {\n this.initialized = false;\n this.states.clear();\n this.browserModuleUrlCache.clear();\n this.browserModuleInflight.clear();\n this.revokeBrowserBlobUrls();\n }\n\n async execute(input: RuntimeExecutionInput): Promise<RuntimeExecutionResult> {\n return this.executePlan(\n input.plan,\n input.context,\n input.event,\n input.stateOverride,\n input.signal,\n );\n }\n\n async probePlan(plan: RuntimePlan): Promise<RuntimePlanProbeResult> {\n this.ensureInitialized();\n\n const diagnostics: RuntimeDiagnostic[] = [];\n const specVersion = resolveRuntimePlanSpecVersion(plan.specVersion);\n if (!this.supportedPlanSpecVersions.has(specVersion)) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_SPEC_VERSION_UNSUPPORTED\",\n message: `Unsupported plan specVersion \"${specVersion}\". Supported: ${[\n ...this.supportedPlanSpecVersions,\n ].join(\", \")}`,\n });\n return {\n planId: plan.id,\n diagnostics,\n dependencies: [],\n };\n }\n\n const frame: ExecutionFrame = {\n startedAt: nowMs(),\n maxExecutionMs:\n plan.capabilities.maxExecutionMs ?? this.defaultMaxExecutionMs,\n maxComponentInvocations:\n plan.capabilities.maxComponentInvocations ??\n this.defaultMaxComponentInvocations,\n componentInvocations: 0,\n executionProfile:\n plan.capabilities.executionProfile ?? this.defaultExecutionProfile,\n };\n\n const dependencies = await this.preflightPlanDependencies(\n plan,\n diagnostics,\n frame,\n );\n\n return {\n planId: plan.id,\n diagnostics,\n dependencies,\n };\n }\n\n async executePlan(\n plan: RuntimePlan,\n context: RuntimeExecutionContext = {},\n event?: RuntimeEvent,\n stateOverride?: RuntimeStateSnapshot,\n signal?: AbortSignal,\n ): Promise<RuntimeExecutionResult> {\n this.ensureInitialized();\n throwIfRuntimeAborted(signal);\n\n const specVersion = resolveRuntimePlanSpecVersion(plan.specVersion);\n const diagnostics: RuntimeDiagnostic[] = [];\n\n if (!this.supportedPlanSpecVersions.has(specVersion)) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_SPEC_VERSION_UNSUPPORTED\",\n message: `Unsupported plan specVersion \"${specVersion}\". Supported: ${[\n ...this.supportedPlanSpecVersions,\n ].join(\", \")}`,\n });\n return {\n planId: plan.id,\n root: plan.root,\n diagnostics,\n state: cloneJsonValue(this.resolveState(plan, stateOverride)),\n handledEvent: event,\n appliedActions: [],\n };\n }\n\n const state = this.resolveState(plan, stateOverride);\n const appliedActions: RuntimeAction[] = [];\n\n const frame: ExecutionFrame = {\n startedAt: nowMs(),\n maxExecutionMs:\n plan.capabilities.maxExecutionMs ?? this.defaultMaxExecutionMs,\n maxComponentInvocations:\n plan.capabilities.maxComponentInvocations ??\n this.defaultMaxComponentInvocations,\n componentInvocations: 0,\n executionProfile:\n plan.capabilities.executionProfile ?? this.defaultExecutionProfile,\n signal,\n };\n\n const maxImports = plan.capabilities.maxImports ?? this.defaultMaxImports;\n const imports = plan.imports ?? [];\n\n if (this.enableDependencyPreflight) {\n await this.preflightPlanDependencies(plan, diagnostics, frame);\n if (\n this.failOnDependencyPreflightError &&\n diagnostics.some(\n (item) =>\n item.level === \"error\" &&\n item.code.startsWith(\"RUNTIME_PREFLIGHT_\"),\n )\n ) {\n return {\n planId: plan.id,\n root: plan.root,\n diagnostics,\n state: cloneJsonValue(state),\n handledEvent: event,\n appliedActions,\n };\n }\n }\n\n await resolveRuntimePlanImports({\n imports,\n maxImports,\n moduleManifest: plan.moduleManifest,\n diagnostics,\n moduleLoader: this.moduleLoader,\n resolveRuntimeSpecifier: (\n specifier,\n moduleManifest,\n runtimeDiagnostics,\n ) =>\n this.resolveRuntimeSpecifier(\n specifier,\n moduleManifest,\n runtimeDiagnostics,\n \"import\",\n ),\n isAborted: () => isRuntimeAborted(frame.signal),\n hasExceededBudget: () => hasRuntimeExceededBudget(frame),\n withRemainingBudget: (operation, timeoutMessage) =>\n withRuntimeRemainingBudget(operation, frame, timeoutMessage),\n isAbortError: (error) => isRuntimeAbortError(error),\n errorToMessage: (error) => this.errorToMessage(error),\n });\n\n const sourceRoot = plan.source\n ? await this.resolveSourceRoot(\n plan,\n plan.source,\n context,\n state,\n event,\n diagnostics,\n frame,\n )\n : undefined;\n\n const sourceRenderArtifact = sourceRoot?.renderArtifact;\n\n const resolvedRoot = sourceRoot?.root\n ? await this.resolveNode(\n sourceRoot.root,\n plan.moduleManifest,\n context,\n state,\n event,\n diagnostics,\n frame,\n )\n : await this.resolveNode(\n plan.root,\n plan.moduleManifest,\n context,\n state,\n event,\n diagnostics,\n frame,\n );\n\n return {\n planId: plan.id,\n root: resolvedRoot,\n diagnostics,\n state: cloneJsonValue(state),\n handledEvent: event,\n appliedActions,\n ...(sourceRenderArtifact ? { renderArtifact: sourceRenderArtifact } : {}),\n };\n }\n\n async compile(\n plan: RuntimePlan,\n options: CompileOptions = {},\n ): Promise<string> {\n const indent = options.pretty ? 2 : 0;\n return JSON.stringify(plan, null, indent);\n }\n\n getPlanState(planId: string): RuntimeStateSnapshot | undefined {\n const snapshot = this.states.get(planId);\n if (!snapshot) {\n return undefined;\n }\n\n return cloneJsonValue(snapshot);\n }\n\n setPlanState(planId: string, snapshot: RuntimeStateSnapshot): void {\n this.states.set(planId, cloneJsonValue(snapshot));\n }\n\n clearPlanState(planId: string): void {\n this.states.delete(planId);\n }\n\n private resolveState(\n plan: RuntimePlan,\n stateOverride?: RuntimeStateSnapshot,\n ): RuntimeStateSnapshot {\n if (stateOverride) {\n return cloneJsonValue(stateOverride);\n }\n\n if (plan.state?.initial) {\n return cloneJsonValue(plan.state.initial);\n }\n\n return {};\n }\n\n private async preflightPlanDependencies(\n plan: RuntimePlan,\n diagnostics: RuntimeDiagnostic[],\n frame: ExecutionFrame,\n ): Promise<RuntimeDependencyProbeStatus[]> {\n return preflightRuntimePlanDependencies({\n plan,\n diagnostics,\n moduleLoader: this.moduleLoader,\n withRemainingBudget: (operation, timeoutMessage) =>\n withRuntimeRemainingBudget(operation, frame, timeoutMessage),\n resolveRuntimeSourceSpecifier: (\n specifier,\n manifest,\n runtimeDiagnostics,\n requireManifest,\n ) =>\n this.resolveRuntimeSourceSpecifier(\n specifier,\n manifest,\n runtimeDiagnostics,\n requireManifest,\n ),\n resolveSourceImportLoaderCandidate: (specifier, manifest) =>\n this.resolveSourceImportLoaderCandidate(specifier, manifest),\n resolveRuntimeSpecifier: (\n specifier,\n manifest,\n runtimeDiagnostics,\n usage,\n ) =>\n this.resolveRuntimeSpecifier(\n specifier,\n manifest,\n runtimeDiagnostics,\n usage,\n ),\n materializeBrowserRemoteModule: (url, manifest, runtimeDiagnostics) =>\n this.createSourceModuleLoader(\n manifest,\n runtimeDiagnostics,\n ).materializeBrowserRemoteModule(url),\n fetchRemoteModuleCodeWithFallback: (url, runtimeDiagnostics) =>\n this.createSourceModuleLoader(\n undefined,\n runtimeDiagnostics,\n ).fetchRemoteModuleCodeWithFallback(url),\n isAbortError: (error) => isRuntimeAbortError(error),\n errorToMessage: (error) => this.errorToMessage(error),\n isAborted: () => isRuntimeAborted(frame.signal),\n hasExceededBudget: () => hasRuntimeExceededBudget(frame),\n });\n }\n\n private async resolveSourceRoot(\n plan: RuntimePlan,\n source: RuntimeSourceModule,\n context: RuntimeExecutionContext,\n state: RuntimeStateSnapshot,\n event: RuntimeEvent | undefined,\n diagnostics: RuntimeDiagnostic[],\n frame: ExecutionFrame,\n ): Promise<ResolvedSourceOutput | undefined> {\n return executeRuntimeSourceRoot({\n plan,\n source,\n context,\n state,\n event,\n diagnostics,\n frame: {\n executionProfile: frame.executionProfile,\n signal: frame.signal,\n },\n browserSourceSandboxTimeoutMs: this.browserSourceSandboxTimeoutMs,\n browserSourceSandboxFailClosed: this.browserSourceSandboxFailClosed,\n withRemainingBudget: (operation, timeoutMessage) =>\n withRuntimeRemainingBudget(operation, frame, timeoutMessage),\n transpileRuntimeSource: (runtimeSource) =>\n transpileRuntimeSource(runtimeSource, this.sourceTranspiler),\n rewriteSourceImports: async (code, manifest, runtimeDiagnostics) =>\n this.rewriteImportsAsync(code, async (specifier) =>\n this.resolveRuntimeSourceSpecifier(\n specifier,\n manifest,\n runtimeDiagnostics,\n ),\n ),\n resolveSourceSandboxMode: (runtimeSource, executionProfile) =>\n resolveSourceSandboxMode({\n source: runtimeSource,\n executionProfile,\n defaultMode: this.browserSourceSandboxMode,\n isBrowserRuntime: isBrowserRuntime(),\n }),\n importSourceModuleFromCode: (code, manifest, runtimeDiagnostics) =>\n this.createSourceModuleLoader(\n manifest,\n runtimeDiagnostics,\n ).importSourceModuleFromCode(code),\n normalizeSourceOutput: (output) => this.normalizeSourceOutput(output),\n shouldUsePreactSourceRuntime,\n createPreactRenderArtifact: ({\n sourceExport,\n runtimeInput,\n diagnostics,\n }) =>\n createPreactRenderArtifactFromComponentRuntime({\n sourceExport,\n runtimeInput,\n diagnostics,\n }),\n isAbortError: (error) => isRuntimeAbortError(error),\n errorToMessage: (error) => this.errorToMessage(error),\n cloneJsonValue,\n asJsonValue,\n });\n }\n\n private resolveRuntimeSourceSpecifier(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n requireManifest = true,\n ): string {\n return resolveRuntimeSourceSpecifier({\n specifier,\n moduleManifest,\n diagnostics,\n requireManifest,\n enforceModuleManifest: this.enforceModuleManifest,\n moduleLoader: this.moduleLoader,\n jspmCdnBase: FALLBACK_JSPM_CDN_BASE,\n });\n }\n\n private resolveSourceImportLoaderCandidate(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n ): string | undefined {\n return resolveSourceImportLoaderCandidate(\n specifier,\n moduleManifest,\n this.moduleLoader,\n );\n }\n\n private resolveRuntimeSpecifier(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n usage: \"import\" | \"component\" | \"source-import\",\n ): string | undefined {\n return resolveRuntimeSpecifier({\n specifier,\n moduleManifest,\n diagnostics,\n usage,\n enforceModuleManifest: this.enforceModuleManifest,\n });\n }\n\n private createSourceModuleLoader(\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n ): RuntimeSourceModuleLoader {\n return new RuntimeSourceModuleLoader({\n moduleManifest,\n diagnostics,\n browserModuleUrlCache: this.browserModuleUrlCache,\n browserModuleInflight: this.browserModuleInflight,\n remoteFallbackCdnBases: this.remoteFallbackCdnBases,\n remoteFetchTimeoutMs: this.remoteFetchTimeoutMs,\n remoteFetchRetries: this.remoteFetchRetries,\n remoteFetchBackoffMs: this.remoteFetchBackoffMs,\n canMaterializeBrowserModules: () => canMaterializeBrowserModules(),\n rewriteImportsAsync: (code, resolver) =>\n this.rewriteImportsAsync(code, resolver),\n createBrowserBlobModuleUrl: (code) =>\n this.createBrowserBlobModuleUrl(code),\n resolveRuntimeSourceSpecifier: (\n specifier,\n manifest,\n runtimeDiagnostics,\n requireManifest,\n ) =>\n this.resolveRuntimeSourceSpecifier(\n specifier,\n manifest,\n runtimeDiagnostics,\n requireManifest,\n ),\n });\n }\n\n private async materializeFetchedModuleSource(\n fetched: RemoteModuleFetchResult,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n ): Promise<string> {\n return this.createSourceModuleLoader(\n moduleManifest,\n diagnostics,\n ).materializeFetchedModuleSource(fetched);\n }\n\n private toConfiguredFallbackUrl(\n url: string,\n cdnBase: string,\n ): string | undefined {\n return toConfiguredFallbackUrl(url, cdnBase);\n }\n\n private toEsmFallbackUrl(\n url: string,\n cdnBase = FALLBACK_ESM_CDN_BASE,\n ): string | undefined {\n return toEsmFallbackUrl(url, cdnBase);\n }\n\n private async rewriteImportsAsync(\n code: string,\n resolver: (specifier: string) => Promise<string>,\n ): Promise<string> {\n return rewriteImportsAsync(code, resolver);\n }\n\n private createBrowserBlobModuleUrl(code: string): string {\n return createBrowserBlobModuleUrl(code, this.browserBlobUrls);\n }\n\n private revokeBrowserBlobUrls(): void {\n revokeBrowserBlobUrls(this.browserBlobUrls);\n }\n\n private normalizeSourceOutput(output: unknown): RuntimeNode | undefined {\n return normalizeRuntimeSourceOutput(output);\n }\n\n private async resolveNode(\n node: RuntimeNode,\n moduleManifest: RuntimeModuleManifest | undefined,\n context: RuntimeExecutionContext,\n state: RuntimeStateSnapshot,\n event: RuntimeEvent | undefined,\n diagnostics: RuntimeDiagnostic[],\n frame: ExecutionFrame,\n ): Promise<RuntimeNode> {\n throwIfRuntimeAborted(frame.signal);\n\n if (hasRuntimeExceededBudget(frame)) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_TIMEOUT\",\n message: \"Execution time budget exceeded during node resolution\",\n });\n return createElementNode(\"div\", { \"data-renderify-timeout\": \"true\" }, [\n createTextNode(\"Runtime execution timed out\"),\n ]);\n }\n\n return resolveRuntimeNode({\n node,\n moduleManifest,\n context,\n state,\n event,\n diagnostics,\n frame,\n resolver: {\n moduleLoader: this.moduleLoader,\n allowIsolationFallback: this.allowIsolationFallback,\n resolveRuntimeSpecifier: (\n specifier,\n manifest,\n runtimeDiagnostics,\n usage,\n ) =>\n this.resolveRuntimeSpecifier(\n specifier,\n manifest,\n runtimeDiagnostics,\n usage,\n ),\n withRemainingBudget: (operation, timeoutMessage) =>\n withRuntimeRemainingBudget(operation, frame, timeoutMessage),\n resolveNode: (nextNode) =>\n this.resolveNode(\n nextNode,\n moduleManifest,\n context,\n state,\n event,\n diagnostics,\n frame,\n ),\n errorToMessage: (error) => this.errorToMessage(error),\n },\n });\n }\n\n private ensureInitialized(): void {\n if (!this.initialized) {\n throw new Error(\"RuntimeManager is not initialized\");\n }\n }\n\n private errorToMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n return String(error);\n }\n}\n","import { hashStringFNV1a32Base36 } from \"@renderify/ir\";\n\nexport interface RemoteModuleFetchResult {\n url: string;\n code: string;\n contentType: string;\n requestUrl: string;\n}\n\nexport const DEFAULT_ESM_CDN_BASE = \"https://esm.sh\";\n\nexport function buildRemoteModuleAttemptUrls(\n url: string,\n fallbackCdnBases: string[],\n): string[] {\n const candidates = new Set<string>();\n candidates.add(url);\n\n for (const fallbackBase of fallbackCdnBases) {\n const fallback = toConfiguredFallbackUrl(url, fallbackBase);\n if (fallback) {\n candidates.add(fallback);\n }\n }\n\n return [...candidates];\n}\n\nexport function toConfiguredFallbackUrl(\n url: string,\n cdnBase: string,\n): string | undefined {\n const normalizedBase = cdnBase.trim().replace(/\\/$/, \"\");\n const specifier = extractJspmNpmSpecifier(url);\n if (!specifier || normalizedBase.length === 0) {\n return undefined;\n }\n\n if (normalizedBase.includes(\"esm.sh\")) {\n return toEsmFallbackUrl(url, normalizedBase);\n }\n\n if (normalizedBase.includes(\"jsdelivr.net\")) {\n return `${normalizedBase}/npm/${specifier}`;\n }\n\n if (normalizedBase.includes(\"unpkg.com\")) {\n const separator = specifier.includes(\"?\") ? \"&\" : \"?\";\n return `${normalizedBase}/${specifier}${separator}module`;\n }\n\n if (normalizedBase.includes(\"jspm.io\")) {\n const root = normalizedBase.endsWith(\"/npm\")\n ? normalizedBase.slice(0, normalizedBase.length - 4)\n : normalizedBase;\n return `${root}/npm:${specifier}`;\n }\n\n return undefined;\n}\n\nexport function toEsmFallbackUrl(\n url: string,\n cdnBase = DEFAULT_ESM_CDN_BASE,\n): string | undefined {\n const specifier = extractJspmNpmSpecifier(url);\n if (!specifier) {\n return undefined;\n }\n const normalizedBase = cdnBase.trim().replace(/\\/$/, \"\");\n if (normalizedBase.length === 0) {\n return undefined;\n }\n\n const aliasQuery = [\n \"alias=react:preact/compat,react-dom:preact/compat,react-dom/client:preact/compat,react/jsx-runtime:preact/jsx-runtime,react/jsx-dev-runtime:preact/jsx-runtime\",\n \"target=es2022\",\n ].join(\"&\");\n\n const separator = specifier.includes(\"?\") ? \"&\" : \"?\";\n return `${normalizedBase}/${specifier}${separator}${aliasQuery}`;\n}\n\nexport function extractJspmNpmSpecifier(url: string): string | undefined {\n const prefix = \"https://ga.jspm.io/npm:\";\n if (!url.startsWith(prefix)) {\n return undefined;\n }\n\n const specifier = url.slice(prefix.length).trim();\n if (specifier.length === 0) {\n return undefined;\n }\n\n return specifier;\n}\n\nexport function isCssModuleResponse(fetched: RemoteModuleFetchResult): boolean {\n return fetched.contentType.includes(\"text/css\") || isCssUrl(fetched.url);\n}\n\nexport function isJsonModuleResponse(\n fetched: RemoteModuleFetchResult,\n): boolean {\n return (\n fetched.contentType.includes(\"application/json\") ||\n fetched.contentType.includes(\"text/json\") ||\n isJsonUrl(fetched.url)\n );\n}\n\nexport function isJavaScriptModuleResponse(\n fetched: RemoteModuleFetchResult,\n): boolean {\n if (isJavaScriptLikeContentType(fetched.contentType)) {\n return true;\n }\n\n return isJavaScriptUrl(fetched.url);\n}\n\nexport function isJavaScriptLikeContentType(contentType: string): boolean {\n return (\n contentType.includes(\"javascript\") ||\n contentType.includes(\"ecmascript\") ||\n contentType.includes(\"typescript\") ||\n contentType.includes(\"module\")\n );\n}\n\nexport function isBinaryLikeContentType(contentType: string): boolean {\n return (\n contentType.includes(\"application/wasm\") ||\n contentType.includes(\"image/\") ||\n contentType.includes(\"font/\")\n );\n}\n\nexport function isJavaScriptUrl(url: string): boolean {\n const pathname = toUrlPathname(url);\n return /\\.(?:m?js|cjs|jsx|ts|tsx)$/i.test(pathname);\n}\n\nexport function isCssUrl(url: string): boolean {\n const pathname = toUrlPathname(url);\n return /\\.css$/i.test(pathname);\n}\n\nexport function isJsonUrl(url: string): boolean {\n const pathname = toUrlPathname(url);\n return /\\.json$/i.test(pathname);\n}\n\nexport function createCssProxyModuleSource(\n cssText: string,\n sourceUrl: string,\n): string {\n const styleId = `renderify-css-${hashStringFNV1a32Base36(sourceUrl)}`;\n const cssLiteral = JSON.stringify(cssText);\n const styleIdLiteral = JSON.stringify(styleId);\n return [\n \"const __css = \" + cssLiteral + \";\",\n \"const __styleId = \" + styleIdLiteral + \";\",\n 'if (typeof document !== \"undefined\") {',\n \" let __style = null;\",\n ' const __styles = document.querySelectorAll(\"style[data-renderify-style-id]\");',\n \" for (const __candidate of __styles) {\",\n ' if (__candidate.getAttribute(\"data-renderify-style-id\") === __styleId) {',\n \" __style = __candidate;\",\n \" break;\",\n \" }\",\n \" }\",\n \" if (!__style) {\",\n ' __style = document.createElement(\"style\");',\n ' __style.setAttribute(\"data-renderify-style-id\", __styleId);',\n \" __style.textContent = __css;\",\n \" document.head.appendChild(__style);\",\n \" }\",\n \"}\",\n \"export default __css;\",\n \"export const cssText = __css;\",\n ].join(\"\\n\");\n}\n\nexport function createJsonProxyModuleSource(value: unknown): string {\n return [\n `const __json = ${JSON.stringify(value)};`,\n \"export default __json;\",\n ].join(\"\\n\");\n}\n\nexport function createTextProxyModuleSource(text: string): string {\n return [\n `const __text = ${JSON.stringify(text)};`,\n \"export default __text;\",\n \"export const text = __text;\",\n ].join(\"\\n\");\n}\n\nexport function createUrlProxyModuleSource(url: string): string {\n return [\n `const __assetUrl = ${JSON.stringify(url)};`,\n \"export default __assetUrl;\",\n \"export const assetUrl = __assetUrl;\",\n ].join(\"\\n\");\n}\n\nexport async function fetchWithTimeout(\n url: string,\n timeoutMs: number,\n): Promise<Response> {\n if (typeof AbortController === \"undefined\") {\n return fetch(url);\n }\n\n const controller = new AbortController();\n const timer = setTimeout(() => {\n controller.abort();\n }, timeoutMs);\n\n try {\n return await fetch(url, {\n signal: controller.signal,\n });\n } finally {\n clearTimeout(timer);\n }\n}\n\nexport async function delay(ms: number): Promise<void> {\n if (ms <= 0) {\n return;\n }\n\n await new Promise<void>((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\nfunction toUrlPathname(url: string): string {\n try {\n return new URL(url).pathname;\n } catch {\n return url;\n }\n}\n","export function nowMs(): number {\n if (\n typeof performance !== \"undefined\" &&\n typeof performance.now === \"function\"\n ) {\n return performance.now();\n }\n\n return Date.now();\n}\n\nexport function isBrowserRuntime(): boolean {\n return (\n typeof window !== \"undefined\" &&\n typeof document !== \"undefined\" &&\n typeof navigator !== \"undefined\"\n );\n}\n\nexport interface NodeVmScript {\n runInNewContext(\n contextObject: Record<string, unknown>,\n options: { timeout?: number },\n ): unknown;\n}\n\nexport interface NodeVmModule {\n Script: new (code: string) => NodeVmScript;\n}\n\nexport interface PreactLikeModule {\n h(type: unknown, props: unknown, ...children: unknown[]): unknown;\n}\n\nexport function hasVmScript(value: unknown): value is NodeVmModule {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const candidate = value as { Script?: unknown };\n return typeof candidate.Script === \"function\";\n}\n\nexport function hasPreactFactory(value: unknown): value is PreactLikeModule {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const candidate = value as { h?: unknown };\n return typeof candidate.h === \"function\";\n}\n\nexport function getVmSpecifier(): string {\n return \"node:vm\";\n}\n\nexport function getPreactSpecifier(): string {\n return \"preact\";\n}\n","import { nowMs } from \"./runtime-environment\";\n\nexport interface RuntimeBudgetFrame {\n startedAt: number;\n maxExecutionMs: number;\n signal?: AbortSignal;\n}\n\nexport function hasExceededBudget(frame: RuntimeBudgetFrame): boolean {\n return nowMs() - frame.startedAt > frame.maxExecutionMs;\n}\n\nexport function isAborted(signal?: AbortSignal): boolean {\n return Boolean(signal?.aborted);\n}\n\nexport function createAbortError(message: string): Error {\n const error = new Error(message);\n error.name = \"AbortError\";\n return error;\n}\n\nexport function throwIfAborted(signal?: AbortSignal): void {\n if (isAborted(signal)) {\n throw createAbortError(\"Runtime execution aborted\");\n }\n}\n\nexport function isAbortError(error: unknown): boolean {\n return error instanceof Error && error.name === \"AbortError\";\n}\n\nexport async function withRemainingBudget<T>(\n operation: () => Promise<T>,\n frame: RuntimeBudgetFrame,\n timeoutMessage: string,\n): Promise<T> {\n throwIfAborted(frame.signal);\n const remainingMs = frame.maxExecutionMs - (nowMs() - frame.startedAt);\n if (remainingMs <= 0) {\n throw new Error(timeoutMessage);\n }\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n let onAbort: (() => void) | undefined;\n\n const timeoutPromise = new Promise<T>((_resolve, reject) => {\n timer = setTimeout(() => {\n reject(new Error(timeoutMessage));\n }, remainingMs);\n });\n\n const signal = frame.signal;\n const abortPromise =\n signal &&\n new Promise<T>((_resolve, reject) => {\n onAbort = () => {\n reject(createAbortError(\"Runtime execution aborted\"));\n };\n signal.addEventListener(\"abort\", onAbort!, { once: true });\n });\n\n try {\n const pending = abortPromise\n ? [operation(), timeoutPromise, abortPromise]\n : [operation(), timeoutPromise];\n return await Promise.race(pending);\n } finally {\n if (timer !== undefined) {\n clearTimeout(timer);\n }\n if (signal && onAbort) {\n signal.removeEventListener(\"abort\", onAbort);\n }\n }\n}\n","import {\n asJsonValue,\n cloneJsonValue,\n isRuntimeNode,\n type JsonValue,\n type RuntimeDiagnostic,\n type RuntimeExecutionContext,\n type RuntimeExecutionProfile,\n type RuntimeNode,\n type RuntimeRenderArtifact,\n} from \"@renderify/ir\";\nimport {\n getPreactSpecifier,\n getVmSpecifier,\n hasPreactFactory,\n hasVmScript,\n type NodeVmModule,\n nowMs,\n} from \"./runtime-environment\";\n\ntype PreactLikeModule = {\n h(type: unknown, props: unknown, ...children: unknown[]): unknown;\n};\n\nexport type RuntimeComponentFactory = (\n props: Record<string, JsonValue>,\n context: RuntimeExecutionContext,\n children: RuntimeNode[],\n) => Promise<RuntimeNode | string> | RuntimeNode | string;\n\nexport async function createPreactRenderArtifact(input: {\n sourceExport: unknown;\n runtimeInput: Record<string, JsonValue>;\n diagnostics: RuntimeDiagnostic[];\n}): Promise<RuntimeRenderArtifact | undefined> {\n const preact = await loadPreactModule();\n if (!preact) {\n input.diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_PREACT_UNAVAILABLE\",\n message:\n \"source.runtime=preact requested but preact runtime is unavailable\",\n });\n return undefined;\n }\n\n if (isPreactLikeVNode(input.sourceExport)) {\n return {\n mode: \"preact-vnode\",\n payload: input.sourceExport,\n };\n }\n\n if (typeof input.sourceExport !== \"function\") {\n input.diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_PREACT_EXPORT_INVALID\",\n message: \"source.runtime=preact requires a component export function\",\n });\n return undefined;\n }\n\n try {\n const vnode = preact.h(\n input.sourceExport as (props: Record<string, JsonValue>) => unknown,\n input.runtimeInput,\n );\n\n return {\n mode: \"preact-vnode\",\n payload: vnode,\n };\n } catch (error) {\n input.diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_PREACT_VNODE_FAILED\",\n message: errorToMessage(error),\n });\n return undefined;\n }\n}\n\nexport async function executeComponentFactory(input: {\n componentFactory: RuntimeComponentFactory;\n props: Record<string, JsonValue>;\n context: RuntimeExecutionContext;\n children: RuntimeNode[];\n executionProfile: RuntimeExecutionProfile;\n maxExecutionMs: number;\n startedAt: number;\n timeoutMessage: string;\n allowIsolationFallback: boolean;\n diagnostics: RuntimeDiagnostic[];\n withRemainingBudget<T>(\n operation: () => Promise<T>,\n timeoutMessage: string,\n ): Promise<T>;\n}): Promise<RuntimeNode | string> {\n if (input.executionProfile !== \"isolated-vm\") {\n return input.withRemainingBudget(\n async () =>\n input.componentFactory(input.props, input.context, input.children),\n input.timeoutMessage,\n );\n }\n\n const isolated = await executeComponentInVm(input);\n\n if (isolated.mode === \"isolation-unavailable\") {\n if (!input.allowIsolationFallback) {\n throw new Error(\n \"isolated-vm profile requested but node:vm is unavailable; fallback is disabled\",\n );\n }\n\n input.diagnostics.push({\n level: \"warning\",\n code: \"RUNTIME_SANDBOX_UNAVAILABLE\",\n message:\n \"isolated-vm profile requested but node:vm is unavailable; falling back to standard execution\",\n });\n return input.withRemainingBudget(\n async () =>\n input.componentFactory(input.props, input.context, input.children),\n input.timeoutMessage,\n );\n }\n\n return isolated.value;\n}\n\nasync function executeComponentInVm(input: {\n componentFactory: RuntimeComponentFactory;\n props: Record<string, JsonValue>;\n context: RuntimeExecutionContext;\n children: RuntimeNode[];\n maxExecutionMs: number;\n startedAt: number;\n}): Promise<\n | { mode: \"isolated\"; value: RuntimeNode | string }\n | { mode: \"isolation-unavailable\" }\n> {\n const vmModule = await loadVmModule();\n if (!vmModule) {\n return { mode: \"isolation-unavailable\" };\n }\n\n const remainingMs = input.maxExecutionMs - (nowMs() - input.startedAt);\n if (remainingMs <= 0) {\n throw new Error(\"Component execution timed out before sandbox start\");\n }\n\n const serializedFactory = input.componentFactory.toString();\n const sandboxData = {\n props: cloneJsonValue(input.props),\n context: cloneJsonValue(asJsonValue(input.context)),\n children: cloneJsonValue(asJsonValue(input.children)),\n };\n\n const script = new vmModule.Script(\n `'use strict';\\n` +\n `const __component = (${serializedFactory});\\n` +\n `const __result = __component(__input.props, __input.context, __input.children);\\n` +\n `if (__result && typeof __result.then === \"function\") {\\n` +\n ` throw new Error(\"Async component is not supported in isolated-vm profile\");\\n` +\n `}\\n` +\n `__result;`,\n );\n\n const output = script.runInNewContext(\n {\n __input: sandboxData,\n },\n {\n timeout: Math.max(1, Math.floor(remainingMs)),\n },\n );\n\n if (typeof output === \"string\") {\n return {\n mode: \"isolated\",\n value: output,\n };\n }\n\n if (isRuntimeNode(output)) {\n return {\n mode: \"isolated\",\n value: output,\n };\n }\n\n throw new Error(\"Sandboxed component returned unsupported output\");\n}\n\nfunction isPreactLikeVNode(value: unknown): boolean {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const record = value as Record<string, unknown>;\n return \"type\" in record && \"props\" in record;\n}\n\nasync function loadPreactModule(): Promise<PreactLikeModule | undefined> {\n try {\n const maybePreact = (await import(getPreactSpecifier())) as unknown;\n if (!hasPreactFactory(maybePreact)) {\n return undefined;\n }\n\n return maybePreact;\n } catch {\n return undefined;\n }\n}\n\nasync function loadVmModule(): Promise<NodeVmModule | undefined> {\n if (\n typeof process === \"undefined\" ||\n typeof process.versions !== \"object\" ||\n process.versions === null ||\n typeof process.versions.node !== \"string\"\n ) {\n return undefined;\n }\n\n try {\n const maybeVm = (await import(getVmSpecifier())) as unknown;\n if (!hasVmScript(maybeVm)) {\n return undefined;\n }\n\n return maybeVm;\n } catch {\n return undefined;\n }\n}\n\nfunction errorToMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n return String(error);\n}\n","import {\n DEFAULT_RUNTIME_PLAN_SPEC_VERSION,\n type RuntimeExecutionProfile,\n} from \"@renderify/ir\";\nimport { DEFAULT_ESM_CDN_BASE } from \"./module-fetch\";\nimport { isBrowserRuntime } from \"./runtime-environment\";\n\nexport const FALLBACK_MAX_IMPORTS = 50;\nexport const FALLBACK_MAX_COMPONENT_INVOCATIONS = 200;\nexport const FALLBACK_MAX_EXECUTION_MS = 1500;\nexport const FALLBACK_EXECUTION_PROFILE: RuntimeExecutionProfile = \"standard\";\nexport const FALLBACK_JSPM_CDN_BASE = \"https://ga.jspm.io/npm\";\nexport const FALLBACK_ESM_CDN_BASE = DEFAULT_ESM_CDN_BASE;\nexport const FALLBACK_ENABLE_DEPENDENCY_PREFLIGHT = true;\nexport const FALLBACK_FAIL_ON_DEPENDENCY_PREFLIGHT_ERROR = false;\nexport const FALLBACK_REMOTE_FETCH_TIMEOUT_MS = 12_000;\nexport const FALLBACK_REMOTE_FETCH_RETRIES = 2;\nexport const FALLBACK_REMOTE_FETCH_BACKOFF_MS = 150;\nexport const FALLBACK_REMOTE_FALLBACK_CDN_BASES = [FALLBACK_ESM_CDN_BASE];\nexport const FALLBACK_SUPPORTED_SPEC_VERSIONS = [\n DEFAULT_RUNTIME_PLAN_SPEC_VERSION,\n];\nexport const FALLBACK_ENFORCE_MODULE_MANIFEST = true;\nexport const FALLBACK_ALLOW_ISOLATION_FALLBACK = false;\nexport const FALLBACK_BROWSER_SOURCE_SANDBOX_TIMEOUT_MS = 4000;\nexport const FALLBACK_BROWSER_SOURCE_SANDBOX_FAIL_CLOSED = true;\n\nexport function normalizeSupportedSpecVersions(\n versions?: string[],\n): Set<string> {\n const normalized = new Set<string>();\n const input =\n versions && versions.length > 0\n ? versions\n : FALLBACK_SUPPORTED_SPEC_VERSIONS;\n\n for (const entry of input) {\n if (typeof entry !== \"string\") {\n continue;\n }\n const trimmed = entry.trim();\n if (trimmed.length > 0) {\n normalized.add(trimmed);\n }\n }\n\n if (normalized.size === 0) {\n normalized.add(DEFAULT_RUNTIME_PLAN_SPEC_VERSION);\n }\n\n return normalized;\n}\n\nexport function normalizeSourceSandboxMode(\n mode: \"none\" | \"worker\" | \"iframe\" | undefined,\n): \"none\" | \"worker\" | \"iframe\" {\n if (mode === \"none\" || mode === \"worker\" || mode === \"iframe\") {\n return mode;\n }\n\n return isBrowserRuntime() ? \"worker\" : \"none\";\n}\n\nexport function normalizeFallbackCdnBases(input?: string[]): string[] {\n const explicitInput = input !== undefined;\n const candidates = explicitInput ? input : FALLBACK_REMOTE_FALLBACK_CDN_BASES;\n const normalized = new Set<string>();\n\n for (const entry of candidates) {\n if (typeof entry !== \"string\") {\n continue;\n }\n const trimmed = entry.trim().replace(/\\/$/, \"\");\n if (trimmed.length > 0) {\n normalized.add(trimmed);\n }\n }\n\n if (normalized.size === 0) {\n return explicitInput ? [] : [FALLBACK_ESM_CDN_BASE];\n }\n\n return [...normalized];\n}\n\nexport function normalizePositiveInteger(\n value: unknown,\n fallback: number,\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n !Number.isInteger(value) ||\n value <= 0\n ) {\n return fallback;\n }\n\n return value;\n}\n\nexport function normalizeNonNegativeInteger(\n value: unknown,\n fallback: number,\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n !Number.isInteger(value) ||\n value < 0\n ) {\n return fallback;\n }\n\n return value;\n}\n","import {\n asJsonValue,\n createElementNode,\n createTextNode,\n isRuntimeNode,\n type RuntimeDiagnostic,\n type RuntimeEvent,\n type RuntimeExecutionContext,\n type RuntimeExecutionProfile,\n type RuntimeModuleManifest,\n type RuntimeNode,\n type RuntimeStateSnapshot,\n} from \"@renderify/ir\";\nimport {\n executeComponentFactory,\n type RuntimeComponentFactory,\n} from \"./runtime-component-runtime\";\nimport { interpolateTemplate, resolveProps } from \"./template\";\n\nexport interface RuntimeNodeResolutionFrame {\n startedAt: number;\n maxExecutionMs: number;\n maxComponentInvocations: number;\n componentInvocations: number;\n executionProfile: RuntimeExecutionProfile;\n signal?: AbortSignal;\n}\n\nexport interface RuntimeNodeResolver {\n moduleLoader?: {\n load(specifier: string): Promise<unknown>;\n };\n allowIsolationFallback: boolean;\n resolveRuntimeSpecifier(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n usage: \"import\" | \"component\" | \"source-import\",\n ): string | undefined;\n withRemainingBudget<T>(\n operation: () => Promise<T>,\n timeoutMessage: string,\n ): Promise<T>;\n resolveNode(node: RuntimeNode): Promise<RuntimeNode>;\n errorToMessage(error: unknown): string;\n}\n\nexport async function resolveRuntimeNode(input: {\n node: RuntimeNode;\n moduleManifest: RuntimeModuleManifest | undefined;\n context: RuntimeExecutionContext;\n state: RuntimeStateSnapshot;\n event: RuntimeEvent | undefined;\n diagnostics: RuntimeDiagnostic[];\n frame: RuntimeNodeResolutionFrame;\n resolver: RuntimeNodeResolver;\n}): Promise<RuntimeNode> {\n const {\n node,\n moduleManifest,\n context,\n state,\n event,\n diagnostics,\n frame,\n resolver,\n } = input;\n\n if (node.type === \"text\") {\n return createTextNode(\n interpolateTemplate(node.value, context, state, event),\n );\n }\n\n const resolvedChildren = await resolveChildren(\n node.children ?? [],\n resolver.resolveNode,\n );\n\n if (node.type === \"element\") {\n return {\n ...node,\n props: resolveProps(node.props, context, state, event),\n children: resolvedChildren,\n };\n }\n\n if (frame.componentInvocations >= frame.maxComponentInvocations) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_COMPONENT_LIMIT_EXCEEDED\",\n message: `Component invocation limit exceeded: ${frame.maxComponentInvocations}`,\n });\n return createElementNode(\n \"div\",\n { \"data-renderify-component-limit\": node.module },\n [createTextNode(\"Component invocation limit exceeded\")],\n );\n }\n\n frame.componentInvocations += 1;\n\n const resolvedComponentSpecifier = resolver.resolveRuntimeSpecifier(\n node.module,\n moduleManifest,\n diagnostics,\n \"component\",\n );\n if (!resolvedComponentSpecifier) {\n return createElementNode(\n \"div\",\n { \"data-renderify-component-error\": node.module },\n [createTextNode(\"Missing module manifest entry for component\")],\n );\n }\n\n if (!resolver.moduleLoader) {\n diagnostics.push({\n level: \"warning\",\n code: \"RUNTIME_COMPONENT_SKIPPED\",\n message: `Component ${resolvedComponentSpecifier} skipped because module loader is missing`,\n });\n return createElementNode(\n \"div\",\n { \"data-renderify-missing-module\": node.module },\n resolvedChildren,\n );\n }\n\n try {\n const loaded = await resolver.withRemainingBudget(\n () => resolver.moduleLoader!.load(resolvedComponentSpecifier),\n `Component module timed out: ${resolvedComponentSpecifier}`,\n );\n\n const exportName = node.exportName ?? \"default\";\n const target = selectExportFromNamespace(loaded, exportName);\n\n if (typeof target !== \"function\") {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_COMPONENT_INVALID\",\n message: `Export ${exportName} from ${resolvedComponentSpecifier} is not callable`,\n });\n return createElementNode(\n \"div\",\n { \"data-renderify-component-error\": `${node.module}:${exportName}` },\n [createTextNode(\"Component export is not callable\")],\n );\n }\n\n const runtimeContext: RuntimeExecutionContext = {\n ...context,\n variables: {\n ...(context.variables ?? {}),\n state,\n event: event ? asJsonValue(event) : null,\n },\n };\n\n const produced = await executeComponentFactory({\n componentFactory: target as RuntimeComponentFactory,\n props: resolveProps(node.props, context, state, event) ?? {},\n context: runtimeContext,\n children: resolvedChildren,\n executionProfile: frame.executionProfile,\n maxExecutionMs: frame.maxExecutionMs,\n startedAt: frame.startedAt,\n timeoutMessage: `Component execution timed out: ${node.module}`,\n allowIsolationFallback: resolver.allowIsolationFallback,\n diagnostics,\n withRemainingBudget: resolver.withRemainingBudget,\n });\n\n if (typeof produced === \"string\") {\n return createTextNode(\n interpolateTemplate(produced, context, state, event),\n );\n }\n\n if (isRuntimeNode(produced)) {\n return resolver.resolveNode(produced);\n }\n\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_COMPONENT_OUTPUT_INVALID\",\n message: `Component ${resolvedComponentSpecifier} produced unsupported output`,\n });\n return createElementNode(\n \"div\",\n { \"data-renderify-component-error\": node.module },\n [createTextNode(\"Unsupported component output\")],\n );\n } catch (error) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_COMPONENT_EXEC_FAILED\",\n message: `${resolvedComponentSpecifier}: ${resolver.errorToMessage(error)}`,\n });\n return createElementNode(\n \"div\",\n { \"data-renderify-component-error\": node.module },\n [createTextNode(\"Component execution failed\")],\n );\n }\n}\n\nasync function resolveChildren(\n nodes: RuntimeNode[],\n resolveNode: (node: RuntimeNode) => Promise<RuntimeNode>,\n): Promise<RuntimeNode[]> {\n const resolved: RuntimeNode[] = [];\n for (const child of nodes) {\n resolved.push(await resolveNode(child));\n }\n return resolved;\n}\n\nexport function selectExportFromNamespace(\n moduleNamespace: unknown,\n exportName: string,\n): unknown {\n if (typeof moduleNamespace !== \"object\" || moduleNamespace === null) {\n return undefined;\n }\n\n const record = moduleNamespace as Record<string, unknown>;\n return record[exportName];\n}\n","import {\n getValueByPath,\n type JsonValue,\n type RuntimeEvent,\n type RuntimeExecutionContext,\n type RuntimeStateSnapshot,\n} from \"@renderify/ir\";\n\nconst TEMPLATE_STRINGIFY_MAX_DEPTH = 8;\nconst TEMPLATE_STRINGIFY_MAX_NODES = 256;\nconst TEMPLATE_STRINGIFY_MAX_LENGTH = 4096;\nconst TEMPLATE_TRUNCATED_MARKER = \"[Truncated]\";\nconst TEMPLATE_CIRCULAR = Symbol(\"renderify-template-circular\");\n\nexport function resolveProps(\n props: Record<string, JsonValue> | undefined,\n context: RuntimeExecutionContext,\n state: RuntimeStateSnapshot,\n event: RuntimeEvent | undefined,\n): Record<string, JsonValue> | undefined {\n if (!props) {\n return undefined;\n }\n\n const resolved: Record<string, JsonValue> = {};\n\n for (const [key, value] of Object.entries(props)) {\n resolved[key] = resolveJsonValue(value, context, state, event);\n }\n\n return resolved;\n}\n\nexport function resolveJsonValue(\n value: JsonValue,\n context: RuntimeExecutionContext,\n state: RuntimeStateSnapshot,\n event: RuntimeEvent | undefined,\n): JsonValue {\n return resolveJsonValueInternal(value, context, state, event, new WeakSet());\n}\n\nfunction resolveJsonValueInternal(\n value: JsonValue,\n context: RuntimeExecutionContext,\n state: RuntimeStateSnapshot,\n event: RuntimeEvent | undefined,\n seen: WeakSet<object>,\n): JsonValue {\n if (typeof value === \"string\") {\n return interpolateTemplate(value, context, state, event);\n }\n\n if (Array.isArray(value)) {\n if (seen.has(value)) {\n return null;\n }\n seen.add(value);\n const resolved = value.map((item) =>\n resolveJsonValueInternal(item, context, state, event, seen),\n );\n seen.delete(value);\n return resolved;\n }\n\n if (value !== null && typeof value === \"object\") {\n if (seen.has(value)) {\n return null;\n }\n seen.add(value);\n const resolved: Record<string, JsonValue> = {};\n for (const [key, item] of Object.entries(value)) {\n resolved[key] = resolveJsonValueInternal(\n item,\n context,\n state,\n event,\n seen,\n );\n }\n seen.delete(value);\n return resolved;\n }\n\n return value;\n}\n\nexport function interpolateTemplate(\n template: string,\n context: RuntimeExecutionContext,\n state: RuntimeStateSnapshot,\n event: RuntimeEvent | undefined,\n): string {\n return template.replace(/{{\\s*([^}]+)\\s*}}/g, (_match, expression) => {\n const resolved = resolveExpression(expression, context, state, event);\n if (resolved === undefined || resolved === null) {\n return \"\";\n }\n\n if (typeof resolved === \"object\") {\n return serializeTemplateObject(resolved);\n }\n\n return String(resolved);\n });\n}\n\nfunction serializeTemplateObject(value: object): string {\n const normalized = toTemplateSerializable(value, 0, new WeakSet(), {\n nodes: 0,\n });\n if (normalized === TEMPLATE_CIRCULAR || normalized === undefined) {\n return \"\";\n }\n\n try {\n const serialized = JSON.stringify(normalized);\n if (typeof serialized !== \"string\") {\n return \"\";\n }\n\n if (serialized.length > TEMPLATE_STRINGIFY_MAX_LENGTH) {\n return `${serialized.slice(0, TEMPLATE_STRINGIFY_MAX_LENGTH)}...`;\n }\n\n return serialized;\n } catch {\n return \"\";\n }\n}\n\nfunction toTemplateSerializable(\n value: unknown,\n depth: number,\n seen: WeakSet<object>,\n budget: { nodes: number },\n): unknown | typeof TEMPLATE_CIRCULAR | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (\n value === null ||\n typeof value === \"string\" ||\n typeof value === \"boolean\"\n ) {\n return value;\n }\n\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : null;\n }\n\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n\n if (typeof value === \"function\" || typeof value === \"symbol\") {\n return String(value);\n }\n\n if (typeof value !== \"object\") {\n return String(value);\n }\n\n if (seen.has(value)) {\n return TEMPLATE_CIRCULAR;\n }\n\n if (\n depth >= TEMPLATE_STRINGIFY_MAX_DEPTH ||\n budget.nodes >= TEMPLATE_STRINGIFY_MAX_NODES\n ) {\n return TEMPLATE_TRUNCATED_MARKER;\n }\n\n seen.add(value);\n budget.nodes += 1;\n\n if (Array.isArray(value)) {\n const normalizedArray: unknown[] = [];\n for (const entry of value) {\n const normalized = toTemplateSerializable(entry, depth + 1, seen, budget);\n if (normalized === TEMPLATE_CIRCULAR) {\n seen.delete(value);\n return TEMPLATE_CIRCULAR;\n }\n normalizedArray.push(normalized === undefined ? null : normalized);\n }\n seen.delete(value);\n return normalizedArray;\n }\n\n const normalizedRecord: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value as Record<string, unknown>)) {\n const normalized = toTemplateSerializable(entry, depth + 1, seen, budget);\n if (normalized === TEMPLATE_CIRCULAR) {\n seen.delete(value);\n return TEMPLATE_CIRCULAR;\n }\n\n if (normalized !== undefined) {\n normalizedRecord[key] = normalized;\n }\n }\n\n seen.delete(value);\n return normalizedRecord;\n}\n\nfunction resolveExpression(\n expression: string,\n context: RuntimeExecutionContext,\n state: RuntimeStateSnapshot,\n event: RuntimeEvent | undefined,\n): unknown {\n const path = expression.trim();\n\n if (path.startsWith(\"state.\")) {\n return getValueByPath(state, path.slice(6));\n }\n\n if (path.startsWith(\"event.\")) {\n return getValueByPath(event, path.slice(6));\n }\n\n if (path.startsWith(\"context.\")) {\n return getValueByPath(context, path.slice(8));\n }\n\n if (path.startsWith(\"vars.\")) {\n return getValueByPath(context.variables, path.slice(5));\n }\n\n return getValueByPath(state, path);\n}\n","import type { RuntimeDiagnostic, RuntimeModuleManifest } from \"@renderify/ir\";\n\nexport interface RuntimePlanImportResolutionInput {\n imports: string[];\n maxImports: number;\n moduleManifest: RuntimeModuleManifest | undefined;\n diagnostics: RuntimeDiagnostic[];\n moduleLoader?: {\n load(specifier: string): Promise<unknown>;\n };\n resolveRuntimeSpecifier(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n ): string | undefined;\n isAborted(): boolean;\n hasExceededBudget(): boolean;\n withRemainingBudget<T>(\n operation: () => Promise<T>,\n timeoutMessage: string,\n ): Promise<T>;\n isAbortError(error: unknown): boolean;\n errorToMessage(error: unknown): string;\n}\n\nexport async function resolveRuntimePlanImports(\n input: RuntimePlanImportResolutionInput,\n): Promise<void> {\n const { imports, maxImports, moduleManifest, diagnostics } = input;\n\n for (let i = 0; i < imports.length; i += 1) {\n if (input.isAborted()) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_ABORTED\",\n message: \"Execution aborted before import resolution\",\n });\n break;\n }\n\n const specifier = imports[i];\n const resolvedSpecifier = input.resolveRuntimeSpecifier(\n specifier,\n moduleManifest,\n diagnostics,\n );\n if (!resolvedSpecifier) {\n continue;\n }\n\n if (i >= maxImports) {\n diagnostics.push({\n level: \"warning\",\n code: \"RUNTIME_IMPORT_LIMIT_EXCEEDED\",\n message: `Import skipped because maxImports=${maxImports}: ${specifier}`,\n });\n continue;\n }\n\n if (!input.moduleLoader) {\n diagnostics.push({\n level: \"warning\",\n code: \"RUNTIME_LOADER_MISSING\",\n message: `Import skipped because no module loader is configured: ${resolvedSpecifier}`,\n });\n continue;\n }\n\n if (input.hasExceededBudget()) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_TIMEOUT\",\n message: `Execution time budget exceeded before importing: ${specifier}`,\n });\n break;\n }\n\n try {\n await input.withRemainingBudget(\n () => input.moduleLoader!.load(resolvedSpecifier),\n `Import timed out: ${resolvedSpecifier}`,\n );\n } catch (error) {\n if (input.isAbortError(error)) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_ABORTED\",\n message: `Execution aborted during import: ${resolvedSpecifier}`,\n });\n break;\n }\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_IMPORT_FAILED\",\n message: `${resolvedSpecifier}: ${input.errorToMessage(error)}`,\n });\n }\n }\n}\n","import {\n collectComponentModules,\n type RuntimeDiagnostic,\n type RuntimeModuleManifest,\n type RuntimePlan,\n} from \"@renderify/ir\";\n\nexport type RuntimeDependencyUsage = \"import\" | \"component\" | \"source-import\";\n\nexport interface RuntimeDependencyProbeStatus {\n usage: RuntimeDependencyUsage;\n specifier: string;\n resolvedSpecifier?: string;\n ok: boolean;\n message?: string;\n}\n\nexport interface DependencyProbe {\n usage: RuntimeDependencyUsage;\n specifier: string;\n}\n\nexport async function collectDependencyProbes(\n plan: RuntimePlan,\n parseSourceImportSpecifiers: (code: string) => Promise<string[]>,\n): Promise<DependencyProbe[]> {\n const probes: DependencyProbe[] = [];\n const seen = new Set<string>();\n\n const pushProbe = (usage: RuntimeDependencyUsage, specifier: string) => {\n const trimmed = specifier.trim();\n if (trimmed.length === 0) {\n return;\n }\n\n const key = `${usage}:${trimmed}`;\n if (seen.has(key)) {\n return;\n }\n\n seen.add(key);\n probes.push({\n usage,\n specifier: trimmed,\n });\n };\n\n for (const specifier of plan.imports ?? []) {\n pushProbe(\"import\", specifier);\n }\n\n for (const specifier of collectComponentModules(plan.root)) {\n pushProbe(\"component\", specifier);\n }\n\n if (plan.source) {\n const sourceImports = await parseSourceImportSpecifiers(plan.source.code);\n for (const specifier of sourceImports) {\n pushProbe(\"source-import\", specifier);\n }\n }\n\n return probes;\n}\n\nexport async function runDependencyPreflight(\n probes: DependencyProbe[],\n diagnostics: RuntimeDiagnostic[],\n probeExecutor: (\n probe: DependencyProbe,\n ) => Promise<RuntimeDependencyProbeStatus>,\n options: {\n isAborted: () => boolean;\n hasExceededBudget: () => boolean;\n },\n): Promise<RuntimeDependencyProbeStatus[]> {\n const statuses: RuntimeDependencyProbeStatus[] = [];\n\n for (const probe of probes) {\n if (options.isAborted()) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_ABORTED\",\n message: `Execution aborted during dependency preflight (${probe.usage}:${probe.specifier})`,\n });\n statuses.push({\n usage: probe.usage,\n specifier: probe.specifier,\n ok: false,\n message: \"Dependency preflight aborted\",\n });\n return statuses;\n }\n\n if (options.hasExceededBudget()) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_TIMEOUT\",\n message: `Execution time budget exceeded during dependency preflight (${probe.usage}:${probe.specifier})`,\n });\n statuses.push({\n usage: probe.usage,\n specifier: probe.specifier,\n ok: false,\n message: \"Dependency preflight timed out\",\n });\n return statuses;\n }\n\n statuses.push(await probeExecutor(probe));\n }\n\n return statuses;\n}\n\nexport interface RuntimeDependencyProbeExecutor {\n moduleLoader?: {\n load(specifier: string): Promise<unknown>;\n };\n withRemainingBudget<T>(\n operation: () => Promise<T>,\n timeoutMessage: string,\n ): Promise<T>;\n resolveRuntimeSourceSpecifier(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n requireManifest?: boolean,\n ): string;\n resolveSourceImportLoaderCandidate(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n ): string | undefined;\n resolveRuntimeSpecifier(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n usage: RuntimeDependencyUsage,\n ): string | undefined;\n isHttpUrl(specifier: string): boolean;\n canMaterializeBrowserModules(): boolean;\n materializeBrowserRemoteModule(\n url: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n ): Promise<string>;\n fetchRemoteModuleCodeWithFallback(\n url: string,\n diagnostics: RuntimeDiagnostic[],\n ): Promise<unknown>;\n isAbortError(error: unknown): boolean;\n errorToMessage(error: unknown): string;\n}\n\nexport async function executeDependencyProbe(\n probe: DependencyProbe,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n executor: RuntimeDependencyProbeExecutor,\n): Promise<RuntimeDependencyProbeStatus> {\n if (probe.usage === \"source-import\") {\n const resolved = executor.resolveRuntimeSourceSpecifier(\n probe.specifier,\n moduleManifest,\n diagnostics,\n false,\n );\n\n if (\n resolved.startsWith(\"./\") ||\n resolved.startsWith(\"../\") ||\n resolved.startsWith(\"/\")\n ) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_PREFLIGHT_SOURCE_IMPORT_RELATIVE_UNRESOLVED\",\n message: `Runtime source entry import must resolve to URL or bare package alias: ${probe.specifier}`,\n });\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n resolvedSpecifier: resolved,\n ok: false,\n message: \"Relative source import could not be resolved\",\n };\n }\n\n const timeoutMessage = `Dependency preflight timed out: ${probe.specifier}`;\n const loaderCandidate = executor.resolveSourceImportLoaderCandidate(\n probe.specifier,\n moduleManifest,\n );\n\n try {\n if (executor.moduleLoader && loaderCandidate) {\n await executor.withRemainingBudget(\n () => executor.moduleLoader!.load(loaderCandidate),\n timeoutMessage,\n );\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n resolvedSpecifier: loaderCandidate,\n ok: true,\n };\n }\n\n if (executor.isHttpUrl(resolved)) {\n await executor.withRemainingBudget(async () => {\n if (executor.canMaterializeBrowserModules()) {\n await executor.materializeBrowserRemoteModule(\n resolved,\n moduleManifest,\n diagnostics,\n );\n } else {\n await executor.fetchRemoteModuleCodeWithFallback(\n resolved,\n diagnostics,\n );\n }\n }, timeoutMessage);\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n resolvedSpecifier: resolved,\n ok: true,\n };\n }\n\n if (!executor.moduleLoader) {\n diagnostics.push({\n level: \"warning\",\n code: \"RUNTIME_PREFLIGHT_SKIPPED\",\n message: `Dependency preflight skipped (no module loader): ${probe.usage}:${resolved}`,\n });\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n resolvedSpecifier: resolved,\n ok: false,\n message:\n \"Dependency preflight skipped because source import is not loadable without module loader\",\n };\n }\n\n await executor.withRemainingBudget(\n () => executor.moduleLoader!.load(resolved),\n timeoutMessage,\n );\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n resolvedSpecifier: resolved,\n ok: true,\n };\n } catch (error) {\n if (executor.isAbortError(error)) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_ABORTED\",\n message: `${probe.specifier}: dependency preflight aborted`,\n });\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n resolvedSpecifier: resolved,\n ok: false,\n message: \"Dependency preflight aborted\",\n };\n }\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_PREFLIGHT_SOURCE_IMPORT_FAILED\",\n message: `${probe.specifier}: ${executor.errorToMessage(error)}`,\n });\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n resolvedSpecifier: resolved,\n ok: false,\n message: executor.errorToMessage(error),\n };\n }\n }\n\n const resolved = executor.resolveRuntimeSpecifier(\n probe.specifier,\n moduleManifest,\n diagnostics,\n probe.usage,\n );\n if (!resolved) {\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n ok: false,\n message: \"Module manifest resolution failed\",\n };\n }\n\n if (!executor.moduleLoader) {\n diagnostics.push({\n level: \"warning\",\n code: \"RUNTIME_PREFLIGHT_SKIPPED\",\n message: `Dependency preflight skipped (no module loader): ${probe.usage}:${resolved}`,\n });\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n resolvedSpecifier: resolved,\n ok: false,\n message: \"Dependency preflight skipped because module loader is missing\",\n };\n }\n\n try {\n await executor.withRemainingBudget(\n () => executor.moduleLoader!.load(resolved),\n `Dependency preflight timed out: ${resolved}`,\n );\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n resolvedSpecifier: resolved,\n ok: true,\n };\n } catch (error) {\n if (executor.isAbortError(error)) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_ABORTED\",\n message: `${resolved}: dependency preflight aborted`,\n });\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n resolvedSpecifier: resolved,\n ok: false,\n message: \"Dependency preflight aborted\",\n };\n }\n diagnostics.push({\n level: \"error\",\n code:\n probe.usage === \"component\"\n ? \"RUNTIME_PREFLIGHT_COMPONENT_FAILED\"\n : \"RUNTIME_PREFLIGHT_IMPORT_FAILED\",\n message: `${resolved}: ${executor.errorToMessage(error)}`,\n });\n return {\n usage: probe.usage,\n specifier: probe.specifier,\n resolvedSpecifier: resolved,\n ok: false,\n message: executor.errorToMessage(error),\n };\n }\n}\n","import {\n createElementNode,\n createTextNode,\n isRuntimeNode,\n parseRuntimeSourceImportRanges,\n type RuntimeNode,\n} from \"@renderify/ir\";\n\nexport function canMaterializeBrowserModules(): boolean {\n return (\n typeof URL !== \"undefined\" &&\n typeof URL.createObjectURL === \"function\" &&\n typeof Blob !== \"undefined\" &&\n typeof fetch === \"function\"\n );\n}\n\nexport async function rewriteImportsAsync(\n code: string,\n resolver: (specifier: string) => Promise<string>,\n): Promise<string> {\n const imports = await parseImportSpecifiersFromSource(code);\n if (imports.length === 0) {\n return code;\n }\n\n let rewritten = \"\";\n let cursor = 0;\n\n for (const item of imports) {\n rewritten += code.slice(cursor, item.start);\n rewritten += await resolver(item.specifier);\n cursor = item.end;\n }\n\n rewritten += code.slice(cursor);\n return rewritten;\n}\n\nexport async function parseImportSpecifiersFromSource(\n source: string,\n): Promise<Array<{ start: number; end: number; specifier: string }>> {\n return parseRuntimeSourceImportRanges(source);\n}\n\nexport function createBrowserBlobModuleUrl(\n code: string,\n browserBlobUrls: Set<string>,\n): string {\n const blobUrl = URL.createObjectURL(\n new Blob([code], { type: \"text/javascript\" }),\n );\n browserBlobUrls.add(blobUrl);\n return blobUrl;\n}\n\nexport function revokeBrowserBlobUrls(browserBlobUrls: Set<string>): void {\n if (typeof URL === \"undefined\" || typeof URL.revokeObjectURL !== \"function\") {\n browserBlobUrls.clear();\n return;\n }\n\n for (const blobUrl of browserBlobUrls) {\n URL.revokeObjectURL(blobUrl);\n }\n browserBlobUrls.clear();\n}\n\nexport function normalizeRuntimeSourceOutput(\n output: unknown,\n): RuntimeNode | undefined {\n if (isRuntimeNode(output)) {\n return output;\n }\n\n if (typeof output === \"string\" || typeof output === \"number\") {\n return createTextNode(String(output));\n }\n\n if (Array.isArray(output)) {\n const normalizedChildren = output\n .map((entry) => normalizeRuntimeSourceOutput(entry))\n .filter((entry): entry is RuntimeNode => entry !== undefined);\n\n return createElementNode(\n \"div\",\n { \"data-renderify-fragment\": \"true\" },\n normalizedChildren,\n );\n }\n\n return undefined;\n}\n","import type { RuntimeDiagnostic, RuntimeModuleManifest } from \"@renderify/ir\";\nimport { FALLBACK_JSPM_CDN_BASE } from \"./runtime-defaults\";\n\nexport type RuntimeSpecifierUsage = \"import\" | \"component\" | \"source-import\";\n\nexport interface ResolveRuntimeSpecifierInput {\n specifier: string;\n moduleManifest: RuntimeModuleManifest | undefined;\n diagnostics: RuntimeDiagnostic[];\n usage: RuntimeSpecifierUsage;\n enforceModuleManifest: boolean;\n}\n\nexport interface ResolveRuntimeSourceSpecifierInput {\n specifier: string;\n moduleManifest: RuntimeModuleManifest | undefined;\n diagnostics: RuntimeDiagnostic[];\n requireManifest?: boolean;\n enforceModuleManifest: boolean;\n moduleLoader?: unknown;\n jspmCdnBase?: string;\n}\n\nexport function resolveRuntimeSourceSpecifier(\n input: ResolveRuntimeSourceSpecifierInput,\n): string {\n const trimmed = input.specifier.trim();\n const manifestResolved = resolveOptionalManifestSpecifier(\n trimmed,\n input.moduleManifest,\n );\n\n if (manifestResolved && manifestResolved !== trimmed) {\n return resolveSourceSpecifierWithLoader(\n manifestResolved,\n input.moduleLoader,\n );\n }\n\n if (!shouldRewriteSpecifier(trimmed)) {\n return manifestResolved ?? trimmed;\n }\n\n const resolvedFromPolicy =\n input.requireManifest !== false\n ? resolveRuntimeSpecifier({\n specifier: trimmed,\n moduleManifest: input.moduleManifest,\n diagnostics: input.diagnostics,\n usage: \"source-import\",\n enforceModuleManifest: input.enforceModuleManifest,\n })\n : manifestResolved;\n\n if (!resolvedFromPolicy) {\n return trimmed;\n }\n\n const loaderResolved = resolveSourceSpecifierWithLoader(\n resolvedFromPolicy,\n input.moduleLoader,\n );\n if (loaderResolved !== resolvedFromPolicy) {\n return loaderResolved;\n }\n\n const jspmBase = (input.jspmCdnBase ?? FALLBACK_JSPM_CDN_BASE).replace(\n /\\/$/,\n \"\",\n );\n if (resolvedFromPolicy.startsWith(\"npm:\")) {\n return `${jspmBase}/${resolvedFromPolicy.slice(4)}`;\n }\n\n if (isDirectSpecifier(resolvedFromPolicy)) {\n return resolvedFromPolicy;\n }\n\n if (isBareSpecifier(resolvedFromPolicy)) {\n return `${jspmBase}/npm:${resolvedFromPolicy}`;\n }\n\n return `${jspmBase}/${resolvedFromPolicy}`;\n}\n\nexport function resolveRuntimeSpecifier(\n input: ResolveRuntimeSpecifierInput,\n): string | undefined {\n const trimmed = input.specifier.trim();\n if (trimmed.length === 0) {\n input.diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_MANIFEST_INVALID\",\n message: `Empty ${input.usage} specifier`,\n });\n return undefined;\n }\n\n const descriptor = input.moduleManifest?.[trimmed];\n if (descriptor) {\n const resolved = descriptor.resolvedUrl.trim();\n if (resolved.length === 0) {\n input.diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_MANIFEST_INVALID\",\n message: `Manifest entry has empty resolvedUrl for ${trimmed}`,\n });\n return undefined;\n }\n\n return resolved;\n }\n\n if (!input.enforceModuleManifest || isDirectSpecifier(trimmed)) {\n return trimmed;\n }\n\n input.diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_MANIFEST_MISSING\",\n message: `Missing moduleManifest entry for ${input.usage}: ${trimmed}`,\n });\n return undefined;\n}\n\nexport function resolveSourceImportLoaderCandidate(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n moduleLoader?: unknown,\n): string | undefined {\n const manifestResolved = resolveOptionalManifestSpecifier(\n specifier,\n moduleManifest,\n );\n const candidate = (manifestResolved ?? specifier).trim();\n if (candidate.length === 0) {\n return undefined;\n }\n\n if (\n candidate.startsWith(\"./\") ||\n candidate.startsWith(\"../\") ||\n candidate.startsWith(\"/\")\n ) {\n return undefined;\n }\n\n return resolveSourceSpecifierWithLoader(candidate, moduleLoader);\n}\n\nexport function resolveOptionalManifestSpecifier(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n): string | undefined {\n const descriptor = moduleManifest?.[specifier];\n if (!descriptor) {\n return specifier;\n }\n\n const resolved = descriptor.resolvedUrl.trim();\n if (resolved.length === 0) {\n return undefined;\n }\n\n return resolved;\n}\n\nexport function resolveSourceSpecifierWithLoader(\n specifier: string,\n loader?: unknown,\n): string {\n if (loader && hasResolveSpecifier(loader)) {\n try {\n return loader.resolveSpecifier(specifier);\n } catch {\n return specifier;\n }\n }\n\n return specifier;\n}\n\nexport function shouldRewriteSpecifier(specifier: string): boolean {\n return !isDirectSpecifier(specifier);\n}\n\nexport function isDirectSpecifier(specifier: string): boolean {\n return (\n specifier.startsWith(\"./\") ||\n specifier.startsWith(\"../\") ||\n specifier.startsWith(\"/\") ||\n specifier.startsWith(\"http://\") ||\n specifier.startsWith(\"https://\") ||\n specifier.startsWith(\"blob:\") ||\n specifier.startsWith(\"data:\")\n );\n}\n\nexport function isHttpUrl(specifier: string): boolean {\n return specifier.startsWith(\"http://\") || specifier.startsWith(\"https://\");\n}\n\nexport function isBareSpecifier(specifier: string): boolean {\n return !isDirectSpecifier(specifier) && !specifier.startsWith(\"npm:\");\n}\n\nfunction hasResolveSpecifier(loader: unknown): loader is {\n resolveSpecifier(specifier: string): string;\n} {\n if (typeof loader !== \"object\" || loader === null) {\n return false;\n }\n\n return (\n \"resolveSpecifier\" in loader &&\n typeof (loader as { resolveSpecifier?: unknown }).resolveSpecifier ===\n \"function\"\n );\n}\n","import type {\n RuntimeDiagnostic,\n RuntimeModuleManifest,\n RuntimePlan,\n} from \"@renderify/ir\";\nimport {\n collectDependencyProbes,\n executeDependencyProbe,\n type RuntimeDependencyProbeStatus,\n type RuntimeDependencyUsage,\n runDependencyPreflight,\n} from \"./runtime-preflight\";\nimport {\n canMaterializeBrowserModules,\n parseImportSpecifiersFromSource,\n} from \"./runtime-source-utils\";\nimport { isHttpUrl } from \"./runtime-specifier\";\n\nexport interface RuntimePlanPreflightInput {\n plan: RuntimePlan;\n diagnostics: RuntimeDiagnostic[];\n moduleLoader?: {\n load(specifier: string): Promise<unknown>;\n };\n withRemainingBudget<T>(\n operation: () => Promise<T>,\n timeoutMessage: string,\n ): Promise<T>;\n resolveRuntimeSourceSpecifier(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n requireManifest?: boolean,\n ): string;\n resolveSourceImportLoaderCandidate(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n ): string | undefined;\n resolveRuntimeSpecifier(\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n usage: RuntimeDependencyUsage,\n ): string | undefined;\n materializeBrowserRemoteModule(\n url: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n ): Promise<string>;\n fetchRemoteModuleCodeWithFallback(\n url: string,\n diagnostics: RuntimeDiagnostic[],\n ): Promise<unknown>;\n isAbortError(error: unknown): boolean;\n errorToMessage(error: unknown): string;\n isAborted(): boolean;\n hasExceededBudget(): boolean;\n}\n\nexport async function preflightRuntimePlanDependencies(\n input: RuntimePlanPreflightInput,\n): Promise<RuntimeDependencyProbeStatus[]> {\n const probes = await collectDependencyProbes(\n input.plan,\n parseSourceImportSpecifiers,\n );\n\n return runDependencyPreflight(\n probes,\n input.diagnostics,\n (probe) =>\n executeDependencyProbe(\n probe,\n input.plan.moduleManifest,\n input.diagnostics,\n {\n moduleLoader: input.moduleLoader,\n withRemainingBudget: (operation, timeoutMessage) =>\n input.withRemainingBudget(operation, timeoutMessage),\n resolveRuntimeSourceSpecifier: (\n specifier,\n manifest,\n diagnostics,\n requireManifest,\n ) =>\n input.resolveRuntimeSourceSpecifier(\n specifier,\n manifest,\n diagnostics,\n requireManifest,\n ),\n resolveSourceImportLoaderCandidate: (specifier, manifest) =>\n input.resolveSourceImportLoaderCandidate(specifier, manifest),\n resolveRuntimeSpecifier: (specifier, manifest, diagnostics, usage) =>\n input.resolveRuntimeSpecifier(\n specifier,\n manifest,\n diagnostics,\n usage,\n ),\n isHttpUrl,\n canMaterializeBrowserModules: () => canMaterializeBrowserModules(),\n materializeBrowserRemoteModule: (url, manifest, diagnostics) =>\n input.materializeBrowserRemoteModule(url, manifest, diagnostics),\n fetchRemoteModuleCodeWithFallback: (url, diagnostics) =>\n input.fetchRemoteModuleCodeWithFallback(url, diagnostics),\n isAbortError: (error) => input.isAbortError(error),\n errorToMessage: (error) => input.errorToMessage(error),\n },\n ),\n {\n isAborted: () => input.isAborted(),\n hasExceededBudget: () => input.hasExceededBudget(),\n },\n );\n}\n\nasync function parseSourceImportSpecifiers(code: string): Promise<string[]> {\n if (code.trim().length === 0) {\n return [];\n }\n\n const imports = new Set<string>();\n const parsedSpecifiers = await parseImportSpecifiersFromSource(code);\n for (const entry of parsedSpecifiers) {\n imports.add(entry.specifier);\n }\n\n return [...imports];\n}\n","import type { JsonValue } from \"@renderify/ir\";\nimport type { RuntimeSourceSandboxMode } from \"./runtime-manager.types\";\n\nexport interface RuntimeSandboxResult {\n output: unknown;\n}\n\nexport interface RuntimeSandboxRequest {\n renderifySandbox: \"runtime-source\";\n id: string;\n code: string;\n exportName: string;\n runtimeInput: Record<string, JsonValue>;\n}\n\ninterface RuntimeSandboxResponse {\n renderifySandbox: \"runtime-source\";\n id: string;\n ok: boolean;\n output?: unknown;\n error?: string;\n}\n\nexport interface RuntimeSandboxExecutionOptions {\n mode: RuntimeSourceSandboxMode;\n request: RuntimeSandboxRequest;\n timeoutMs: number;\n signal?: AbortSignal;\n}\n\nexport async function executeSourceInBrowserSandbox(\n options: RuntimeSandboxExecutionOptions,\n): Promise<RuntimeSandboxResult> {\n throwIfAborted(options.signal);\n\n if (options.mode === \"worker\") {\n return executeSourceInWorkerSandbox(options);\n }\n\n if (options.mode === \"iframe\") {\n return executeSourceInIframeSandbox(options);\n }\n\n throw new Error(`Unsupported runtime source sandbox mode: ${options.mode}`);\n}\n\nasync function executeSourceInWorkerSandbox(\n options: RuntimeSandboxExecutionOptions,\n): Promise<RuntimeSandboxResult> {\n if (\n typeof Worker === \"undefined\" ||\n typeof Blob === \"undefined\" ||\n typeof URL === \"undefined\" ||\n typeof URL.createObjectURL !== \"function\" ||\n typeof URL.revokeObjectURL !== \"function\"\n ) {\n throw new Error(\"Worker sandbox is unavailable in this runtime\");\n }\n\n const workerSource = [\n \"const CHANNEL = 'runtime-source';\",\n \"self.onmessage = async (event) => {\",\n \" const request = event.data;\",\n \" if (!request || request.renderifySandbox !== CHANNEL) {\",\n \" return;\",\n \" }\",\n \" const safeSend = (payload) => {\",\n \" try {\",\n \" self.postMessage({ renderifySandbox: CHANNEL, id: request.id, ...payload });\",\n \" return true;\",\n \" } catch (postError) {\",\n \" try {\",\n \" const postMessageError = postError && typeof postError === 'object' && 'message' in postError\",\n \" ? String(postError.message)\",\n \" : String(postError);\",\n \" self.postMessage({\",\n \" renderifySandbox: CHANNEL,\",\n \" id: request.id,\",\n \" ok: false,\",\n \" error: `Sandbox response is not serializable: ${postMessageError}`,\",\n \" });\",\n \" } catch {\",\n \" // Ignore terminal postMessage failures.\",\n \" }\",\n \" return false;\",\n \" }\",\n \" };\",\n \" try {\",\n \" const moduleUrl = URL.createObjectURL(new Blob([String(request.code ?? '')], { type: 'text/javascript' }));\",\n \" try {\",\n \" const namespace = await import(moduleUrl);\",\n \" const exportName = typeof request.exportName === 'string' && request.exportName.trim().length > 0\",\n \" ? request.exportName.trim()\",\n \" : 'default';\",\n \" const selected = namespace[exportName];\",\n \" if (selected === undefined) {\",\n ' throw new Error(`Runtime source export \"${exportName}\" is missing`);',\n \" }\",\n \" const output = typeof selected === 'function'\",\n \" ? await selected(request.runtimeInput ?? {})\",\n \" : selected;\",\n \" safeSend({ ok: true, output });\",\n \" } finally {\",\n \" URL.revokeObjectURL(moduleUrl);\",\n \" }\",\n \" } catch (error) {\",\n \" const message = error && typeof error === 'object' && 'message' in error\",\n \" ? String(error.message)\",\n \" : String(error);\",\n \" safeSend({ ok: false, error: message });\",\n \" }\",\n \"};\",\n ].join(\"\\n\");\n\n const workerUrl = URL.createObjectURL(\n new Blob([workerSource], {\n type: \"text/javascript\",\n }),\n );\n\n const worker = new Worker(workerUrl, {\n type: \"module\",\n name: \"renderify-runtime-source-sandbox\",\n });\n URL.revokeObjectURL(workerUrl);\n\n return new Promise<RuntimeSandboxResult>((resolve, reject) => {\n let settled = false;\n let onAbort: (() => void) | undefined;\n\n const cleanup = () => {\n if (settled) {\n return;\n }\n settled = true;\n clearTimeout(timer);\n if (options.signal && onAbort) {\n options.signal.removeEventListener(\"abort\", onAbort);\n }\n worker.removeEventListener(\"message\", onMessage);\n worker.removeEventListener(\"error\", onError);\n };\n\n const timer = setTimeout(() => {\n cleanup();\n worker.terminate();\n reject(new Error(\"Worker sandbox timed out\"));\n }, options.timeoutMs);\n\n const onMessage = (event: MessageEvent<RuntimeSandboxResponse>) => {\n const payload = event.data;\n if (!isRuntimeSandboxResponse(payload, options.request.id)) {\n return;\n }\n\n cleanup();\n worker.terminate();\n\n if (!payload.ok) {\n reject(new Error(payload.error ?? \"Worker sandbox execution failed\"));\n return;\n }\n\n resolve({\n output: payload.output,\n });\n };\n\n const onError = (event: ErrorEvent) => {\n cleanup();\n worker.terminate();\n reject(\n new Error(\n event.message || \"Worker sandbox terminated with an unknown error\",\n ),\n );\n };\n\n worker.addEventListener(\"message\", onMessage);\n worker.addEventListener(\"error\", onError);\n\n if (options.signal) {\n if (options.signal.aborted) {\n cleanup();\n worker.terminate();\n reject(createAbortError(\"Worker sandbox execution aborted\"));\n return;\n }\n onAbort = () => {\n cleanup();\n worker.terminate();\n reject(createAbortError(\"Worker sandbox execution aborted\"));\n };\n options.signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n\n worker.postMessage(options.request);\n });\n}\n\nasync function executeSourceInIframeSandbox(\n options: RuntimeSandboxExecutionOptions,\n): Promise<RuntimeSandboxResult> {\n if (\n typeof document === \"undefined\" ||\n typeof window === \"undefined\" ||\n typeof Blob === \"undefined\" ||\n typeof URL === \"undefined\" ||\n typeof URL.createObjectURL !== \"function\" ||\n typeof URL.revokeObjectURL !== \"function\"\n ) {\n throw new Error(\"Iframe sandbox is unavailable in this runtime\");\n }\n\n const iframe = document.createElement(\"iframe\");\n iframe.setAttribute(\"sandbox\", \"allow-scripts\");\n iframe.style.display = \"none\";\n\n const channel = `renderify-runtime-source-${options.request.id}`;\n const channelLiteral = JSON.stringify(channel);\n\n iframe.srcdoc = [\n \"<!doctype html><html><body><script>\",\n `const CHANNEL = ${channelLiteral};`,\n \"window.addEventListener('message', async (event) => {\",\n \" const data = event.data;\",\n \" if (!data || data.channel !== CHANNEL) {\",\n \" return;\",\n \" }\",\n \" const request = data.request || {};\",\n \" const safeSend = (payload) => {\",\n \" try {\",\n \" parent.postMessage({ channel: CHANNEL, ...payload }, '*');\",\n \" return true;\",\n \" } catch (postError) {\",\n \" try {\",\n \" const postMessageError = postError && typeof postError === 'object' && 'message' in postError\",\n \" ? String(postError.message)\",\n \" : String(postError);\",\n \" parent.postMessage({\",\n \" channel: CHANNEL,\",\n \" ok: false,\",\n \" error: `Sandbox response is not serializable: ${postMessageError}`,\",\n \" }, '*');\",\n \" } catch {\",\n \" // Ignore terminal postMessage failures.\",\n \" }\",\n \" return false;\",\n \" }\",\n \" };\",\n \" try {\",\n \" const moduleUrl = URL.createObjectURL(new Blob([String(request.code ?? '')], { type: 'text/javascript' }));\",\n \" try {\",\n \" const namespace = await import(moduleUrl);\",\n \" const exportName = typeof request.exportName === 'string' && request.exportName.trim().length > 0\",\n \" ? request.exportName.trim()\",\n \" : 'default';\",\n \" const selected = namespace[exportName];\",\n \" if (selected === undefined) {\",\n ' throw new Error(`Runtime source export \"${exportName}\" is missing`);',\n \" }\",\n \" const output = typeof selected === 'function'\",\n \" ? await selected(request.runtimeInput ?? {})\",\n \" : selected;\",\n \" safeSend({ ok: true, output });\",\n \" } finally {\",\n \" URL.revokeObjectURL(moduleUrl);\",\n \" }\",\n \" } catch (error) {\",\n \" const message = error && typeof error === 'object' && 'message' in error\",\n \" ? String(error.message)\",\n \" : String(error);\",\n \" safeSend({ ok: false, error: message });\",\n \" }\",\n \"});\",\n \"</script></body></html>\",\n ].join(\"\");\n\n document.body.appendChild(iframe);\n\n return new Promise<RuntimeSandboxResult>((resolve, reject) => {\n let settled = false;\n let onAbort: (() => void) | undefined;\n\n const cleanup = () => {\n if (settled) {\n return;\n }\n settled = true;\n clearTimeout(timer);\n if (options.signal && onAbort) {\n options.signal.removeEventListener(\"abort\", onAbort);\n }\n window.removeEventListener(\"message\", onMessage);\n iframe.removeEventListener(\"load\", onLoad);\n iframe.remove();\n };\n\n const timer = setTimeout(() => {\n cleanup();\n reject(new Error(\"Iframe sandbox timed out\"));\n }, options.timeoutMs);\n\n const onMessage = (event: MessageEvent<unknown>) => {\n if (event.source !== iframe.contentWindow) {\n return;\n }\n\n const data = event.data as\n | { channel?: string; ok?: boolean; output?: unknown; error?: string }\n | undefined;\n if (!data || data.channel !== channel) {\n return;\n }\n\n cleanup();\n\n if (!data.ok) {\n reject(new Error(data.error ?? \"Iframe sandbox execution failed\"));\n return;\n }\n\n resolve({\n output: data.output,\n });\n };\n\n const onLoad = () => {\n iframe.contentWindow?.postMessage(\n { channel, request: options.request },\n \"*\",\n );\n };\n\n window.addEventListener(\"message\", onMessage);\n iframe.addEventListener(\"load\", onLoad, { once: true });\n\n if (options.signal) {\n if (options.signal.aborted) {\n cleanup();\n reject(createAbortError(\"Iframe sandbox execution aborted\"));\n return;\n }\n onAbort = () => {\n cleanup();\n reject(createAbortError(\"Iframe sandbox execution aborted\"));\n };\n options.signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n });\n}\n\nfunction isRuntimeSandboxResponse(\n value: unknown,\n expectedId: string,\n): value is RuntimeSandboxResponse {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const candidate = value as Partial<RuntimeSandboxResponse>;\n return (\n candidate.renderifySandbox === \"runtime-source\" &&\n candidate.id === expectedId &&\n typeof candidate.ok === \"boolean\"\n );\n}\n\nfunction throwIfAborted(signal?: AbortSignal): void {\n if (!signal?.aborted) {\n return;\n }\n throw createAbortError(\"Runtime sandbox execution aborted\");\n}\n\nfunction createAbortError(message: string): Error {\n const error = new Error(message);\n error.name = \"AbortError\";\n return error;\n}\n","import type {\n JsonValue,\n RuntimeDiagnostic,\n RuntimeEvent,\n RuntimeExecutionContext,\n RuntimeExecutionProfile,\n RuntimeModuleManifest,\n RuntimeNode,\n RuntimePlan,\n RuntimeRenderArtifact,\n RuntimeSourceModule,\n RuntimeStateSnapshot,\n} from \"@renderify/ir\";\nimport { selectExportFromNamespace } from \"./runtime-node-resolver\";\nimport type { RuntimeSourceSandboxMode } from \"./runtime-source-runtime\";\nimport {\n executeSourceInBrowserSandbox,\n type RuntimeSandboxRequest,\n} from \"./sandbox\";\n\nexport interface ResolvedSourceOutput {\n root?: RuntimeNode;\n renderArtifact?: RuntimeRenderArtifact;\n}\n\nexport interface RuntimeSourceExecutionInput {\n plan: RuntimePlan;\n source: RuntimeSourceModule;\n context: RuntimeExecutionContext;\n state: RuntimeStateSnapshot;\n event: RuntimeEvent | undefined;\n diagnostics: RuntimeDiagnostic[];\n frame: {\n executionProfile: RuntimeExecutionProfile;\n signal?: AbortSignal;\n };\n browserSourceSandboxTimeoutMs: number;\n browserSourceSandboxFailClosed: boolean;\n withRemainingBudget: <T>(\n operation: () => Promise<T>,\n timeoutMessage: string,\n ) => Promise<T>;\n transpileRuntimeSource: (source: RuntimeSourceModule) => Promise<string>;\n rewriteSourceImports: (\n code: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n ) => Promise<string>;\n resolveSourceSandboxMode: (\n source: RuntimeSourceModule,\n executionProfile: RuntimeExecutionProfile,\n ) => RuntimeSourceSandboxMode;\n importSourceModuleFromCode: (\n code: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n ) => Promise<unknown>;\n normalizeSourceOutput: (output: unknown) => RuntimeNode | undefined;\n shouldUsePreactSourceRuntime: (source: RuntimeSourceModule) => boolean;\n createPreactRenderArtifact: (input: {\n sourceExport: unknown;\n runtimeInput: Record<string, JsonValue>;\n diagnostics: RuntimeDiagnostic[];\n }) => Promise<RuntimeRenderArtifact | undefined>;\n isAbortError: (error: unknown) => boolean;\n errorToMessage: (error: unknown) => string;\n cloneJsonValue: <T extends JsonValue>(value: T) => T;\n asJsonValue: (value: unknown) => JsonValue;\n}\n\nexport async function executeRuntimeSourceRoot(\n input: RuntimeSourceExecutionInput,\n): Promise<ResolvedSourceOutput | undefined> {\n const {\n plan,\n source,\n context,\n state,\n event,\n diagnostics,\n frame,\n browserSourceSandboxTimeoutMs,\n browserSourceSandboxFailClosed,\n } = input;\n\n try {\n const exportName = source.exportName ?? \"default\";\n const runtimeInput = {\n context: input.cloneJsonValue(input.asJsonValue(context)),\n state: input.cloneJsonValue(state),\n event: event ? input.cloneJsonValue(input.asJsonValue(event)) : null,\n };\n const transpiled = await input.withRemainingBudget(\n () => input.transpileRuntimeSource(source),\n \"Runtime source transpilation timed out\",\n );\n const rewritten = await input.rewriteSourceImports(\n transpiled,\n plan.moduleManifest,\n diagnostics,\n );\n\n const sandboxMode = input.resolveSourceSandboxMode(\n source,\n frame.executionProfile,\n );\n if (sandboxMode !== \"none\") {\n try {\n const sandboxResult = await input.withRemainingBudget(\n () =>\n executeSourceInBrowserSandbox({\n mode: sandboxMode,\n timeoutMs: browserSourceSandboxTimeoutMs,\n signal: frame.signal,\n request: {\n renderifySandbox: \"runtime-source\",\n id: `sandbox_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`,\n code: rewritten,\n exportName,\n runtimeInput,\n } satisfies RuntimeSandboxRequest,\n }),\n `Runtime source sandbox (${sandboxMode}) timed out`,\n );\n\n const normalized = input.normalizeSourceOutput(sandboxResult.output);\n if (!normalized) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_SOURCE_OUTPUT_INVALID\",\n message:\n \"Runtime source output from sandbox is not a supported RuntimeNode payload\",\n });\n return undefined;\n }\n\n diagnostics.push({\n level: \"info\",\n code: \"RUNTIME_SOURCE_SANDBOX_EXECUTED\",\n message: `Runtime source executed in ${sandboxMode} sandbox`,\n });\n\n return {\n root: normalized,\n };\n } catch (error) {\n if (input.isAbortError(error)) {\n throw error;\n }\n const message = input.errorToMessage(error);\n diagnostics.push({\n level: browserSourceSandboxFailClosed ? \"error\" : \"warning\",\n code: browserSourceSandboxFailClosed\n ? \"RUNTIME_SOURCE_SANDBOX_FAILED\"\n : \"RUNTIME_SOURCE_SANDBOX_FALLBACK\",\n message,\n });\n\n if (browserSourceSandboxFailClosed) {\n throw new Error(\n `Runtime source sandbox (${sandboxMode}) failed: ${message}`,\n );\n }\n }\n }\n\n const namespace = await input.withRemainingBudget(\n () =>\n input.importSourceModuleFromCode(\n rewritten,\n plan.moduleManifest,\n diagnostics,\n ),\n \"Runtime source module loading timed out\",\n );\n\n const selected = selectExportFromNamespace(namespace, exportName);\n if (selected === undefined) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_SOURCE_EXPORT_MISSING\",\n message: `Runtime source export \"${exportName}\" is missing`,\n });\n return undefined;\n }\n\n if (input.shouldUsePreactSourceRuntime(source)) {\n const preactArtifact = await input.createPreactRenderArtifact({\n sourceExport: selected,\n runtimeInput,\n diagnostics,\n });\n if (preactArtifact) {\n return {\n renderArtifact: preactArtifact,\n };\n }\n }\n\n const produced =\n typeof selected === \"function\"\n ? await input.withRemainingBudget(\n async () =>\n (selected as (runtimeInput: unknown) => unknown)(runtimeInput),\n \"Runtime source export execution timed out\",\n )\n : selected;\n\n const normalized = input.normalizeSourceOutput(produced);\n if (!normalized) {\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_SOURCE_OUTPUT_INVALID\",\n message: \"Runtime source output is not a supported RuntimeNode payload\",\n });\n return undefined;\n }\n\n return {\n root: normalized,\n };\n } catch (error) {\n if (input.isAbortError(error)) {\n throw error;\n }\n diagnostics.push({\n level: \"error\",\n code: \"RUNTIME_SOURCE_EXEC_FAILED\",\n message: input.errorToMessage(error),\n });\n return undefined;\n }\n}\n","import type { RuntimeDiagnostic, RuntimeModuleManifest } from \"@renderify/ir\";\nimport {\n buildRemoteModuleAttemptUrls,\n createCssProxyModuleSource,\n createJsonProxyModuleSource,\n createTextProxyModuleSource,\n createUrlProxyModuleSource,\n delay,\n fetchWithTimeout,\n isBinaryLikeContentType,\n isCssModuleResponse,\n isJavaScriptModuleResponse,\n isJsonModuleResponse,\n type RemoteModuleFetchResult,\n} from \"./module-fetch\";\nimport { isHttpUrl } from \"./runtime-specifier\";\n\nexport interface RuntimeSourceModuleLoaderOptions {\n moduleManifest: RuntimeModuleManifest | undefined;\n diagnostics: RuntimeDiagnostic[];\n browserModuleUrlCache: Map<string, string>;\n browserModuleInflight: Map<string, Promise<string>>;\n remoteFallbackCdnBases: string[];\n remoteFetchTimeoutMs: number;\n remoteFetchRetries: number;\n remoteFetchBackoffMs: number;\n canMaterializeBrowserModules: () => boolean;\n rewriteImportsAsync: (\n code: string,\n resolver: (specifier: string) => Promise<string>,\n ) => Promise<string>;\n createBrowserBlobModuleUrl: (code: string) => string;\n resolveRuntimeSourceSpecifier: (\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n requireManifest?: boolean,\n ) => string;\n}\n\nexport class RuntimeSourceModuleLoader {\n private readonly moduleManifest: RuntimeModuleManifest | undefined;\n private readonly diagnostics: RuntimeDiagnostic[];\n private readonly browserModuleUrlCache: Map<string, string>;\n private readonly browserModuleInflight: Map<string, Promise<string>>;\n private readonly remoteFallbackCdnBases: string[];\n private readonly remoteFetchTimeoutMs: number;\n private readonly remoteFetchRetries: number;\n private readonly remoteFetchBackoffMs: number;\n private readonly canMaterializeBrowserModulesFn: () => boolean;\n private readonly rewriteImportsAsyncFn: (\n code: string,\n resolver: (specifier: string) => Promise<string>,\n ) => Promise<string>;\n private readonly createBrowserBlobModuleUrlFn: (code: string) => string;\n private readonly resolveRuntimeSourceSpecifierFn: (\n specifier: string,\n moduleManifest: RuntimeModuleManifest | undefined,\n diagnostics: RuntimeDiagnostic[],\n requireManifest?: boolean,\n ) => string;\n\n constructor(options: RuntimeSourceModuleLoaderOptions) {\n this.moduleManifest = options.moduleManifest;\n this.diagnostics = options.diagnostics;\n this.browserModuleUrlCache = options.browserModuleUrlCache;\n this.browserModuleInflight = options.browserModuleInflight;\n this.remoteFallbackCdnBases = options.remoteFallbackCdnBases;\n this.remoteFetchTimeoutMs = options.remoteFetchTimeoutMs;\n this.remoteFetchRetries = options.remoteFetchRetries;\n this.remoteFetchBackoffMs = options.remoteFetchBackoffMs;\n this.canMaterializeBrowserModulesFn = options.canMaterializeBrowserModules;\n this.rewriteImportsAsyncFn = options.rewriteImportsAsync;\n this.createBrowserBlobModuleUrlFn = options.createBrowserBlobModuleUrl;\n this.resolveRuntimeSourceSpecifierFn =\n options.resolveRuntimeSourceSpecifier;\n }\n\n async importSourceModuleFromCode(code: string): Promise<unknown> {\n const isNodeRuntime =\n typeof process !== \"undefined\" &&\n process !== null &&\n typeof process.versions === \"object\" &&\n process.versions !== null &&\n typeof process.versions.node === \"string\";\n\n if (isNodeRuntime && typeof Buffer !== \"undefined\") {\n const encoded = Buffer.from(code, \"utf8\").toString(\"base64\");\n const dataUrl = `data:text/javascript;base64,${encoded}`;\n return import(/* webpackIgnore: true */ dataUrl);\n }\n\n if (this.canMaterializeBrowserModulesFn()) {\n const rewrittenEntry = await this.rewriteImportsAsyncFn(\n code,\n async (specifier) =>\n this.resolveBrowserImportSpecifier(specifier, undefined),\n );\n const entryUrl = this.createBrowserBlobModuleUrlFn(rewrittenEntry);\n return import(/* webpackIgnore: true */ entryUrl);\n }\n\n if (typeof Buffer !== \"undefined\") {\n const encoded = Buffer.from(code, \"utf8\").toString(\"base64\");\n const dataUrl = `data:text/javascript;base64,${encoded}`;\n return import(/* webpackIgnore: true */ dataUrl);\n }\n\n throw new Error(\"No runtime module import strategy is available\");\n }\n\n async resolveBrowserImportSpecifier(\n specifier: string,\n parentUrl: string | undefined,\n ): Promise<string> {\n const trimmed = specifier.trim();\n if (trimmed.length === 0) {\n return trimmed;\n }\n\n if (trimmed.startsWith(\"data:\") || trimmed.startsWith(\"blob:\")) {\n return trimmed;\n }\n\n if (isHttpUrl(trimmed)) {\n return this.materializeBrowserRemoteModule(trimmed);\n }\n\n if (\n trimmed.startsWith(\"./\") ||\n trimmed.startsWith(\"../\") ||\n trimmed.startsWith(\"/\")\n ) {\n if (!parentUrl || !isHttpUrl(parentUrl)) {\n this.diagnostics.push({\n level: \"warning\",\n code: \"RUNTIME_SOURCE_IMPORT_UNRESOLVED\",\n message: `Cannot resolve relative source import without parent URL: ${trimmed}`,\n });\n return trimmed;\n }\n\n const absolute = new URL(trimmed, parentUrl).toString();\n if (!isHttpUrl(absolute)) {\n return absolute;\n }\n\n return this.materializeBrowserRemoteModule(absolute);\n }\n\n const resolved = this.resolveRuntimeSourceSpecifierFn(\n trimmed,\n this.moduleManifest,\n this.diagnostics,\n false,\n );\n\n if (isHttpUrl(resolved)) {\n return this.materializeBrowserRemoteModule(resolved);\n }\n\n if (\n (resolved.startsWith(\"./\") ||\n resolved.startsWith(\"../\") ||\n resolved.startsWith(\"/\")) &&\n parentUrl &&\n isHttpUrl(parentUrl)\n ) {\n const absolute = new URL(resolved, parentUrl).toString();\n if (!isHttpUrl(absolute)) {\n return absolute;\n }\n\n return this.materializeBrowserRemoteModule(absolute);\n }\n\n return resolved;\n }\n\n async materializeBrowserRemoteModule(url: string): Promise<string> {\n const normalizedUrl = url.trim();\n if (normalizedUrl.length === 0) {\n return normalizedUrl;\n }\n\n const cachedUrl = this.browserModuleUrlCache.get(normalizedUrl);\n if (cachedUrl) {\n return cachedUrl;\n }\n\n const inflight = this.browserModuleInflight.get(normalizedUrl);\n if (inflight) {\n return inflight;\n }\n\n const loading = (async () => {\n const fetched =\n await this.fetchRemoteModuleCodeWithFallback(normalizedUrl);\n const rewritten = await this.materializeFetchedModuleSource(fetched);\n\n const blobUrl = this.createBrowserBlobModuleUrlFn(rewritten);\n this.browserModuleUrlCache.set(normalizedUrl, blobUrl);\n this.browserModuleUrlCache.set(fetched.url, blobUrl);\n return blobUrl;\n })();\n\n this.browserModuleInflight.set(normalizedUrl, loading);\n try {\n return await loading;\n } finally {\n this.browserModuleInflight.delete(normalizedUrl);\n }\n }\n\n async materializeFetchedModuleSource(\n fetched: RemoteModuleFetchResult,\n ): Promise<string> {\n if (isCssModuleResponse(fetched)) {\n return createCssProxyModuleSource(fetched.code, fetched.url);\n }\n\n if (isJsonModuleResponse(fetched)) {\n return this.createJsonProxyModuleSource(fetched);\n }\n\n if (!isJavaScriptModuleResponse(fetched)) {\n this.diagnostics.push({\n level: \"warning\",\n code: \"RUNTIME_SOURCE_ASSET_PROXY\",\n message: `Treating non-JS module as proxied asset: ${fetched.url} (${fetched.contentType || \"unknown\"})`,\n });\n\n if (isBinaryLikeContentType(fetched.contentType)) {\n return createUrlProxyModuleSource(fetched.url);\n }\n\n return createTextProxyModuleSource(fetched.code);\n }\n\n return this.rewriteImportsAsyncFn(fetched.code, async (childSpecifier) =>\n this.resolveBrowserImportSpecifier(childSpecifier, fetched.url),\n );\n }\n\n async fetchRemoteModuleCodeWithFallback(\n url: string,\n ): Promise<RemoteModuleFetchResult> {\n const attempts = buildRemoteModuleAttemptUrls(\n url,\n this.remoteFallbackCdnBases,\n );\n\n if (attempts.length === 0) {\n throw new Error(`Failed to load module: ${url}`);\n }\n\n const hedgeDelayMs = Math.max(\n 50,\n Math.min(300, this.remoteFetchBackoffMs || 100),\n );\n const fetchTasks = attempts.map((attempt, index) =>\n this.fetchRemoteModuleAttemptWithRetries(\n attempt,\n url,\n index === 0 ? 0 : hedgeDelayMs * index,\n ),\n );\n\n try {\n return await Promise.any(fetchTasks);\n } catch (error) {\n if (error instanceof AggregateError && error.errors.length > 0) {\n throw error.errors[error.errors.length - 1];\n }\n\n throw error;\n }\n }\n\n private async fetchRemoteModuleAttemptWithRetries(\n attempt: string,\n originalUrl: string,\n startDelayMs: number,\n ): Promise<RemoteModuleFetchResult> {\n if (startDelayMs > 0) {\n await delay(startDelayMs);\n }\n\n let lastError: unknown;\n for (let retry = 0; retry <= this.remoteFetchRetries; retry += 1) {\n try {\n const response = await fetchWithTimeout(\n attempt,\n this.remoteFetchTimeoutMs,\n );\n if (!response.ok) {\n throw new Error(\n `Failed to load module ${attempt}: HTTP ${response.status}`,\n );\n }\n\n if (attempt !== originalUrl) {\n this.diagnostics.push({\n level: \"warning\",\n code: \"RUNTIME_SOURCE_IMPORT_FALLBACK_USED\",\n message: `Loaded module via fallback URL: ${originalUrl} -> ${attempt}`,\n });\n }\n\n if (retry > 0) {\n this.diagnostics.push({\n level: \"warning\",\n code: \"RUNTIME_SOURCE_IMPORT_RETRY_SUCCEEDED\",\n message: `Recovered remote module after retry ${retry}: ${attempt}`,\n });\n }\n\n return {\n url: response.url || attempt,\n code: await response.text(),\n contentType:\n response.headers.get(\"content-type\")?.toLowerCase() ?? \"\",\n requestUrl: attempt,\n };\n } catch (error) {\n lastError = error;\n if (retry >= this.remoteFetchRetries) {\n break;\n }\n await delay(this.remoteFetchBackoffMs * Math.max(1, retry + 1));\n }\n }\n\n throw lastError ?? new Error(`Failed to load module: ${attempt}`);\n }\n\n private createJsonProxyModuleSource(\n fetched: RemoteModuleFetchResult,\n ): string {\n try {\n const parsed = JSON.parse(fetched.code) as unknown;\n return createJsonProxyModuleSource(parsed);\n } catch (error) {\n this.diagnostics.push({\n level: \"warning\",\n code: \"RUNTIME_SOURCE_JSON_PARSE_FAILED\",\n message: `${fetched.requestUrl}: ${this.errorToMessage(error)}`,\n });\n return createTextProxyModuleSource(fetched.code);\n }\n }\n\n private errorToMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n return String(error);\n }\n}\n","import type {\n RuntimeSourceTranspileInput,\n RuntimeSourceTranspiler,\n} from \"./runtime-manager.types\";\n\ninterface BabelStandaloneLike {\n transform(\n code: string,\n options: {\n sourceType?: \"module\";\n presets?: unknown[];\n filename?: string;\n babelrc?: boolean;\n configFile?: boolean;\n comments?: boolean;\n },\n ): {\n code?: string;\n };\n}\n\nconst RUNTIME_JSX_HELPERS = `\nfunction __renderify_runtime_to_nodes(value) {\n if (value === null || value === undefined || value === false || value === true) {\n return [];\n }\n if (Array.isArray(value)) {\n const flattened = [];\n for (const entry of value) {\n flattened.push(...__renderify_runtime_to_nodes(entry));\n }\n return flattened;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n return [{ type: \"text\", value: String(value) }];\n }\n if (\n typeof value === \"object\" &&\n value !== null &&\n typeof value.type === \"string\"\n ) {\n return [value];\n }\n return [{ type: \"text\", value: String(value) }];\n}\n\nfunction __renderify_runtime_h(type, props, ...children) {\n const normalizedChildren = __renderify_runtime_to_nodes(children);\n if (typeof type === \"function\") {\n const output = type({ ...(props || {}), children: normalizedChildren });\n const functionNodes = __renderify_runtime_to_nodes(output);\n if (functionNodes.length === 1) {\n return functionNodes[0];\n }\n return { type: \"element\", tag: \"div\", children: functionNodes };\n }\n if (typeof type === \"string\") {\n return {\n type: \"element\",\n tag: type,\n props: props || undefined,\n children: normalizedChildren,\n };\n }\n return { type: \"text\", value: \"Unsupported JSX node type\" };\n}\n\nfunction __renderify_runtime_fragment(...children) {\n return __renderify_runtime_to_nodes(children);\n}\n`.trim();\n\nexport class BabelRuntimeSourceTranspiler implements RuntimeSourceTranspiler {\n async transpile(input: RuntimeSourceTranspileInput): Promise<string> {\n if (input.language === \"js\") {\n return input.code;\n }\n\n const babel = this.resolveBabel();\n const presets: unknown[] = [];\n\n if (input.language === \"ts\" || input.language === \"tsx\") {\n presets.push(\"typescript\");\n }\n\n if (input.language === \"jsx\" || input.language === \"tsx\") {\n if (input.runtime === \"preact\") {\n presets.push([\n \"react\",\n {\n runtime: \"automatic\",\n importSource: \"preact\",\n },\n ]);\n } else {\n presets.push([\n \"react\",\n {\n runtime: \"classic\",\n pragma: \"__renderify_runtime_h\",\n pragmaFrag: \"__renderify_runtime_fragment\",\n },\n ]);\n }\n }\n\n const transformed = babel.transform(input.code, {\n sourceType: \"module\",\n presets,\n filename: input.filename,\n babelrc: false,\n configFile: false,\n comments: false,\n });\n\n if (!transformed.code) {\n throw new Error(\"Babel returned empty output\");\n }\n\n return transformed.code;\n }\n\n private resolveBabel(): BabelStandaloneLike {\n const root = globalThis as unknown as {\n Babel?: BabelStandaloneLike;\n };\n\n if (root.Babel && typeof root.Babel.transform === \"function\") {\n return root.Babel;\n }\n\n throw new Error(\n \"Babel standalone is not available. Load @babel/standalone in browser or provide sourceTranspiler.\",\n );\n }\n\n static mergeRuntimeHelpers(\n source: RuntimeSourceTranspileInput[\"code\"],\n runtime: RuntimeSourceTranspileInput[\"runtime\"],\n ): string {\n if (runtime === \"preact\") {\n return source;\n }\n\n return `${source}\\n\\n${RUNTIME_JSX_HELPERS}`;\n }\n}\n","import type {\n RuntimeExecutionProfile,\n RuntimeSourceModule,\n} from \"@renderify/ir\";\nimport { BabelRuntimeSourceTranspiler } from \"./transpiler\";\n\nexport type RuntimeSourceSandboxMode = \"none\" | \"worker\" | \"iframe\";\n\nexport interface RuntimeSourceTranspilerLike {\n transpile(input: {\n code: string;\n language: RuntimeSourceModule[\"language\"];\n filename?: string;\n runtime?: RuntimeSourceModule[\"runtime\"];\n }): Promise<string>;\n}\n\nexport function shouldUsePreactSourceRuntime(\n source: RuntimeSourceModule,\n): boolean {\n return source.runtime === \"preact\";\n}\n\nexport function executionProfileToSourceSandboxMode(\n executionProfile: RuntimeExecutionProfile,\n): RuntimeSourceSandboxMode | undefined {\n if (executionProfile === \"sandbox-worker\") {\n return \"worker\";\n }\n\n if (executionProfile === \"sandbox-iframe\") {\n return \"iframe\";\n }\n\n return undefined;\n}\n\nexport function resolveSourceSandboxMode(input: {\n source: RuntimeSourceModule;\n executionProfile: RuntimeExecutionProfile;\n defaultMode: RuntimeSourceSandboxMode;\n isBrowserRuntime: boolean;\n}): RuntimeSourceSandboxMode {\n const requested = executionProfileToSourceSandboxMode(input.executionProfile);\n const mode = requested ?? input.defaultMode;\n\n if (mode === \"none\") {\n return \"none\";\n }\n\n if (!input.isBrowserRuntime) {\n return \"none\";\n }\n\n if (shouldUsePreactSourceRuntime(input.source)) {\n if (requested) {\n throw new Error(\n `${requested} executionProfile is not supported with source.runtime=preact`,\n );\n }\n return \"none\";\n }\n\n return mode;\n}\n\nexport async function transpileRuntimeSource(\n source: RuntimeSourceModule,\n sourceTranspiler: RuntimeSourceTranspilerLike,\n): Promise<string> {\n const mergedSource = BabelRuntimeSourceTranspiler.mergeRuntimeHelpers(\n source.code,\n source.runtime,\n );\n return sourceTranspiler.transpile({\n code: mergedSource,\n language: source.language,\n filename: `renderify-runtime-source.${source.language}`,\n runtime: source.runtime,\n });\n}\n","import type {\n RuntimeDiagnostic,\n RuntimeEvent,\n RuntimeExecutionContext,\n RuntimeExecutionProfile,\n RuntimeExecutionResult,\n RuntimePlan,\n RuntimeSourceLanguage,\n RuntimeSourceModule,\n RuntimeStateSnapshot,\n} from \"@renderify/ir\";\nimport type {\n SecurityChecker,\n SecurityCheckResult,\n SecurityInitializationInput,\n} from \"@renderify/security\";\nimport type {\n RuntimeDependencyProbeStatus,\n RuntimeDependencyUsage,\n} from \"./runtime-preflight\";\nimport type { RuntimeSourceSandboxMode as RuntimeSourceRuntimeMode } from \"./runtime-source-runtime\";\nimport type { RenderTarget, UIRenderer } from \"./ui-renderer\";\n\nexport interface CompileOptions {\n pretty?: boolean;\n}\n\nexport interface RuntimeModuleLoader {\n load(specifier: string): Promise<unknown>;\n unload?(specifier: string): Promise<void>;\n}\n\nexport interface RuntimeExecutionInput {\n plan: RuntimePlan;\n context?: RuntimeExecutionContext;\n event?: RuntimeEvent;\n stateOverride?: RuntimeStateSnapshot;\n signal?: AbortSignal;\n}\n\nexport type { RuntimeDependencyProbeStatus, RuntimeDependencyUsage };\n\nexport interface RuntimePlanProbeResult {\n planId: string;\n diagnostics: RuntimeDiagnostic[];\n dependencies: RuntimeDependencyProbeStatus[];\n}\n\nexport interface RuntimeManager {\n initialize(): Promise<void>;\n terminate(): Promise<void>;\n probePlan(plan: RuntimePlan): Promise<RuntimePlanProbeResult>;\n executePlan(\n plan: RuntimePlan,\n context?: RuntimeExecutionContext,\n event?: RuntimeEvent,\n stateOverride?: RuntimeStateSnapshot,\n signal?: AbortSignal,\n ): Promise<RuntimeExecutionResult>;\n execute(input: RuntimeExecutionInput): Promise<RuntimeExecutionResult>;\n compile(plan: RuntimePlan, options?: CompileOptions): Promise<string>;\n getPlanState(planId: string): RuntimeStateSnapshot | undefined;\n setPlanState(planId: string, snapshot: RuntimeStateSnapshot): void;\n clearPlanState(planId: string): void;\n}\n\nexport interface RuntimeManagerOptions {\n moduleLoader?: RuntimeModuleLoader;\n sourceTranspiler?: RuntimeSourceTranspiler;\n defaultMaxImports?: number;\n defaultMaxComponentInvocations?: number;\n defaultMaxExecutionMs?: number;\n defaultExecutionProfile?: RuntimeExecutionProfile;\n supportedPlanSpecVersions?: string[];\n enforceModuleManifest?: boolean;\n allowIsolationFallback?: boolean;\n browserSourceSandboxMode?: RuntimeSourceSandboxMode;\n browserSourceSandboxTimeoutMs?: number;\n browserSourceSandboxFailClosed?: boolean;\n enableDependencyPreflight?: boolean;\n failOnDependencyPreflightError?: boolean;\n remoteFetchTimeoutMs?: number;\n remoteFetchRetries?: number;\n remoteFetchBackoffMs?: number;\n remoteFallbackCdnBases?: string[];\n}\n\nexport interface RuntimeSourceTranspileInput {\n code: string;\n language: RuntimeSourceLanguage;\n filename?: string;\n runtime?: RuntimeSourceModule[\"runtime\"];\n}\n\nexport interface RuntimeSourceTranspiler {\n transpile(input: RuntimeSourceTranspileInput): Promise<string>;\n}\n\nexport interface RuntimeEmbedRenderOptions {\n target?: RenderTarget;\n context?: RuntimeExecutionContext;\n signal?: AbortSignal;\n runtime?: RuntimeManager;\n runtimeOptions?: RuntimeManagerOptions;\n security?: SecurityChecker;\n securityInitialization?: SecurityInitializationInput;\n ui?: UIRenderer;\n autoInitializeRuntime?: boolean;\n autoTerminateRuntime?: boolean;\n serializeTargetRenders?: boolean;\n}\n\nexport interface RuntimeEmbedRenderResult {\n html: string;\n execution: RuntimeExecutionResult;\n security: SecurityCheckResult;\n runtime: RuntimeManager;\n}\n\nexport class RuntimeSecurityViolationError extends Error {\n readonly result: SecurityCheckResult;\n\n constructor(result: SecurityCheckResult) {\n super(`Security policy rejected runtime plan: ${result.issues.join(\"; \")}`);\n this.name = \"RuntimeSecurityViolationError\";\n this.result = result;\n }\n}\n\nexport type RuntimeSourceSandboxMode = RuntimeSourceRuntimeMode;\n","import type {\n JsonValue,\n RuntimeEvent,\n RuntimeExecutionResult,\n RuntimeNode,\n} from \"@renderify/ir\";\n\nexport interface RuntimeEventDispatchRequest {\n planId: string;\n event: RuntimeEvent;\n}\n\nexport interface InteractiveRenderTarget {\n element: string | HTMLElement;\n onRuntimeEvent?: (\n request: RuntimeEventDispatchRequest,\n ) => void | Promise<void>;\n}\n\nexport type RenderTarget = string | HTMLElement | InteractiveRenderTarget;\n\nexport interface UIRenderer {\n render(\n result: RuntimeExecutionResult,\n target?: RenderTarget,\n ): Promise<string>;\n renderNode(node: RuntimeNode): string;\n}\n\ninterface SerializedEventBinding {\n domEvent: string;\n bindingId: string;\n runtimeEvent: RuntimeEvent;\n}\n\ninterface RenderSerializationContext {\n nextBindingId: number;\n eventBindings: SerializedEventBinding[];\n}\n\ninterface MountSession {\n html: string;\n planId: string;\n runtimeEvents: Map<string, RuntimeEvent>;\n listeners: Map<string, (event: Event) => void>;\n onRuntimeEvent?: (\n request: RuntimeEventDispatchRequest,\n ) => void | Promise<void>;\n}\n\ninterface ResolvedRenderTarget {\n mountPoint: HTMLElement;\n onRuntimeEvent?: (\n request: RuntimeEventDispatchRequest,\n ) => void | Promise<void>;\n}\n\nexport class DefaultUIRenderer implements UIRenderer {\n private readonly mountSessions = new WeakMap<HTMLElement, MountSession>();\n\n async render(\n result: RuntimeExecutionResult,\n target?: RenderTarget,\n ): Promise<string> {\n if (result.renderArtifact?.mode === \"preact-vnode\") {\n return this.renderPreactArtifact(result.renderArtifact.payload, target);\n }\n\n const serialized = this.renderNodeWithBindings(result.root);\n\n if (typeof document === \"undefined\") {\n return serialized.html;\n }\n\n if (!target) {\n return serialized.html;\n }\n\n const resolvedTarget = this.resolveRenderTarget(target);\n if (!resolvedTarget) {\n throw new Error(\n `Render target not found: ${this.stringifyTarget(target)}`,\n );\n }\n\n const { mountPoint, onRuntimeEvent } = resolvedTarget;\n this.patchMountPoint(mountPoint, serialized.html);\n this.syncMountSession(\n mountPoint,\n result.planId,\n serialized.eventBindings,\n onRuntimeEvent,\n );\n\n return mountPoint.innerHTML;\n }\n\n private async renderPreactArtifact(\n payload: unknown,\n target?: RenderTarget,\n ): Promise<string> {\n if (typeof document !== \"undefined\" && target) {\n const resolvedTarget = this.resolveRenderTarget(target);\n if (!resolvedTarget) {\n throw new Error(\n `Render target not found: ${this.stringifyTarget(target)}`,\n );\n }\n\n const preact = await this.loadPreactRenderer();\n preact.render(payload, resolvedTarget.mountPoint);\n return resolvedTarget.mountPoint.innerHTML;\n }\n\n const renderToString = await this.loadPreactRenderToString();\n return renderToString(payload);\n }\n\n renderNode(node: RuntimeNode): string {\n return this.renderNodeWithBindings(node).html;\n }\n\n private renderNodeWithBindings(node: RuntimeNode): {\n html: string;\n eventBindings: SerializedEventBinding[];\n } {\n const context: RenderSerializationContext = {\n nextBindingId: 0,\n eventBindings: [],\n };\n\n return {\n html: this.renderNodeInternal(node, context),\n eventBindings: context.eventBindings,\n };\n }\n\n private renderNodeInternal(\n node: RuntimeNode,\n context: RenderSerializationContext,\n ): string {\n if (node.type === \"text\") {\n return escapeHtml(node.value);\n }\n\n if (node.type === \"component\") {\n return `<div data-renderify-unresolved-component=\"${escapeHtml(node.module)}\"></div>`;\n }\n\n const children = (node.children ?? [])\n .map((child) => this.renderNodeInternal(child, context))\n .join(\"\");\n const normalizedTag = normalizeTagName(node.tag);\n if (!normalizedTag) {\n return `<div data-renderify-sanitized-tag=\"${escapeHtml(node.tag)}\">${children}</div>`;\n }\n if (BLOCKED_TAG_NAMES.has(normalizedTag)) {\n return `<div data-renderify-sanitized-tag=\"${escapeHtml(node.tag)}\"></div>`;\n }\n\n const attributes = serializeProps(node.props, context);\n\n return `<${normalizedTag}${attributes}>${children}</${normalizedTag}>`;\n }\n\n private resolveRenderTarget(\n target: RenderTarget,\n ): ResolvedRenderTarget | null {\n if (isInteractiveRenderTarget(target)) {\n const mountPoint = this.resolveTargetElement(target.element);\n if (!mountPoint) {\n return null;\n }\n\n return {\n mountPoint,\n onRuntimeEvent: target.onRuntimeEvent,\n };\n }\n\n const mountPoint = this.resolveTargetElement(target);\n if (!mountPoint) {\n return null;\n }\n\n return {\n mountPoint,\n };\n }\n\n private resolveTargetElement(\n target: string | HTMLElement,\n ): HTMLElement | null {\n if (typeof target !== \"string\") {\n return target;\n }\n\n return document.querySelector<HTMLElement>(target);\n }\n\n private patchMountPoint(mountPoint: HTMLElement, nextHtml: string): void {\n const sanitizedHtml = this.sanitizeHtmlForMount(nextHtml);\n const session = this.mountSessions.get(mountPoint);\n if (!session) {\n mountPoint.innerHTML = sanitizedHtml;\n return;\n }\n\n if (session.html === sanitizedHtml) {\n return;\n }\n\n const scrollTop = mountPoint.scrollTop;\n const scrollLeft = mountPoint.scrollLeft;\n\n const template = document.createElement(\"template\");\n template.innerHTML = sanitizedHtml;\n this.reconcileChildren(mountPoint, template.content);\n mountPoint.scrollTop = scrollTop;\n mountPoint.scrollLeft = scrollLeft;\n }\n\n private sanitizeHtmlForMount(html: string): string {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n sanitizeRenderedFragment(template.content);\n return template.innerHTML;\n }\n\n private reconcileChildren(\n currentParent: ParentNode,\n nextParent: ParentNode,\n ): void {\n const currentChildren = Array.from(currentParent.childNodes);\n const nextChildren = Array.from(nextParent.childNodes);\n\n if (this.shouldUseKeyedReconcile(currentChildren, nextChildren)) {\n this.reconcileKeyedChildren(currentParent, currentChildren, nextChildren);\n return;\n }\n\n const commonLength = Math.min(currentChildren.length, nextChildren.length);\n\n for (let i = 0; i < commonLength; i += 1) {\n this.reconcileNode(currentChildren[i], nextChildren[i]);\n }\n\n for (let i = currentChildren.length - 1; i >= nextChildren.length; i -= 1) {\n currentChildren[i].remove();\n }\n\n for (let i = commonLength; i < nextChildren.length; i += 1) {\n currentParent.appendChild(nextChildren[i].cloneNode(true));\n }\n }\n\n private shouldUseKeyedReconcile(\n currentChildren: ChildNode[],\n nextChildren: ChildNode[],\n ): boolean {\n return (\n currentChildren.some((node) => this.getNodeKey(node) !== null) ||\n nextChildren.some((node) => this.getNodeKey(node) !== null)\n );\n }\n\n private reconcileKeyedChildren(\n currentParent: ParentNode,\n currentChildren: ChildNode[],\n nextChildren: ChildNode[],\n ): void {\n const currentByKey = new Map<string, ChildNode>();\n for (const node of currentChildren) {\n const key = this.getNodeKey(node);\n if (!key || currentByKey.has(key)) {\n continue;\n }\n currentByKey.set(key, node);\n }\n\n const consumed = new Set<ChildNode>();\n const desiredNodes: ChildNode[] = [];\n\n for (let index = 0; index < nextChildren.length; index += 1) {\n const nextChild = nextChildren[index];\n const nextKey = this.getNodeKey(nextChild);\n\n let candidate: ChildNode | undefined;\n if (nextKey) {\n const keyed = currentByKey.get(nextKey);\n if (\n keyed &&\n !consumed.has(keyed) &&\n this.areNodesCompatible(keyed, nextChild)\n ) {\n candidate = keyed;\n }\n } else {\n const positional = currentChildren[index];\n if (\n positional &&\n !consumed.has(positional) &&\n this.getNodeKey(positional) === null &&\n this.areNodesCompatible(positional, nextChild)\n ) {\n candidate = positional;\n }\n }\n\n if (candidate) {\n this.reconcileNode(candidate, nextChild);\n consumed.add(candidate);\n desiredNodes.push(candidate);\n continue;\n }\n\n desiredNodes.push(nextChild.cloneNode(true) as ChildNode);\n }\n\n this.applyDesiredChildren(currentParent, desiredNodes);\n }\n\n private applyDesiredChildren(\n currentParent: ParentNode,\n desiredNodes: ChildNode[],\n ): void {\n const desiredSet = new Set(desiredNodes);\n for (const child of Array.from(currentParent.childNodes)) {\n if (!desiredSet.has(child)) {\n child.remove();\n }\n }\n\n for (let index = 0; index < desiredNodes.length; index += 1) {\n const desiredNode = desiredNodes[index];\n const nodeAtIndex = currentParent.childNodes[index] ?? null;\n\n if (desiredNode.parentNode !== currentParent) {\n currentParent.insertBefore(desiredNode, nodeAtIndex);\n continue;\n }\n\n if (nodeAtIndex !== desiredNode) {\n currentParent.insertBefore(desiredNode, nodeAtIndex);\n }\n }\n }\n\n private getNodeKey(node: ChildNode): string | null {\n if (typeof Element === \"undefined\" || !(node instanceof Element)) {\n return null;\n }\n\n const key =\n node.getAttribute(\"data-renderify-key\") ?? node.getAttribute(\"key\");\n if (!key || key.trim().length === 0) {\n return null;\n }\n\n return key;\n }\n\n private areNodesCompatible(\n currentNode: ChildNode,\n nextNode: ChildNode,\n ): boolean {\n if (currentNode.nodeType !== nextNode.nodeType) {\n return false;\n }\n\n if (\n typeof Element === \"undefined\" ||\n !(currentNode instanceof Element) ||\n !(nextNode instanceof Element)\n ) {\n return true;\n }\n\n return currentNode.tagName === nextNode.tagName;\n }\n\n private reconcileNode(currentNode: ChildNode, nextNode: ChildNode): void {\n if (currentNode.nodeType !== nextNode.nodeType) {\n currentNode.replaceWith(nextNode.cloneNode(true));\n return;\n }\n\n if (currentNode.nodeType === Node.TEXT_NODE) {\n if (currentNode.textContent !== nextNode.textContent) {\n currentNode.textContent = nextNode.textContent;\n }\n return;\n }\n\n if (!(currentNode instanceof Element) || !(nextNode instanceof Element)) {\n if (currentNode.textContent !== nextNode.textContent) {\n currentNode.textContent = nextNode.textContent;\n }\n return;\n }\n\n if (currentNode.tagName !== nextNode.tagName) {\n currentNode.replaceWith(nextNode.cloneNode(true));\n return;\n }\n\n this.reconcileAttributes(currentNode, nextNode);\n this.reconcileChildren(currentNode, nextNode);\n }\n\n private reconcileAttributes(\n currentElement: Element,\n nextElement: Element,\n ): void {\n const activeElement =\n typeof document !== \"undefined\" ? document.activeElement : undefined;\n\n for (const attribute of Array.from(currentElement.attributes)) {\n if (!nextElement.hasAttribute(attribute.name)) {\n currentElement.removeAttribute(attribute.name);\n }\n }\n\n for (const attribute of Array.from(nextElement.attributes)) {\n if (\n this.shouldSkipInteractivePropertySync(\n currentElement,\n activeElement,\n attribute.name,\n )\n ) {\n continue;\n }\n\n if (currentElement.getAttribute(attribute.name) !== attribute.value) {\n currentElement.setAttribute(attribute.name, attribute.value);\n }\n }\n }\n\n private shouldSkipInteractivePropertySync(\n element: Element,\n activeElement: Element | null | undefined,\n attributeName: string,\n ): boolean {\n if (!activeElement || element !== activeElement) {\n return false;\n }\n\n if (\n !(\n element instanceof HTMLInputElement ||\n element instanceof HTMLTextAreaElement\n )\n ) {\n return false;\n }\n\n return attributeName === \"value\" || attributeName === \"checked\";\n }\n\n private syncMountSession(\n mountPoint: HTMLElement,\n planId: string,\n eventBindings: SerializedEventBinding[],\n onRuntimeEvent?: (\n request: RuntimeEventDispatchRequest,\n ) => void | Promise<void>,\n ): void {\n const existing = this.mountSessions.get(mountPoint);\n\n const runtimeEvents = new Map<string, RuntimeEvent>();\n const delegatedEventTypes = new Set<string>();\n\n for (const binding of eventBindings) {\n runtimeEvents.set(binding.bindingId, binding.runtimeEvent);\n delegatedEventTypes.add(binding.domEvent);\n }\n\n const session: MountSession = existing ?? {\n html: \"\",\n planId,\n runtimeEvents,\n listeners: new Map(),\n onRuntimeEvent,\n };\n\n session.html = mountPoint.innerHTML;\n session.planId = planId;\n session.runtimeEvents = runtimeEvents;\n session.onRuntimeEvent = onRuntimeEvent;\n\n this.syncDelegatedListeners(mountPoint, session, delegatedEventTypes);\n this.mountSessions.set(mountPoint, session);\n }\n\n private syncDelegatedListeners(\n mountPoint: HTMLElement,\n session: MountSession,\n delegatedEventTypes: Set<string>,\n ): void {\n for (const [eventType, listener] of session.listeners.entries()) {\n if (!delegatedEventTypes.has(eventType)) {\n mountPoint.removeEventListener(eventType, listener);\n session.listeners.delete(eventType);\n }\n }\n\n for (const eventType of delegatedEventTypes) {\n if (session.listeners.has(eventType)) {\n continue;\n }\n\n const listener = (event: Event) => {\n this.handleDelegatedRuntimeEvent(mountPoint, session, eventType, event);\n };\n\n mountPoint.addEventListener(eventType, listener);\n session.listeners.set(eventType, listener);\n }\n }\n\n private handleDelegatedRuntimeEvent(\n mountPoint: HTMLElement,\n session: MountSession,\n domEvent: string,\n event: Event,\n ): void {\n const eventTarget = event.target;\n if (!eventTarget || !(eventTarget instanceof Element)) {\n return;\n }\n\n const bindingAttribute = getBindingAttributeName(domEvent);\n const matched = eventTarget.closest(`[${bindingAttribute}]`);\n\n if (\n !matched ||\n !(matched instanceof Element) ||\n !mountPoint.contains(matched)\n ) {\n return;\n }\n\n const bindingId = matched.getAttribute(bindingAttribute);\n if (!bindingId) {\n return;\n }\n\n const runtimeEvent = session.runtimeEvents.get(bindingId);\n if (!runtimeEvent) {\n return;\n }\n\n const dispatchRequest: RuntimeEventDispatchRequest = {\n planId: session.planId,\n event: runtimeEvent,\n };\n\n if (typeof CustomEvent === \"function\") {\n mountPoint.dispatchEvent(\n new CustomEvent<RuntimeEventDispatchRequest>(\n \"renderify:runtime-event\",\n {\n bubbles: true,\n composed: true,\n detail: dispatchRequest,\n },\n ),\n );\n }\n\n if (session.onRuntimeEvent) {\n void Promise.resolve(session.onRuntimeEvent(dispatchRequest)).catch(\n () => {\n // Host callback errors should not break UI interaction.\n },\n );\n }\n }\n\n private async loadPreactRenderer(): Promise<PreactRendererLike> {\n const loaded = (await import(getPreactSpecifier())) as unknown;\n if (!isPreactRendererLike(loaded)) {\n throw new Error(\"Failed to load preact renderer from `preact` package\");\n }\n\n return loaded;\n }\n\n private async loadPreactRenderToString(): Promise<\n (payload: unknown) => string\n > {\n const loaded = (await import(\n getPreactRenderToStringSpecifier()\n )) as unknown;\n if (!isPreactRenderToStringLike(loaded)) {\n throw new Error(\n \"Failed to load preact-render-to-string from `preact-render-to-string` package\",\n );\n }\n\n if (typeof loaded === \"function\") {\n return loaded;\n }\n\n if (typeof loaded.default === \"function\") {\n return loaded.default;\n }\n\n return loaded.render;\n }\n\n private stringifyTarget(target: RenderTarget): string {\n if (typeof target === \"string\") {\n return target;\n }\n\n if (isInteractiveRenderTarget(target)) {\n if (typeof target.element === \"string\") {\n return target.element;\n }\n return \"[interactive-target-element]\";\n }\n\n return \"[target-element]\";\n }\n}\n\ninterface PreactRendererLike {\n render(vnode: unknown, parent: Element): void;\n}\n\ntype PreactRenderToStringLike =\n | ((payload: unknown) => string)\n | {\n default?: (payload: unknown) => string;\n render: (payload: unknown) => string;\n };\n\nfunction isPreactRendererLike(value: unknown): value is PreactRendererLike {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const candidate = value as { render?: unknown };\n return typeof candidate.render === \"function\";\n}\n\nfunction isPreactRenderToStringLike(\n value: unknown,\n): value is PreactRenderToStringLike {\n if (typeof value === \"function\") {\n return true;\n }\n\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n\n const candidate = value as { default?: unknown; render?: unknown };\n return (\n typeof candidate.default === \"function\" ||\n typeof candidate.render === \"function\"\n );\n}\n\nfunction isInteractiveRenderTarget(\n value: RenderTarget,\n): value is InteractiveRenderTarget {\n if (typeof value === \"string\") {\n return false;\n }\n\n if (typeof HTMLElement !== \"undefined\" && value instanceof HTMLElement) {\n return false;\n }\n\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"element\" in value &&\n (typeof (value as { element?: unknown }).element === \"string\" ||\n (typeof HTMLElement !== \"undefined\" &&\n (value as { element?: unknown }).element instanceof HTMLElement))\n );\n}\n\nfunction getPreactSpecifier(): string {\n return \"preact\";\n}\n\nfunction getPreactRenderToStringSpecifier(): string {\n return \"preact-render-to-string\";\n}\n\nfunction getBindingAttributeName(domEvent: string): string {\n return `data-renderify-event-${domEvent}`;\n}\n\nconst BLOCKED_TAG_NAMES = new Set([\n \"script\",\n \"style\",\n \"iframe\",\n \"object\",\n \"embed\",\n \"link\",\n \"meta\",\n \"base\",\n \"form\",\n]);\n\nconst BLOCKED_ATTRIBUTE_NAMES = new Set([\n \"srcdoc\",\n \"innerhtml\",\n \"dangerouslysetinnerhtml\",\n]);\n\nconst URL_ATTRIBUTE_NAMES = new Set([\n \"href\",\n \"src\",\n \"xlink:href\",\n \"action\",\n \"formaction\",\n \"poster\",\n]);\n\nconst SAFE_URL_PROTOCOLS = new Set([\"http:\", \"https:\", \"mailto:\", \"tel:\"]);\nconst UNSAFE_STYLE_PATTERNS = [\n /\\bexpression\\s*\\(/i,\n /\\burl\\s*\\(/i,\n /\\bjavascript\\s*:/i,\n /\\bdata\\s*:/i,\n /@import/i,\n /\\bbehavior\\s*:/i,\n /-moz-binding/i,\n] as const;\n\nfunction sanitizeTagName(tag: string): string | undefined {\n const normalized = normalizeTagName(tag);\n if (!normalized) {\n return undefined;\n }\n\n if (BLOCKED_TAG_NAMES.has(normalized)) {\n return undefined;\n }\n\n return normalized;\n}\n\nfunction normalizeTagName(tag: string): string | undefined {\n const normalized = tag.trim().toLowerCase();\n if (!/^[a-z][a-z0-9-]*$/.test(normalized)) {\n return undefined;\n }\n\n return normalized;\n}\n\nfunction isSafeAttributeName(attributeName: string): boolean {\n return /^[A-Za-z_:][A-Za-z0-9:._-]*$/.test(attributeName);\n}\n\nfunction isSafeAttributeUrl(value: string): boolean {\n const trimmed = value.trim();\n if (trimmed.length === 0) {\n return false;\n }\n\n if (\n trimmed.startsWith(\"#\") ||\n trimmed.startsWith(\"/\") ||\n trimmed.startsWith(\"./\") ||\n trimmed.startsWith(\"../\")\n ) {\n return true;\n }\n\n const lowered = trimmed.toLowerCase();\n if (\n lowered.startsWith(\"javascript:\") ||\n lowered.startsWith(\"vbscript:\") ||\n lowered.startsWith(\"data:\")\n ) {\n return false;\n }\n\n if (/^[a-z][a-z0-9+.-]*:/.test(lowered)) {\n try {\n const parsed = new URL(trimmed);\n return SAFE_URL_PROTOCOLS.has(parsed.protocol);\n } catch {\n return false;\n }\n }\n\n return true;\n}\n\nfunction serializeProps(\n props: Record<string, JsonValue> | undefined,\n context: RenderSerializationContext,\n): string {\n if (!props) {\n return \"\";\n }\n\n const attributes: string[] = [];\n let targetIsBlank = false;\n let relProvided = false;\n\n for (const [key, rawValue] of Object.entries(props)) {\n if (!isSafeAttributeName(key)) {\n continue;\n }\n\n const normalizedKey = key.toLowerCase();\n if (BLOCKED_ATTRIBUTE_NAMES.has(normalizedKey)) {\n continue;\n }\n\n if (key === \"key\") {\n if (typeof rawValue === \"string\" || typeof rawValue === \"number\") {\n attributes.push(\n ` data-renderify-key=\"${escapeHtml(String(rawValue))}\"`,\n );\n }\n continue;\n }\n\n const eventSpec = parseRuntimeEventProp(key, rawValue);\n if (eventSpec) {\n const bindingId = `evt_${String(++context.nextBindingId)}`;\n context.eventBindings.push({\n bindingId,\n domEvent: eventSpec.domEvent,\n runtimeEvent: eventSpec.runtimeEvent,\n });\n attributes.push(\n ` ${getBindingAttributeName(eventSpec.domEvent)}=\"${escapeHtml(bindingId)}\"`,\n );\n continue;\n }\n\n if (URL_ATTRIBUTE_NAMES.has(normalizedKey)) {\n if (typeof rawValue !== \"string\" || !isSafeAttributeUrl(rawValue)) {\n continue;\n }\n }\n\n if (normalizedKey === \"style\") {\n if (typeof rawValue !== \"string\") {\n continue;\n }\n\n const sanitizedStyle = sanitizeInlineStyle(rawValue);\n if (!sanitizedStyle) {\n continue;\n }\n\n attributes.push(` style=\"${escapeHtml(sanitizedStyle)}\"`);\n continue;\n }\n\n if (key.startsWith(\"on\")) {\n continue;\n }\n\n if (normalizedKey === \"target\" && String(rawValue).trim() === \"_blank\") {\n targetIsBlank = true;\n }\n\n if (normalizedKey === \"rel\") {\n relProvided = true;\n }\n\n if (typeof rawValue === \"boolean\") {\n if (rawValue) {\n attributes.push(` ${key}`);\n }\n continue;\n }\n\n if (rawValue === null || typeof rawValue === \"object\") {\n attributes.push(` ${key}='${escapeHtml(JSON.stringify(rawValue))}'`);\n continue;\n }\n\n attributes.push(` ${key}=\"${escapeHtml(String(rawValue))}\"`);\n }\n\n if (targetIsBlank && !relProvided) {\n attributes.push(' rel=\"noopener noreferrer\"');\n }\n\n return attributes.join(\"\");\n}\n\nfunction sanitizeInlineStyle(style: string): string | undefined {\n const normalized = style.trim();\n if (normalized.length === 0) {\n return undefined;\n }\n\n const inspected = normalizeStyleForSecurityInspection(normalized);\n if (inspected.length === 0) {\n return undefined;\n }\n\n for (const pattern of UNSAFE_STYLE_PATTERNS) {\n if (pattern.test(inspected)) {\n return undefined;\n }\n }\n\n return normalized;\n}\n\nfunction normalizeStyleForSecurityInspection(style: string): string {\n const withoutComments = style.replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\");\n const decodedEscapes = decodeCssEscapes(withoutComments).replace(/\\0/g, \"\");\n return decodedEscapes.replace(/\\s+/g, \" \").trim().toLowerCase();\n}\n\nfunction decodeCssEscapes(input: string): string {\n return input.replace(\n /\\\\(?:([0-9a-fA-F]{1,6})(?:\\r\\n|[ \\t\\r\\n\\f])?|(.))/g,\n (_match, hexCodePoint: string | undefined, escapedChar: string) => {\n if (hexCodePoint) {\n const parsed = Number.parseInt(hexCodePoint, 16);\n if (!Number.isFinite(parsed) || parsed < 0 || parsed > 0x10ffff) {\n return \"\";\n }\n return String.fromCodePoint(parsed);\n }\n\n return escapedChar;\n },\n );\n}\n\nfunction sanitizeRenderedFragment(fragment: DocumentFragment): void {\n sanitizeRenderedSubtree(fragment);\n}\n\nfunction sanitizeRenderedSubtree(root: ParentNode): void {\n const elements = Array.from(root.querySelectorAll(\"*\"));\n\n for (const element of elements) {\n if (!element.isConnected) {\n continue;\n }\n\n const tagName = element.tagName.toLowerCase();\n if (!sanitizeTagName(tagName)) {\n replaceBlockedElement(element, tagName);\n continue;\n }\n\n sanitizeElementAttributes(element);\n\n const shadowRoot = (element as Element & { shadowRoot?: ShadowRoot | null })\n .shadowRoot;\n if (shadowRoot) {\n sanitizeRenderedSubtree(shadowRoot);\n }\n }\n}\n\nfunction replaceBlockedElement(element: Element, tagName: string): void {\n const replacement = element.ownerDocument.createElement(\"div\");\n replacement.setAttribute(\"data-renderify-sanitized-tag\", tagName);\n element.replaceWith(replacement);\n}\n\nfunction sanitizeElementAttributes(element: Element): void {\n let targetIsBlank = false;\n let relProvided = false;\n\n for (const attribute of Array.from(element.attributes)) {\n const key = attribute.name;\n const value = attribute.value;\n const normalizedKey = key.toLowerCase();\n\n if (\n !isSafeAttributeName(key) ||\n BLOCKED_ATTRIBUTE_NAMES.has(normalizedKey)\n ) {\n element.removeAttribute(key);\n continue;\n }\n\n if (normalizedKey.startsWith(\"on\")) {\n element.removeAttribute(key);\n continue;\n }\n\n if (URL_ATTRIBUTE_NAMES.has(normalizedKey) && !isSafeAttributeUrl(value)) {\n element.removeAttribute(key);\n continue;\n }\n\n if (normalizedKey === \"style\") {\n const sanitizedStyle = sanitizeInlineStyle(value);\n if (!sanitizedStyle) {\n element.removeAttribute(key);\n continue;\n }\n if (sanitizedStyle !== value) {\n element.setAttribute(key, sanitizedStyle);\n }\n }\n\n if (normalizedKey === \"target\" && value.trim() === \"_blank\") {\n targetIsBlank = true;\n }\n\n if (normalizedKey === \"rel\") {\n relProvided = true;\n }\n }\n\n if (targetIsBlank && !relProvided) {\n element.setAttribute(\"rel\", \"noopener noreferrer\");\n }\n}\n\nfunction parseRuntimeEventProp(\n propName: string,\n value: JsonValue,\n): { domEvent: string; runtimeEvent: RuntimeEvent } | undefined {\n if (!/^on[A-Z]/.test(propName)) {\n return undefined;\n }\n\n const domEvent = propName.slice(2).toLowerCase();\n if (!/^[a-z][a-z0-9_-]*$/.test(domEvent)) {\n return undefined;\n }\n\n if (typeof value === \"string\" && value.trim().length > 0) {\n return {\n domEvent,\n runtimeEvent: {\n type: value.trim(),\n },\n };\n }\n\n if (!isJsonObject(value)) {\n return undefined;\n }\n\n const eventType = value.type;\n if (typeof eventType !== \"string\" || eventType.trim().length === 0) {\n return undefined;\n }\n\n const payload = value.payload;\n const runtimeEvent: RuntimeEvent = {\n type: eventType.trim(),\n };\n\n if (isJsonObject(payload)) {\n runtimeEvent.payload = payload;\n }\n\n return {\n domEvent,\n runtimeEvent,\n };\n}\n\nfunction isJsonObject(\n value: JsonValue | undefined,\n): value is Record<string, JsonValue> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction escapeHtml(value: string): string {\n return value\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n}\n"],"mappings":"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","names":["import_ir","import_ir","import_ir","import_ir","import_ir","import_ir","import_ir","parseSourceImportSpecifiers","resolved","import_ir","throwIfAborted","createAbortError","normalized","diagnostics","mountPoint","getPreactSpecifier"]}
|