veryfront 0.1.1216 → 0.1.1217
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/esm/deno.js +1 -1
- package/esm/src/agent/conversation/delegation-policy.d.ts +0 -2
- package/esm/src/agent/conversation/delegation-policy.d.ts.map +1 -1
- package/esm/src/agent/conversation/delegation-policy.js +0 -2
- package/esm/src/agent/index.d.ts +1 -1
- package/esm/src/agent/index.d.ts.map +1 -1
- package/esm/src/agent/index.js +1 -1
- package/esm/src/html/hydration-script-builder/hydration-runtime.generated.js +1 -1
- package/esm/src/platform/compat/http/pinned-fetch.d.ts +1 -1
- package/esm/src/security/http/derived-csp-cache.d.ts +2 -0
- package/esm/src/security/http/derived-csp-cache.d.ts.map +1 -1
- package/esm/src/security/http/derived-csp-cache.js +56 -12
- package/esm/src/server/runtime-handler/project-runtime-context.d.ts +25 -0
- package/esm/src/server/runtime-handler/project-runtime-context.d.ts.map +1 -1
- package/esm/src/server/runtime-handler/project-runtime-context.js +43 -5
- package/esm/src/skill/load-skill-policy.d.ts +9 -1
- package/esm/src/skill/load-skill-policy.d.ts.map +1 -1
- package/esm/src/skill/load-skill-policy.js +9 -1
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +8 -8
package/esm/deno.js
CHANGED
|
@@ -8,8 +8,6 @@ export declare const SYNTHESIZE_DELEGATED_FINDINGS_IN_ROOT_VOICE = "After delega
|
|
|
8
8
|
export declare const LOAD_SKILL_CONTINUE_SAME_TURN_NOW = "Continue the same turn now.";
|
|
9
9
|
/** Shared load skill root ownership value. */
|
|
10
10
|
export declare const LOAD_SKILL_ROOT_OWNERSHIP = "Keep the root assistant visibly owning the work.";
|
|
11
|
-
/** Shared load skill use allowed tools value. */
|
|
12
|
-
export declare const LOAD_SKILL_USE_ALLOWED_TOOLS = "For multi-step or isolated work, call invoke_agent; otherwise keep working directly with the available tools.";
|
|
13
11
|
/** Shared load skill delegation threshold value. */
|
|
14
12
|
export declare const LOAD_SKILL_DELEGATION_THRESHOLD = "Delegate only when isolation, parallelism, or a different tool/model budget materially helps.";
|
|
15
13
|
/** Builds root owned delegated findings instruction. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegation-policy.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/delegation-policy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAI7D,OAAO,EACL,qCAAqC,EACrC,iCAAiC,EACjC,6BAA6B,EAC7B,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,kCAAkC,CAAC;AAK1C,yDAAyD;AACzD,eAAO,MAAM,oCAAoC,mHACiE,CAAC;AACnH,gEAAgE;AAChE,eAAO,MAAM,2CAA2C,uFAC8B,CAAC;AAEvF,sDAAsD;AACtD,eAAO,MAAM,iCAAiC,gCAAgC,CAAC;AAC/E,8CAA8C;AAC9C,eAAO,MAAM,yBAAyB,qDAAoC,CAAC;AAC3E,
|
|
1
|
+
{"version":3,"file":"delegation-policy.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/delegation-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,6 @@ export const SYNTHESIZE_DELEGATED_FINDINGS_IN_ROOT_VOICE = "After delegated work
|
|
|
13
13
|
export const LOAD_SKILL_CONTINUE_SAME_TURN_NOW = "Continue the same turn now.";
|
|
14
14
|
/** Shared load skill root ownership value. */
|
|
15
15
|
export const LOAD_SKILL_ROOT_OWNERSHIP = KEEP_ROOT_ASSISTANT_VISIBLE_OWNER;
|
|
16
|
-
/** Shared load skill use allowed tools value. */
|
|
17
|
-
export const LOAD_SKILL_USE_ALLOWED_TOOLS = "For multi-step or isolated work, call invoke_agent; otherwise keep working directly with the available tools.";
|
|
18
16
|
/** Shared load skill delegation threshold value. */
|
|
19
17
|
export const LOAD_SKILL_DELEGATION_THRESHOLD = DELEGATE_ONLY_WHEN_MATERIALLY_HELPFUL;
|
|
20
18
|
/** Builds root owned delegated findings instruction. */
|
package/esm/src/agent/index.d.ts
CHANGED
|
@@ -209,7 +209,7 @@ export { getHostedChildWrittenArtifactPath, type HostedChildFileWriteFallbackLog
|
|
|
209
209
|
export { buildDefaultResearchArtifactPathReminder, buildDefaultResearchArtifactPaths, type DefaultResearchArtifactPaths, shouldInjectDefaultResearchArtifactPath, withDefaultResearchArtifactPath, } from "./artifacts/default-research-artifact-policy.js";
|
|
210
210
|
export { applyDefaultResearchArtifactPath, createDefaultResearchRunArtifactMirrorHandler, type DefaultResearchArtifactContext, type DefaultResearchArtifactLogger, type DefaultResearchArtifacts, extractLatestUserText, fetchLatestConversationUserText, mirrorDefaultResearchRunArtifact, shouldRetryCreateResearchArtifactAsUpdate, updateDefaultResearchArtifacts, } from "./artifacts/default-research-artifact-support.js";
|
|
211
211
|
export { containsExactArtifactPathValue, evaluateSlashCommandArtifactPolicy, type SlashCommandArtifactPolicy, type SlashCommandArtifactPolicyInput, } from "./artifacts/slash-command-artifact-policy.js";
|
|
212
|
-
export { addFirstTurnStarterIntentRootOwnershipReminder, addLoadSkillContinuationReminder, addSlashCommandArtifactReminder, buildInvokeAgentFollowupInstruction, buildRootOwnedChildResultHint, buildRootOwnedDelegatedFindingsInstruction, buildStarterIntentRootOwnershipBlockMessage, buildStarterIntentRootOwnershipReminder, DELEGATE_ONLY_WHEN_MATERIALLY_HELPFUL, evaluateStarterIntentTurnPolicy, extractStarterIntentId, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_BLOCK_MESSAGE, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_CONTEXT_KEY, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_REMINDER, isStarterIntentRootOwnershipRequired, KEEP_ROOT_ASSISTANT_VISIBLE_OWNER, LOAD_SKILL_CONTINUATION_REMINDER, LOAD_SKILL_CONTINUE_SAME_TURN, LOAD_SKILL_CONTINUE_SAME_TURN_NOW, LOAD_SKILL_DELEGATION_THRESHOLD, LOAD_SKILL_OVERRIDE_FORWARDING, LOAD_SKILL_ROOT_OWNERSHIP,
|
|
212
|
+
export { addFirstTurnStarterIntentRootOwnershipReminder, addLoadSkillContinuationReminder, addSlashCommandArtifactReminder, buildInvokeAgentFollowupInstruction, buildRootOwnedChildResultHint, buildRootOwnedDelegatedFindingsInstruction, buildStarterIntentRootOwnershipBlockMessage, buildStarterIntentRootOwnershipReminder, DELEGATE_ONLY_WHEN_MATERIALLY_HELPFUL, evaluateStarterIntentTurnPolicy, extractStarterIntentId, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_BLOCK_MESSAGE, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_CONTEXT_KEY, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_REMINDER, isStarterIntentRootOwnershipRequired, KEEP_ROOT_ASSISTANT_VISIBLE_OWNER, LOAD_SKILL_CONTINUATION_REMINDER, LOAD_SKILL_CONTINUE_SAME_TURN, LOAD_SKILL_CONTINUE_SAME_TURN_NOW, LOAD_SKILL_DELEGATION_THRESHOLD, LOAD_SKILL_OVERRIDE_FORWARDING, LOAD_SKILL_ROOT_OWNERSHIP, NO_DELEGATION_NARRATION_UNLESS_ASKED, ROOT_OWNED_CHILD_RESULT_INSTRUCTION, type RootOwnedChildResultHint, type RootOwnedChildResultHinted, shouldReinforceLoadSkillContinuation, SLASH_COMMAND_ARTIFACT_REMINDER, SYNTHESIZE_DELEGATED_FINDINGS_IN_ROOT_VOICE, withRootOwnedChildResultHint, } from "./conversation/delegation-policy.js";
|
|
213
213
|
export { listRuntimeBuiltinSkillReferenceFiles, listRuntimeBuiltinSkillReferences, readRuntimeBuiltinDirectorySkill, readRuntimeBuiltinFlatSkill, readRuntimeBuiltinSkill, readRuntimeBuiltinSkillEntries, readRuntimeBuiltinSkillReferenceFile, resolveRuntimeBuiltinSkillReferenceFilePath, resolveRuntimeBuiltinSkillsDir, type RuntimeBuiltinSkillEntriesResult, } from "./runtime/builtin-skill-files.js";
|
|
214
214
|
export { createRuntimeProjectFilesClient, getRuntimeProjectFile, getRuntimeProjectFiles, type RuntimeGetProjectFileOptions, type RuntimeProjectFile, type RuntimeProjectFileListItem, runtimeProjectFileListItemSchema, RuntimeProjectFilesApiAuthError, type RuntimeProjectFilesApiOptions, runtimeProjectFileSchema, type RuntimeProjectFilesClient, type RuntimeProjectFilesClientOptions, type RuntimeProjectFilesFetch, type RuntimeProjectFilesTrace, } from "./runtime/project-files-client.js";
|
|
215
215
|
export { createHostedAgentProjectSteering, createHostedAgentProjectSteering as createAgentServiceProjectSteering, type HostedAgentProjectSteering, type HostedAgentProjectSteering as AgentServiceProjectSteering, type HostedAgentProjectSteeringLogger, type HostedAgentProjectSteeringLogger as AgentServiceProjectSteeringLogger, type HostedAgentProjectSteeringOptions, type HostedAgentProjectSteeringOptions as AgentServiceProjectSteeringOptions, type HostedAgentProjectSteeringOptionsData, type HostedAgentProjectSteeringOptionsData as AgentServiceProjectSteeringOptionsData, hostedAgentProjectSteeringOptionsSchema, } from "./hosted/agent-project-steering.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/agent/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/agent/index.ts"],"names":[],"mappings":"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"}
|
package/esm/src/agent/index.js
CHANGED
|
@@ -206,7 +206,7 @@ export { getHostedChildWrittenArtifactPath, isHostedChildCreateFileAlreadyExists
|
|
|
206
206
|
export { buildDefaultResearchArtifactPathReminder, buildDefaultResearchArtifactPaths, shouldInjectDefaultResearchArtifactPath, withDefaultResearchArtifactPath, } from "./artifacts/default-research-artifact-policy.js";
|
|
207
207
|
export { applyDefaultResearchArtifactPath, createDefaultResearchRunArtifactMirrorHandler, extractLatestUserText, fetchLatestConversationUserText, mirrorDefaultResearchRunArtifact, shouldRetryCreateResearchArtifactAsUpdate, updateDefaultResearchArtifacts, } from "./artifacts/default-research-artifact-support.js";
|
|
208
208
|
export { containsExactArtifactPathValue, evaluateSlashCommandArtifactPolicy, } from "./artifacts/slash-command-artifact-policy.js";
|
|
209
|
-
export { addFirstTurnStarterIntentRootOwnershipReminder, addLoadSkillContinuationReminder, addSlashCommandArtifactReminder, buildInvokeAgentFollowupInstruction, buildRootOwnedChildResultHint, buildRootOwnedDelegatedFindingsInstruction, buildStarterIntentRootOwnershipBlockMessage, buildStarterIntentRootOwnershipReminder, DELEGATE_ONLY_WHEN_MATERIALLY_HELPFUL, evaluateStarterIntentTurnPolicy, extractStarterIntentId, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_BLOCK_MESSAGE, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_CONTEXT_KEY, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_REMINDER, isStarterIntentRootOwnershipRequired, KEEP_ROOT_ASSISTANT_VISIBLE_OWNER, LOAD_SKILL_CONTINUATION_REMINDER, LOAD_SKILL_CONTINUE_SAME_TURN, LOAD_SKILL_CONTINUE_SAME_TURN_NOW, LOAD_SKILL_DELEGATION_THRESHOLD, LOAD_SKILL_OVERRIDE_FORWARDING, LOAD_SKILL_ROOT_OWNERSHIP,
|
|
209
|
+
export { addFirstTurnStarterIntentRootOwnershipReminder, addLoadSkillContinuationReminder, addSlashCommandArtifactReminder, buildInvokeAgentFollowupInstruction, buildRootOwnedChildResultHint, buildRootOwnedDelegatedFindingsInstruction, buildStarterIntentRootOwnershipBlockMessage, buildStarterIntentRootOwnershipReminder, DELEGATE_ONLY_WHEN_MATERIALLY_HELPFUL, evaluateStarterIntentTurnPolicy, extractStarterIntentId, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_BLOCK_MESSAGE, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_CONTEXT_KEY, FIRST_TURN_STARTER_INTENT_ROOT_OWNERSHIP_REMINDER, isStarterIntentRootOwnershipRequired, KEEP_ROOT_ASSISTANT_VISIBLE_OWNER, LOAD_SKILL_CONTINUATION_REMINDER, LOAD_SKILL_CONTINUE_SAME_TURN, LOAD_SKILL_CONTINUE_SAME_TURN_NOW, LOAD_SKILL_DELEGATION_THRESHOLD, LOAD_SKILL_OVERRIDE_FORWARDING, LOAD_SKILL_ROOT_OWNERSHIP, NO_DELEGATION_NARRATION_UNLESS_ASKED, ROOT_OWNED_CHILD_RESULT_INSTRUCTION, shouldReinforceLoadSkillContinuation, SLASH_COMMAND_ARTIFACT_REMINDER, SYNTHESIZE_DELEGATED_FINDINGS_IN_ROOT_VOICE, withRootOwnedChildResultHint, } from "./conversation/delegation-policy.js";
|
|
210
210
|
export { listRuntimeBuiltinSkillReferenceFiles, listRuntimeBuiltinSkillReferences, readRuntimeBuiltinDirectorySkill, readRuntimeBuiltinFlatSkill, readRuntimeBuiltinSkill, readRuntimeBuiltinSkillEntries, readRuntimeBuiltinSkillReferenceFile, resolveRuntimeBuiltinSkillReferenceFilePath, resolveRuntimeBuiltinSkillsDir, } from "./runtime/builtin-skill-files.js";
|
|
211
211
|
export { createRuntimeProjectFilesClient, getRuntimeProjectFile, getRuntimeProjectFiles, runtimeProjectFileListItemSchema, RuntimeProjectFilesApiAuthError, runtimeProjectFileSchema, } from "./runtime/project-files-client.js";
|
|
212
212
|
export { createHostedAgentProjectSteering, createHostedAgentProjectSteering as createAgentServiceProjectSteering, hostedAgentProjectSteeringOptionsSchema, } from "./hosted/agent-project-steering.js";
|
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
* `deno task generate` to regenerate.
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
-
export const HYDRATION_RUNTIME_BUNDLE = '// src/html/hydration-script-builder/runtime/main.ts\nimport * as React from "react";\nimport { createRoot } from "react-dom/client";\nimport { RouterProvider, useRouter as useRouterFromModule } from "veryfront/router";\nimport * as RouterRuntime from "veryfront/router";\nimport { PageContextProvider } from "veryfront/context";\n\n// src/routing/flatten-route-params.ts\nfunction flattenRouteParams(params) {\n if (!params) return {};\n const flat = {};\n for (const [key, value] of Object.entries(params)) {\n if (value === void 0) continue;\n flat[key] = Array.isArray(value) ? value.join("/") : value;\n }\n return flat;\n}\n\n// src/html/hydration-script-builder/runtime/shared.ts\nfunction moduleServerUrl(window) {\n return window.location.origin + "/_vf_modules";\n}\nfunction createLogging(window) {\n const DEBUG = Boolean(\n window.__VERYFRONT_DEBUG__ || new URLSearchParams(window.location.search).has("vf_debug")\n );\n const log = DEBUG ? console.log.bind(console, "[Veryfront]") : () => {\n };\n const logError = console.error.bind(console, "[Veryfront]");\n function logBackgroundFetchFailure(reason, path, error) {\n const message = error?.message ?? String(error);\n log(reason + " failed:", path, message);\n }\n const perfTimers = /* @__PURE__ */ new Map();\n const perfStart = DEBUG ? (label) => {\n perfTimers.set(label, performance.now());\n } : () => {\n };\n const perfEnd = DEBUG ? (label) => {\n const start = perfTimers.get(label);\n if (start === void 0) return 0;\n const duration = performance.now() - start;\n perfTimers.delete(label);\n console.log(\n "[Veryfront Perf] %c" + label + ": %c" + duration.toFixed(2) + "ms",\n "color: #888",\n duration > 100 ? "color: #f00; font-weight: bold" : "color: #0a0"\n );\n return duration;\n } : () => 0;\n return { DEBUG, log, logError, logBackgroundFetchFailure, perfStart, perfEnd };\n}\nfunction isAbortError(error) {\n return error?.name === "AbortError";\n}\nfunction resolveDocumentNavigationUrl(target, origin) {\n try {\n const url = new URL(target, origin);\n if (url.protocol === "http:" || url.protocol === "https:") return url.href;\n } catch (_) {\n }\n return null;\n}\nfunction getDocumentNonce(document2) {\n const element = document2.querySelector("script[nonce], style[nonce], link[nonce]");\n if (!element) return void 0;\n return element.nonce || element.getAttribute("nonce") || void 0;\n}\n\n// src/html/hydration-data-element.ts\nvar HYDRATION_DATA_ELEMENT_ID = "veryfront-hydration-data";\nfunction findServerHydrationDataElement(document2) {\n try {\n const matches = [...document2.querySelectorAll(`[id="${HYDRATION_DATA_ELEMENT_ID}"]`)];\n if (matches.length !== 1) return null;\n const body = document2.body;\n if (!body) return null;\n const element = matches[0];\n if (body.firstElementChild !== element && element.parentElement !== body) return null;\n if (element.tagName?.toLowerCase() !== "script") return null;\n if (element.getAttribute("type")?.trim().toLowerCase() !== "application/json") return null;\n return element;\n } catch {\n return null;\n }\n}\n\n// src/html/hydration-script-builder/runtime/hydration-data.ts\nfunction readInitialHydrationData(document2) {\n try {\n const element = findServerHydrationDataElement(document2);\n return JSON.parse(element && element.textContent ? element.textContent : "{}") || {};\n } catch (_) {\n return {};\n }\n}\nfunction readDocumentDependencyPinningCacheKey(initialHydrationData2) {\n return typeof initialHydrationData2.dependencyPinningCacheKey === "string" && initialHydrationData2.dependencyPinningCacheKey.startsWith("on:") ? initialHydrationData2.dependencyPinningCacheKey : null;\n}\n\n// src/html/hydration-script-builder/runtime/snapshot-modules.ts\nvar RECOVERY_STATE_KEY = "__VF_DEPENDENCY_SNAPSHOT_RECOVERY_STARTED__";\nasync function isDependencySnapshotConflictResponse(response) {\n if (!response || response.status !== 409) return false;\n try {\n const clone = response.clone?.() ?? response;\n const body = (await clone.text?.() ?? "").trim();\n return body === "Unknown dependency snapshot" || body === "export default null; // Unknown dependency snapshot";\n } catch (_) {\n return false;\n }\n}\nfunction createSnapshotModuleImporter(deps) {\n async function recoverFromSnapshotBoundModuleFailure(moduleUrl, allowDocumentReload = true) {\n try {\n const parsedUrl = new URL(moduleUrl, "http://veryfront.local");\n const snapshotKeys = parsedUrl.searchParams.getAll("pins");\n const pathMatch = parsedUrl.pathname.match(\n /^\\/_vf_modules\\/_pins\\/([^/]+)(?:\\/|$)/\n );\n if (pathMatch) {\n try {\n snapshotKeys.push(decodeURIComponent(pathMatch[1]));\n } catch (_) {\n return false;\n }\n }\n if (snapshotKeys.length !== 1 || !/^on:[A-Za-z0-9._-]+$/.test(snapshotKeys[0])) return false;\n const response = await deps.fetchModule(moduleUrl, { cache: "no-store" });\n if (!await isDependencySnapshotConflictResponse(response)) return false;\n if (!allowDocumentReload) return true;\n if (deps.recoveryState[RECOVERY_STATE_KEY] === true) return true;\n deps.recoveryState[RECOVERY_STATE_KEY] = true;\n try {\n deps.reloadDocument();\n } catch (_) {\n delete deps.recoveryState[RECOVERY_STATE_KEY];\n return false;\n }\n return true;\n } catch (_) {\n return false;\n }\n }\n async function importSnapshotBoundModule(moduleUrl, allowDocumentReload = true) {\n try {\n return await deps.importModule(moduleUrl);\n } catch (error) {\n const snapshotConflict = await recoverFromSnapshotBoundModuleFailure(\n moduleUrl,\n allowDocumentReload\n );\n if (snapshotConflict && !allowDocumentReload) {\n const conflictError = new Error(\n "Dependency snapshot is unavailable during speculative module prefetch"\n );\n conflictError.name = "DependencySnapshotConflictError";\n conflictError.dependencySnapshotConflict = true;\n conflictError.cause = error;\n throw conflictError;\n }\n throw error;\n }\n }\n return { importSnapshotBoundModule, recoverFromSnapshotBoundModuleFailure };\n}\nfunction isDependencySnapshotConflict(error) {\n return Boolean(error?.dependencySnapshotConflict);\n}\n\n// src/utils/version-constant.ts\nvar VERSION = "0.1.1216";\n\n// src/html/hydration-script-builder/runtime/module-urls.ts\nfunction appendQueryParam(url, key, value) {\n return url + (url.includes("?") ? "&" : "?") + key + "=" + value;\n}\nfunction appendDependencyPinningVersion(url, moduleData) {\n const pinKey = moduleData && moduleData.dependencyPinningCacheKey;\n if (typeof pinKey !== "string" || !pinKey.startsWith("on:")) return url;\n const hashIndex = url.indexOf("#");\n const hash = hashIndex >= 0 ? url.slice(hashIndex) : "";\n const withoutHash = hashIndex >= 0 ? url.slice(0, hashIndex) : url;\n const queryIndex = withoutHash.indexOf("?");\n const base = queryIndex >= 0 ? withoutHash.slice(0, queryIndex) : withoutHash;\n const params = new URLSearchParams(queryIndex >= 0 ? withoutHash.slice(queryIndex + 1) : "");\n const modulePrefix = "/_vf_modules/";\n const prefixIndex = base.indexOf(modulePrefix);\n const origin = prefixIndex >= 0 ? base.slice(0, prefixIndex) : "";\n if (prefixIndex >= 0 && (origin === "" || /^https?:\\/\\/[^/]+$/i.test(origin))) {\n const pathStart = prefixIndex + modulePrefix.length;\n let modulePath = base.slice(pathStart);\n if (modulePath.startsWith("_pins/")) {\n const existingKeyEnd = modulePath.indexOf("/", "_pins/".length);\n const encodedExistingKey = existingKeyEnd < 0 ? modulePath.slice("_pins/".length) : modulePath.slice("_pins/".length, existingKeyEnd);\n let existingKey;\n try {\n existingKey = decodeURIComponent(encodedExistingKey);\n } catch {\n existingKey = void 0;\n }\n if (existingKey && /^on:[A-Za-z0-9._-]+$/.test(existingKey)) {\n if (existingKeyEnd < 0) return url;\n modulePath = modulePath.slice(existingKeyEnd + 1);\n }\n }\n params.delete("pins");\n const query = params.toString();\n return base.slice(0, pathStart) + "_pins/" + encodeURIComponent(pinKey) + "/" + modulePath + (query ? "?" + query : "") + hash;\n }\n params.set("pins", pinKey);\n return base + "?" + params.toString() + hash;\n}\nfunction componentCacheKey(path, moduleData) {\n const pinKey = moduleData && moduleData.dependencyPinningCacheKey;\n return typeof pinKey === "string" && pinKey.startsWith("on:") ? path + "|vf_pins|" + pinKey : path;\n}\nfunction normalizeReleaseAssetModulePath(path) {\n return String(path || "").replace(/^\\/?_vf_modules\\//, "").replace(/^\\/+/, "").replace(/[?#].*$/, "");\n}\nfunction buildPinnedRscModuleUrl(path, moduleData) {\n let moduleUrl = "/_veryfront/rsc/module?rel=" + encodeURIComponent(path);\n const pinKey = moduleData && moduleData.dependencyPinningCacheKey;\n if (typeof pinKey === "string" && pinKey.startsWith("on:")) {\n moduleUrl += "&pins=" + encodeURIComponent(pinKey);\n }\n return moduleUrl;\n}\nfunction buildPageDataEndpoint(path, origin) {\n const targetUrl = new URL(path, origin);\n const normalizedPath = targetUrl.pathname === "/" ? "" : targetUrl.pathname.replace(/^\\//, "");\n const endpointUrl = new URL(\n "/_veryfront/page-data/" + normalizedPath + ".json",\n origin\n );\n endpointUrl.search = targetUrl.search;\n return endpointUrl.pathname + endpointUrl.search;\n}\nfunction pageDataCacheIdentity(path, documentDependencyPinningCacheKey2) {\n return documentDependencyPinningCacheKey2 ? documentDependencyPinningCacheKey2 + "|path:" + path : path;\n}\nfunction assertPageDataMatchesDocumentSnapshot(path, data, documentDependencyPinningCacheKey2) {\n if (!documentDependencyPinningCacheKey2) return data;\n if (data && data.dependencyPinningCacheKey === documentDependencyPinningCacheKey2) {\n return data;\n }\n const error = new Error("Page data dependency snapshot does not match the document");\n error.status = 409;\n error.dependencySnapshotMismatch = true;\n error.path = path;\n throw error;\n}\n\n// src/html/hydration-script-builder/runtime/component-loader.ts\nvar VERYFRONT_RUNTIME_VERSION = VERSION;\nfunction createComponentLoader(deps) {\n const { window, moduleServerUrl: moduleServerUrl2 } = deps;\n const { DEBUG, log, logError } = deps.logging;\n const componentCache = /* @__PURE__ */ new Map();\n const loadingPromises = /* @__PURE__ */ new Map();\n let releaseId = null;\n let releaseAssetModules = null;\n let studioEmbed = false;\n let hmrRefreshTimestamp = null;\n function clearComponentCache(path) {\n if (!path) {\n componentCache.clear();\n loadingPromises.clear();\n log("Cleared all component caches");\n return;\n }\n for (const key of componentCache.keys()) {\n if (key === path || key.startsWith(path + "|vf_pins|")) {\n componentCache.delete(key);\n }\n }\n for (const key of loadingPromises.keys()) {\n if (key === path || key.startsWith(path + "|vf_pins|")) {\n loadingPromises.delete(key);\n }\n }\n log("Cleared component cache for:", path);\n }\n function setReleaseId(value) {\n releaseId = typeof value === "string" && value ? value : null;\n window.__veryfrontReleaseId = releaseId;\n }\n function appendReleaseModuleVersion(url) {\n if (!releaseId || url.includes("vf_release=")) return url;\n let versionedUrl = appendQueryParam(url, "vf_release", encodeURIComponent(releaseId));\n versionedUrl = appendQueryParam(\n versionedUrl,\n "vf_runtime",\n encodeURIComponent(VERYFRONT_RUNTIME_VERSION)\n );\n return versionedUrl;\n }\n function setReleaseAssetModules(value) {\n releaseAssetModules = value && typeof value === "object" && !Array.isArray(value) ? value : null;\n window.__veryfrontReleaseAssetModules = releaseAssetModules;\n }\n function resolveReleaseAssetModuleUrl(path) {\n if (!releaseAssetModules || studioEmbed || hmrRefreshTimestamp) return null;\n const key = normalizeReleaseAssetModulePath(path);\n if (releaseAssetModules[key]) return releaseAssetModules[key];\n const withoutExt = key.replace(/\\.(tsx|ts|jsx|mdx|js|mjs)$/, "");\n const extensions = [".tsx", ".ts", ".jsx", ".mdx", ".js"];\n for (const ext of extensions) {\n const candidate = withoutExt + ext;\n if (releaseAssetModules[candidate]) return releaseAssetModules[candidate];\n }\n return null;\n }\n function pathToModuleUrl(path, embedInStudio, moduleData) {\n const releaseAssetUrl = resolveReleaseAssetModuleUrl(path);\n if (releaseAssetUrl) return releaseAssetUrl;\n const pattern = /(pages|components|app|lib|layouts|shared|features)\\/(.+)\\.(tsx|ts|jsx|mdx)$/;\n const match = path.match(new RegExp("/" + pattern.source)) || path.match(new RegExp("^" + pattern.source));\n let url;\n if (match) {\n url = moduleServerUrl2 + "/" + match[1] + "/" + match[2] + ".js";\n } else {\n const hasKnownExt = /\\.(tsx|ts|jsx|mdx|js|mjs)$/.test(path);\n url = moduleServerUrl2 + "/" + (hasKnownExt ? path.replace(/\\.(tsx|ts|jsx|mdx)$/, ".js") : path + ".js");\n }\n if (embedInStudio) url = appendQueryParam(url, "studio_embed", "true");\n if (hmrRefreshTimestamp) url = appendQueryParam(url, "t", hmrRefreshTimestamp);\n if (!embedInStudio && !hmrRefreshTimestamp) url = appendReleaseModuleVersion(url);\n url = appendDependencyPinningVersion(url, moduleData);\n return url;\n }\n function setStudioEmbed(value) {\n studioEmbed = value;\n window.__veryfrontStudioEmbed = value;\n }\n function setHMRRefreshTimestamp(timestamp) {\n hmrRefreshTimestamp = timestamp;\n window.__veryfrontHMRRefreshTimestamp = timestamp;\n }\n async function loadComponent(path, moduleData, options = {}) {\n if (!path) return null;\n const cacheKey = componentCacheKey(path, moduleData);\n if (componentCache.has(cacheKey)) {\n log("Component cached:", path);\n return componentCache.get(cacheKey);\n }\n const existingPromise = loadingPromises.get(cacheKey);\n if (existingPromise) return existingPromise;\n const loadPromise = (async () => {\n try {\n const moduleUrl = pathToModuleUrl(path, studioEmbed, moduleData);\n const start = DEBUG ? performance.now() : 0;\n log("Loading component:", moduleUrl);\n const module = await deps.snapshotModules.importSnapshotBoundModule(\n moduleUrl,\n options.allowDocumentReload !== false\n );\n const component = module.MDXLayout || module.MainLayout || module.default || module;\n if (DEBUG) {\n const duration = performance.now() - start;\n console.log(\n "[Veryfront Perf] %cimport:" + path.split("/").pop() + ": %c" + duration.toFixed(2) + "ms",\n "color: #888",\n duration > 50 ? "color: #f00; font-weight: bold" : "color: #0a0"\n );\n }\n componentCache.set(cacheKey, component);\n return component;\n } catch (error) {\n if (isDependencySnapshotConflict(error)) throw error;\n logError("Failed to load component:", path, error);\n return null;\n } finally {\n loadingPromises.delete(cacheKey);\n }\n })();\n loadingPromises.set(cacheKey, loadPromise);\n return loadPromise;\n }\n return {\n loadComponent,\n pathToModuleUrl,\n clearComponentCache,\n setStudioEmbed,\n setReleaseId,\n setReleaseAssetModules,\n setHMRRefreshTimestamp\n };\n}\n\n// src/html/hydration-script-builder/runtime/route-timing.ts\nvar MAX_ROUTE_TIMINGS = 100;\nvar MAX_SERVER_TIMING_LENGTH = 1024;\nfunction routeTimingNow() {\n return typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();\n}\nfunction sanitizeServerTimingMetricName(name) {\n return String(name || "").trim().replace(/[^A-Za-z0-9_.-]/g, "_").slice(0, 128);\n}\nfunction sanitizeServerTimingHeader(value) {\n if (!value) return null;\n const metrics = [];\n const printable = String(value).replace(/[^\\x20-\\x7E]/g, " ").trim();\n if (!printable) return null;\n for (const item of printable.split(",")) {\n const segments = item.split(";").map((segment) => segment.trim()).filter(Boolean);\n const name = sanitizeServerTimingMetricName(segments[0]);\n if (!name) continue;\n for (const segment of segments.slice(1)) {\n const [key, rawValue = ""] = segment.split("=");\n if ((key ?? "").trim().toLowerCase() !== "dur") continue;\n const duration = Number(rawValue.trim().replace(/^"|"$/g, ""));\n if (!Number.isFinite(duration) || duration < 0) continue;\n metrics.push(name + ";dur=" + (Math.round(duration * 100) / 100).toFixed(2));\n break;\n }\n }\n const sanitized = metrics.join(", ");\n return sanitized ? sanitized.slice(0, MAX_SERVER_TIMING_LENGTH) : null;\n}\nfunction parseServerTimingMetrics(value) {\n const header = sanitizeServerTimingHeader(value);\n if (!header) return null;\n const metrics = {};\n for (const item of header.split(",")) {\n const segments = item.split(";").map((segment) => segment.trim()).filter(Boolean);\n const name = sanitizeServerTimingMetricName(segments[0]);\n if (!name) continue;\n for (const segment of segments.slice(1)) {\n const [key, rawValue = ""] = segment.split("=");\n if ((key ?? "").trim().toLowerCase() !== "dur") continue;\n const duration = Number(rawValue.trim().replace(/^"|"$/g, ""));\n if (Number.isFinite(duration) && duration >= 0) {\n metrics[name] = Math.round(duration * 100) / 100;\n }\n }\n }\n return Object.keys(metrics).length ? metrics : null;\n}\nfunction readResponseServerTiming(response) {\n try {\n return sanitizeServerTimingHeader(response.headers?.get("server-timing"));\n } catch (_) {\n return null;\n }\n}\nfunction roundRouteTimingValue(value) {\n return Math.round(value * 100) / 100;\n}\nfunction extractResourceTiming(entry) {\n const fields = [\n "startTime",\n "requestStart",\n "responseStart",\n "responseEnd",\n "duration",\n "transferSize",\n "encodedBodySize",\n "decodedBodySize"\n ];\n const timing = {};\n for (const field of fields) {\n const value = entry?.[field];\n if (typeof value === "number" && Number.isFinite(value) && value >= 0) {\n timing[field] = roundRouteTimingValue(value);\n }\n }\n return Object.keys(timing).length ? timing : null;\n}\nfunction createRouteTimingRecorder(window, logging2) {\n const { log } = logging2;\n function emitRouteTiming(phase, path, startedAt, detail = {}) {\n const entry = {\n phase,\n path,\n duration: Math.max(0, routeTimingNow() - startedAt),\n timestamp: Date.now(),\n ...detail\n };\n const timings = Array.isArray(window.__veryfrontRouteTimings) ? window.__veryfrontRouteTimings : [];\n timings.push(entry);\n if (timings.length > MAX_ROUTE_TIMINGS) {\n timings.splice(0, timings.length - MAX_ROUTE_TIMINGS);\n }\n window.__veryfrontRouteTimings = timings;\n try {\n window.dispatchEvent(new CustomEvent("veryfront:route-timing", { detail: entry }));\n } catch (_) {\n }\n log("Route timing:", entry);\n return entry;\n }\n function getPageDataResourceTiming(endpoint, fetchStartedAt) {\n try {\n if (typeof performance === "undefined" || typeof performance.getEntriesByName !== "function") {\n return null;\n }\n const href = new URL(endpoint, window.location.href).href;\n const entries = performance.getEntriesByName(href, "resource");\n if (!entries.length) return null;\n for (let index = entries.length - 1; index >= 0; index--) {\n const entry = entries[index];\n const responseEnd = entry?.responseEnd;\n if (typeof responseEnd === "number" && Number.isFinite(responseEnd) && responseEnd + 1 >= fetchStartedAt) {\n return extractResourceTiming(entry);\n }\n }\n return null;\n } catch (_) {\n return null;\n }\n }\n function buildPageDataTimingDetail(response, endpoint, fetchStartedAt, source) {\n const detail = { source, status: response.status };\n const serverTiming = readResponseServerTiming(response);\n if (serverTiming) {\n detail.serverTiming = serverTiming;\n const serverTimingMetrics = parseServerTimingMetrics(serverTiming);\n if (serverTimingMetrics) detail.serverTimingMetrics = serverTimingMetrics;\n }\n const resourceTiming = getPageDataResourceTiming(response.url || endpoint, fetchStartedAt);\n if (resourceTiming) detail.resourceTiming = resourceTiming;\n return detail;\n }\n return { emitRouteTiming, buildPageDataTimingDetail };\n}\n\n// src/html/managed-head-protocol.ts\nvar HEAD_PROVENANCE_ATTRIBUTE = "data-vf-head";\nvar HEAD_LEGACY_MANAGED_ATTRIBUTE = "data-veryfront-managed";\nvar HEAD_CONTENT_HASH_ATTRIBUTE = "data-vf-hash";\nvar HEAD_REACT_MANAGED_ATTRIBUTE = "data-vf-react-head";\nvar HEAD_REACT_OWNER_ATTRIBUTE = "data-vf-react-head-owner";\nvar HEAD_ROUTE_MANAGED_ATTRIBUTE = "data-vf-route-head";\nvar HEAD_SERVER_COMMIT_ATTRIBUTE = "data-vf-server-head-commit";\nvar HEAD_SHELL_PROVENANCE_ATTRIBUTE = "data-vf-shell-head";\nvar HEAD_SSR_PAYLOAD_ATTRIBUTE = "data-vf-ssr-head";\nvar MAX_MANAGED_HEAD_BYTES = 2 * 1024 * 1024;\nvar MAX_MANAGED_HEAD_PAYLOAD_BYTES = MAX_MANAGED_HEAD_BYTES * 2;\nvar SINGLETON_META_KEYS = /* @__PURE__ */ new Set([\n "description",\n "robots",\n "viewport",\n "referrer",\n "color-scheme",\n "application-name",\n "generator",\n "og:title",\n "og:description",\n "og:url",\n "og:type",\n "og:site_name",\n "og:locale",\n "twitter:card",\n "twitter:site",\n "twitter:creator",\n "twitter:title",\n "twitter:description",\n "twitter:image",\n "twitter:image:alt"\n]);\nvar SINGLETON_LINK_RELS = /* @__PURE__ */ new Set([\n "canonical",\n "manifest",\n "amphtml"\n]);\nvar MAX_HEAD_ATTRIBUTE_VALUE_BYTES = 64 * 1024;\nvar MAX_HEAD_ATTRIBUTE_BYTES = 1024 * 1024;\nvar MAX_HEAD_CONTENT_BYTES = 1024 * 1024;\nvar headTextEncoder = new TextEncoder();\nvar BOOLEAN_HEAD_ATTRIBUTES = /* @__PURE__ */ new Set([\n "async",\n "defer",\n "disabled",\n "itemscope",\n "nomodule"\n]);\nfunction isHeadFrameworkAttribute(name) {\n switch (name.toLowerCase()) {\n case HEAD_PROVENANCE_ATTRIBUTE:\n case HEAD_LEGACY_MANAGED_ATTRIBUTE:\n case HEAD_CONTENT_HASH_ATTRIBUTE:\n case HEAD_REACT_MANAGED_ATTRIBUTE:\n case HEAD_REACT_OWNER_ATTRIBUTE:\n case HEAD_ROUTE_MANAGED_ATTRIBUTE:\n case HEAD_SERVER_COMMIT_ATTRIBUTE:\n case HEAD_SHELL_PROVENANCE_ATTRIBUTE:\n case HEAD_SSR_PAYLOAD_ATTRIBUTE:\n return true;\n default:\n return false;\n }\n}\nfunction normalizeHeadIdentityValue(value) {\n const normalized = value?.trim().toLowerCase();\n return normalized || void 0;\n}\nfunction readOwnString(record, key) {\n try {\n const descriptor = Reflect.getOwnPropertyDescriptor(record, key);\n return descriptor && !descriptor.get && !descriptor.set && "value" in descriptor && typeof descriptor.value === "string" ? descriptor.value : void 0;\n } catch {\n return void 0;\n }\n}\nfunction headMetaSingletonKeyFromRecord(meta) {\n if (readOwnString(meta, "charset") !== void 0) return "meta:charset";\n const key = normalizeHeadIdentityValue(\n readOwnString(meta, "property") ?? readOwnString(meta, "name")\n );\n if (!key) return void 0;\n if (key === "theme-color") {\n return `meta:theme-color:${readOwnString(meta, "media")?.trim() ?? ""}`;\n }\n return SINGLETON_META_KEYS.has(key) ? `meta:${key}` : void 0;\n}\nfunction headLinkSingletonKeyFromRecord(link) {\n const rel = normalizeHeadIdentityValue(readOwnString(link, "rel"));\n return rel && SINGLETON_LINK_RELS.has(rel) ? `link:${rel}` : void 0;\n}\n\n// src/html/client-head-manager.ts\nvar HEAD_MANAGER_STATE_SYMBOL = /* @__PURE__ */ Symbol.for(\n "veryfront.client-head-manager.v2"\n);\nvar CROSS_PAGE_PRESERVED_SINGLETON_KEYS = /* @__PURE__ */ new Set([\n "meta:viewport",\n "link:manifest"\n]);\nfunction getClientHeadManagerState() {\n const globalState = globalThis;\n return globalState[HEAD_MANAGER_STATE_SYMBOL] ?? (globalState[HEAD_MANAGER_STATE_SYMBOL] = {\n documents: /* @__PURE__ */ new WeakMap()\n });\n}\nfunction readElementAttributes(element) {\n const attributes = [];\n for (const attribute of element.attributes) {\n const name = attribute.name.toLowerCase();\n if (isHeadFrameworkAttribute(name)) continue;\n const nonce = name === "nonce" && "nonce" in element ? element.nonce : "";\n const value = BOOLEAN_HEAD_ATTRIBUTES.has(name) ? "" : nonce || attribute.value;\n attributes.push([name, value]);\n }\n return attributes.sort(([left], [right]) => left.localeCompare(right));\n}\nfunction elementSingletonKey(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName === "title") return "title";\n const attributes = Object.fromEntries(readElementAttributes(element));\n if (tagName === "meta") return headMetaSingletonKeyFromRecord(attributes);\n if (tagName === "link") return headLinkSingletonKeyFromRecord(attributes);\n return void 0;\n}\nfunction promoteToShellHeadBaseline(element) {\n for (const attribute of [...element.attributes]) {\n if (isHeadFrameworkAttribute(attribute.name)) {\n element.removeAttribute(attribute.name);\n }\n }\n element.setAttribute(HEAD_SHELL_PROVENANCE_ATTRIBUTE, "true");\n}\nfunction isCrossPagePreservedSingleton(element, singletonKey = elementSingletonKey(element)) {\n return element.parentElement !== null && singletonKey !== void 0 && CROSS_PAGE_PRESERVED_SINGLETON_KEYS.has(singletonKey);\n}\nfunction isFrameworkOwnedHeadElement(element) {\n return element.getAttribute(HEAD_PROVENANCE_ATTRIBUTE) === "true" || element.getAttribute(HEAD_REACT_MANAGED_ATTRIBUTE) === "true" || element.getAttribute(HEAD_LEGACY_MANAGED_ATTRIBUTE) === "1" || element.getAttribute(HEAD_ROUTE_MANAGED_ATTRIBUTE) === "true" || element.getAttribute(HEAD_SHELL_PROVENANCE_ATTRIBUTE) === "true";\n}\nfunction retireFrameworkHeadElement(element) {\n if (isCrossPagePreservedSingleton(element)) {\n promoteToShellHeadBaseline(element);\n return;\n }\n element.remove();\n}\nfunction retireClientHeadOwnership(targetDocument) {\n const manager = getClientHeadManagerState().documents.get(targetDocument);\n if (manager) {\n manager.retire();\n return;\n }\n for (const element of [...targetDocument.head?.children ?? []]) {\n if (isFrameworkOwnedHeadElement(element)) retireFrameworkHeadElement(element);\n }\n}\n\n// src/html/client-route-head.ts\nfunction updateRouteTitle(title, targetDocument = document) {\n if (typeof title !== "string" || !title) return;\n const titles = [...targetDocument.head.querySelectorAll("title")];\n if (titles.some((element) => element.getAttribute(HEAD_LEGACY_MANAGED_ATTRIBUTE) === "1")) {\n return;\n }\n let titleElement = titles.find(\n (element) => element.getAttribute(HEAD_ROUTE_MANAGED_ATTRIBUTE) === "true"\n );\n for (const element of titles) {\n if (element !== titleElement) element.remove();\n }\n if (!titleElement) {\n titleElement = targetDocument.createElement("title");\n titleElement.setAttribute(HEAD_ROUTE_MANAGED_ATTRIBUTE, "true");\n targetDocument.head.appendChild(titleElement);\n }\n titleElement.textContent = title;\n}\nfunction updateRouteMetaTag(targetDocument, selector, attributeName, attributeValue, content) {\n const matches = [...targetDocument.head.querySelectorAll(selector)];\n if (matches.some((element) => element.getAttribute(HEAD_LEGACY_MANAGED_ATTRIBUTE) === "1")) {\n return;\n }\n let metaTag = matches.find(\n (element) => element.getAttribute(HEAD_ROUTE_MANAGED_ATTRIBUTE) === "true"\n );\n if (!metaTag) {\n metaTag = targetDocument.createElement("meta");\n metaTag.setAttribute(attributeName, attributeValue);\n metaTag.setAttribute(HEAD_ROUTE_MANAGED_ATTRIBUTE, "true");\n targetDocument.head.appendChild(metaTag);\n }\n metaTag.setAttribute("content", content);\n}\nfunction updateRouteMetaTags(metadata, targetDocument = document) {\n if (typeof metadata.description === "string" && metadata.description) {\n updateRouteMetaTag(\n targetDocument,\n \'meta[name="description"]\',\n "name",\n "description",\n metadata.description\n );\n }\n if (typeof metadata.ogTitle === "string" && metadata.ogTitle) {\n updateRouteMetaTag(\n targetDocument,\n \'meta[property="og:title"]\',\n "property",\n "og:title",\n metadata.ogTitle\n );\n }\n}\nfunction handoffClientRouteMetadata(metadata, targetDocument = document) {\n const retainedTitle = targetDocument.title;\n retireClientHeadOwnership(targetDocument);\n updateRouteTitle(\n typeof metadata.title === "string" && metadata.title ? metadata.title : retainedTitle,\n targetDocument\n );\n updateRouteMetaTags(metadata, targetDocument);\n}\n\n// src/html/hydration-script-builder/runtime/router.ts\nvar FETCH_TIMEOUT_MS = 1e4;\nvar MAX_RETRIES = 2;\nvar MAX_CACHE_SIZE = 50;\nvar CACHE_TTL_MS = 5 * 60 * 1e3;\nvar BACKGROUND_REFRESH_INTERVAL_MS = 30 * 1e3;\nvar PREFETCH_DELAY_MS = 100;\nvar MAX_PREFETCH_PATHS = 100;\nvar IDLE_PREFETCH_DELAY_MS = 1200;\nvar IDLE_PREFETCH_MAX_LINKS = 4;\nvar VIEWPORT_PREFETCH_MAX_LINKS = 8;\nvar PAGE_DATA_PREFETCH_CONCURRENCY = 2;\nvar VIEWPORT_PREFETCH_ROOT_MARGIN = "200px";\nvar MAX_SCROLL_POSITIONS = 100;\nfunction createRouterRuntime(deps) {\n const { env: env2, logging: logging2, routeTiming: routeTiming2, componentLoader: componentLoader2, snapshotModules: snapshotModules2 } = deps;\n const { window, document: document2, React: React2, RouterProvider: RouterProvider2, PageContextProvider: PageContextProvider2 } = env2;\n const { setTimeout: setTimeout2, clearTimeout: clearTimeout2 } = env2;\n const { log, logError, logBackgroundFetchFailure, perfStart, perfEnd } = logging2;\n const { emitRouteTiming, buildPageDataTimingDetail } = routeTiming2;\n const { loadComponent } = componentLoader2;\n const documentPinKey = deps.documentDependencyPinningCacheKey;\n let hydrationResolve;\n let hydrationReject;\n const hydrationPromise = new Promise((resolve, reject) => {\n hydrationResolve = resolve;\n hydrationReject = reject;\n });\n let hydrationCompleted = false;\n let hydrationFailed = false;\n function signalHydrationComplete() {\n hydrationCompleted = true;\n hydrationResolve();\n log("Hydration complete signal received");\n }\n function signalHydrationFailed(error) {\n hydrationFailed = true;\n hydrationReject(error);\n logError("Hydration failed signal received:", error);\n }\n window.__veryfrontHydrationComplete = signalHydrationComplete;\n window.__veryfrontHydrationFailed = signalHydrationFailed;\n function pageDataCacheIdentity2(path) {\n return pageDataCacheIdentity(path, documentPinKey);\n }\n function navigateDocument(target) {\n const safeUrl = resolveDocumentNavigationUrl(target, window.location.origin);\n if (safeUrl) {\n window.location.href = safeUrl;\n return;\n }\n logError("Refusing an unsafe document navigation:", target);\n window.location.reload();\n }\n let clientBuildVersion = null;\n function checkVersionMismatch(newVersion) {\n if (!clientBuildVersion) {\n clientBuildVersion = newVersion;\n log("Build version initialized:", newVersion);\n return false;\n }\n if (newVersion.serverStart !== clientBuildVersion.serverStart) {\n log("Server restarted, reloading...", {\n old: clientBuildVersion.serverStart,\n new: newVersion.serverStart\n });\n return true;\n }\n if (newVersion.framework !== clientBuildVersion.framework) {\n log("Framework version changed, reloading...", {\n old: clientBuildVersion.framework,\n new: newVersion.framework\n });\n return true;\n }\n if (newVersion.projectUpdated && clientBuildVersion.projectUpdated && newVersion.projectUpdated !== clientBuildVersion.projectUpdated) {\n log("Project content updated, reloading...", {\n old: clientBuildVersion.projectUpdated,\n new: newVersion.projectUpdated\n });\n return true;\n }\n return false;\n }\n const pageDataCache = /* @__PURE__ */ new Map();\n const pendingPageDataFetches = /* @__PURE__ */ new Map();\n const backgroundRefreshTimestamps = /* @__PURE__ */ new Map();\n function getCachedPageData(path) {\n const cacheIdentity = pageDataCacheIdentity2(path);\n const entry = pageDataCache.get(cacheIdentity);\n if (!entry) return null;\n if (Date.now() - entry.timestamp < CACHE_TTL_MS) return entry.data;\n pageDataCache.delete(cacheIdentity);\n backgroundRefreshTimestamps.delete(cacheIdentity);\n return null;\n }\n function setCachedPageData(path, data) {\n const cacheIdentity = pageDataCacheIdentity2(path);\n if (pageDataCache.size >= MAX_CACHE_SIZE) {\n const oldest = pageDataCache.keys().next().value;\n if (oldest) {\n pageDataCache.delete(oldest);\n backgroundRefreshTimestamps.delete(oldest);\n }\n }\n pageDataCache.set(cacheIdentity, { data, timestamp: Date.now() });\n }\n const scrollPositions = /* @__PURE__ */ new Map();\n function saveScrollPosition(path) {\n if (scrollPositions.size >= MAX_SCROLL_POSITIONS) {\n const oldest = scrollPositions.keys().next().value;\n if (oldest) scrollPositions.delete(oldest);\n }\n scrollPositions.set(path, window.scrollY);\n }\n function restoreScrollPosition(path) {\n const savedY = scrollPositions.get(path);\n if (savedY === void 0) return false;\n requestAnimationFrame(() => window.scrollTo(0, savedY));\n return true;\n }\n let progressBar = null;\n let progressTimeout = null;\n function showNavigationProgress() {\n if (!progressBar) {\n progressBar = document2.createElement("div");\n progressBar.id = "vf-nav-progress";\n progressBar.style.cssText = "position:fixed;top:0;left:0;height:3px;width:0;background:linear-gradient(90deg,#0066ff,#00aaff);z-index:99999;transition:width 0.3s ease-out,opacity 0.2s;opacity:1;";\n document2.body.prepend(progressBar);\n }\n progressBar.style.opacity = "1";\n progressBar.style.width = "30%";\n progressTimeout = setTimeout2(() => {\n if (progressBar?.style) progressBar.style.width = "70%";\n }, 300);\n document2.body.setAttribute("aria-busy", "true");\n }\n function hideNavigationProgress() {\n if (progressTimeout) {\n clearTimeout2(progressTimeout);\n progressTimeout = null;\n }\n if (progressBar) {\n progressBar.style.width = "100%";\n setTimeout2(() => {\n if (!progressBar) return;\n progressBar.style.opacity = "0";\n setTimeout2(() => {\n if (progressBar) progressBar.style.width = "0";\n }, 200);\n }, 150);\n }\n document2.body.removeAttribute("aria-busy");\n }\n let currentAbortController = null;\n function sleep(ms) {\n return new Promise((resolve) => setTimeout2(resolve, ms));\n }\n async function fetchWithRetry(url, options, maxRetries = MAX_RETRIES) {\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const controller = new AbortController();\n const callerSignal = options.signal;\n const abortFromCaller = () => controller.abort();\n if (callerSignal?.aborted) controller.abort();\n callerSignal?.addEventListener("abort", abortFromCaller, { once: true });\n const timeout = setTimeout2(() => controller.abort(), FETCH_TIMEOUT_MS);\n try {\n const response = await env2.fetch(url, { ...options, signal: controller.signal });\n clearTimeout2(timeout);\n callerSignal?.removeEventListener("abort", abortFromCaller);\n if (response.ok) return response;\n if (response.status >= 500 && attempt < maxRetries) {\n log("Server error, retrying...", response.status);\n await sleep(Math.pow(2, attempt) * 500);\n continue;\n }\n return response;\n } catch (error) {\n clearTimeout2(timeout);\n callerSignal?.removeEventListener("abort", abortFromCaller);\n if (error.name === "AbortError" && callerSignal?.aborted) throw error;\n if (attempt === maxRetries) throw error;\n log("Fetch failed, retrying...", error.message);\n await sleep(Math.pow(2, attempt) * 500);\n }\n }\n throw new Error("Failed to fetch page data");\n }\n async function fetchPageDataFresh(path, signal, options = {}) {\n const {\n triggerReloadOnVersionMismatch = false,\n recordRouteTiming = false,\n timingSource = "network"\n } = options;\n const endpoint = buildPageDataEndpoint(path, window.location.origin);\n const startedAt = recordRouteTiming ? routeTimingNow() : 0;\n log("Fetching page data:", path);\n perfStart("fetch:" + path);\n const headers = options.prefetch ? { "X-Veryfront-Prefetch": "1" } : { "X-Veryfront-Navigation": "spa" };\n if (documentPinKey) {\n headers["X-Veryfront-Dependency-Pins"] = documentPinKey;\n }\n const response = await fetchWithRetry(endpoint, {\n headers,\n signal\n }, options.prefetch ? 0 : MAX_RETRIES);\n if (!response.ok) {\n perfEnd("fetch:" + path);\n if (recordRouteTiming) {\n emitRouteTiming(\n "page-data",\n path,\n startedAt,\n buildPageDataTimingDetail(response, endpoint, startedAt, timingSource)\n );\n }\n const error = new Error("Failed to fetch page data: " + response.status);\n error.status = response.status;\n throw error;\n }\n perfStart("parse:" + path);\n const data = assertPageDataMatchesDocumentSnapshot(\n path,\n await response.json(),\n documentPinKey\n );\n perfEnd("parse:" + path);\n perfEnd("fetch:" + path);\n if (recordRouteTiming) {\n emitRouteTiming(\n "page-data",\n path,\n startedAt,\n buildPageDataTimingDetail(response, endpoint, startedAt, timingSource)\n );\n }\n if (triggerReloadOnVersionMismatch) {\n const checkedData = handlePageDataVersionMismatch(path, data);\n if (checkedData !== data) return checkedData;\n }\n setCachedPageData(path, data);\n return data;\n }\n function handlePageDataVersionMismatch(path, data) {\n if (data.buildVersion && checkVersionMismatch(data.buildVersion)) {\n log("Version mismatch detected, performing full page reload to:", path);\n navigateDocument(path);\n return new Promise(() => {\n });\n }\n return data;\n }\n function startPageDataFetch(path, signal, options = {}) {\n const cacheIdentity = pageDataCacheIdentity2(path);\n const request = fetchPageDataFresh(path, signal, options).finally(() => {\n if (options.trackPending !== false && pendingPageDataFetches.get(cacheIdentity) === request) {\n pendingPageDataFetches.delete(cacheIdentity);\n }\n });\n if (options.trackPending !== false) {\n pendingPageDataFetches.set(cacheIdentity, request);\n }\n return request;\n }\n function fetchPageDataDeduped(path) {\n const pending = pendingPageDataFetches.get(pageDataCacheIdentity2(path));\n if (pending) return pending;\n return startPageDataFetch(path, null);\n }\n function refreshPageDataInBackground(path) {\n const cacheIdentity = pageDataCacheIdentity2(path);\n const lastRefreshAt = backgroundRefreshTimestamps.get(cacheIdentity) || 0;\n const now = Date.now();\n if (now - lastRefreshAt < BACKGROUND_REFRESH_INTERVAL_MS) return;\n backgroundRefreshTimestamps.set(cacheIdentity, now);\n fetchPageDataDeduped(path).catch((error) => {\n logBackgroundFetchFailure("Stale page data refresh", path, error);\n });\n }\n async function fetchPageDataForNavigation(path, signal) {\n const startedAt = routeTimingNow();\n const cached = getCachedPageData(path);\n if (cached) {\n log("Using cached page data:", path);\n refreshPageDataInBackground(path);\n emitRouteTiming("page-data", path, startedAt, { source: "cache" });\n return cached;\n }\n const pending = pendingPageDataFetches.get(pageDataCacheIdentity2(path));\n if (pending) {\n log("Reusing pending page data fetch for navigation:", path);\n const data = await pending;\n emitRouteTiming("page-data", path, startedAt, { source: "deduped" });\n return handlePageDataVersionMismatch(path, data);\n }\n return startPageDataFetch(path, signal, {\n triggerReloadOnVersionMismatch: true,\n recordRouteTiming: true,\n timingSource: "network"\n });\n }\n function fetchPageDataForPrefetch(path, signal) {\n if (getCachedPageData(path)) return Promise.resolve();\n return startPageDataFetch(path, signal, { prefetch: true, trackPending: false }).then((data) => preloadModulesForPageData(data, path)).catch((error) => {\n if (!isAbortError(error)) {\n logBackgroundFetchFailure("Page data prefetch", path, error);\n }\n throw error;\n });\n }\n let currentPath = window.location.pathname;\n let isNavigating = false;\n async function navigateSPA(href, historyMode = "push", restoreScroll = false) {\n currentAbortController?.abort();\n if (isNavigating) return;\n isNavigating = true;\n const [navigationPath] = href.split("#");\n removeQueuedPrefetch(navigationPath || href);\n abortActiveSpeculativePrefetches();\n currentAbortController = new AbortController();\n const signal = currentAbortController.signal;\n const navigationStartedAt = routeTimingNow();\n showNavigationProgress();\n perfStart("nav:total:" + href);\n try {\n log("SPA navigating to:", href);\n saveScrollPosition(currentPath);\n const [path, hash] = href.split("#");\n const targetPath = path || currentPath;\n perfStart("nav:fetchData:" + href);\n const pageData = await fetchPageDataForNavigation(targetPath, signal);\n perfEnd("nav:fetchData:" + href);\n if (signal.aborted) return;\n if (pageData && pageData.redirect && typeof pageData.redirect.destination === "string") {\n const redirectUrl = resolveDocumentNavigationUrl(\n pageData.redirect.destination,\n window.location.origin\n );\n if (redirectUrl) {\n log("SPA navigation redirect -> " + redirectUrl);\n window.location.href = redirectUrl;\n return;\n }\n }\n if (historyMode === "push") {\n window.history.pushState({ pageData, scrollY: 0 }, "", href);\n } else if (historyMode === "replace") {\n window.history.replaceState({ pageData, scrollY: 0 }, "", href);\n }\n currentPath = targetPath;\n router.pathname = targetPath;\n router.query = Object.fromEntries(new URLSearchParams(window.location.search));\n router.params = flattenRouteParams(pageData.params);\n perfStart("nav:render:" + href);\n await renderPageFromData(pageData, targetPath);\n perfEnd("nav:render:" + href);\n if (restoreScroll) {\n restoreScrollPosition(targetPath);\n } else if (hash) {\n requestAnimationFrame(() => {\n const target = document2.getElementById(hash);\n if (target) {\n target.scrollIntoView({ behavior: "smooth" });\n return;\n }\n window.scrollTo(0, 0);\n });\n } else {\n window.scrollTo(0, 0);\n }\n hideNavigationProgress();\n perfEnd("nav:total:" + href);\n emitRouteTiming("total", targetPath, navigationStartedAt, {\n href,\n historyMode,\n restoreScroll\n });\n log("SPA navigation complete");\n } catch (error) {\n hideNavigationProgress();\n if (error.name === "AbortError") {\n log("Navigation aborted");\n return;\n }\n logError("SPA navigation failed:", error.message);\n if (error.status === 404) {\n logError("Page not found:", href);\n }\n navigateDocument(href);\n } finally {\n isNavigating = false;\n currentAbortController = null;\n processPageDataPrefetchQueue();\n }\n }\n async function loadPageDataComponent(pageData, path, options = {}) {\n if (!pageData.isolatedClientPage) return loadComponent(path, pageData, options);\n const moduleUrl = buildPinnedRscModuleUrl(path, pageData);\n const module = await snapshotModules2.importSnapshotBoundModule(\n moduleUrl,\n options.allowDocumentReload !== false\n );\n return module.MDXLayout || module.MainLayout || module.default || module;\n }\n async function renderPageFromData(pageData, targetPath) {\n if (pageData.requiresFullDocumentNavigation) {\n throw new Error("Server layout requires full document navigation");\n }\n if (window.__veryfrontSetReleaseId) {\n window.__veryfrontSetReleaseId(pageData.releaseId || null);\n }\n if (window.__veryfrontSetReleaseAssetModules) {\n window.__veryfrontSetReleaseAssetModules(pageData.releaseAssetModules || null);\n }\n perfStart("render:loadAll");\n const allPaths = getPageDataModulePaths(pageData);\n const modulesStartedAt = routeTimingNow();\n const components = await Promise.all(\n allPaths.map((path) => loadPageDataComponent(pageData, path))\n );\n emitRouteTiming("modules", targetPath, modulesStartedAt, { count: allPaths.length });\n perfEnd("render:loadAll");\n const [PageComponent, ...rest] = components;\n const ErrorComponent = pageData.errorPath ? rest.pop() : null;\n const AppComponent = pageData.appPath ? rest.pop() : null;\n const LayoutComponents = rest;\n if (!PageComponent) {\n throw new Error("Failed to load page component: " + pageData.pagePath);\n }\n handoffClientRouteMetadata(\n pageData.frontmatter ?? {},\n document2\n );\n if (pageData.css) {\n const existingStyle = document2.getElementById("veryfront-spa-css");\n if (existingStyle) {\n existingStyle.textContent = pageData.css;\n } else {\n const styleEl = document2.createElement("style");\n const nonce = getDocumentNonce(document2);\n if (nonce) styleEl.setAttribute("nonce", nonce);\n styleEl.id = "veryfront-spa-css";\n styleEl.textContent = pageData.css;\n document2.head.appendChild(styleEl);\n }\n log("Injected CSS for SPA navigation", { cssLength: pageData.css.length });\n } else if (pageData.cssAction === "clear") {\n const existingStyle = document2.getElementById("veryfront-spa-css");\n if (existingStyle) {\n existingStyle.remove();\n log("Cleared SPA CSS for release stylesheet navigation");\n }\n }\n const normalizedParams = flattenRouteParams(pageData.params);\n let tree = React2.createElement(PageComponent, {\n ...pageData.props,\n params: normalizedParams\n });\n if (pageData.layouts?.length) {\n for (let i = pageData.layouts.length - 1; i >= 0; i--) {\n const layout = pageData.layouts[i];\n const LayoutComponent = LayoutComponents[i];\n if (!LayoutComponent || !layout) continue;\n const layoutProps = pageData.layoutProps?.[layout.path] || {};\n tree = React2.createElement(LayoutComponent, { ...layoutProps, children: tree });\n }\n }\n if (AppComponent) {\n tree = React2.createElement(AppComponent, { children: tree });\n log("Wrapped with App component for SPA navigation");\n }\n if (ErrorComponent) {\n class AppRouterErrorBoundary extends React2.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n static getDerivedStateFromError(error) {\n return { hasError: true, error };\n }\n render() {\n if (this.state.hasError) {\n return React2.createElement(ErrorComponent, {\n error: this.state.error,\n reset: () => this.setState({ hasError: false, error: null })\n });\n }\n return this.props.children;\n }\n }\n tree = React2.createElement(AppRouterErrorBoundary, null, tree);\n }\n const headingsArray = pageData.headings || [];\n const pageContext = {\n slug: pageData.slug || "",\n path: pageData.pagePath || targetPath,\n params: normalizedParams,\n query: Object.fromEntries(new URLSearchParams(window.location.search)),\n frontmatter: pageData.frontmatter || {},\n data: pageData.props || {},\n headings: headingsArray,\n mdxHeadings: headingsArray\n };\n tree = React2.createElement(PageContextProvider2, { pageContext, children: tree });\n tree = React2.createElement(RouterProvider2, { router, children: tree });\n const container = pageData.isolatedClientPage ? document2.getElementById("veryfront-page-island") : document2.getElementById("root");\n if (!hydrationCompleted && !hydrationFailed) {\n log("Waiting for hydration to complete before SPA render...");\n try {\n await Promise.race([\n hydrationPromise,\n new Promise(\n (_, reject) => setTimeout2(() => reject(new Error("Hydration timeout")), 1e4)\n )\n ]);\n } catch (waitError) {\n log("Hydration wait failed:", waitError.message);\n }\n }\n if (container?.__reactRoot) {\n perfStart("render:reactRender");\n container.__reactRoot.render(tree);\n perfEnd("render:reactRender");\n log("Page re-rendered via SPA");\n scheduleRoutePrefetchRefresh();\n return;\n }\n if (hydrationFailed) {\n throw new Error(\n "React root not found - hydration failed, falling back to full page navigation"\n );\n }\n throw new Error("React root not found");\n }\n let prefetchTimeout = null;\n let currentHoverLink = null;\n let routePrefetchRefreshPending = false;\n let viewportPrefetchObserver = null;\n const observedPrefetchLinks = /* @__PURE__ */ new WeakSet();\n const prefetchedPaths = /* @__PURE__ */ new Set();\n const inFlightPrefetches = /* @__PURE__ */ new Set();\n const queuedPrefetchPaths = /* @__PURE__ */ new Set();\n const pageDataPrefetchQueue = [];\n const activePageDataPrefetchControllers = /* @__PURE__ */ new Map();\n function cancelScheduledPrefetch() {\n if (prefetchTimeout) {\n clearTimeout2(prefetchTimeout);\n prefetchTimeout = null;\n }\n currentHoverLink = null;\n }\n function getPageDataModulePaths(pageData) {\n const layoutPaths = (pageData.layouts || []).map((l) => l.path).filter(Boolean);\n const allPaths = [pageData.pagePath, ...layoutPaths].filter(Boolean);\n if (pageData.appPath) allPaths.push(pageData.appPath);\n if (pageData.errorPath) allPaths.push(pageData.errorPath);\n return allPaths;\n }\n function getCurrentRouteHref() {\n return window.location.pathname + window.location.search;\n }\n function getInternalRouteHrefFromLink(link) {\n if (!link || link.target === "_blank" || link.hasAttribute("download") || link.getAttribute("data-prefetch") === "false") {\n return null;\n }\n const href = link.getAttribute("href");\n if (!href || href.startsWith("#") || href.startsWith("//") || !href.startsWith("/")) {\n return null;\n }\n try {\n const url = new URL(href, window.location.origin);\n if (url.origin !== window.location.origin) return null;\n const routeHref = url.pathname + url.search;\n return routeHref === getCurrentRouteHref() ? null : routeHref;\n } catch (_) {\n return null;\n }\n }\n function getEligiblePrefetchLinks(limit) {\n const links = [];\n const seenHrefs = /* @__PURE__ */ new Set();\n for (const link of document2.querySelectorAll("a[href]")) {\n const href = getInternalRouteHrefFromLink(link);\n if (!href || seenHrefs.has(href)) continue;\n seenHrefs.add(href);\n links.push({ link, href });\n if (links.length >= limit) break;\n }\n return links;\n }\n async function preloadModulesForPageData(pageData, path) {\n if (!pageData || pageData.requiresFullDocumentNavigation) return;\n if (pageData.releaseId && window.__veryfrontSetReleaseId) {\n window.__veryfrontSetReleaseId(pageData.releaseId);\n }\n if (pageData.releaseAssetModules && window.__veryfrontSetReleaseAssetModules) {\n window.__veryfrontSetReleaseAssetModules(pageData.releaseAssetModules);\n }\n const modulePaths = getPageDataModulePaths(pageData);\n if (modulePaths.length === 0) return;\n try {\n await Promise.all(\n modulePaths.map(\n (modulePath) => loadPageDataComponent(pageData, modulePath, { allowDocumentReload: false })\n )\n );\n } catch (error) {\n if (isDependencySnapshotConflict(error)) {\n const cacheIdentity = pageDataCacheIdentity2(path);\n pageDataCache.delete(cacheIdentity);\n backgroundRefreshTimestamps.delete(cacheIdentity);\n prefetchedPaths.delete(path);\n throw error;\n }\n logBackgroundFetchFailure("Module prefetch", path, error);\n }\n }\n function removeQueuedPrefetch(path) {\n queuedPrefetchPaths.delete(path);\n for (let i = pageDataPrefetchQueue.length - 1; i >= 0; i--) {\n if (pageDataPrefetchQueue[i] === path) pageDataPrefetchQueue.splice(i, 1);\n }\n }\n function abortActiveSpeculativePrefetches() {\n for (const controller of activePageDataPrefetchControllers.values()) {\n controller.abort();\n }\n }\n function processPageDataPrefetchQueue() {\n if (isNavigating) return;\n while (activePageDataPrefetchControllers.size < PAGE_DATA_PREFETCH_CONCURRENCY && pageDataPrefetchQueue.length > 0) {\n const href = pageDataPrefetchQueue.shift();\n queuedPrefetchPaths.delete(href);\n if (prefetchedPaths.has(href) || inFlightPrefetches.has(href) || getCachedPageData(href)) {\n continue;\n }\n if (prefetchedPaths.size >= MAX_PREFETCH_PATHS) {\n const oldest = prefetchedPaths.values().next().value;\n if (oldest) prefetchedPaths.delete(oldest);\n }\n const controller = new AbortController();\n prefetchedPaths.add(href);\n inFlightPrefetches.add(href);\n activePageDataPrefetchControllers.set(href, controller);\n fetchPageDataForPrefetch(href, controller.signal).catch((error) => {\n prefetchedPaths.delete(href);\n if (isDependencySnapshotConflict(error)) {\n logBackgroundFetchFailure("Module prefetch", href, error);\n }\n }).finally(() => {\n inFlightPrefetches.delete(href);\n activePageDataPrefetchControllers.delete(href);\n processPageDataPrefetchQueue();\n });\n }\n }\n function prefetchPage(href) {\n if (isNavigating) return;\n if (prefetchedPaths.has(href) || inFlightPrefetches.has(href) || queuedPrefetchPaths.has(href)) return;\n const cachedPageData = getCachedPageData(href);\n if (cachedPageData) {\n preloadModulesForPageData(cachedPageData, href).catch((error) => {\n logBackgroundFetchFailure("Module prefetch", href, error);\n });\n return;\n }\n queuedPrefetchPaths.add(href);\n pageDataPrefetchQueue.push(href);\n processPageDataPrefetchQueue();\n }\n function prefetchEligibleRouteLinks(limit) {\n for (const { href } of getEligiblePrefetchLinks(limit)) {\n prefetchPage(href);\n }\n }\n function ensureViewportPrefetchObserver() {\n if (viewportPrefetchObserver || typeof IntersectionObserver !== "function") {\n return viewportPrefetchObserver;\n }\n viewportPrefetchObserver = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting) continue;\n viewportPrefetchObserver?.unobserve(entry.target);\n const href = getInternalRouteHrefFromLink(\n entry.target\n );\n if (href) prefetchPage(href);\n }\n }, { rootMargin: VIEWPORT_PREFETCH_ROOT_MARGIN });\n return viewportPrefetchObserver;\n }\n function observeViewportPrefetchLinks() {\n const observer = ensureViewportPrefetchObserver();\n if (!observer) return;\n for (const { link } of getEligiblePrefetchLinks(VIEWPORT_PREFETCH_MAX_LINKS)) {\n if (observedPrefetchLinks.has(link)) continue;\n observedPrefetchLinks.add(link);\n observer.observe(link);\n }\n }\n function runRoutePrefetchRefresh() {\n routePrefetchRefreshPending = false;\n prefetchEligibleRouteLinks(IDLE_PREFETCH_MAX_LINKS);\n observeViewportPrefetchLinks();\n }\n function scheduleRoutePrefetchRefresh() {\n if (routePrefetchRefreshPending) return;\n routePrefetchRefreshPending = true;\n setTimeout2(() => {\n if (typeof requestIdleCallback === "function") {\n requestIdleCallback(runRoutePrefetchRefresh, { timeout: IDLE_PREFETCH_DELAY_MS });\n return;\n }\n runRoutePrefetchRefresh();\n }, IDLE_PREFETCH_DELAY_MS);\n }\n const router = {\n domain: window.location.origin,\n path: window.location.pathname,\n push: (path) => {\n void navigateSPA(path, "push");\n },\n replace: (path) => {\n void navigateSPA(path, "replace");\n },\n back: () => {\n window.history.back();\n },\n forward: () => {\n window.history.forward();\n },\n prefetch: (path) => {\n prefetchPage(path);\n },\n pathname: window.location.pathname,\n query: Object.fromEntries(new URLSearchParams(window.location.search)),\n // Seed route params from the hydration data (issue #2741). Catch-all\n // segments arrive as arrays and are joined so no path info is lost.\n params: flattenRouteParams(deps.initialHydrationData.params || {}),\n isPreview: false,\n isMounted: true,\n navigate: (path) => navigateSPA(path, "push"),\n reload: () => window.location.reload()\n };\n window.__veryfrontRouter = router;\n if (deps.navigationStoreUsesRegistryFallback) {\n log("Router runtime does not export getNavigationStore; using shared v1 registry fallback");\n }\n if (typeof deps.getNavigationStore === "function") {\n deps.getNavigationStore().setNavigator((href, options) => {\n const mode = options && options.history;\n const historyMode = mode === "replace" ? "replace" : mode === "none" ? "none" : "push";\n return navigateSPA(href, historyMode);\n });\n }\n window.addEventListener("popstate", async (e) => {\n const path = window.location.pathname;\n log("Popstate:", path);\n saveScrollPosition(currentPath);\n if (!e.state?.pageData) {\n await navigateSPA(path, "none", true);\n return;\n }\n showNavigationProgress();\n try {\n currentPath = path;\n router.pathname = path;\n router.query = Object.fromEntries(new URLSearchParams(window.location.search));\n router.params = flattenRouteParams(e.state.pageData.params);\n await renderPageFromData(e.state.pageData, path);\n restoreScrollPosition(path);\n hideNavigationProgress();\n } catch (error) {\n hideNavigationProgress();\n logError("Popstate render failed:", error.message);\n window.location.reload();\n }\n });\n document2.addEventListener("click", (e) => {\n const link = e.target?.closest("a[href]");\n if (!link) return;\n const href = link.getAttribute("href");\n if (!href) return;\n if (href.startsWith("#")) {\n const target = document2.getElementById(href.slice(1));\n if (!target) return;\n e.preventDefault();\n target.scrollIntoView({ behavior: "smooth" });\n window.history.pushState(null, "", href);\n return;\n }\n if (link.target === "_blank" || link.hasAttribute("download") || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || !href.startsWith("/") || href.startsWith("//")) {\n return;\n }\n e.preventDefault();\n cancelScheduledPrefetch();\n void navigateSPA(href, "push");\n });\n document2.addEventListener(\n "mouseenter",\n (e) => {\n if (!e.target || typeof e.target.closest !== "function") return;\n const link = e.target.closest("a[href]");\n if (!link) return;\n const href = getInternalRouteHrefFromLink(link);\n if (!href) return;\n if (currentHoverLink === link) return;\n if (prefetchTimeout) {\n clearTimeout2(prefetchTimeout);\n prefetchTimeout = null;\n }\n currentHoverLink = link;\n prefetchTimeout = setTimeout2(() => {\n prefetchPage(href);\n prefetchTimeout = null;\n }, PREFETCH_DELAY_MS);\n },\n true\n );\n document2.addEventListener(\n "mouseleave",\n (e) => {\n if (!e.target || typeof e.target.closest !== "function") return;\n const relatedTarget = e.relatedTarget;\n if (currentHoverLink && relatedTarget && currentHoverLink.contains(relatedTarget)) return;\n cancelScheduledPrefetch();\n },\n true\n );\n if (document2.readyState === "loading") {\n document2.addEventListener("DOMContentLoaded", scheduleRoutePrefetchRefresh, { once: true });\n } else {\n scheduleRoutePrefetchRefresh();\n }\n window.useRouter = () => {\n try {\n return env2.useRouterFromModule();\n } catch (_) {\n return window.__veryfrontRouter;\n }\n };\n return {\n router,\n navigateSPA,\n renderPageFromData,\n prefetchPage,\n signalHydrationComplete,\n signalHydrationFailed\n };\n}\n\n// src/html/hydration-script-builder/runtime/renderer.ts\nfunction isModuleNotFoundError(error) {\n if (!error) return false;\n if (error instanceof SyntaxError) return false;\n const message = String(error.message || error);\n return /(?:dynamically imported module|Importing a module script failed|Failed to load module script)/i.test(message);\n}\nfunction preferReachedModuleError(earlier, later) {\n if (!earlier) return later;\n if (!later) return earlier;\n if (isModuleNotFoundError(earlier) && !isModuleNotFoundError(later)) return later;\n return earlier;\n}\nasync function loadPageModuleWithIndexFallback(basePath, pageSlug, pageModuleError, importModule) {\n try {\n return await importModule(basePath + ".js");\n } catch (error) {\n const routeError = preferReachedModuleError(pageModuleError, error);\n if (pageSlug === "index" || pageSlug.endsWith("/index")) throw routeError;\n try {\n return await importModule(basePath + "/index.js");\n } catch (indexError) {\n throw preferReachedModuleError(routeError, indexError);\n }\n }\n}\nfunction isAppRouterPath(path, appRouterRoot) {\n const normalizedPath = typeof path === "string" ? path.replace(/^\\/+/, "") : "";\n return normalizedPath === appRouterRoot || normalizedPath.startsWith(appRouterRoot + "/");\n}\nfunction isRootAppLayoutPath(path, appRouterRoot) {\n const normalizedPath = typeof path === "string" ? path.replace(/^\\/+/, "") : "";\n const pathWithoutExtension = normalizedPath.replace(/\\.(?:tsx|jsx|ts|js)$/, "");\n return pathWithoutExtension === appRouterRoot + "/layout";\n}\nfunction unwrapAppRouterDocumentLayout(LayoutComponent, React2) {\n return function AppRouterDocumentLayout(props) {\n const element = LayoutComponent(props);\n const asElement = element;\n if (!React2.isValidElement(element) || asElement.type !== "html") {\n return element;\n }\n const body = React2.Children.toArray(asElement.props?.children).find(\n (child) => React2.isValidElement(child) && child.type === "body"\n );\n return body?.props?.children ?? props.children;\n };\n}\nfunction createHydrationRenderer(deps) {\n const { env: env2, logging: logging2, componentLoader: componentLoader2, snapshotModules: snapshotModules2, moduleServerUrl: moduleServerUrl2 } = deps;\n const { window, document: document2, React: React2, RouterProvider: RouterProvider2, PageContextProvider: PageContextProvider2 } = env2;\n const { DEBUG, log, logError } = logging2;\n const { loadComponent, pathToModuleUrl } = componentLoader2;\n const { importSnapshotBoundModule } = snapshotModules2;\n async function renderPage(pathname) {\n const resolvedPathname = (() => {\n const input = typeof pathname === "string" ? pathname : window.location.pathname;\n try {\n return new URL(input, window.location.origin).pathname || "/";\n } catch (_) {\n const [pathOnly] = String(input || "/").split(/[?#]/);\n return pathOnly || "/";\n }\n })();\n const dataScript = findServerHydrationDataElement(document2);\n if (!dataScript) {\n logError("Hydration data not found");\n return;\n }\n let data = {};\n try {\n data = JSON.parse(dataScript.textContent || "{}");\n } catch (parseError) {\n logError("Failed to parse hydration data:", parseError);\n return;\n }\n log("Hydration data:", data);\n if (data.studioEmbed && window.__veryfrontSetStudioEmbed) {\n window.__veryfrontSetStudioEmbed(true);\n }\n if (window.__veryfrontSetReleaseId) {\n window.__veryfrontSetReleaseId(data.releaseId || null);\n }\n if (data.releaseAssetModules && window.__veryfrontSetReleaseAssetModules) {\n window.__veryfrontSetReleaseAssetModules(data.releaseAssetModules);\n }\n try {\n let pageModule;\n const pagePath = typeof data.pagePath === "string" ? data.pagePath : "";\n const normalizedPagePath = pagePath.replace(/^\\/+/, "");\n const normalizedAppRouterRoot = typeof data.appRouterRoot === "string" && data.appRouterRoot.replace(/^\\/+|\\/+$/g, "") ? data.appRouterRoot.replace(/^\\/+|\\/+$/g, "") : "app";\n const hasReleaseAssetModules = data.releaseAssetModules && Object.keys(data.releaseAssetModules).length > 0;\n const shouldRenderRscClientPage = data.clientModuleStrategy === "rsc-module" && !hasReleaseAssetModules && isAppRouterPath(normalizedPagePath, normalizedAppRouterRoot);\n const isolatedClientPage = data.isolatedClientPage === true;\n const loadHydrationComponent = async (path, preferRscModule) => {\n const normalizedPath = typeof path === "string" ? path.replace(/^\\/+/, "") : "";\n if (preferRscModule && isAppRouterPath(normalizedPath, normalizedAppRouterRoot)) {\n const moduleUrl = buildPinnedRscModuleUrl(path, data);\n log("Loading App Router component from RSC module:", moduleUrl);\n const module = await importSnapshotBoundModule(moduleUrl);\n return module.default || module;\n }\n return loadComponent(path, data);\n };\n let pageModuleError = null;\n if (data.pagePath) {\n const moduleUrl = shouldRenderRscClientPage ? buildPinnedRscModuleUrl(data.pagePath, data) : pathToModuleUrl(data.pagePath, data.studioEmbed, data);\n log("Loading page from hydration data:", moduleUrl);\n try {\n pageModule = await importSnapshotBoundModule(moduleUrl);\n } catch (error) {\n pageModuleError = error;\n logError("Failed to load page from hydration data:", error);\n }\n }\n if (!pageModule) {\n const pageSlug = resolvedPathname === "/" ? "index" : resolvedPathname.slice(1);\n log("Falling back to Pages Router pattern:", pageSlug);\n const prefix = pageSlug.startsWith("@/") ? "" : "/pages";\n const basePath = moduleServerUrl2 + prefix + "/" + pageSlug;\n pageModule = await loadPageModuleWithIndexFallback(\n basePath,\n pageSlug,\n pageModuleError,\n (moduleUrl) => importSnapshotBoundModule(appendDependencyPinningVersion(moduleUrl, data))\n );\n }\n if (!pageModule) {\n logError("Page module failed to load");\n return;\n }\n const PageComponent = pageModule.default || pageModule;\n if (!PageComponent) {\n logError("Page component not found");\n return;\n }\n const normalizedParams = flattenRouteParams(data.params);\n const pageProps = { ...data.props || {}, params: normalizedParams };\n let tree = React2.createElement(PageComponent, pageProps);\n const layouts = data.layouts;\n if (layouts?.length) {\n for (let i = layouts.length - 1; i >= 0; i--) {\n const layout = layouts[i];\n if (!layout) continue;\n const LayoutComponent = await loadHydrationComponent(\n layout.path,\n shouldRenderRscClientPage\n );\n if (LayoutComponent) {\n const WrappedLayoutComponent = shouldRenderRscClientPage && isRootAppLayoutPath(layout.path, normalizedAppRouterRoot) ? unwrapAppRouterDocumentLayout(LayoutComponent, React2) : LayoutComponent;\n const layoutProps = data.layoutProps?.[layout.path] || {};\n tree = React2.createElement(\n WrappedLayoutComponent,\n { ...layoutProps, children: tree }\n );\n }\n }\n }\n if (data.appPath && !isolatedClientPage) {\n const AppComponent = await loadHydrationComponent(data.appPath, shouldRenderRscClientPage);\n if (AppComponent) {\n tree = React2.createElement(AppComponent, { children: tree });\n }\n }\n if (data.errorPath) {\n const ErrorComponent = await loadHydrationComponent(\n data.errorPath,\n shouldRenderRscClientPage\n );\n if (ErrorComponent) {\n class AppRouterErrorBoundary extends React2.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n static getDerivedStateFromError(error) {\n return { hasError: true, error };\n }\n render() {\n if (this.state.hasError) {\n return React2.createElement(ErrorComponent, {\n error: this.state.error,\n reset: () => this.setState({ hasError: false, error: null })\n });\n }\n return this.props.children;\n }\n }\n tree = React2.createElement(AppRouterErrorBoundary, null, tree);\n }\n }\n const headings = data.headings || [];\n const pageContext = {\n slug: data.slug || "",\n path: data.pagePath || resolvedPathname,\n params: normalizedParams,\n query: Object.fromEntries(new URLSearchParams(window.location.search)),\n frontmatter: data.frontmatter || {},\n data: data.props || {},\n headings,\n mdxHeadings: headings\n // Alias for backwards compatibility\n };\n tree = React2.createElement(PageContextProvider2, { pageContext, children: tree });\n tree = React2.createElement(RouterProvider2, { router: deps.router, children: tree });\n const container = isolatedClientPage ? document2.getElementById("veryfront-page-island") : document2.getElementById("root");\n if (!container) {\n if (isolatedClientPage) {\n throw new Error("Isolated client page root not found");\n }\n return;\n }\n if (container.__reactRoot) {\n container.__reactRoot.render(tree);\n log("Page re-rendered");\n return;\n }\n if (shouldRenderRscClientPage) {\n container.__reactRoot = env2.createRoot(container);\n container.__reactRoot.render(tree);\n log("Client-side React app rendered successfully");\n } else {\n const { hydrateRoot } = await import("react-dom/client");\n const options = {\n identifierPrefix: "vf",\n onRecoverableError: (error) => {\n if (data.dev && DEBUG) {\n log("Hydration mismatch (suppressed):", error.message);\n }\n }\n };\n container.__reactRoot = hydrateRoot(container, tree, options);\n log("Client-side React app hydrated successfully");\n }\n if (window.__veryfrontHydrationComplete) {\n window.__veryfrontHydrationComplete();\n }\n } catch (error) {\n logError("Client initialization error:", error);\n if (window.__veryfrontHydrationFailed) {\n window.__veryfrontHydrationFailed(error);\n }\n }\n }\n function start() {\n window.__veryfrontRenderPage = renderPage;\n void renderPage(window.location.pathname);\n const initialDataScript = findServerHydrationDataElement(document2);\n if (initialDataScript) {\n try {\n const pageData = JSON.parse(initialDataScript.textContent || "{}");\n if (pageData.pagePath) {\n window.history.replaceState({ pageData, scrollY: 0 }, "", window.location.href);\n log("Stored initial page data in history state");\n }\n } catch (_) {\n }\n }\n }\n return { renderPage, start };\n}\n\n// src/html/hydration-script-builder/runtime/navigation-store.ts\nvar NAVIGATION_STORE_REGISTRY_KEY = "veryfront.navigation.store.v1";\nfunction resolveNavigationStore(RouterRuntime2) {\n const usesRegistryFallback2 = typeof RouterRuntime2.getNavigationStore !== "function";\n if (!usesRegistryFallback2) {\n return {\n usesRegistryFallback: usesRegistryFallback2,\n getNavigationStore: RouterRuntime2.getNavigationStore\n };\n }\n return {\n usesRegistryFallback: usesRegistryFallback2,\n getNavigationStore: () => {\n const storeKey = Symbol.for(NAVIGATION_STORE_REGISTRY_KEY);\n const registry = globalThis;\n const existing = registry[storeKey];\n if (existing) return existing;\n const listeners = /* @__PURE__ */ new Set();\n let navigator = null;\n const store = {\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n getHref() {\n const loc = globalThis.location;\n return loc ? loc.pathname + loc.search + loc.hash : "/";\n },\n notify() {\n for (const listener of [...listeners]) {\n try {\n listener();\n } catch {\n }\n }\n },\n navigate(href, options) {\n if (navigator) return navigator(href, options);\n globalThis.location?.assign(href);\n return Promise.resolve();\n },\n setNavigator(next) {\n navigator = next;\n }\n };\n registry[storeKey] = store;\n return store;\n }\n };\n}\n\n// src/html/hydration-script-builder/runtime/main.ts\nvar runtimeWindow = globalThis;\nvar runtimeDocument = globalThis.document;\nvar env = {\n window: runtimeWindow,\n document: runtimeDocument,\n fetch: (url, init) => fetch(url, init),\n React,\n RouterProvider,\n PageContextProvider,\n createRoot: (container) => createRoot(container),\n importModule: (moduleUrl) => import(moduleUrl),\n useRouterFromModule,\n setTimeout: (handler, timeout) => setTimeout(handler, timeout),\n clearTimeout: (id) => clearTimeout(id)\n};\nvar logging = createLogging(runtimeWindow);\nvar initialHydrationData = readInitialHydrationData(runtimeDocument);\nvar documentDependencyPinningCacheKey = readDocumentDependencyPinningCacheKey(\n initialHydrationData\n);\nvar routeTiming = createRouteTimingRecorder(runtimeWindow, logging);\nvar snapshotModules = createSnapshotModuleImporter({\n importModule: env.importModule,\n fetchModule: env.fetch,\n reloadDocument: () => runtimeWindow.location.reload(),\n recoveryState: runtimeWindow\n});\nvar componentLoader = createComponentLoader({\n window: runtimeWindow,\n logging,\n moduleServerUrl: moduleServerUrl(runtimeWindow),\n snapshotModules\n});\nruntimeWindow.__veryfrontClearComponentCache = componentLoader.clearComponentCache;\nruntimeWindow.__veryfrontSetStudioEmbed = componentLoader.setStudioEmbed;\nruntimeWindow.__veryfrontSetReleaseId = componentLoader.setReleaseId;\nruntimeWindow.__veryfrontSetReleaseAssetModules = componentLoader.setReleaseAssetModules;\nruntimeWindow.__veryfrontSetHMRRefreshTimestamp = componentLoader.setHMRRefreshTimestamp;\nvar { usesRegistryFallback, getNavigationStore } = resolveNavigationStore(RouterRuntime);\nvar routerRuntime = createRouterRuntime({\n env,\n logging,\n routeTiming,\n componentLoader,\n snapshotModules,\n initialHydrationData,\n documentDependencyPinningCacheKey,\n getNavigationStore,\n navigationStoreUsesRegistryFallback: usesRegistryFallback\n});\ncreateHydrationRenderer({\n env,\n logging,\n componentLoader,\n snapshotModules,\n moduleServerUrl: moduleServerUrl(runtimeWindow),\n router: routerRuntime.router\n}).start();\n';
|
|
9
|
+
export const HYDRATION_RUNTIME_BUNDLE = '// src/html/hydration-script-builder/runtime/main.ts\nimport * as React from "react";\nimport { createRoot } from "react-dom/client";\nimport { RouterProvider, useRouter as useRouterFromModule } from "veryfront/router";\nimport * as RouterRuntime from "veryfront/router";\nimport { PageContextProvider } from "veryfront/context";\n\n// src/routing/flatten-route-params.ts\nfunction flattenRouteParams(params) {\n if (!params) return {};\n const flat = {};\n for (const [key, value] of Object.entries(params)) {\n if (value === void 0) continue;\n flat[key] = Array.isArray(value) ? value.join("/") : value;\n }\n return flat;\n}\n\n// src/html/hydration-script-builder/runtime/shared.ts\nfunction moduleServerUrl(window) {\n return window.location.origin + "/_vf_modules";\n}\nfunction createLogging(window) {\n const DEBUG = Boolean(\n window.__VERYFRONT_DEBUG__ || new URLSearchParams(window.location.search).has("vf_debug")\n );\n const log = DEBUG ? console.log.bind(console, "[Veryfront]") : () => {\n };\n const logError = console.error.bind(console, "[Veryfront]");\n function logBackgroundFetchFailure(reason, path, error) {\n const message = error?.message ?? String(error);\n log(reason + " failed:", path, message);\n }\n const perfTimers = /* @__PURE__ */ new Map();\n const perfStart = DEBUG ? (label) => {\n perfTimers.set(label, performance.now());\n } : () => {\n };\n const perfEnd = DEBUG ? (label) => {\n const start = perfTimers.get(label);\n if (start === void 0) return 0;\n const duration = performance.now() - start;\n perfTimers.delete(label);\n console.log(\n "[Veryfront Perf] %c" + label + ": %c" + duration.toFixed(2) + "ms",\n "color: #888",\n duration > 100 ? "color: #f00; font-weight: bold" : "color: #0a0"\n );\n return duration;\n } : () => 0;\n return { DEBUG, log, logError, logBackgroundFetchFailure, perfStart, perfEnd };\n}\nfunction isAbortError(error) {\n return error?.name === "AbortError";\n}\nfunction resolveDocumentNavigationUrl(target, origin) {\n try {\n const url = new URL(target, origin);\n if (url.protocol === "http:" || url.protocol === "https:") return url.href;\n } catch (_) {\n }\n return null;\n}\nfunction getDocumentNonce(document2) {\n const element = document2.querySelector("script[nonce], style[nonce], link[nonce]");\n if (!element) return void 0;\n return element.nonce || element.getAttribute("nonce") || void 0;\n}\n\n// src/html/hydration-data-element.ts\nvar HYDRATION_DATA_ELEMENT_ID = "veryfront-hydration-data";\nfunction findServerHydrationDataElement(document2) {\n try {\n const matches = [...document2.querySelectorAll(`[id="${HYDRATION_DATA_ELEMENT_ID}"]`)];\n if (matches.length !== 1) return null;\n const body = document2.body;\n if (!body) return null;\n const element = matches[0];\n if (body.firstElementChild !== element && element.parentElement !== body) return null;\n if (element.tagName?.toLowerCase() !== "script") return null;\n if (element.getAttribute("type")?.trim().toLowerCase() !== "application/json") return null;\n return element;\n } catch {\n return null;\n }\n}\n\n// src/html/hydration-script-builder/runtime/hydration-data.ts\nfunction readInitialHydrationData(document2) {\n try {\n const element = findServerHydrationDataElement(document2);\n return JSON.parse(element && element.textContent ? element.textContent : "{}") || {};\n } catch (_) {\n return {};\n }\n}\nfunction readDocumentDependencyPinningCacheKey(initialHydrationData2) {\n return typeof initialHydrationData2.dependencyPinningCacheKey === "string" && initialHydrationData2.dependencyPinningCacheKey.startsWith("on:") ? initialHydrationData2.dependencyPinningCacheKey : null;\n}\n\n// src/html/hydration-script-builder/runtime/snapshot-modules.ts\nvar RECOVERY_STATE_KEY = "__VF_DEPENDENCY_SNAPSHOT_RECOVERY_STARTED__";\nasync function isDependencySnapshotConflictResponse(response) {\n if (!response || response.status !== 409) return false;\n try {\n const clone = response.clone?.() ?? response;\n const body = (await clone.text?.() ?? "").trim();\n return body === "Unknown dependency snapshot" || body === "export default null; // Unknown dependency snapshot";\n } catch (_) {\n return false;\n }\n}\nfunction createSnapshotModuleImporter(deps) {\n async function recoverFromSnapshotBoundModuleFailure(moduleUrl, allowDocumentReload = true) {\n try {\n const parsedUrl = new URL(moduleUrl, "http://veryfront.local");\n const snapshotKeys = parsedUrl.searchParams.getAll("pins");\n const pathMatch = parsedUrl.pathname.match(\n /^\\/_vf_modules\\/_pins\\/([^/]+)(?:\\/|$)/\n );\n if (pathMatch) {\n try {\n snapshotKeys.push(decodeURIComponent(pathMatch[1]));\n } catch (_) {\n return false;\n }\n }\n if (snapshotKeys.length !== 1 || !/^on:[A-Za-z0-9._-]+$/.test(snapshotKeys[0])) return false;\n const response = await deps.fetchModule(moduleUrl, { cache: "no-store" });\n if (!await isDependencySnapshotConflictResponse(response)) return false;\n if (!allowDocumentReload) return true;\n if (deps.recoveryState[RECOVERY_STATE_KEY] === true) return true;\n deps.recoveryState[RECOVERY_STATE_KEY] = true;\n try {\n deps.reloadDocument();\n } catch (_) {\n delete deps.recoveryState[RECOVERY_STATE_KEY];\n return false;\n }\n return true;\n } catch (_) {\n return false;\n }\n }\n async function importSnapshotBoundModule(moduleUrl, allowDocumentReload = true) {\n try {\n return await deps.importModule(moduleUrl);\n } catch (error) {\n const snapshotConflict = await recoverFromSnapshotBoundModuleFailure(\n moduleUrl,\n allowDocumentReload\n );\n if (snapshotConflict && !allowDocumentReload) {\n const conflictError = new Error(\n "Dependency snapshot is unavailable during speculative module prefetch"\n );\n conflictError.name = "DependencySnapshotConflictError";\n conflictError.dependencySnapshotConflict = true;\n conflictError.cause = error;\n throw conflictError;\n }\n throw error;\n }\n }\n return { importSnapshotBoundModule, recoverFromSnapshotBoundModuleFailure };\n}\nfunction isDependencySnapshotConflict(error) {\n return Boolean(error?.dependencySnapshotConflict);\n}\n\n// src/utils/version-constant.ts\nvar VERSION = "0.1.1217";\n\n// src/html/hydration-script-builder/runtime/module-urls.ts\nfunction appendQueryParam(url, key, value) {\n return url + (url.includes("?") ? "&" : "?") + key + "=" + value;\n}\nfunction appendDependencyPinningVersion(url, moduleData) {\n const pinKey = moduleData && moduleData.dependencyPinningCacheKey;\n if (typeof pinKey !== "string" || !pinKey.startsWith("on:")) return url;\n const hashIndex = url.indexOf("#");\n const hash = hashIndex >= 0 ? url.slice(hashIndex) : "";\n const withoutHash = hashIndex >= 0 ? url.slice(0, hashIndex) : url;\n const queryIndex = withoutHash.indexOf("?");\n const base = queryIndex >= 0 ? withoutHash.slice(0, queryIndex) : withoutHash;\n const params = new URLSearchParams(queryIndex >= 0 ? withoutHash.slice(queryIndex + 1) : "");\n const modulePrefix = "/_vf_modules/";\n const prefixIndex = base.indexOf(modulePrefix);\n const origin = prefixIndex >= 0 ? base.slice(0, prefixIndex) : "";\n if (prefixIndex >= 0 && (origin === "" || /^https?:\\/\\/[^/]+$/i.test(origin))) {\n const pathStart = prefixIndex + modulePrefix.length;\n let modulePath = base.slice(pathStart);\n if (modulePath.startsWith("_pins/")) {\n const existingKeyEnd = modulePath.indexOf("/", "_pins/".length);\n const encodedExistingKey = existingKeyEnd < 0 ? modulePath.slice("_pins/".length) : modulePath.slice("_pins/".length, existingKeyEnd);\n let existingKey;\n try {\n existingKey = decodeURIComponent(encodedExistingKey);\n } catch {\n existingKey = void 0;\n }\n if (existingKey && /^on:[A-Za-z0-9._-]+$/.test(existingKey)) {\n if (existingKeyEnd < 0) return url;\n modulePath = modulePath.slice(existingKeyEnd + 1);\n }\n }\n params.delete("pins");\n const query = params.toString();\n return base.slice(0, pathStart) + "_pins/" + encodeURIComponent(pinKey) + "/" + modulePath + (query ? "?" + query : "") + hash;\n }\n params.set("pins", pinKey);\n return base + "?" + params.toString() + hash;\n}\nfunction componentCacheKey(path, moduleData) {\n const pinKey = moduleData && moduleData.dependencyPinningCacheKey;\n return typeof pinKey === "string" && pinKey.startsWith("on:") ? path + "|vf_pins|" + pinKey : path;\n}\nfunction normalizeReleaseAssetModulePath(path) {\n return String(path || "").replace(/^\\/?_vf_modules\\//, "").replace(/^\\/+/, "").replace(/[?#].*$/, "");\n}\nfunction buildPinnedRscModuleUrl(path, moduleData) {\n let moduleUrl = "/_veryfront/rsc/module?rel=" + encodeURIComponent(path);\n const pinKey = moduleData && moduleData.dependencyPinningCacheKey;\n if (typeof pinKey === "string" && pinKey.startsWith("on:")) {\n moduleUrl += "&pins=" + encodeURIComponent(pinKey);\n }\n return moduleUrl;\n}\nfunction buildPageDataEndpoint(path, origin) {\n const targetUrl = new URL(path, origin);\n const normalizedPath = targetUrl.pathname === "/" ? "" : targetUrl.pathname.replace(/^\\//, "");\n const endpointUrl = new URL(\n "/_veryfront/page-data/" + normalizedPath + ".json",\n origin\n );\n endpointUrl.search = targetUrl.search;\n return endpointUrl.pathname + endpointUrl.search;\n}\nfunction pageDataCacheIdentity(path, documentDependencyPinningCacheKey2) {\n return documentDependencyPinningCacheKey2 ? documentDependencyPinningCacheKey2 + "|path:" + path : path;\n}\nfunction assertPageDataMatchesDocumentSnapshot(path, data, documentDependencyPinningCacheKey2) {\n if (!documentDependencyPinningCacheKey2) return data;\n if (data && data.dependencyPinningCacheKey === documentDependencyPinningCacheKey2) {\n return data;\n }\n const error = new Error("Page data dependency snapshot does not match the document");\n error.status = 409;\n error.dependencySnapshotMismatch = true;\n error.path = path;\n throw error;\n}\n\n// src/html/hydration-script-builder/runtime/component-loader.ts\nvar VERYFRONT_RUNTIME_VERSION = VERSION;\nfunction createComponentLoader(deps) {\n const { window, moduleServerUrl: moduleServerUrl2 } = deps;\n const { DEBUG, log, logError } = deps.logging;\n const componentCache = /* @__PURE__ */ new Map();\n const loadingPromises = /* @__PURE__ */ new Map();\n let releaseId = null;\n let releaseAssetModules = null;\n let studioEmbed = false;\n let hmrRefreshTimestamp = null;\n function clearComponentCache(path) {\n if (!path) {\n componentCache.clear();\n loadingPromises.clear();\n log("Cleared all component caches");\n return;\n }\n for (const key of componentCache.keys()) {\n if (key === path || key.startsWith(path + "|vf_pins|")) {\n componentCache.delete(key);\n }\n }\n for (const key of loadingPromises.keys()) {\n if (key === path || key.startsWith(path + "|vf_pins|")) {\n loadingPromises.delete(key);\n }\n }\n log("Cleared component cache for:", path);\n }\n function setReleaseId(value) {\n releaseId = typeof value === "string" && value ? value : null;\n window.__veryfrontReleaseId = releaseId;\n }\n function appendReleaseModuleVersion(url) {\n if (!releaseId || url.includes("vf_release=")) return url;\n let versionedUrl = appendQueryParam(url, "vf_release", encodeURIComponent(releaseId));\n versionedUrl = appendQueryParam(\n versionedUrl,\n "vf_runtime",\n encodeURIComponent(VERYFRONT_RUNTIME_VERSION)\n );\n return versionedUrl;\n }\n function setReleaseAssetModules(value) {\n releaseAssetModules = value && typeof value === "object" && !Array.isArray(value) ? value : null;\n window.__veryfrontReleaseAssetModules = releaseAssetModules;\n }\n function resolveReleaseAssetModuleUrl(path) {\n if (!releaseAssetModules || studioEmbed || hmrRefreshTimestamp) return null;\n const key = normalizeReleaseAssetModulePath(path);\n if (releaseAssetModules[key]) return releaseAssetModules[key];\n const withoutExt = key.replace(/\\.(tsx|ts|jsx|mdx|js|mjs)$/, "");\n const extensions = [".tsx", ".ts", ".jsx", ".mdx", ".js"];\n for (const ext of extensions) {\n const candidate = withoutExt + ext;\n if (releaseAssetModules[candidate]) return releaseAssetModules[candidate];\n }\n return null;\n }\n function pathToModuleUrl(path, embedInStudio, moduleData) {\n const releaseAssetUrl = resolveReleaseAssetModuleUrl(path);\n if (releaseAssetUrl) return releaseAssetUrl;\n const pattern = /(pages|components|app|lib|layouts|shared|features)\\/(.+)\\.(tsx|ts|jsx|mdx)$/;\n const match = path.match(new RegExp("/" + pattern.source)) || path.match(new RegExp("^" + pattern.source));\n let url;\n if (match) {\n url = moduleServerUrl2 + "/" + match[1] + "/" + match[2] + ".js";\n } else {\n const hasKnownExt = /\\.(tsx|ts|jsx|mdx|js|mjs)$/.test(path);\n url = moduleServerUrl2 + "/" + (hasKnownExt ? path.replace(/\\.(tsx|ts|jsx|mdx)$/, ".js") : path + ".js");\n }\n if (embedInStudio) url = appendQueryParam(url, "studio_embed", "true");\n if (hmrRefreshTimestamp) url = appendQueryParam(url, "t", hmrRefreshTimestamp);\n if (!embedInStudio && !hmrRefreshTimestamp) url = appendReleaseModuleVersion(url);\n url = appendDependencyPinningVersion(url, moduleData);\n return url;\n }\n function setStudioEmbed(value) {\n studioEmbed = value;\n window.__veryfrontStudioEmbed = value;\n }\n function setHMRRefreshTimestamp(timestamp) {\n hmrRefreshTimestamp = timestamp;\n window.__veryfrontHMRRefreshTimestamp = timestamp;\n }\n async function loadComponent(path, moduleData, options = {}) {\n if (!path) return null;\n const cacheKey = componentCacheKey(path, moduleData);\n if (componentCache.has(cacheKey)) {\n log("Component cached:", path);\n return componentCache.get(cacheKey);\n }\n const existingPromise = loadingPromises.get(cacheKey);\n if (existingPromise) return existingPromise;\n const loadPromise = (async () => {\n try {\n const moduleUrl = pathToModuleUrl(path, studioEmbed, moduleData);\n const start = DEBUG ? performance.now() : 0;\n log("Loading component:", moduleUrl);\n const module = await deps.snapshotModules.importSnapshotBoundModule(\n moduleUrl,\n options.allowDocumentReload !== false\n );\n const component = module.MDXLayout || module.MainLayout || module.default || module;\n if (DEBUG) {\n const duration = performance.now() - start;\n console.log(\n "[Veryfront Perf] %cimport:" + path.split("/").pop() + ": %c" + duration.toFixed(2) + "ms",\n "color: #888",\n duration > 50 ? "color: #f00; font-weight: bold" : "color: #0a0"\n );\n }\n componentCache.set(cacheKey, component);\n return component;\n } catch (error) {\n if (isDependencySnapshotConflict(error)) throw error;\n logError("Failed to load component:", path, error);\n return null;\n } finally {\n loadingPromises.delete(cacheKey);\n }\n })();\n loadingPromises.set(cacheKey, loadPromise);\n return loadPromise;\n }\n return {\n loadComponent,\n pathToModuleUrl,\n clearComponentCache,\n setStudioEmbed,\n setReleaseId,\n setReleaseAssetModules,\n setHMRRefreshTimestamp\n };\n}\n\n// src/html/hydration-script-builder/runtime/route-timing.ts\nvar MAX_ROUTE_TIMINGS = 100;\nvar MAX_SERVER_TIMING_LENGTH = 1024;\nfunction routeTimingNow() {\n return typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();\n}\nfunction sanitizeServerTimingMetricName(name) {\n return String(name || "").trim().replace(/[^A-Za-z0-9_.-]/g, "_").slice(0, 128);\n}\nfunction sanitizeServerTimingHeader(value) {\n if (!value) return null;\n const metrics = [];\n const printable = String(value).replace(/[^\\x20-\\x7E]/g, " ").trim();\n if (!printable) return null;\n for (const item of printable.split(",")) {\n const segments = item.split(";").map((segment) => segment.trim()).filter(Boolean);\n const name = sanitizeServerTimingMetricName(segments[0]);\n if (!name) continue;\n for (const segment of segments.slice(1)) {\n const [key, rawValue = ""] = segment.split("=");\n if ((key ?? "").trim().toLowerCase() !== "dur") continue;\n const duration = Number(rawValue.trim().replace(/^"|"$/g, ""));\n if (!Number.isFinite(duration) || duration < 0) continue;\n metrics.push(name + ";dur=" + (Math.round(duration * 100) / 100).toFixed(2));\n break;\n }\n }\n const sanitized = metrics.join(", ");\n return sanitized ? sanitized.slice(0, MAX_SERVER_TIMING_LENGTH) : null;\n}\nfunction parseServerTimingMetrics(value) {\n const header = sanitizeServerTimingHeader(value);\n if (!header) return null;\n const metrics = {};\n for (const item of header.split(",")) {\n const segments = item.split(";").map((segment) => segment.trim()).filter(Boolean);\n const name = sanitizeServerTimingMetricName(segments[0]);\n if (!name) continue;\n for (const segment of segments.slice(1)) {\n const [key, rawValue = ""] = segment.split("=");\n if ((key ?? "").trim().toLowerCase() !== "dur") continue;\n const duration = Number(rawValue.trim().replace(/^"|"$/g, ""));\n if (Number.isFinite(duration) && duration >= 0) {\n metrics[name] = Math.round(duration * 100) / 100;\n }\n }\n }\n return Object.keys(metrics).length ? metrics : null;\n}\nfunction readResponseServerTiming(response) {\n try {\n return sanitizeServerTimingHeader(response.headers?.get("server-timing"));\n } catch (_) {\n return null;\n }\n}\nfunction roundRouteTimingValue(value) {\n return Math.round(value * 100) / 100;\n}\nfunction extractResourceTiming(entry) {\n const fields = [\n "startTime",\n "requestStart",\n "responseStart",\n "responseEnd",\n "duration",\n "transferSize",\n "encodedBodySize",\n "decodedBodySize"\n ];\n const timing = {};\n for (const field of fields) {\n const value = entry?.[field];\n if (typeof value === "number" && Number.isFinite(value) && value >= 0) {\n timing[field] = roundRouteTimingValue(value);\n }\n }\n return Object.keys(timing).length ? timing : null;\n}\nfunction createRouteTimingRecorder(window, logging2) {\n const { log } = logging2;\n function emitRouteTiming(phase, path, startedAt, detail = {}) {\n const entry = {\n phase,\n path,\n duration: Math.max(0, routeTimingNow() - startedAt),\n timestamp: Date.now(),\n ...detail\n };\n const timings = Array.isArray(window.__veryfrontRouteTimings) ? window.__veryfrontRouteTimings : [];\n timings.push(entry);\n if (timings.length > MAX_ROUTE_TIMINGS) {\n timings.splice(0, timings.length - MAX_ROUTE_TIMINGS);\n }\n window.__veryfrontRouteTimings = timings;\n try {\n window.dispatchEvent(new CustomEvent("veryfront:route-timing", { detail: entry }));\n } catch (_) {\n }\n log("Route timing:", entry);\n return entry;\n }\n function getPageDataResourceTiming(endpoint, fetchStartedAt) {\n try {\n if (typeof performance === "undefined" || typeof performance.getEntriesByName !== "function") {\n return null;\n }\n const href = new URL(endpoint, window.location.href).href;\n const entries = performance.getEntriesByName(href, "resource");\n if (!entries.length) return null;\n for (let index = entries.length - 1; index >= 0; index--) {\n const entry = entries[index];\n const responseEnd = entry?.responseEnd;\n if (typeof responseEnd === "number" && Number.isFinite(responseEnd) && responseEnd + 1 >= fetchStartedAt) {\n return extractResourceTiming(entry);\n }\n }\n return null;\n } catch (_) {\n return null;\n }\n }\n function buildPageDataTimingDetail(response, endpoint, fetchStartedAt, source) {\n const detail = { source, status: response.status };\n const serverTiming = readResponseServerTiming(response);\n if (serverTiming) {\n detail.serverTiming = serverTiming;\n const serverTimingMetrics = parseServerTimingMetrics(serverTiming);\n if (serverTimingMetrics) detail.serverTimingMetrics = serverTimingMetrics;\n }\n const resourceTiming = getPageDataResourceTiming(response.url || endpoint, fetchStartedAt);\n if (resourceTiming) detail.resourceTiming = resourceTiming;\n return detail;\n }\n return { emitRouteTiming, buildPageDataTimingDetail };\n}\n\n// src/html/managed-head-protocol.ts\nvar HEAD_PROVENANCE_ATTRIBUTE = "data-vf-head";\nvar HEAD_LEGACY_MANAGED_ATTRIBUTE = "data-veryfront-managed";\nvar HEAD_CONTENT_HASH_ATTRIBUTE = "data-vf-hash";\nvar HEAD_REACT_MANAGED_ATTRIBUTE = "data-vf-react-head";\nvar HEAD_REACT_OWNER_ATTRIBUTE = "data-vf-react-head-owner";\nvar HEAD_ROUTE_MANAGED_ATTRIBUTE = "data-vf-route-head";\nvar HEAD_SERVER_COMMIT_ATTRIBUTE = "data-vf-server-head-commit";\nvar HEAD_SHELL_PROVENANCE_ATTRIBUTE = "data-vf-shell-head";\nvar HEAD_SSR_PAYLOAD_ATTRIBUTE = "data-vf-ssr-head";\nvar MAX_MANAGED_HEAD_BYTES = 2 * 1024 * 1024;\nvar MAX_MANAGED_HEAD_PAYLOAD_BYTES = MAX_MANAGED_HEAD_BYTES * 2;\nvar SINGLETON_META_KEYS = /* @__PURE__ */ new Set([\n "description",\n "robots",\n "viewport",\n "referrer",\n "color-scheme",\n "application-name",\n "generator",\n "og:title",\n "og:description",\n "og:url",\n "og:type",\n "og:site_name",\n "og:locale",\n "twitter:card",\n "twitter:site",\n "twitter:creator",\n "twitter:title",\n "twitter:description",\n "twitter:image",\n "twitter:image:alt"\n]);\nvar SINGLETON_LINK_RELS = /* @__PURE__ */ new Set([\n "canonical",\n "manifest",\n "amphtml"\n]);\nvar MAX_HEAD_ATTRIBUTE_VALUE_BYTES = 64 * 1024;\nvar MAX_HEAD_ATTRIBUTE_BYTES = 1024 * 1024;\nvar MAX_HEAD_CONTENT_BYTES = 1024 * 1024;\nvar headTextEncoder = new TextEncoder();\nvar BOOLEAN_HEAD_ATTRIBUTES = /* @__PURE__ */ new Set([\n "async",\n "defer",\n "disabled",\n "itemscope",\n "nomodule"\n]);\nfunction isHeadFrameworkAttribute(name) {\n switch (name.toLowerCase()) {\n case HEAD_PROVENANCE_ATTRIBUTE:\n case HEAD_LEGACY_MANAGED_ATTRIBUTE:\n case HEAD_CONTENT_HASH_ATTRIBUTE:\n case HEAD_REACT_MANAGED_ATTRIBUTE:\n case HEAD_REACT_OWNER_ATTRIBUTE:\n case HEAD_ROUTE_MANAGED_ATTRIBUTE:\n case HEAD_SERVER_COMMIT_ATTRIBUTE:\n case HEAD_SHELL_PROVENANCE_ATTRIBUTE:\n case HEAD_SSR_PAYLOAD_ATTRIBUTE:\n return true;\n default:\n return false;\n }\n}\nfunction normalizeHeadIdentityValue(value) {\n const normalized = value?.trim().toLowerCase();\n return normalized || void 0;\n}\nfunction readOwnString(record, key) {\n try {\n const descriptor = Reflect.getOwnPropertyDescriptor(record, key);\n return descriptor && !descriptor.get && !descriptor.set && "value" in descriptor && typeof descriptor.value === "string" ? descriptor.value : void 0;\n } catch {\n return void 0;\n }\n}\nfunction headMetaSingletonKeyFromRecord(meta) {\n if (readOwnString(meta, "charset") !== void 0) return "meta:charset";\n const key = normalizeHeadIdentityValue(\n readOwnString(meta, "property") ?? readOwnString(meta, "name")\n );\n if (!key) return void 0;\n if (key === "theme-color") {\n return `meta:theme-color:${readOwnString(meta, "media")?.trim() ?? ""}`;\n }\n return SINGLETON_META_KEYS.has(key) ? `meta:${key}` : void 0;\n}\nfunction headLinkSingletonKeyFromRecord(link) {\n const rel = normalizeHeadIdentityValue(readOwnString(link, "rel"));\n return rel && SINGLETON_LINK_RELS.has(rel) ? `link:${rel}` : void 0;\n}\n\n// src/html/client-head-manager.ts\nvar HEAD_MANAGER_STATE_SYMBOL = /* @__PURE__ */ Symbol.for(\n "veryfront.client-head-manager.v2"\n);\nvar CROSS_PAGE_PRESERVED_SINGLETON_KEYS = /* @__PURE__ */ new Set([\n "meta:viewport",\n "link:manifest"\n]);\nfunction getClientHeadManagerState() {\n const globalState = globalThis;\n return globalState[HEAD_MANAGER_STATE_SYMBOL] ?? (globalState[HEAD_MANAGER_STATE_SYMBOL] = {\n documents: /* @__PURE__ */ new WeakMap()\n });\n}\nfunction readElementAttributes(element) {\n const attributes = [];\n for (const attribute of element.attributes) {\n const name = attribute.name.toLowerCase();\n if (isHeadFrameworkAttribute(name)) continue;\n const nonce = name === "nonce" && "nonce" in element ? element.nonce : "";\n const value = BOOLEAN_HEAD_ATTRIBUTES.has(name) ? "" : nonce || attribute.value;\n attributes.push([name, value]);\n }\n return attributes.sort(([left], [right]) => left.localeCompare(right));\n}\nfunction elementSingletonKey(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName === "title") return "title";\n const attributes = Object.fromEntries(readElementAttributes(element));\n if (tagName === "meta") return headMetaSingletonKeyFromRecord(attributes);\n if (tagName === "link") return headLinkSingletonKeyFromRecord(attributes);\n return void 0;\n}\nfunction promoteToShellHeadBaseline(element) {\n for (const attribute of [...element.attributes]) {\n if (isHeadFrameworkAttribute(attribute.name)) {\n element.removeAttribute(attribute.name);\n }\n }\n element.setAttribute(HEAD_SHELL_PROVENANCE_ATTRIBUTE, "true");\n}\nfunction isCrossPagePreservedSingleton(element, singletonKey = elementSingletonKey(element)) {\n return element.parentElement !== null && singletonKey !== void 0 && CROSS_PAGE_PRESERVED_SINGLETON_KEYS.has(singletonKey);\n}\nfunction isFrameworkOwnedHeadElement(element) {\n return element.getAttribute(HEAD_PROVENANCE_ATTRIBUTE) === "true" || element.getAttribute(HEAD_REACT_MANAGED_ATTRIBUTE) === "true" || element.getAttribute(HEAD_LEGACY_MANAGED_ATTRIBUTE) === "1" || element.getAttribute(HEAD_ROUTE_MANAGED_ATTRIBUTE) === "true" || element.getAttribute(HEAD_SHELL_PROVENANCE_ATTRIBUTE) === "true";\n}\nfunction retireFrameworkHeadElement(element) {\n if (isCrossPagePreservedSingleton(element)) {\n promoteToShellHeadBaseline(element);\n return;\n }\n element.remove();\n}\nfunction retireClientHeadOwnership(targetDocument) {\n const manager = getClientHeadManagerState().documents.get(targetDocument);\n if (manager) {\n manager.retire();\n return;\n }\n for (const element of [...targetDocument.head?.children ?? []]) {\n if (isFrameworkOwnedHeadElement(element)) retireFrameworkHeadElement(element);\n }\n}\n\n// src/html/client-route-head.ts\nfunction updateRouteTitle(title, targetDocument = document) {\n if (typeof title !== "string" || !title) return;\n const titles = [...targetDocument.head.querySelectorAll("title")];\n if (titles.some((element) => element.getAttribute(HEAD_LEGACY_MANAGED_ATTRIBUTE) === "1")) {\n return;\n }\n let titleElement = titles.find(\n (element) => element.getAttribute(HEAD_ROUTE_MANAGED_ATTRIBUTE) === "true"\n );\n for (const element of titles) {\n if (element !== titleElement) element.remove();\n }\n if (!titleElement) {\n titleElement = targetDocument.createElement("title");\n titleElement.setAttribute(HEAD_ROUTE_MANAGED_ATTRIBUTE, "true");\n targetDocument.head.appendChild(titleElement);\n }\n titleElement.textContent = title;\n}\nfunction updateRouteMetaTag(targetDocument, selector, attributeName, attributeValue, content) {\n const matches = [...targetDocument.head.querySelectorAll(selector)];\n if (matches.some((element) => element.getAttribute(HEAD_LEGACY_MANAGED_ATTRIBUTE) === "1")) {\n return;\n }\n let metaTag = matches.find(\n (element) => element.getAttribute(HEAD_ROUTE_MANAGED_ATTRIBUTE) === "true"\n );\n if (!metaTag) {\n metaTag = targetDocument.createElement("meta");\n metaTag.setAttribute(attributeName, attributeValue);\n metaTag.setAttribute(HEAD_ROUTE_MANAGED_ATTRIBUTE, "true");\n targetDocument.head.appendChild(metaTag);\n }\n metaTag.setAttribute("content", content);\n}\nfunction updateRouteMetaTags(metadata, targetDocument = document) {\n if (typeof metadata.description === "string" && metadata.description) {\n updateRouteMetaTag(\n targetDocument,\n \'meta[name="description"]\',\n "name",\n "description",\n metadata.description\n );\n }\n if (typeof metadata.ogTitle === "string" && metadata.ogTitle) {\n updateRouteMetaTag(\n targetDocument,\n \'meta[property="og:title"]\',\n "property",\n "og:title",\n metadata.ogTitle\n );\n }\n}\nfunction handoffClientRouteMetadata(metadata, targetDocument = document) {\n const retainedTitle = targetDocument.title;\n retireClientHeadOwnership(targetDocument);\n updateRouteTitle(\n typeof metadata.title === "string" && metadata.title ? metadata.title : retainedTitle,\n targetDocument\n );\n updateRouteMetaTags(metadata, targetDocument);\n}\n\n// src/html/hydration-script-builder/runtime/router.ts\nvar FETCH_TIMEOUT_MS = 1e4;\nvar MAX_RETRIES = 2;\nvar MAX_CACHE_SIZE = 50;\nvar CACHE_TTL_MS = 5 * 60 * 1e3;\nvar BACKGROUND_REFRESH_INTERVAL_MS = 30 * 1e3;\nvar PREFETCH_DELAY_MS = 100;\nvar MAX_PREFETCH_PATHS = 100;\nvar IDLE_PREFETCH_DELAY_MS = 1200;\nvar IDLE_PREFETCH_MAX_LINKS = 4;\nvar VIEWPORT_PREFETCH_MAX_LINKS = 8;\nvar PAGE_DATA_PREFETCH_CONCURRENCY = 2;\nvar VIEWPORT_PREFETCH_ROOT_MARGIN = "200px";\nvar MAX_SCROLL_POSITIONS = 100;\nfunction createRouterRuntime(deps) {\n const { env: env2, logging: logging2, routeTiming: routeTiming2, componentLoader: componentLoader2, snapshotModules: snapshotModules2 } = deps;\n const { window, document: document2, React: React2, RouterProvider: RouterProvider2, PageContextProvider: PageContextProvider2 } = env2;\n const { setTimeout: setTimeout2, clearTimeout: clearTimeout2 } = env2;\n const { log, logError, logBackgroundFetchFailure, perfStart, perfEnd } = logging2;\n const { emitRouteTiming, buildPageDataTimingDetail } = routeTiming2;\n const { loadComponent } = componentLoader2;\n const documentPinKey = deps.documentDependencyPinningCacheKey;\n let hydrationResolve;\n let hydrationReject;\n const hydrationPromise = new Promise((resolve, reject) => {\n hydrationResolve = resolve;\n hydrationReject = reject;\n });\n let hydrationCompleted = false;\n let hydrationFailed = false;\n function signalHydrationComplete() {\n hydrationCompleted = true;\n hydrationResolve();\n log("Hydration complete signal received");\n }\n function signalHydrationFailed(error) {\n hydrationFailed = true;\n hydrationReject(error);\n logError("Hydration failed signal received:", error);\n }\n window.__veryfrontHydrationComplete = signalHydrationComplete;\n window.__veryfrontHydrationFailed = signalHydrationFailed;\n function pageDataCacheIdentity2(path) {\n return pageDataCacheIdentity(path, documentPinKey);\n }\n function navigateDocument(target) {\n const safeUrl = resolveDocumentNavigationUrl(target, window.location.origin);\n if (safeUrl) {\n window.location.href = safeUrl;\n return;\n }\n logError("Refusing an unsafe document navigation:", target);\n window.location.reload();\n }\n let clientBuildVersion = null;\n function checkVersionMismatch(newVersion) {\n if (!clientBuildVersion) {\n clientBuildVersion = newVersion;\n log("Build version initialized:", newVersion);\n return false;\n }\n if (newVersion.serverStart !== clientBuildVersion.serverStart) {\n log("Server restarted, reloading...", {\n old: clientBuildVersion.serverStart,\n new: newVersion.serverStart\n });\n return true;\n }\n if (newVersion.framework !== clientBuildVersion.framework) {\n log("Framework version changed, reloading...", {\n old: clientBuildVersion.framework,\n new: newVersion.framework\n });\n return true;\n }\n if (newVersion.projectUpdated && clientBuildVersion.projectUpdated && newVersion.projectUpdated !== clientBuildVersion.projectUpdated) {\n log("Project content updated, reloading...", {\n old: clientBuildVersion.projectUpdated,\n new: newVersion.projectUpdated\n });\n return true;\n }\n return false;\n }\n const pageDataCache = /* @__PURE__ */ new Map();\n const pendingPageDataFetches = /* @__PURE__ */ new Map();\n const backgroundRefreshTimestamps = /* @__PURE__ */ new Map();\n function getCachedPageData(path) {\n const cacheIdentity = pageDataCacheIdentity2(path);\n const entry = pageDataCache.get(cacheIdentity);\n if (!entry) return null;\n if (Date.now() - entry.timestamp < CACHE_TTL_MS) return entry.data;\n pageDataCache.delete(cacheIdentity);\n backgroundRefreshTimestamps.delete(cacheIdentity);\n return null;\n }\n function setCachedPageData(path, data) {\n const cacheIdentity = pageDataCacheIdentity2(path);\n if (pageDataCache.size >= MAX_CACHE_SIZE) {\n const oldest = pageDataCache.keys().next().value;\n if (oldest) {\n pageDataCache.delete(oldest);\n backgroundRefreshTimestamps.delete(oldest);\n }\n }\n pageDataCache.set(cacheIdentity, { data, timestamp: Date.now() });\n }\n const scrollPositions = /* @__PURE__ */ new Map();\n function saveScrollPosition(path) {\n if (scrollPositions.size >= MAX_SCROLL_POSITIONS) {\n const oldest = scrollPositions.keys().next().value;\n if (oldest) scrollPositions.delete(oldest);\n }\n scrollPositions.set(path, window.scrollY);\n }\n function restoreScrollPosition(path) {\n const savedY = scrollPositions.get(path);\n if (savedY === void 0) return false;\n requestAnimationFrame(() => window.scrollTo(0, savedY));\n return true;\n }\n let progressBar = null;\n let progressTimeout = null;\n function showNavigationProgress() {\n if (!progressBar) {\n progressBar = document2.createElement("div");\n progressBar.id = "vf-nav-progress";\n progressBar.style.cssText = "position:fixed;top:0;left:0;height:3px;width:0;background:linear-gradient(90deg,#0066ff,#00aaff);z-index:99999;transition:width 0.3s ease-out,opacity 0.2s;opacity:1;";\n document2.body.prepend(progressBar);\n }\n progressBar.style.opacity = "1";\n progressBar.style.width = "30%";\n progressTimeout = setTimeout2(() => {\n if (progressBar?.style) progressBar.style.width = "70%";\n }, 300);\n document2.body.setAttribute("aria-busy", "true");\n }\n function hideNavigationProgress() {\n if (progressTimeout) {\n clearTimeout2(progressTimeout);\n progressTimeout = null;\n }\n if (progressBar) {\n progressBar.style.width = "100%";\n setTimeout2(() => {\n if (!progressBar) return;\n progressBar.style.opacity = "0";\n setTimeout2(() => {\n if (progressBar) progressBar.style.width = "0";\n }, 200);\n }, 150);\n }\n document2.body.removeAttribute("aria-busy");\n }\n let currentAbortController = null;\n function sleep(ms) {\n return new Promise((resolve) => setTimeout2(resolve, ms));\n }\n async function fetchWithRetry(url, options, maxRetries = MAX_RETRIES) {\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const controller = new AbortController();\n const callerSignal = options.signal;\n const abortFromCaller = () => controller.abort();\n if (callerSignal?.aborted) controller.abort();\n callerSignal?.addEventListener("abort", abortFromCaller, { once: true });\n const timeout = setTimeout2(() => controller.abort(), FETCH_TIMEOUT_MS);\n try {\n const response = await env2.fetch(url, { ...options, signal: controller.signal });\n clearTimeout2(timeout);\n callerSignal?.removeEventListener("abort", abortFromCaller);\n if (response.ok) return response;\n if (response.status >= 500 && attempt < maxRetries) {\n log("Server error, retrying...", response.status);\n await sleep(Math.pow(2, attempt) * 500);\n continue;\n }\n return response;\n } catch (error) {\n clearTimeout2(timeout);\n callerSignal?.removeEventListener("abort", abortFromCaller);\n if (error.name === "AbortError" && callerSignal?.aborted) throw error;\n if (attempt === maxRetries) throw error;\n log("Fetch failed, retrying...", error.message);\n await sleep(Math.pow(2, attempt) * 500);\n }\n }\n throw new Error("Failed to fetch page data");\n }\n async function fetchPageDataFresh(path, signal, options = {}) {\n const {\n triggerReloadOnVersionMismatch = false,\n recordRouteTiming = false,\n timingSource = "network"\n } = options;\n const endpoint = buildPageDataEndpoint(path, window.location.origin);\n const startedAt = recordRouteTiming ? routeTimingNow() : 0;\n log("Fetching page data:", path);\n perfStart("fetch:" + path);\n const headers = options.prefetch ? { "X-Veryfront-Prefetch": "1" } : { "X-Veryfront-Navigation": "spa" };\n if (documentPinKey) {\n headers["X-Veryfront-Dependency-Pins"] = documentPinKey;\n }\n const response = await fetchWithRetry(endpoint, {\n headers,\n signal\n }, options.prefetch ? 0 : MAX_RETRIES);\n if (!response.ok) {\n perfEnd("fetch:" + path);\n if (recordRouteTiming) {\n emitRouteTiming(\n "page-data",\n path,\n startedAt,\n buildPageDataTimingDetail(response, endpoint, startedAt, timingSource)\n );\n }\n const error = new Error("Failed to fetch page data: " + response.status);\n error.status = response.status;\n throw error;\n }\n perfStart("parse:" + path);\n const data = assertPageDataMatchesDocumentSnapshot(\n path,\n await response.json(),\n documentPinKey\n );\n perfEnd("parse:" + path);\n perfEnd("fetch:" + path);\n if (recordRouteTiming) {\n emitRouteTiming(\n "page-data",\n path,\n startedAt,\n buildPageDataTimingDetail(response, endpoint, startedAt, timingSource)\n );\n }\n if (triggerReloadOnVersionMismatch) {\n const checkedData = handlePageDataVersionMismatch(path, data);\n if (checkedData !== data) return checkedData;\n }\n setCachedPageData(path, data);\n return data;\n }\n function handlePageDataVersionMismatch(path, data) {\n if (data.buildVersion && checkVersionMismatch(data.buildVersion)) {\n log("Version mismatch detected, performing full page reload to:", path);\n navigateDocument(path);\n return new Promise(() => {\n });\n }\n return data;\n }\n function startPageDataFetch(path, signal, options = {}) {\n const cacheIdentity = pageDataCacheIdentity2(path);\n const request = fetchPageDataFresh(path, signal, options).finally(() => {\n if (options.trackPending !== false && pendingPageDataFetches.get(cacheIdentity) === request) {\n pendingPageDataFetches.delete(cacheIdentity);\n }\n });\n if (options.trackPending !== false) {\n pendingPageDataFetches.set(cacheIdentity, request);\n }\n return request;\n }\n function fetchPageDataDeduped(path) {\n const pending = pendingPageDataFetches.get(pageDataCacheIdentity2(path));\n if (pending) return pending;\n return startPageDataFetch(path, null);\n }\n function refreshPageDataInBackground(path) {\n const cacheIdentity = pageDataCacheIdentity2(path);\n const lastRefreshAt = backgroundRefreshTimestamps.get(cacheIdentity) || 0;\n const now = Date.now();\n if (now - lastRefreshAt < BACKGROUND_REFRESH_INTERVAL_MS) return;\n backgroundRefreshTimestamps.set(cacheIdentity, now);\n fetchPageDataDeduped(path).catch((error) => {\n logBackgroundFetchFailure("Stale page data refresh", path, error);\n });\n }\n async function fetchPageDataForNavigation(path, signal) {\n const startedAt = routeTimingNow();\n const cached = getCachedPageData(path);\n if (cached) {\n log("Using cached page data:", path);\n refreshPageDataInBackground(path);\n emitRouteTiming("page-data", path, startedAt, { source: "cache" });\n return cached;\n }\n const pending = pendingPageDataFetches.get(pageDataCacheIdentity2(path));\n if (pending) {\n log("Reusing pending page data fetch for navigation:", path);\n const data = await pending;\n emitRouteTiming("page-data", path, startedAt, { source: "deduped" });\n return handlePageDataVersionMismatch(path, data);\n }\n return startPageDataFetch(path, signal, {\n triggerReloadOnVersionMismatch: true,\n recordRouteTiming: true,\n timingSource: "network"\n });\n }\n function fetchPageDataForPrefetch(path, signal) {\n if (getCachedPageData(path)) return Promise.resolve();\n return startPageDataFetch(path, signal, { prefetch: true, trackPending: false }).then((data) => preloadModulesForPageData(data, path)).catch((error) => {\n if (!isAbortError(error)) {\n logBackgroundFetchFailure("Page data prefetch", path, error);\n }\n throw error;\n });\n }\n let currentPath = window.location.pathname;\n let isNavigating = false;\n async function navigateSPA(href, historyMode = "push", restoreScroll = false) {\n currentAbortController?.abort();\n if (isNavigating) return;\n isNavigating = true;\n const [navigationPath] = href.split("#");\n removeQueuedPrefetch(navigationPath || href);\n abortActiveSpeculativePrefetches();\n currentAbortController = new AbortController();\n const signal = currentAbortController.signal;\n const navigationStartedAt = routeTimingNow();\n showNavigationProgress();\n perfStart("nav:total:" + href);\n try {\n log("SPA navigating to:", href);\n saveScrollPosition(currentPath);\n const [path, hash] = href.split("#");\n const targetPath = path || currentPath;\n perfStart("nav:fetchData:" + href);\n const pageData = await fetchPageDataForNavigation(targetPath, signal);\n perfEnd("nav:fetchData:" + href);\n if (signal.aborted) return;\n if (pageData && pageData.redirect && typeof pageData.redirect.destination === "string") {\n const redirectUrl = resolveDocumentNavigationUrl(\n pageData.redirect.destination,\n window.location.origin\n );\n if (redirectUrl) {\n log("SPA navigation redirect -> " + redirectUrl);\n window.location.href = redirectUrl;\n return;\n }\n }\n if (historyMode === "push") {\n window.history.pushState({ pageData, scrollY: 0 }, "", href);\n } else if (historyMode === "replace") {\n window.history.replaceState({ pageData, scrollY: 0 }, "", href);\n }\n currentPath = targetPath;\n router.pathname = targetPath;\n router.query = Object.fromEntries(new URLSearchParams(window.location.search));\n router.params = flattenRouteParams(pageData.params);\n perfStart("nav:render:" + href);\n await renderPageFromData(pageData, targetPath);\n perfEnd("nav:render:" + href);\n if (restoreScroll) {\n restoreScrollPosition(targetPath);\n } else if (hash) {\n requestAnimationFrame(() => {\n const target = document2.getElementById(hash);\n if (target) {\n target.scrollIntoView({ behavior: "smooth" });\n return;\n }\n window.scrollTo(0, 0);\n });\n } else {\n window.scrollTo(0, 0);\n }\n hideNavigationProgress();\n perfEnd("nav:total:" + href);\n emitRouteTiming("total", targetPath, navigationStartedAt, {\n href,\n historyMode,\n restoreScroll\n });\n log("SPA navigation complete");\n } catch (error) {\n hideNavigationProgress();\n if (error.name === "AbortError") {\n log("Navigation aborted");\n return;\n }\n logError("SPA navigation failed:", error.message);\n if (error.status === 404) {\n logError("Page not found:", href);\n }\n navigateDocument(href);\n } finally {\n isNavigating = false;\n currentAbortController = null;\n processPageDataPrefetchQueue();\n }\n }\n async function loadPageDataComponent(pageData, path, options = {}) {\n if (!pageData.isolatedClientPage) return loadComponent(path, pageData, options);\n const moduleUrl = buildPinnedRscModuleUrl(path, pageData);\n const module = await snapshotModules2.importSnapshotBoundModule(\n moduleUrl,\n options.allowDocumentReload !== false\n );\n return module.MDXLayout || module.MainLayout || module.default || module;\n }\n async function renderPageFromData(pageData, targetPath) {\n if (pageData.requiresFullDocumentNavigation) {\n throw new Error("Server layout requires full document navigation");\n }\n if (window.__veryfrontSetReleaseId) {\n window.__veryfrontSetReleaseId(pageData.releaseId || null);\n }\n if (window.__veryfrontSetReleaseAssetModules) {\n window.__veryfrontSetReleaseAssetModules(pageData.releaseAssetModules || null);\n }\n perfStart("render:loadAll");\n const allPaths = getPageDataModulePaths(pageData);\n const modulesStartedAt = routeTimingNow();\n const components = await Promise.all(\n allPaths.map((path) => loadPageDataComponent(pageData, path))\n );\n emitRouteTiming("modules", targetPath, modulesStartedAt, { count: allPaths.length });\n perfEnd("render:loadAll");\n const [PageComponent, ...rest] = components;\n const ErrorComponent = pageData.errorPath ? rest.pop() : null;\n const AppComponent = pageData.appPath ? rest.pop() : null;\n const LayoutComponents = rest;\n if (!PageComponent) {\n throw new Error("Failed to load page component: " + pageData.pagePath);\n }\n handoffClientRouteMetadata(\n pageData.frontmatter ?? {},\n document2\n );\n if (pageData.css) {\n const existingStyle = document2.getElementById("veryfront-spa-css");\n if (existingStyle) {\n existingStyle.textContent = pageData.css;\n } else {\n const styleEl = document2.createElement("style");\n const nonce = getDocumentNonce(document2);\n if (nonce) styleEl.setAttribute("nonce", nonce);\n styleEl.id = "veryfront-spa-css";\n styleEl.textContent = pageData.css;\n document2.head.appendChild(styleEl);\n }\n log("Injected CSS for SPA navigation", { cssLength: pageData.css.length });\n } else if (pageData.cssAction === "clear") {\n const existingStyle = document2.getElementById("veryfront-spa-css");\n if (existingStyle) {\n existingStyle.remove();\n log("Cleared SPA CSS for release stylesheet navigation");\n }\n }\n const normalizedParams = flattenRouteParams(pageData.params);\n let tree = React2.createElement(PageComponent, {\n ...pageData.props,\n params: normalizedParams\n });\n if (pageData.layouts?.length) {\n for (let i = pageData.layouts.length - 1; i >= 0; i--) {\n const layout = pageData.layouts[i];\n const LayoutComponent = LayoutComponents[i];\n if (!LayoutComponent || !layout) continue;\n const layoutProps = pageData.layoutProps?.[layout.path] || {};\n tree = React2.createElement(LayoutComponent, { ...layoutProps, children: tree });\n }\n }\n if (AppComponent) {\n tree = React2.createElement(AppComponent, { children: tree });\n log("Wrapped with App component for SPA navigation");\n }\n if (ErrorComponent) {\n class AppRouterErrorBoundary extends React2.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n static getDerivedStateFromError(error) {\n return { hasError: true, error };\n }\n render() {\n if (this.state.hasError) {\n return React2.createElement(ErrorComponent, {\n error: this.state.error,\n reset: () => this.setState({ hasError: false, error: null })\n });\n }\n return this.props.children;\n }\n }\n tree = React2.createElement(AppRouterErrorBoundary, null, tree);\n }\n const headingsArray = pageData.headings || [];\n const pageContext = {\n slug: pageData.slug || "",\n path: pageData.pagePath || targetPath,\n params: normalizedParams,\n query: Object.fromEntries(new URLSearchParams(window.location.search)),\n frontmatter: pageData.frontmatter || {},\n data: pageData.props || {},\n headings: headingsArray,\n mdxHeadings: headingsArray\n };\n tree = React2.createElement(PageContextProvider2, { pageContext, children: tree });\n tree = React2.createElement(RouterProvider2, { router, children: tree });\n const container = pageData.isolatedClientPage ? document2.getElementById("veryfront-page-island") : document2.getElementById("root");\n if (!hydrationCompleted && !hydrationFailed) {\n log("Waiting for hydration to complete before SPA render...");\n try {\n await Promise.race([\n hydrationPromise,\n new Promise(\n (_, reject) => setTimeout2(() => reject(new Error("Hydration timeout")), 1e4)\n )\n ]);\n } catch (waitError) {\n log("Hydration wait failed:", waitError.message);\n }\n }\n if (container?.__reactRoot) {\n perfStart("render:reactRender");\n container.__reactRoot.render(tree);\n perfEnd("render:reactRender");\n log("Page re-rendered via SPA");\n scheduleRoutePrefetchRefresh();\n return;\n }\n if (hydrationFailed) {\n throw new Error(\n "React root not found - hydration failed, falling back to full page navigation"\n );\n }\n throw new Error("React root not found");\n }\n let prefetchTimeout = null;\n let currentHoverLink = null;\n let routePrefetchRefreshPending = false;\n let viewportPrefetchObserver = null;\n const observedPrefetchLinks = /* @__PURE__ */ new WeakSet();\n const prefetchedPaths = /* @__PURE__ */ new Set();\n const inFlightPrefetches = /* @__PURE__ */ new Set();\n const queuedPrefetchPaths = /* @__PURE__ */ new Set();\n const pageDataPrefetchQueue = [];\n const activePageDataPrefetchControllers = /* @__PURE__ */ new Map();\n function cancelScheduledPrefetch() {\n if (prefetchTimeout) {\n clearTimeout2(prefetchTimeout);\n prefetchTimeout = null;\n }\n currentHoverLink = null;\n }\n function getPageDataModulePaths(pageData) {\n const layoutPaths = (pageData.layouts || []).map((l) => l.path).filter(Boolean);\n const allPaths = [pageData.pagePath, ...layoutPaths].filter(Boolean);\n if (pageData.appPath) allPaths.push(pageData.appPath);\n if (pageData.errorPath) allPaths.push(pageData.errorPath);\n return allPaths;\n }\n function getCurrentRouteHref() {\n return window.location.pathname + window.location.search;\n }\n function getInternalRouteHrefFromLink(link) {\n if (!link || link.target === "_blank" || link.hasAttribute("download") || link.getAttribute("data-prefetch") === "false") {\n return null;\n }\n const href = link.getAttribute("href");\n if (!href || href.startsWith("#") || href.startsWith("//") || !href.startsWith("/")) {\n return null;\n }\n try {\n const url = new URL(href, window.location.origin);\n if (url.origin !== window.location.origin) return null;\n const routeHref = url.pathname + url.search;\n return routeHref === getCurrentRouteHref() ? null : routeHref;\n } catch (_) {\n return null;\n }\n }\n function getEligiblePrefetchLinks(limit) {\n const links = [];\n const seenHrefs = /* @__PURE__ */ new Set();\n for (const link of document2.querySelectorAll("a[href]")) {\n const href = getInternalRouteHrefFromLink(link);\n if (!href || seenHrefs.has(href)) continue;\n seenHrefs.add(href);\n links.push({ link, href });\n if (links.length >= limit) break;\n }\n return links;\n }\n async function preloadModulesForPageData(pageData, path) {\n if (!pageData || pageData.requiresFullDocumentNavigation) return;\n if (pageData.releaseId && window.__veryfrontSetReleaseId) {\n window.__veryfrontSetReleaseId(pageData.releaseId);\n }\n if (pageData.releaseAssetModules && window.__veryfrontSetReleaseAssetModules) {\n window.__veryfrontSetReleaseAssetModules(pageData.releaseAssetModules);\n }\n const modulePaths = getPageDataModulePaths(pageData);\n if (modulePaths.length === 0) return;\n try {\n await Promise.all(\n modulePaths.map(\n (modulePath) => loadPageDataComponent(pageData, modulePath, { allowDocumentReload: false })\n )\n );\n } catch (error) {\n if (isDependencySnapshotConflict(error)) {\n const cacheIdentity = pageDataCacheIdentity2(path);\n pageDataCache.delete(cacheIdentity);\n backgroundRefreshTimestamps.delete(cacheIdentity);\n prefetchedPaths.delete(path);\n throw error;\n }\n logBackgroundFetchFailure("Module prefetch", path, error);\n }\n }\n function removeQueuedPrefetch(path) {\n queuedPrefetchPaths.delete(path);\n for (let i = pageDataPrefetchQueue.length - 1; i >= 0; i--) {\n if (pageDataPrefetchQueue[i] === path) pageDataPrefetchQueue.splice(i, 1);\n }\n }\n function abortActiveSpeculativePrefetches() {\n for (const controller of activePageDataPrefetchControllers.values()) {\n controller.abort();\n }\n }\n function processPageDataPrefetchQueue() {\n if (isNavigating) return;\n while (activePageDataPrefetchControllers.size < PAGE_DATA_PREFETCH_CONCURRENCY && pageDataPrefetchQueue.length > 0) {\n const href = pageDataPrefetchQueue.shift();\n queuedPrefetchPaths.delete(href);\n if (prefetchedPaths.has(href) || inFlightPrefetches.has(href) || getCachedPageData(href)) {\n continue;\n }\n if (prefetchedPaths.size >= MAX_PREFETCH_PATHS) {\n const oldest = prefetchedPaths.values().next().value;\n if (oldest) prefetchedPaths.delete(oldest);\n }\n const controller = new AbortController();\n prefetchedPaths.add(href);\n inFlightPrefetches.add(href);\n activePageDataPrefetchControllers.set(href, controller);\n fetchPageDataForPrefetch(href, controller.signal).catch((error) => {\n prefetchedPaths.delete(href);\n if (isDependencySnapshotConflict(error)) {\n logBackgroundFetchFailure("Module prefetch", href, error);\n }\n }).finally(() => {\n inFlightPrefetches.delete(href);\n activePageDataPrefetchControllers.delete(href);\n processPageDataPrefetchQueue();\n });\n }\n }\n function prefetchPage(href) {\n if (isNavigating) return;\n if (prefetchedPaths.has(href) || inFlightPrefetches.has(href) || queuedPrefetchPaths.has(href)) return;\n const cachedPageData = getCachedPageData(href);\n if (cachedPageData) {\n preloadModulesForPageData(cachedPageData, href).catch((error) => {\n logBackgroundFetchFailure("Module prefetch", href, error);\n });\n return;\n }\n queuedPrefetchPaths.add(href);\n pageDataPrefetchQueue.push(href);\n processPageDataPrefetchQueue();\n }\n function prefetchEligibleRouteLinks(limit) {\n for (const { href } of getEligiblePrefetchLinks(limit)) {\n prefetchPage(href);\n }\n }\n function ensureViewportPrefetchObserver() {\n if (viewportPrefetchObserver || typeof IntersectionObserver !== "function") {\n return viewportPrefetchObserver;\n }\n viewportPrefetchObserver = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n if (!entry.isIntersecting) continue;\n viewportPrefetchObserver?.unobserve(entry.target);\n const href = getInternalRouteHrefFromLink(\n entry.target\n );\n if (href) prefetchPage(href);\n }\n }, { rootMargin: VIEWPORT_PREFETCH_ROOT_MARGIN });\n return viewportPrefetchObserver;\n }\n function observeViewportPrefetchLinks() {\n const observer = ensureViewportPrefetchObserver();\n if (!observer) return;\n for (const { link } of getEligiblePrefetchLinks(VIEWPORT_PREFETCH_MAX_LINKS)) {\n if (observedPrefetchLinks.has(link)) continue;\n observedPrefetchLinks.add(link);\n observer.observe(link);\n }\n }\n function runRoutePrefetchRefresh() {\n routePrefetchRefreshPending = false;\n prefetchEligibleRouteLinks(IDLE_PREFETCH_MAX_LINKS);\n observeViewportPrefetchLinks();\n }\n function scheduleRoutePrefetchRefresh() {\n if (routePrefetchRefreshPending) return;\n routePrefetchRefreshPending = true;\n setTimeout2(() => {\n if (typeof requestIdleCallback === "function") {\n requestIdleCallback(runRoutePrefetchRefresh, { timeout: IDLE_PREFETCH_DELAY_MS });\n return;\n }\n runRoutePrefetchRefresh();\n }, IDLE_PREFETCH_DELAY_MS);\n }\n const router = {\n domain: window.location.origin,\n path: window.location.pathname,\n push: (path) => {\n void navigateSPA(path, "push");\n },\n replace: (path) => {\n void navigateSPA(path, "replace");\n },\n back: () => {\n window.history.back();\n },\n forward: () => {\n window.history.forward();\n },\n prefetch: (path) => {\n prefetchPage(path);\n },\n pathname: window.location.pathname,\n query: Object.fromEntries(new URLSearchParams(window.location.search)),\n // Seed route params from the hydration data (issue #2741). Catch-all\n // segments arrive as arrays and are joined so no path info is lost.\n params: flattenRouteParams(deps.initialHydrationData.params || {}),\n isPreview: false,\n isMounted: true,\n navigate: (path) => navigateSPA(path, "push"),\n reload: () => window.location.reload()\n };\n window.__veryfrontRouter = router;\n if (deps.navigationStoreUsesRegistryFallback) {\n log("Router runtime does not export getNavigationStore; using shared v1 registry fallback");\n }\n if (typeof deps.getNavigationStore === "function") {\n deps.getNavigationStore().setNavigator((href, options) => {\n const mode = options && options.history;\n const historyMode = mode === "replace" ? "replace" : mode === "none" ? "none" : "push";\n return navigateSPA(href, historyMode);\n });\n }\n window.addEventListener("popstate", async (e) => {\n const path = window.location.pathname;\n log("Popstate:", path);\n saveScrollPosition(currentPath);\n if (!e.state?.pageData) {\n await navigateSPA(path, "none", true);\n return;\n }\n showNavigationProgress();\n try {\n currentPath = path;\n router.pathname = path;\n router.query = Object.fromEntries(new URLSearchParams(window.location.search));\n router.params = flattenRouteParams(e.state.pageData.params);\n await renderPageFromData(e.state.pageData, path);\n restoreScrollPosition(path);\n hideNavigationProgress();\n } catch (error) {\n hideNavigationProgress();\n logError("Popstate render failed:", error.message);\n window.location.reload();\n }\n });\n document2.addEventListener("click", (e) => {\n const link = e.target?.closest("a[href]");\n if (!link) return;\n const href = link.getAttribute("href");\n if (!href) return;\n if (href.startsWith("#")) {\n const target = document2.getElementById(href.slice(1));\n if (!target) return;\n e.preventDefault();\n target.scrollIntoView({ behavior: "smooth" });\n window.history.pushState(null, "", href);\n return;\n }\n if (link.target === "_blank" || link.hasAttribute("download") || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || !href.startsWith("/") || href.startsWith("//")) {\n return;\n }\n e.preventDefault();\n cancelScheduledPrefetch();\n void navigateSPA(href, "push");\n });\n document2.addEventListener(\n "mouseenter",\n (e) => {\n if (!e.target || typeof e.target.closest !== "function") return;\n const link = e.target.closest("a[href]");\n if (!link) return;\n const href = getInternalRouteHrefFromLink(link);\n if (!href) return;\n if (currentHoverLink === link) return;\n if (prefetchTimeout) {\n clearTimeout2(prefetchTimeout);\n prefetchTimeout = null;\n }\n currentHoverLink = link;\n prefetchTimeout = setTimeout2(() => {\n prefetchPage(href);\n prefetchTimeout = null;\n }, PREFETCH_DELAY_MS);\n },\n true\n );\n document2.addEventListener(\n "mouseleave",\n (e) => {\n if (!e.target || typeof e.target.closest !== "function") return;\n const relatedTarget = e.relatedTarget;\n if (currentHoverLink && relatedTarget && currentHoverLink.contains(relatedTarget)) return;\n cancelScheduledPrefetch();\n },\n true\n );\n if (document2.readyState === "loading") {\n document2.addEventListener("DOMContentLoaded", scheduleRoutePrefetchRefresh, { once: true });\n } else {\n scheduleRoutePrefetchRefresh();\n }\n window.useRouter = () => {\n try {\n return env2.useRouterFromModule();\n } catch (_) {\n return window.__veryfrontRouter;\n }\n };\n return {\n router,\n navigateSPA,\n renderPageFromData,\n prefetchPage,\n signalHydrationComplete,\n signalHydrationFailed\n };\n}\n\n// src/html/hydration-script-builder/runtime/renderer.ts\nfunction isModuleNotFoundError(error) {\n if (!error) return false;\n if (error instanceof SyntaxError) return false;\n const message = String(error.message || error);\n return /(?:dynamically imported module|Importing a module script failed|Failed to load module script)/i.test(message);\n}\nfunction preferReachedModuleError(earlier, later) {\n if (!earlier) return later;\n if (!later) return earlier;\n if (isModuleNotFoundError(earlier) && !isModuleNotFoundError(later)) return later;\n return earlier;\n}\nasync function loadPageModuleWithIndexFallback(basePath, pageSlug, pageModuleError, importModule) {\n try {\n return await importModule(basePath + ".js");\n } catch (error) {\n const routeError = preferReachedModuleError(pageModuleError, error);\n if (pageSlug === "index" || pageSlug.endsWith("/index")) throw routeError;\n try {\n return await importModule(basePath + "/index.js");\n } catch (indexError) {\n throw preferReachedModuleError(routeError, indexError);\n }\n }\n}\nfunction isAppRouterPath(path, appRouterRoot) {\n const normalizedPath = typeof path === "string" ? path.replace(/^\\/+/, "") : "";\n return normalizedPath === appRouterRoot || normalizedPath.startsWith(appRouterRoot + "/");\n}\nfunction isRootAppLayoutPath(path, appRouterRoot) {\n const normalizedPath = typeof path === "string" ? path.replace(/^\\/+/, "") : "";\n const pathWithoutExtension = normalizedPath.replace(/\\.(?:tsx|jsx|ts|js)$/, "");\n return pathWithoutExtension === appRouterRoot + "/layout";\n}\nfunction unwrapAppRouterDocumentLayout(LayoutComponent, React2) {\n return function AppRouterDocumentLayout(props) {\n const element = LayoutComponent(props);\n const asElement = element;\n if (!React2.isValidElement(element) || asElement.type !== "html") {\n return element;\n }\n const body = React2.Children.toArray(asElement.props?.children).find(\n (child) => React2.isValidElement(child) && child.type === "body"\n );\n return body?.props?.children ?? props.children;\n };\n}\nfunction createHydrationRenderer(deps) {\n const { env: env2, logging: logging2, componentLoader: componentLoader2, snapshotModules: snapshotModules2, moduleServerUrl: moduleServerUrl2 } = deps;\n const { window, document: document2, React: React2, RouterProvider: RouterProvider2, PageContextProvider: PageContextProvider2 } = env2;\n const { DEBUG, log, logError } = logging2;\n const { loadComponent, pathToModuleUrl } = componentLoader2;\n const { importSnapshotBoundModule } = snapshotModules2;\n async function renderPage(pathname) {\n const resolvedPathname = (() => {\n const input = typeof pathname === "string" ? pathname : window.location.pathname;\n try {\n return new URL(input, window.location.origin).pathname || "/";\n } catch (_) {\n const [pathOnly] = String(input || "/").split(/[?#]/);\n return pathOnly || "/";\n }\n })();\n const dataScript = findServerHydrationDataElement(document2);\n if (!dataScript) {\n logError("Hydration data not found");\n return;\n }\n let data = {};\n try {\n data = JSON.parse(dataScript.textContent || "{}");\n } catch (parseError) {\n logError("Failed to parse hydration data:", parseError);\n return;\n }\n log("Hydration data:", data);\n if (data.studioEmbed && window.__veryfrontSetStudioEmbed) {\n window.__veryfrontSetStudioEmbed(true);\n }\n if (window.__veryfrontSetReleaseId) {\n window.__veryfrontSetReleaseId(data.releaseId || null);\n }\n if (data.releaseAssetModules && window.__veryfrontSetReleaseAssetModules) {\n window.__veryfrontSetReleaseAssetModules(data.releaseAssetModules);\n }\n try {\n let pageModule;\n const pagePath = typeof data.pagePath === "string" ? data.pagePath : "";\n const normalizedPagePath = pagePath.replace(/^\\/+/, "");\n const normalizedAppRouterRoot = typeof data.appRouterRoot === "string" && data.appRouterRoot.replace(/^\\/+|\\/+$/g, "") ? data.appRouterRoot.replace(/^\\/+|\\/+$/g, "") : "app";\n const hasReleaseAssetModules = data.releaseAssetModules && Object.keys(data.releaseAssetModules).length > 0;\n const shouldRenderRscClientPage = data.clientModuleStrategy === "rsc-module" && !hasReleaseAssetModules && isAppRouterPath(normalizedPagePath, normalizedAppRouterRoot);\n const isolatedClientPage = data.isolatedClientPage === true;\n const loadHydrationComponent = async (path, preferRscModule) => {\n const normalizedPath = typeof path === "string" ? path.replace(/^\\/+/, "") : "";\n if (preferRscModule && isAppRouterPath(normalizedPath, normalizedAppRouterRoot)) {\n const moduleUrl = buildPinnedRscModuleUrl(path, data);\n log("Loading App Router component from RSC module:", moduleUrl);\n const module = await importSnapshotBoundModule(moduleUrl);\n return module.default || module;\n }\n return loadComponent(path, data);\n };\n let pageModuleError = null;\n if (data.pagePath) {\n const moduleUrl = shouldRenderRscClientPage ? buildPinnedRscModuleUrl(data.pagePath, data) : pathToModuleUrl(data.pagePath, data.studioEmbed, data);\n log("Loading page from hydration data:", moduleUrl);\n try {\n pageModule = await importSnapshotBoundModule(moduleUrl);\n } catch (error) {\n pageModuleError = error;\n logError("Failed to load page from hydration data:", error);\n }\n }\n if (!pageModule) {\n const pageSlug = resolvedPathname === "/" ? "index" : resolvedPathname.slice(1);\n log("Falling back to Pages Router pattern:", pageSlug);\n const prefix = pageSlug.startsWith("@/") ? "" : "/pages";\n const basePath = moduleServerUrl2 + prefix + "/" + pageSlug;\n pageModule = await loadPageModuleWithIndexFallback(\n basePath,\n pageSlug,\n pageModuleError,\n (moduleUrl) => importSnapshotBoundModule(appendDependencyPinningVersion(moduleUrl, data))\n );\n }\n if (!pageModule) {\n logError("Page module failed to load");\n return;\n }\n const PageComponent = pageModule.default || pageModule;\n if (!PageComponent) {\n logError("Page component not found");\n return;\n }\n const normalizedParams = flattenRouteParams(data.params);\n const pageProps = { ...data.props || {}, params: normalizedParams };\n let tree = React2.createElement(PageComponent, pageProps);\n const layouts = data.layouts;\n if (layouts?.length) {\n for (let i = layouts.length - 1; i >= 0; i--) {\n const layout = layouts[i];\n if (!layout) continue;\n const LayoutComponent = await loadHydrationComponent(\n layout.path,\n shouldRenderRscClientPage\n );\n if (LayoutComponent) {\n const WrappedLayoutComponent = shouldRenderRscClientPage && isRootAppLayoutPath(layout.path, normalizedAppRouterRoot) ? unwrapAppRouterDocumentLayout(LayoutComponent, React2) : LayoutComponent;\n const layoutProps = data.layoutProps?.[layout.path] || {};\n tree = React2.createElement(\n WrappedLayoutComponent,\n { ...layoutProps, children: tree }\n );\n }\n }\n }\n if (data.appPath && !isolatedClientPage) {\n const AppComponent = await loadHydrationComponent(data.appPath, shouldRenderRscClientPage);\n if (AppComponent) {\n tree = React2.createElement(AppComponent, { children: tree });\n }\n }\n if (data.errorPath) {\n const ErrorComponent = await loadHydrationComponent(\n data.errorPath,\n shouldRenderRscClientPage\n );\n if (ErrorComponent) {\n class AppRouterErrorBoundary extends React2.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n static getDerivedStateFromError(error) {\n return { hasError: true, error };\n }\n render() {\n if (this.state.hasError) {\n return React2.createElement(ErrorComponent, {\n error: this.state.error,\n reset: () => this.setState({ hasError: false, error: null })\n });\n }\n return this.props.children;\n }\n }\n tree = React2.createElement(AppRouterErrorBoundary, null, tree);\n }\n }\n const headings = data.headings || [];\n const pageContext = {\n slug: data.slug || "",\n path: data.pagePath || resolvedPathname,\n params: normalizedParams,\n query: Object.fromEntries(new URLSearchParams(window.location.search)),\n frontmatter: data.frontmatter || {},\n data: data.props || {},\n headings,\n mdxHeadings: headings\n // Alias for backwards compatibility\n };\n tree = React2.createElement(PageContextProvider2, { pageContext, children: tree });\n tree = React2.createElement(RouterProvider2, { router: deps.router, children: tree });\n const container = isolatedClientPage ? document2.getElementById("veryfront-page-island") : document2.getElementById("root");\n if (!container) {\n if (isolatedClientPage) {\n throw new Error("Isolated client page root not found");\n }\n return;\n }\n if (container.__reactRoot) {\n container.__reactRoot.render(tree);\n log("Page re-rendered");\n return;\n }\n if (shouldRenderRscClientPage) {\n container.__reactRoot = env2.createRoot(container);\n container.__reactRoot.render(tree);\n log("Client-side React app rendered successfully");\n } else {\n const { hydrateRoot } = await import("react-dom/client");\n const options = {\n identifierPrefix: "vf",\n onRecoverableError: (error) => {\n if (data.dev && DEBUG) {\n log("Hydration mismatch (suppressed):", error.message);\n }\n }\n };\n container.__reactRoot = hydrateRoot(container, tree, options);\n log("Client-side React app hydrated successfully");\n }\n if (window.__veryfrontHydrationComplete) {\n window.__veryfrontHydrationComplete();\n }\n } catch (error) {\n logError("Client initialization error:", error);\n if (window.__veryfrontHydrationFailed) {\n window.__veryfrontHydrationFailed(error);\n }\n }\n }\n function start() {\n window.__veryfrontRenderPage = renderPage;\n void renderPage(window.location.pathname);\n const initialDataScript = findServerHydrationDataElement(document2);\n if (initialDataScript) {\n try {\n const pageData = JSON.parse(initialDataScript.textContent || "{}");\n if (pageData.pagePath) {\n window.history.replaceState({ pageData, scrollY: 0 }, "", window.location.href);\n log("Stored initial page data in history state");\n }\n } catch (_) {\n }\n }\n }\n return { renderPage, start };\n}\n\n// src/html/hydration-script-builder/runtime/navigation-store.ts\nvar NAVIGATION_STORE_REGISTRY_KEY = "veryfront.navigation.store.v1";\nfunction resolveNavigationStore(RouterRuntime2) {\n const usesRegistryFallback2 = typeof RouterRuntime2.getNavigationStore !== "function";\n if (!usesRegistryFallback2) {\n return {\n usesRegistryFallback: usesRegistryFallback2,\n getNavigationStore: RouterRuntime2.getNavigationStore\n };\n }\n return {\n usesRegistryFallback: usesRegistryFallback2,\n getNavigationStore: () => {\n const storeKey = Symbol.for(NAVIGATION_STORE_REGISTRY_KEY);\n const registry = globalThis;\n const existing = registry[storeKey];\n if (existing) return existing;\n const listeners = /* @__PURE__ */ new Set();\n let navigator = null;\n const store = {\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n getHref() {\n const loc = globalThis.location;\n return loc ? loc.pathname + loc.search + loc.hash : "/";\n },\n notify() {\n for (const listener of [...listeners]) {\n try {\n listener();\n } catch {\n }\n }\n },\n navigate(href, options) {\n if (navigator) return navigator(href, options);\n globalThis.location?.assign(href);\n return Promise.resolve();\n },\n setNavigator(next) {\n navigator = next;\n }\n };\n registry[storeKey] = store;\n return store;\n }\n };\n}\n\n// src/html/hydration-script-builder/runtime/main.ts\nvar runtimeWindow = globalThis;\nvar runtimeDocument = globalThis.document;\nvar env = {\n window: runtimeWindow,\n document: runtimeDocument,\n fetch: (url, init) => fetch(url, init),\n React,\n RouterProvider,\n PageContextProvider,\n createRoot: (container) => createRoot(container),\n importModule: (moduleUrl) => import(moduleUrl),\n useRouterFromModule,\n setTimeout: (handler, timeout) => setTimeout(handler, timeout),\n clearTimeout: (id) => clearTimeout(id)\n};\nvar logging = createLogging(runtimeWindow);\nvar initialHydrationData = readInitialHydrationData(runtimeDocument);\nvar documentDependencyPinningCacheKey = readDocumentDependencyPinningCacheKey(\n initialHydrationData\n);\nvar routeTiming = createRouteTimingRecorder(runtimeWindow, logging);\nvar snapshotModules = createSnapshotModuleImporter({\n importModule: env.importModule,\n fetchModule: env.fetch,\n reloadDocument: () => runtimeWindow.location.reload(),\n recoveryState: runtimeWindow\n});\nvar componentLoader = createComponentLoader({\n window: runtimeWindow,\n logging,\n moduleServerUrl: moduleServerUrl(runtimeWindow),\n snapshotModules\n});\nruntimeWindow.__veryfrontClearComponentCache = componentLoader.clearComponentCache;\nruntimeWindow.__veryfrontSetStudioEmbed = componentLoader.setStudioEmbed;\nruntimeWindow.__veryfrontSetReleaseId = componentLoader.setReleaseId;\nruntimeWindow.__veryfrontSetReleaseAssetModules = componentLoader.setReleaseAssetModules;\nruntimeWindow.__veryfrontSetHMRRefreshTimestamp = componentLoader.setHMRRefreshTimestamp;\nvar { usesRegistryFallback, getNavigationStore } = resolveNavigationStore(RouterRuntime);\nvar routerRuntime = createRouterRuntime({\n env,\n logging,\n routeTiming,\n componentLoader,\n snapshotModules,\n initialHydrationData,\n documentDependencyPinningCacheKey,\n getNavigationStore,\n navigationStoreUsesRegistryFallback: usesRegistryFallback\n});\ncreateHydrationRenderer({\n env,\n logging,\n componentLoader,\n snapshotModules,\n moduleServerUrl: moduleServerUrl(runtimeWindow),\n router: routerRuntime.router\n}).start();\n';
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Client identity for guarded egress, standing in for the runtime-supplied
|
|
8
8
|
* `user-agent` (`node`, `Deno/x.y.z`) that this transport cannot inherit.
|
|
9
9
|
*/
|
|
10
|
-
export declare const DEFAULT_OUTBOUND_USER_AGENT = "veryfront/0.1.
|
|
10
|
+
export declare const DEFAULT_OUTBOUND_USER_AGENT = "veryfront/0.1.1217";
|
|
11
11
|
/**
|
|
12
12
|
* Fill in the request headers a plain `fetch` attaches on its own, leaving any
|
|
13
13
|
* the caller set untouched. This transport talks to `node:http` directly, so
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
* @module security/http/derived-csp-cache
|
|
9
9
|
*/
|
|
10
10
|
import { type DerivationSourceFile, type DerivedCspOrigins } from "./derived-csp-origins.js";
|
|
11
|
+
/** @returns whether this key's diagnostic has not been emitted yet */
|
|
12
|
+
export declare function shouldWarnOnceForKey(key: string): boolean;
|
|
11
13
|
export interface DerivedCspLookup {
|
|
12
14
|
/** Project scope, so two projects on one pod cannot share an entry. */
|
|
13
15
|
readonly projectScope: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derived-csp-cache.d.ts","sourceRoot":"","sources":["../../../../src/src/security/http/derived-csp-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAuClC,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,SAAS,oBAAoB,EAAE,GAAG,IAAI,CAAC,CAAC;CACjF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAmB5B;
|
|
1
|
+
{"version":3,"file":"derived-csp-cache.d.ts","sourceRoot":"","sources":["../../../../src/src/security/http/derived-csp-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAuClC,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASzD;AAcD,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,SAAS,oBAAoB,EAAE,GAAG,IAAI,CAAC,CAAC;CACjF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAmB5B;AAsED,2BAA2B;AAC3B,wBAAgB,8BAA8B,IAAI,IAAI,CAIrD"}
|
|
@@ -29,6 +29,30 @@ registerCache("derived-csp-origins", () => ({
|
|
|
29
29
|
entries: cache.size,
|
|
30
30
|
maxEntries: MAX_ENTRIES,
|
|
31
31
|
}));
|
|
32
|
+
/**
|
|
33
|
+
* Content versions already reported as underivable.
|
|
34
|
+
*
|
|
35
|
+
* The two failure paths deliberately do not `remember`, so the read is retried
|
|
36
|
+
* on the next request -- which means without this they would warn on every
|
|
37
|
+
* request for as long as the failure lasts, on every pod. The diagnostic is
|
|
38
|
+
* worth one line per content version, not one per request.
|
|
39
|
+
*
|
|
40
|
+
* Bounded like the cache, and for the same reason.
|
|
41
|
+
*/
|
|
42
|
+
const warned = new Set();
|
|
43
|
+
/** @returns whether this key's diagnostic has not been emitted yet */
|
|
44
|
+
export function shouldWarnOnceForKey(key) {
|
|
45
|
+
if (warned.has(key))
|
|
46
|
+
return false;
|
|
47
|
+
while (warned.size >= MAX_ENTRIES) {
|
|
48
|
+
const oldest = warned.values().next().value;
|
|
49
|
+
if (oldest === undefined)
|
|
50
|
+
break;
|
|
51
|
+
warned.delete(oldest);
|
|
52
|
+
}
|
|
53
|
+
warned.add(key);
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
32
56
|
function remember(key, value) {
|
|
33
57
|
// Insertion-ordered eviction: the oldest content version is the one least
|
|
34
58
|
// likely to still be serving traffic.
|
|
@@ -75,10 +99,17 @@ async function deriveOnce(key, lookup) {
|
|
|
75
99
|
files = await lookup.loadSourceFiles();
|
|
76
100
|
}
|
|
77
101
|
catch (error) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
102
|
+
// Warn, not debug. Every path out of this function is a silent `EMPTY`, so
|
|
103
|
+
// a derivation that never works looks exactly like a project that
|
|
104
|
+
// references no external origins. That is how this shipped doing nothing
|
|
105
|
+
// in production while reading as healthy.
|
|
106
|
+
if (shouldWarnOnceForKey(key)) {
|
|
107
|
+
logger.warn("CSP derivation could not read project sources", {
|
|
108
|
+
projectScope: lookup.projectScope,
|
|
109
|
+
contentVersion: lookup.contentVersion,
|
|
110
|
+
error: error instanceof Error ? error.message : String(error),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
82
113
|
// Deliberately not remembered. See below.
|
|
83
114
|
return EMPTY;
|
|
84
115
|
}
|
|
@@ -96,21 +127,34 @@ async function deriveOnce(key, lookup) {
|
|
|
96
127
|
// So distinguish the two cases: files read and no origins found is immutable
|
|
97
128
|
// for the content version and worth caching, while nothing read is a race and
|
|
98
129
|
// must be retried.
|
|
99
|
-
if (!files || files.length === 0)
|
|
130
|
+
if (!files || files.length === 0) {
|
|
131
|
+
if (shouldWarnOnceForKey(key)) {
|
|
132
|
+
logger.warn("CSP derivation read no project sources", {
|
|
133
|
+
projectScope: lookup.projectScope,
|
|
134
|
+
contentVersion: lookup.contentVersion,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
100
137
|
return EMPTY;
|
|
138
|
+
}
|
|
101
139
|
const derived = deriveCspOriginsFromSource(files);
|
|
102
140
|
const count = derived["img-src"]?.length ?? 0;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
141
|
+
// Logged once per content version, because that is exactly what the cache key
|
|
142
|
+
// is, so this cannot grow with traffic. Both outcomes are recorded: "read 40
|
|
143
|
+
// files, derived 0 origins" is the shape of a broken derivation, and it is
|
|
144
|
+
// indistinguishable from a correct one unless the file count is stated.
|
|
145
|
+
logger.info("Derived CSP origins from project source", {
|
|
146
|
+
projectScope: lookup.projectScope,
|
|
147
|
+
contentVersion: lookup.contentVersion,
|
|
148
|
+
fileCount: files.length,
|
|
149
|
+
filesWithContent: files.filter((file) => typeof file.content === "string" && file.content !== "")
|
|
150
|
+
.length,
|
|
151
|
+
originCount: count,
|
|
152
|
+
});
|
|
110
153
|
return remember(key, derived);
|
|
111
154
|
}
|
|
112
155
|
/** @internal Test seam. */
|
|
113
156
|
export function __clearDerivedCspCacheForTests() {
|
|
114
157
|
cache.clear();
|
|
115
158
|
inFlight.clear();
|
|
159
|
+
warned.clear();
|
|
116
160
|
}
|
|
@@ -116,5 +116,30 @@ interface ProxyGuardResult {
|
|
|
116
116
|
export declare function prepareProjectRequest(input: PrepareProjectRequestInput): Promise<PreparedProjectRequest>;
|
|
117
117
|
export declare function resolveProjectIdentity(input: ResolveProjectIdentityInput): Promise<ProjectIdentityResolution>;
|
|
118
118
|
export declare function resolveProjectRuntimeContext(input: ResolveProjectRuntimeContextInput): Promise<ProjectRuntimeContextResolution>;
|
|
119
|
+
/**
|
|
120
|
+
* Derive a project's passive CSP origins inside its own adapter context.
|
|
121
|
+
*
|
|
122
|
+
* The source read and the snapshot identity are both taken under
|
|
123
|
+
* `runWithContext`, because the multi-project adapter selects the tenant from
|
|
124
|
+
* AsyncLocalStorage and silently yields nothing -- or the wrong project --
|
|
125
|
+
* without it.
|
|
126
|
+
*/
|
|
127
|
+
/**
|
|
128
|
+
* Derive a project's CSP origins from the source its release pins.
|
|
129
|
+
*
|
|
130
|
+
* Exported because this seam had no test at all: the extractor was covered and
|
|
131
|
+
* the header merge was covered, but nothing exercised the part that actually
|
|
132
|
+
* reads an adapter -- which is where it was broken in production for every
|
|
133
|
+
* hosted project while both neighbours stayed green.
|
|
134
|
+
*/
|
|
135
|
+
export declare function deriveProjectCspOrigins(args: {
|
|
136
|
+
adapter: RuntimeAdapter;
|
|
137
|
+
projectSlug: string;
|
|
138
|
+
projectId: string | undefined;
|
|
139
|
+
token: string;
|
|
140
|
+
releaseId: string | undefined;
|
|
141
|
+
branch: string | null | undefined;
|
|
142
|
+
environmentName: string | undefined;
|
|
143
|
+
}): Promise<SecurityConfig["derivedCsp"]>;
|
|
119
144
|
export {};
|
|
120
145
|
//# sourceMappingURL=project-runtime-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-runtime-context.d.ts","sourceRoot":"","sources":["../../../../src/src/server/runtime-handler/project-runtime-context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project-runtime-context.d.ts","sourceRoot":"","sources":["../../../../src/src/server/runtime-handler/project-runtime-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM3D,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAKhF,KAAK,kBAAkB,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7D,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACtE,KAAK,qBAAqB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACrE,KAAK,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;AAC5E,KAAK,wBAAwB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;AAC3E,KAAK,4BAA4B,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC1E,KAAK,uBAAuB,GAAG,UAAU,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAEnF,KAAK,sBAAsB,GAAG;IAC5B,GAAG,CAAC,KAAK,EAAE;QACT,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrC,CAAC;AAEF,KAAK,sBAAsB,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7E,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,qBAAqB,CAAC;IAC/B,cAAc,EAAE,qBAAqB,CAAC;IACtC,UAAU,EAAE;QACV,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;QAClC,sBAAsB,EAAE,OAAO,CAAC;KACjC,CAAC;IACF,WAAW,EAAE,mBAAmB,CAAC;IACjC,aAAa,EAAE,oBAAoB,CAAC;IACpC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,qBAAqB,CAAC;IAC/B,cAAc,EAAE,qBAAqB,CAAC;IACtC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,EAAE;QACV,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;KACnC,CAAC;CACH;AAED,MAAM,WAAW,iCAAiC;IAChD,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,eAAe,EAAE,yBAAyB,CAAC;IAC3C,OAAO,EAAE,qBAAqB,CAAC;IAC/B,cAAc,EAAE,qBAAqB,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,4EAA4E;IAC5E,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,UAAU,EAAE;QACV,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;KACnC,CAAC;IACF,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IAC9C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,EAAE,sBAAsB,CAAC;IACpC,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,qBAAqB,CAAC,EAAE,CAAC,WAAW,EAAE,4BAA4B,KAAK,IAAI,CAAC;IAC5E,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACvE;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,EAAE,wBAAwB,CAAC;IAClC,WAAW,EAAE,4BAA4B,CAAC;IAC1C,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,uBAAuB,EAAE,uBAAuB,CAAC;CAClD;AAED,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,sBAAsB,CAAC,CA8CjC;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,yBAAyB,CAAC,CAcpC;AAED,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,+BAA+B,CAAC,CAqQ1C;AAyED;;;;;;;GAOG;AACH;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,GAAG,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAwFxC"}
|
|
@@ -362,16 +362,49 @@ function createProxyGuard(req, isProxyMode, headers, proxyTrusted, identityHeade
|
|
|
362
362
|
* AsyncLocalStorage and silently yields nothing -- or the wrong project --
|
|
363
363
|
* without it.
|
|
364
364
|
*/
|
|
365
|
-
|
|
366
|
-
|
|
365
|
+
/**
|
|
366
|
+
* Derive a project's CSP origins from the source its release pins.
|
|
367
|
+
*
|
|
368
|
+
* Exported because this seam had no test at all: the extractor was covered and
|
|
369
|
+
* the header merge was covered, but nothing exercised the part that actually
|
|
370
|
+
* reads an adapter -- which is where it was broken in production for every
|
|
371
|
+
* hosted project while both neighbours stayed green.
|
|
372
|
+
*/
|
|
373
|
+
export async function deriveProjectCspOrigins(args) {
|
|
374
|
+
// Each early return below is indistinguishable, from the served header, from
|
|
375
|
+
// a project that references no external origins. Naming which one fired is
|
|
376
|
+
// the difference between diagnosing this from logs and needing a live probe.
|
|
377
|
+
if (!isExtendedFSAdapter(args.adapter.fs) || !args.adapter.fs.runWithContext) {
|
|
378
|
+
logger.warn("CSP derivation skipped: adapter cannot run in a tenant context", {
|
|
379
|
+
projectSlug: args.projectSlug,
|
|
380
|
+
});
|
|
367
381
|
return undefined;
|
|
382
|
+
}
|
|
368
383
|
const fs = args.adapter.fs;
|
|
369
384
|
const run = async () => {
|
|
385
|
+
// Read through the same door the config load uses. `getAllSourceFiles`
|
|
386
|
+
// needs a content context, and `ensureSourceSnapshotFresh` is what
|
|
387
|
+
// establishes one -- it awaits `ensureInitialized` before deciding whether
|
|
388
|
+
// a refresh is due. Without it the adapter answers with an empty list and,
|
|
389
|
+
// because its warmup is itself gated on being initialized, never fills in
|
|
390
|
+
// afterwards. That is not a cold cache that warms a moment later; it never
|
|
391
|
+
// warms, which is why hosted production projects derived nothing on every
|
|
392
|
+
// request while preview, whose adapter was already initialized by then,
|
|
393
|
+
// looked correct.
|
|
394
|
+
await fs.ensureSourceSnapshotFresh?.("csp-derivation");
|
|
370
395
|
const underlying = typeof fs.getUnderlyingAdapter === "function"
|
|
371
396
|
? fs.getUnderlyingAdapter()
|
|
372
397
|
: undefined;
|
|
373
|
-
if (!underlying || typeof underlying.getAllSourceFiles !== "function")
|
|
398
|
+
if (!underlying || typeof underlying.getAllSourceFiles !== "function") {
|
|
399
|
+
logger.warn("CSP derivation skipped: adapter exposes no source listing", {
|
|
400
|
+
projectSlug: args.projectSlug,
|
|
401
|
+
hasUnderlying: Boolean(underlying),
|
|
402
|
+
});
|
|
374
403
|
return undefined;
|
|
404
|
+
}
|
|
405
|
+
// The wrapper may delegate without exposing the hook, so ask the adapter
|
|
406
|
+
// that actually owns the file list too.
|
|
407
|
+
await underlying.ensureSourceSnapshotFresh?.("csp-derivation");
|
|
375
408
|
// Branch and environment content versions are stable while the content
|
|
376
409
|
// under them changes, so the adapter's snapshot generation is what actually
|
|
377
410
|
// moves when a preview is pushed to. Without it a preview would serve a
|
|
@@ -398,8 +431,13 @@ async function deriveProjectCspOrigins(args) {
|
|
|
398
431
|
environmentName: args.environmentName ?? null,
|
|
399
432
|
});
|
|
400
433
|
}
|
|
401
|
-
catch {
|
|
402
|
-
// Never fail a response over a CSP nicety.
|
|
434
|
+
catch (error) {
|
|
435
|
+
// Never fail a response over a CSP nicety, but do not swallow it either.
|
|
436
|
+
logger.warn("CSP derivation failed", {
|
|
437
|
+
projectSlug: args.projectSlug,
|
|
438
|
+
releaseId: args.releaseId,
|
|
439
|
+
error: error instanceof Error ? error.message : String(error),
|
|
440
|
+
});
|
|
403
441
|
return undefined;
|
|
404
442
|
}
|
|
405
443
|
}
|
|
@@ -32,8 +32,16 @@ export declare const LOAD_SKILL_CONTINUE_SAME_TURN = "Continue the same turn aft
|
|
|
32
32
|
* those fields. `createLoadSkillTool` returns `{ skillId, instructions,
|
|
33
33
|
* references, scripts }`, so telling a factory-built agent to forward returned
|
|
34
34
|
* overrides would name fields its `load_skill` never produces.
|
|
35
|
+
*
|
|
36
|
+
* The `invoke_agent` condition is load-bearing, not incidental. Overrides are
|
|
37
|
+
* applied only to that tool (`applySkillDelegationOverridesToToolInput` returns
|
|
38
|
+
* its input unchanged for any other tool name), and scoped `agent_<id>`
|
|
39
|
+
* delegates accept only `{ input }` (`AgentToolInput`), so they cannot carry
|
|
40
|
+
* model/thinking/maxSteps at all. Phrasing the clause conditionally keeps it
|
|
41
|
+
* accurate on runs where `invoke_agent` is absent, without needing a dynamic
|
|
42
|
+
* description.
|
|
35
43
|
*/
|
|
36
|
-
export declare const LOAD_SKILL_OVERRIDE_FORWARDING = "
|
|
44
|
+
export declare const LOAD_SKILL_OVERRIDE_FORWARDING = "If invoke_agent is available, pass through any returned model, thinking, or maxSteps overrides when delegating to it.";
|
|
37
45
|
/**
|
|
38
46
|
* The behavioural contract every `load_skill` tool description must state,
|
|
39
47
|
* appended after that tool's own mechanics.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-skill-policy.d.ts","sourceRoot":"","sources":["../../../src/src/skill/load-skill-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,iCAAiC,qDAAqD,CAAC;AAEpG,iEAAiE;AACjE,eAAO,MAAM,qCAAqC,kGAC+C,CAAC;AAElG,iEAAiE;AACjE,eAAO,MAAM,6BAA6B,6CAA6C,CAAC;AAExF
|
|
1
|
+
{"version":3,"file":"load-skill-policy.d.ts","sourceRoot":"","sources":["../../../src/src/skill/load-skill-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,iCAAiC,qDAAqD,CAAC;AAEpG,iEAAiE;AACjE,eAAO,MAAM,qCAAqC,kGAC+C,CAAC;AAElG,iEAAiE;AACjE,eAAO,MAAM,6BAA6B,6CAA6C,CAAC;AAExF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,8BAA8B,0HAC8E,CAAC;AAE1H;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QAI3B,CAAC"}
|
|
@@ -32,8 +32,16 @@ export const LOAD_SKILL_CONTINUE_SAME_TURN = "Continue the same turn after calli
|
|
|
32
32
|
* those fields. `createLoadSkillTool` returns `{ skillId, instructions,
|
|
33
33
|
* references, scripts }`, so telling a factory-built agent to forward returned
|
|
34
34
|
* overrides would name fields its `load_skill` never produces.
|
|
35
|
+
*
|
|
36
|
+
* The `invoke_agent` condition is load-bearing, not incidental. Overrides are
|
|
37
|
+
* applied only to that tool (`applySkillDelegationOverridesToToolInput` returns
|
|
38
|
+
* its input unchanged for any other tool name), and scoped `agent_<id>`
|
|
39
|
+
* delegates accept only `{ input }` (`AgentToolInput`), so they cannot carry
|
|
40
|
+
* model/thinking/maxSteps at all. Phrasing the clause conditionally keeps it
|
|
41
|
+
* accurate on runs where `invoke_agent` is absent, without needing a dynamic
|
|
42
|
+
* description.
|
|
35
43
|
*/
|
|
36
|
-
export const LOAD_SKILL_OVERRIDE_FORWARDING = "
|
|
44
|
+
export const LOAD_SKILL_OVERRIDE_FORWARDING = "If invoke_agent is available, pass through any returned model, thinking, or maxSteps overrides when delegating to it.";
|
|
37
45
|
/**
|
|
38
46
|
* The behavioural contract every `load_skill` tool description must state,
|
|
39
47
|
* appended after that tool's own mechanics.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "veryfront",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1217",
|
|
4
4
|
"description": "The simplest way to build AI-powered apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -421,13 +421,13 @@
|
|
|
421
421
|
"@deno/shim-crypto": "0.3.1",
|
|
422
422
|
"@types/react": "19.2.14",
|
|
423
423
|
"@types/react-dom": "19.2.3",
|
|
424
|
-
"@veryfront/ext-bundler-esbuild": "0.1.
|
|
425
|
-
"@veryfront/ext-content-mdx": "0.1.
|
|
426
|
-
"@veryfront/ext-css-tailwind": "0.1.
|
|
427
|
-
"@veryfront/ext-dev-ui-react": "0.1.
|
|
428
|
-
"@veryfront/ext-node-websocket-ws": "0.1.
|
|
429
|
-
"@veryfront/ext-parser-babel": "0.1.
|
|
430
|
-
"@veryfront/ext-yaml": "0.1.
|
|
424
|
+
"@veryfront/ext-bundler-esbuild": "0.1.1217",
|
|
425
|
+
"@veryfront/ext-content-mdx": "0.1.1217",
|
|
426
|
+
"@veryfront/ext-css-tailwind": "0.1.1217",
|
|
427
|
+
"@veryfront/ext-dev-ui-react": "0.1.1217",
|
|
428
|
+
"@veryfront/ext-node-websocket-ws": "0.1.1217",
|
|
429
|
+
"@veryfront/ext-parser-babel": "0.1.1217",
|
|
430
|
+
"@veryfront/ext-yaml": "0.1.1217"
|
|
431
431
|
},
|
|
432
432
|
"devDependencies": {
|
|
433
433
|
"@types/node": "20.9.0"
|