veryfront 0.0.73 → 0.0.75

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/_shims/deno-env.ts", "../../src/core/utils/runtime-guards.ts", "../../src/core/utils/logger/env.ts", "../../src/core/utils/logger/logger.ts", "../../src/core/utils/logger/index.ts", "../../src/core/utils/constants/build.ts", "../../src/core/utils/constants/cache.ts", "../../deno.json", "../../src/platform/compat/runtime.ts", "../../src/platform/compat/process.ts", "../../src/core/utils/version.ts", "../../src/core/utils/constants/cdn.ts", "../../src/core/utils/constants/env.ts", "../../src/core/utils/constants/hash.ts", "../../src/core/utils/constants/http.ts", "../../src/core/utils/constants/hmr.ts", "../../src/core/utils/constants/html.ts", "../../src/core/utils/constants/network.ts", "../../src/core/utils/constants/security.ts", "../../src/core/config/defaults.ts", "../../src/core/utils/constants/server.ts", "../../src/core/utils/constants/index.ts", "../../src/core/utils/paths.ts", "../../src/core/utils/hash-utils.ts", "../../src/core/utils/memoize.ts", "../../src/core/utils/path-utils.ts", "../../src/core/utils/format-utils.ts", "../../src/core/utils/bundle-manifest.ts", "../../src/core/utils/bundle-manifest-init.ts", "../../src/core/utils/feature-flags.ts", "../../src/core/utils/platform.ts", "../../src/core/utils/index.ts", "../../src/core/errors/veryfront-error.ts", "../../src/core/config/schema.ts", "../../src/core/config/loader.ts", "../../src/core/config/define-config.ts", "../../src/core/config/network-defaults.ts", "../../src/core/config/index.ts", "../../src/platform/adapters/deno.ts", "../../src/platform/adapters/shared-watcher.ts", "../../src/platform/adapters/node/filesystem-adapter.ts", "../../src/platform/adapters/node/environment-adapter.ts", "../../src/platform/adapters/node/http-server.ts", "../../src/platform/adapters/node/websocket-adapter.ts", "../../src/platform/adapters/node/adapter.ts", "../../src/platform/adapters/node/index.ts", "../../src/platform/adapters/node.ts", "../../src/core/errors/types.ts", "../../src/core/errors/agent-errors.ts", "../../src/core/errors/build-errors.ts", "../../src/core/errors/runtime-errors.ts", "../../src/core/errors/system-errors.ts", "../../src/core/errors/error-handlers.ts", "../../src/core/errors/error-codes.ts", "../../src/core/errors/catalog/factory.ts", "../../src/core/errors/catalog/config-errors.ts", "../../src/core/errors/catalog/build-errors.ts", "../../src/core/errors/catalog/runtime-errors.ts", "../../src/core/errors/catalog/route-errors.ts", "../../src/core/errors/catalog/module-errors.ts", "../../src/core/errors/catalog/server-errors.ts", "../../src/core/errors/catalog/rsc-errors.ts", "../../src/core/errors/catalog/dev-errors.ts", "../../src/core/errors/catalog/deployment-errors.ts", "../../src/core/errors/catalog/general-errors.ts", "../../src/core/errors/catalog/index.ts", "../../src/core/errors/user-friendly/error-catalog.ts", "../../src/platform/compat/console/ansi.ts", "../../src/platform/compat/console/deno.ts", "../../src/platform/compat/console/node.ts", "../../src/platform/compat/console/index.ts", "../../src/core/errors/user-friendly/error-identifier.ts", "../../src/core/errors/user-friendly/error-formatter.ts", "../../src/core/errors/user-friendly/error-wrapper.ts", "../../src/core/errors/user-friendly/index.ts", "../../src/core/errors/index.ts", "../../src/platform/adapters/bun/filesystem-adapter.ts", "../../src/platform/adapters/bun/environment-adapter.ts", "../../src/platform/adapters/bun/websocket-adapter.ts", "../../src/platform/adapters/bun/http-server.ts", "../../src/platform/adapters/bun/adapter.ts", "../../src/platform/adapters/bun/index.ts", "../../src/platform/adapters/bun.ts", "../../src/platform/adapters/mock.ts", "../../src/platform/adapters/registry.ts", "../../src/platform/adapters/detect.ts", "../../src/react/components/index.ts", "../../src/react/components/AppWrapper.tsx", "../../src/react/components/LayoutComponent.tsx", "../../src/build/transforms/mdx/index.ts", "../../src/core/utils/lru-wrapper.ts", "../../src/core/utils/cache/stores/memory/lru-cache-adapter.ts", "../../src/core/utils/cache/stores/memory/lru-list-manager.ts", "../../src/core/utils/cache/eviction/eviction-manager.ts", "../../src/core/utils/cache/stores/memory/entry-manager.ts", "../../src/core/utils/cache/stores/memory/lru-node.ts", "../../src/build/transforms/mdx/esm-module-loader.ts", "../../src/core/utils/cache/keys/namespace.ts", "../../src/module-system/import-map/index.ts", "../../src/module-system/import-map/loader.ts", "../../src/module-system/import-map/default-import-map.ts", "../../src/module-system/import-map/resolver.ts", "../../src/module-system/import-map/transformer.ts", "../../src/module-system/import-map/merger.ts", "../../src/build/transforms/mdx/parser.ts", "../../src/build/transforms/mdx/module-loader/metadata-extractor.ts", "../../src/build/transforms/mdx/module-loader/string-parser.ts", "../../src/build/transforms/mdx/mdx-cache-adapter.ts", "../../src/react/components/ProviderComponent.tsx", "../../src/react/components/Head.tsx", "../../src/react/components/Link.tsx", "../../src/react/components/MDXProvider.tsx", "../../src/react/components/optimized-image/index.ts", "../../src/react/components/optimized-image/OptimizedImage.tsx", "../../src/react/components/optimized-image/helpers.ts", "../../src/react/components/optimized-image/SimpleOptimizedImage.tsx", "../../src/react/components/optimized-image/OptimizedBackgroundImage.tsx", "../../src/react/components/optimized-image/useOptimizedImage.ts", "../../src/react/components/optimized-image/utils.tsx"],
4
- "sourcesContent": ["/**\n * Shim for Deno.env in Node.js environment\n * This file is injected by esbuild to provide Deno.env compatibility\n */\n\n// @ts-ignore - Global Deno shim for Node.js\nglobalThis.Deno = globalThis.Deno || {\n env: {\n get(key: string): string | undefined {\n return process.env[key];\n },\n set(key: string, value: string): void {\n process.env[key] = value;\n },\n delete(key: string): void {\n delete process.env[key];\n },\n has(key: string): boolean {\n return key in process.env;\n },\n toObject(): Record<string, string> {\n return { ...process.env } as Record<string, string>;\n },\n },\n};\n", "export interface GlobalWithDeno {\n Deno?: {\n env: {\n get(key: string): string | undefined;\n };\n };\n}\n\nexport interface GlobalWithProcess {\n process?: {\n env: Record<string, string | undefined>;\n version?: string;\n versions?: Record<string, string>;\n };\n}\n\nexport interface GlobalWithBun {\n Bun?: {\n version: string;\n };\n}\n\nexport function hasDenoRuntime(global: unknown): global is GlobalWithDeno {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"Deno\" in global &&\n typeof (global as GlobalWithDeno).Deno?.env?.get === \"function\"\n );\n}\n\nexport function hasNodeProcess(global: unknown): global is GlobalWithProcess {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"process\" in global &&\n typeof (global as GlobalWithProcess).process?.env === \"object\"\n );\n}\n\nexport function hasBunRuntime(global: unknown): global is GlobalWithBun {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"Bun\" in global &&\n typeof (global as GlobalWithBun).Bun !== \"undefined\"\n );\n}\n", "import type { GlobalWithDeno, GlobalWithProcess } from \"../runtime-guards.ts\";\nimport { hasDenoRuntime, hasNodeProcess } from \"../runtime-guards.ts\";\n\nexport function getEnvironmentVariable(name: string): string | undefined {\n try {\n if (typeof Deno !== \"undefined\" && hasDenoRuntime(globalThis)) {\n const value = (globalThis as GlobalWithDeno).Deno?.env.get(name);\n return value === \"\" ? undefined : value;\n }\n if (hasNodeProcess(globalThis)) {\n const value = (globalThis as GlobalWithProcess).process?.env[name];\n return value === \"\" ? undefined : value;\n }\n } catch {\n return undefined;\n }\n return undefined;\n}\n\nexport function isTestEnvironment(): boolean {\n return getEnvironmentVariable(\"NODE_ENV\") === \"test\";\n}\n\nexport function isProductionEnvironment(): boolean {\n return getEnvironmentVariable(\"NODE_ENV\") === \"production\";\n}\n\nexport function isDevelopmentEnvironment(): boolean {\n const env = getEnvironmentVariable(\"NODE_ENV\");\n return env === \"development\" || env === undefined;\n}\n", "import { getEnvironmentVariable } from \"./env.ts\";\n\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n}\n\nexport interface Logger {\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n time<T>(label: string, fn: () => Promise<T>): Promise<T>;\n}\n\nconst originalConsole = {\n debug: console.debug,\n log: console.log,\n warn: console.warn,\n error: console.error,\n};\n\nlet cachedLogLevel: LogLevel | undefined;\n\nfunction resolveLogLevel(force = false): LogLevel {\n if (force || cachedLogLevel === undefined) {\n cachedLogLevel = getDefaultLevel();\n }\n return cachedLogLevel;\n}\n\nclass ConsoleLogger implements Logger {\n constructor(\n private prefix: string,\n private level: LogLevel = resolveLogLevel(),\n ) {}\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n getLevel(): LogLevel {\n return this.level;\n }\n\n debug(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.DEBUG) {\n console.debug(`[${this.prefix}] DEBUG: ${message}`, ...args);\n }\n }\n\n info(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.INFO) {\n console.log(`[${this.prefix}] ${message}`, ...args);\n }\n }\n\n warn(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.WARN) {\n console.warn(`[${this.prefix}] WARN: ${message}`, ...args);\n }\n }\n\n error(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.ERROR) {\n console.error(`[${this.prefix}] ERROR: ${message}`, ...args);\n }\n }\n\n async time<T>(label: string, fn: () => Promise<T>): Promise<T> {\n const start = performance.now();\n try {\n const result = await fn();\n const end = performance.now();\n this.debug(`${label} completed in ${(end - start).toFixed(2)}ms`);\n return result;\n } catch (error) {\n const end = performance.now();\n this.error(`${label} failed after ${(end - start).toFixed(2)}ms`, error);\n throw error;\n }\n }\n}\n\nfunction parseLogLevel(levelString: string | undefined): LogLevel | undefined {\n if (!levelString) return undefined;\n const upper = levelString.toUpperCase();\n switch (upper) {\n case \"DEBUG\":\n return LogLevel.DEBUG;\n case \"WARN\":\n return LogLevel.WARN;\n case \"ERROR\":\n return LogLevel.ERROR;\n case \"INFO\":\n return LogLevel.INFO;\n default:\n return undefined;\n }\n}\n\nconst getDefaultLevel = (): LogLevel => {\n const envLevel = getEnvironmentVariable(\"LOG_LEVEL\");\n const parsedLevel = parseLogLevel(envLevel);\n if (parsedLevel !== undefined) return parsedLevel;\n\n const debugFlag = getEnvironmentVariable(\"VERYFRONT_DEBUG\");\n if (debugFlag === \"1\" || debugFlag === \"true\") return LogLevel.DEBUG;\n\n return LogLevel.INFO;\n};\n\nconst trackedLoggers = new Set<ConsoleLogger>();\n\nfunction createLogger(prefix: string): ConsoleLogger {\n const logger = new ConsoleLogger(prefix);\n trackedLoggers.add(logger);\n return logger;\n}\n\nexport const cliLogger = createLogger(\"CLI\");\nexport const serverLogger = createLogger(\"SERVER\");\nexport const rendererLogger = createLogger(\"RENDERER\");\nexport const bundlerLogger = createLogger(\"BUNDLER\");\nexport const agentLogger = createLogger(\"AGENT\");\n\nexport const logger = createLogger(\"VERYFRONT\");\n\ntype LoggerResetOptions = {\n restoreConsole?: boolean;\n};\n\nexport function __loggerResetForTests(options: LoggerResetOptions = {}): void {\n const updatedLevel = resolveLogLevel(true);\n for (const instance of trackedLoggers) {\n instance.setLevel(updatedLevel);\n }\n\n if (options.restoreConsole) {\n console.debug = originalConsole.debug;\n console.log = originalConsole.log;\n console.warn = originalConsole.warn;\n console.error = originalConsole.error;\n }\n}\n", "export * from \"./logger.ts\";\nexport * from \"./env.ts\";\n", "export const DEFAULT_BUILD_CONCURRENCY = 4;\n\nexport const IMAGE_OPTIMIZATION = {\n DEFAULT_SIZES: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],\n DEFAULT_QUALITY: 80,\n} as const;\n", "export const SECONDS_PER_MINUTE = 60;\n\nexport const MINUTES_PER_HOUR = 60;\n\nexport const HOURS_PER_DAY = 24;\n\nexport const MS_PER_SECOND = 1000;\n\nexport const DEFAULT_LRU_MAX_ENTRIES = 100;\n\nexport const COMPONENT_LOADER_MAX_ENTRIES = 100;\nexport const COMPONENT_LOADER_TTL_MS = 10 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const MDX_RENDERER_MAX_ENTRIES = 200;\nexport const MDX_RENDERER_TTL_MS = 10 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const RENDERER_CORE_MAX_ENTRIES = 100;\nexport const RENDERER_CORE_TTL_MS = 5 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const TSX_LAYOUT_MAX_ENTRIES = 50;\nexport const TSX_LAYOUT_TTL_MS = 10 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const DATA_FETCHING_MAX_ENTRIES = 200;\nexport const DATA_FETCHING_TTL_MS = 10 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const MDX_CACHE_TTL_PRODUCTION_MS = HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE *\n MS_PER_SECOND;\nexport const MDX_CACHE_TTL_DEVELOPMENT_MS = 5 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const BUNDLE_CACHE_TTL_PRODUCTION_MS = HOURS_PER_DAY * MINUTES_PER_HOUR *\n SECONDS_PER_MINUTE * MS_PER_SECOND;\nexport const BUNDLE_CACHE_TTL_DEVELOPMENT_MS = 5 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const BUNDLE_MANIFEST_PROD_TTL_MS = 7 * HOURS_PER_DAY * MINUTES_PER_HOUR *\n SECONDS_PER_MINUTE * MS_PER_SECOND;\nexport const BUNDLE_MANIFEST_DEV_TTL_MS = MINUTES_PER_HOUR * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const RSC_MANIFEST_CACHE_TTL_MS = 5000;\n\nexport const SERVER_ACTION_DEFAULT_TTL_SEC = MINUTES_PER_HOUR * SECONDS_PER_MINUTE;\n\nexport const DENO_KV_SAFE_SIZE_LIMIT_BYTES = 64_000;\n\nexport const HTTP_CACHE_SHORT_MAX_AGE_SEC = 60;\nexport const HTTP_CACHE_MEDIUM_MAX_AGE_SEC = 3600;\nexport const HTTP_CACHE_LONG_MAX_AGE_SEC = 31536000;\n\nexport const ONE_DAY_MS = HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const CACHE_CLEANUP_INTERVAL_MS = 60000;\n\nexport const LRU_DEFAULT_MAX_ENTRIES = 1000;\n\nexport const LRU_DEFAULT_MAX_SIZE_BYTES = 50 * 1024 * 1024;\n\nexport const CLEANUP_INTERVAL_MULTIPLIER = 2;\n", "{\n \"name\": \"veryfront\",\n \"version\": \"0.0.73\",\n \"nodeModulesDir\": \"auto\",\n \"exclude\": [\n \"npm/\",\n \"dist/\",\n \"coverage/\",\n \"scripts/\",\n \"examples/\",\n \"src/cli/templates/files/\",\n \"src/cli/templates/integrations/\"\n ],\n \"exports\": {\n \".\": \"./src/index.ts\",\n \"./cli\": \"./src/cli/main.ts\",\n \"./server\": \"./src/server/index.ts\",\n \"./middleware\": \"./src/middleware/index.ts\",\n \"./components\": \"./src/react/components/index.ts\",\n \"./data\": \"./src/data/index.ts\",\n \"./config\": \"./src/core/config/index.ts\",\n \"./platform\": \"./src/platform/index.ts\",\n \"./ai\": \"./src/ai/index.ts\",\n \"./ai/client\": \"./src/ai/client.ts\",\n \"./ai/react\": \"./src/ai/react/index.ts\",\n \"./ai/primitives\": \"./src/ai/react/primitives/index.ts\",\n \"./ai/components\": \"./src/ai/react/components/index.ts\",\n \"./ai/production\": \"./src/ai/production/index.ts\",\n \"./ai/dev\": \"./src/ai/dev/index.ts\",\n \"./ai/workflow\": \"./src/ai/workflow/index.ts\",\n \"./ai/workflow/react\": \"./src/ai/workflow/react/index.ts\",\n \"./oauth\": \"./src/core/oauth/index.ts\",\n \"./oauth/providers\": \"./src/core/oauth/providers/index.ts\",\n \"./oauth/handlers\": \"./src/core/oauth/handlers/index.ts\",\n \"./oauth/token-store\": \"./src/core/oauth/token-store/index.ts\"\n },\n \"imports\": {\n \"@veryfront\": \"./src/index.ts\",\n \"@veryfront/\": \"./src/\",\n \"@veryfront/ai\": \"./src/ai/index.ts\",\n \"@veryfront/ai/\": \"./src/ai/\",\n \"@veryfront/platform\": \"./src/platform/index.ts\",\n \"@veryfront/platform/\": \"./src/platform/\",\n \"@veryfront/types\": \"./src/core/types/index.ts\",\n \"@veryfront/types/\": \"./src/core/types/\",\n \"@veryfront/utils\": \"./src/core/utils/index.ts\",\n \"@veryfront/utils/\": \"./src/core/utils/\",\n \"@veryfront/middleware\": \"./src/middleware/index.ts\",\n \"@veryfront/middleware/\": \"./src/middleware/\",\n \"@veryfront/errors\": \"./src/core/errors/index.ts\",\n \"@veryfront/errors/\": \"./src/core/errors/\",\n \"@veryfront/config\": \"./src/core/config/index.ts\",\n \"@veryfront/config/\": \"./src/core/config/\",\n \"@veryfront/observability\": \"./src/observability/index.ts\",\n \"@veryfront/observability/\": \"./src/observability/\",\n \"@veryfront/routing\": \"./src/routing/index.ts\",\n \"@veryfront/routing/\": \"./src/routing/\",\n \"@veryfront/transforms\": \"./src/build/transforms/index.ts\",\n \"@veryfront/transforms/\": \"./src/build/transforms/\",\n \"@veryfront/data\": \"./src/data/index.ts\",\n \"@veryfront/data/\": \"./src/data/\",\n \"@veryfront/security\": \"./src/security/index.ts\",\n \"@veryfront/security/\": \"./src/security/\",\n \"@veryfront/components\": \"./src/react/components/index.ts\",\n \"@veryfront/react\": \"./src/react/index.ts\",\n \"@veryfront/react/\": \"./src/react/\",\n \"@veryfront/html\": \"./src/html/index.ts\",\n \"@veryfront/html/\": \"./src/html/\",\n \"@veryfront/rendering\": \"./src/rendering/index.ts\",\n \"@veryfront/rendering/\": \"./src/rendering/\",\n \"@veryfront/build\": \"./src/build/index.ts\",\n \"@veryfront/build/\": \"./src/build/\",\n \"@veryfront/server\": \"./src/server/index.ts\",\n \"@veryfront/server/\": \"./src/server/\",\n \"@veryfront/modules\": \"./src/module-system/index.ts\",\n \"@veryfront/modules/\": \"./src/module-system/\",\n \"@veryfront/compat/console\": \"./src/platform/compat/console/index.ts\",\n \"@veryfront/compat/\": \"./src/platform/compat/\",\n \"@veryfront/oauth\": \"./src/core/oauth/index.ts\",\n \"@veryfront/oauth/\": \"./src/core/oauth/\",\n \"std/\": \"https://deno.land/std@0.220.0/\",\n \"@std/path\": \"https://deno.land/std@0.220.0/path/mod.ts\",\n \"@std/testing/bdd.ts\": \"https://deno.land/std@0.220.0/testing/bdd.ts\",\n \"@std/expect\": \"https://deno.land/std@0.220.0/expect/mod.ts\",\n \"csstype\": \"https://esm.sh/csstype@3.2.3\",\n \"@types/react\": \"https://esm.sh/@types/react@18.3.27?deps=csstype@3.2.3\",\n \"@types/react-dom\": \"https://esm.sh/@types/react-dom@18.3.7?deps=csstype@3.2.3\",\n \"react\": \"https://esm.sh/react@18.3.1\",\n \"react-dom\": \"https://esm.sh/react-dom@18.3.1\",\n \"react-dom/server\": \"https://esm.sh/react-dom@18.3.1/server\",\n \"react-dom/client\": \"https://esm.sh/react-dom@18.3.1/client\",\n \"react/jsx-runtime\": \"https://esm.sh/react@18.3.1/jsx-runtime\",\n \"react/jsx-dev-runtime\": \"https://esm.sh/react@18.3.1/jsx-dev-runtime\",\n \"@mdx-js/mdx\": \"npm:@mdx-js/mdx@3.0.0\",\n \"@mdx-js/react\": \"npm:@mdx-js/react@3.0.0\",\n \"unist-util-visit\": \"npm:unist-util-visit@5.0.0\",\n \"mdast-util-to-string\": \"npm:mdast-util-to-string@4.0.0\",\n \"github-slugger\": \"npm:github-slugger@2.0.0\",\n \"remark-gfm\": \"npm:remark-gfm@4.0.1\",\n \"remark-frontmatter\": \"npm:remark-frontmatter@5.0.0\",\n \"rehype-highlight\": \"npm:rehype-highlight@7.0.2\",\n \"rehype-slug\": \"npm:rehype-slug@6.0.0\",\n \"esbuild\": \"https://deno.land/x/esbuild@v0.20.1/wasm.js\",\n \"esbuild/mod.js\": \"https://deno.land/x/esbuild@v0.20.1/mod.js\",\n \"es-module-lexer\": \"npm:es-module-lexer@1.5.0\",\n \"zod\": \"npm:zod@3.23.8\",\n \"mime-types\": \"npm:mime-types@2.1.35\",\n \"mdast\": \"npm:@types/mdast@4.0.3\",\n \"hast\": \"npm:@types/hast@3.0.3\",\n \"unist\": \"npm:@types/unist@3.0.2\",\n \"unified\": \"npm:unified@11.0.5\",\n \"ai\": \"https://esm.sh/ai@5.0.76?deps=react@18.3.1,react-dom@18.3.1\",\n \"ai/react\": \"https://esm.sh/@ai-sdk/react@2.0.1?deps=react@18.3.1,react-dom@18.3.1\",\n \"@ai-sdk/react\": \"https://esm.sh/@ai-sdk/react@2.0.1?deps=react@18.3.1,react-dom@18.3.1\",\n \"@ai-sdk/openai\": \"https://esm.sh/@ai-sdk/openai@2.0.1\",\n \"@ai-sdk/anthropic\": \"https://esm.sh/@ai-sdk/anthropic@2.0.1\",\n \"unocss\": \"https://esm.sh/unocss@0.59.0\",\n \"@unocss/core\": \"https://esm.sh/@unocss/core@0.59.0\",\n \"@unocss/preset-wind\": \"https://esm.sh/@unocss/preset-wind@0.59.0\",\n \"redis\": \"npm:redis\",\n \"pg\": \"npm:pg\",\n \"@opentelemetry/api\": \"npm:@opentelemetry/api@1\",\n \"@opentelemetry/core\": \"npm:@opentelemetry/core@1\"\n },\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"jsxImportSource\": \"react\",\n \"strict\": true,\n \"noImplicitAny\": true,\n \"noUncheckedIndexedAccess\": true,\n \"types\": [],\n \"lib\": [\n \"deno.window\",\n \"dom\",\n \"dom.iterable\",\n \"dom.asynciterable\",\n \"deno.ns\"\n ]\n },\n \"tasks\": {\n \"setup\": \"deno run --allow-all scripts/setup.ts\",\n \"dev\": \"deno run --allow-all --no-lock --unstable-net --unstable-worker-options src/cli/main.ts dev\",\n \"build\": \"deno compile --allow-all --output ../../bin/veryfront src/cli/main.ts\",\n \"build:npm\": \"deno run -A scripts/build-npm.ts\",\n \"release\": \"deno run -A scripts/release.ts\",\n \"test\": \"DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --unstable-worker-options --unstable-net\",\n \"test:unit\": \"DENO_JOBS=1 deno test --parallel --allow-all --v8-flags=--max-old-space-size=8192 --ignore=tests --unstable-worker-options --unstable-net\",\n \"test:integration\": \"DENO_JOBS=1 deno test --parallel --fail-fast --allow-all tests --unstable-worker-options --unstable-net\",\n \"test:coverage\": \"rm -rf coverage && DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --coverage=coverage --unstable-worker-options --unstable-net || exit 1\",\n \"test:coverage:unit\": \"rm -rf coverage && DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --coverage=coverage --ignore=tests --unstable-worker-options --unstable-net || exit 1\",\n \"test:coverage:integration\": \"rm -rf coverage && DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --coverage=coverage tests --unstable-worker-options --unstable-net || exit 1\",\n \"coverage:report\": \"deno coverage coverage --include=src/ --exclude=tests --exclude=src/**/*_test.ts --exclude=src/**/*_test.tsx --exclude=src/**/*.test.ts --exclude=src/**/*.test.tsx --lcov > coverage/lcov.info && deno run --allow-read scripts/check-coverage.ts 80\",\n \"coverage:html\": \"deno coverage coverage --include=src/ --exclude=tests --exclude=src/**/*_test.ts --exclude=src/**/*_test.tsx --exclude=src/**/*.test.ts --exclude=src/**/*.test.tsx --html\",\n \"lint\": \"DENO_NO_PACKAGE_JSON=1 deno lint src/\",\n \"fmt\": \"deno fmt src/\",\n \"typecheck\": \"deno check src/index.ts src/cli/main.ts src/server/index.ts src/routing/api/index.ts src/rendering/index.ts src/platform/index.ts src/platform/adapters/index.ts src/build/index.ts src/build/production-build/index.ts src/build/transforms/index.ts src/core/config/index.ts src/core/utils/index.ts src/data/index.ts src/security/index.ts src/middleware/index.ts src/server/handlers/dev/index.ts src/server/handlers/request/api/index.ts src/rendering/cache/index.ts src/rendering/cache/stores/index.ts src/rendering/rsc/actions/index.ts src/html/index.ts src/module-system/index.ts\",\n \"docs:check-links\": \"deno run -A scripts/check-doc-links.ts\",\n \"lint:ban-console\": \"deno run --allow-read scripts/ban-console.ts\",\n \"lint:ban-deep-imports\": \"deno run --allow-read scripts/ban-deep-imports.ts\",\n \"lint:ban-internal-root-imports\": \"deno run --allow-read scripts/ban-internal-root-imports.ts\",\n \"lint:check-awaits\": \"deno run --allow-read scripts/check-unawaited-promises.ts\",\n \"lint:platform\": \"deno run --allow-read scripts/lint-platform-agnostic.ts\",\n \"check:circular\": \"deno run -A jsr:@cunarist/deno-circular-deps src/index.ts\"\n },\n \"lint\": {\n \"include\": [\n \"src/**/*.ts\",\n \"src/**/*.tsx\"\n ],\n \"exclude\": [\n \"dist/\",\n \"coverage/\"\n ],\n \"rules\": {\n \"tags\": [\n \"recommended\"\n ],\n \"include\": [\n \"ban-untagged-todo\"\n ],\n \"exclude\": [\n \"no-explicit-any\",\n \"no-process-global\",\n \"no-console\"\n ]\n }\n },\n \"fmt\": {\n \"include\": [\n \"src/**/*.ts\",\n \"src/**/*.tsx\"\n ],\n \"exclude\": [\n \"dist/\",\n \"coverage/\"\n ],\n \"options\": {\n \"useTabs\": false,\n \"lineWidth\": 100,\n \"indentWidth\": 2,\n \"semiColons\": true,\n \"singleQuote\": false,\n \"proseWrap\": \"preserve\"\n }\n }\n}\n", "export const isDeno = typeof Deno !== \"undefined\" && typeof Deno.version === \"object\";\nexport const isNode =\n typeof (globalThis as { process?: { versions?: { node?: string } } }).process !== \"undefined\" &&\n (globalThis as { process?: { versions?: { node?: string } } }).process?.versions?.node !==\n undefined;\nexport const isBun = typeof (globalThis as { Bun?: unknown }).Bun !== \"undefined\";\nexport const isCloudflare = typeof globalThis !== \"undefined\" && \"caches\" in globalThis &&\n \"WebSocketPair\" in globalThis;\n\n/**\n * Detect if running in Node.js (vs Deno)\n * Use this function instead of the constant when runtime detection needs to happen\n * at call time (e.g., when bundled with esbuild's __esm lazy initialization pattern)\n */\nexport function isNodeRuntime(): boolean {\n // deno-lint-ignore no-explicit-any\n const _global = globalThis as any;\n // Check Deno.version to distinguish real Deno from the npm build shim\n const isRealDeno = typeof Deno !== \"undefined\" && typeof Deno.version === \"object\";\n return !isRealDeno && typeof _global.process !== \"undefined\" &&\n !!_global.process?.versions?.node;\n}\n", "import { isDeno as IS_DENO } from \"./runtime.ts\";\n\nconst nodeProcess = (globalThis as { process?: typeof import(\"node:process\") }).process;\nconst hasNodeProcess = !!nodeProcess?.versions?.node;\n\nexport function getArgs(): string[] {\n if (IS_DENO) {\n return Deno.args;\n }\n if (hasNodeProcess) {\n return nodeProcess!.argv.slice(2);\n }\n return [];\n}\n\nexport function exit(code?: number): never {\n if (IS_DENO) {\n Deno.exit(code);\n }\n if (hasNodeProcess) {\n nodeProcess!.exit(code);\n }\n throw new Error(\"exit() is not supported in this runtime\");\n}\n\nexport function cwd(): string {\n if (IS_DENO) {\n return Deno.cwd();\n }\n if (hasNodeProcess) {\n return nodeProcess!.cwd();\n }\n throw new Error(\"cwd() is not supported in this runtime\");\n}\n\nexport function chdir(directory: string): void {\n if (IS_DENO) {\n Deno.chdir(directory);\n } else {\n if (hasNodeProcess) {\n nodeProcess!.chdir(directory);\n return;\n }\n throw new Error(\"chdir() is not supported in this runtime\");\n }\n}\n\nexport function env(): Record<string, string> {\n if (IS_DENO) {\n return Deno.env.toObject();\n }\n if (hasNodeProcess) {\n return nodeProcess!.env as Record<string, string>;\n }\n return {};\n}\n\nexport function getEnv(key: string): string | undefined {\n if (IS_DENO) {\n return Deno.env.get(key);\n }\n if (hasNodeProcess) {\n return nodeProcess!.env[key];\n }\n return undefined;\n}\n\n/**\n * Get an environment variable or throw if not set\n * @throws Error if the environment variable is not set\n */\nexport function requireEnv(key: string): string {\n const value = getEnv(key);\n if (value === undefined) {\n throw new Error(`Required environment variable \"${key}\" is not set`);\n }\n return value;\n}\n\nexport function setEnv(key: string, value: string): void {\n if (IS_DENO) {\n Deno.env.set(key, value);\n } else {\n if (hasNodeProcess) {\n nodeProcess!.env[key] = value;\n return;\n }\n throw new Error(\"setEnv() is not supported in this runtime\");\n }\n}\n\nexport function deleteEnv(key: string): void {\n if (IS_DENO) {\n Deno.env.delete(key);\n } else {\n if (hasNodeProcess) {\n delete nodeProcess!.env[key];\n return;\n }\n throw new Error(\"deleteEnv() is not supported in this runtime\");\n }\n}\n\nexport function pid(): number {\n if (IS_DENO) {\n return Deno.pid;\n }\n if (hasNodeProcess) {\n return nodeProcess!.pid;\n }\n return 0;\n}\n\nexport function ppid(): number {\n if (IS_DENO && \"ppid\" in Deno) {\n return Deno.ppid || 0;\n }\n if (hasNodeProcess) {\n return nodeProcess!.ppid || 0;\n }\n return 0;\n}\n\nexport function memoryUsage(): {\n rss: number;\n heapTotal: number;\n heapUsed: number;\n external: number;\n} {\n if (IS_DENO) {\n const usage = Deno.memoryUsage();\n return {\n rss: usage.rss,\n heapTotal: usage.heapTotal,\n heapUsed: usage.heapUsed,\n external: usage.external,\n };\n }\n\n if (!hasNodeProcess) {\n throw new Error(\"memoryUsage() is not supported in this runtime\");\n }\n\n const usage = nodeProcess!.memoryUsage();\n return {\n rss: usage.rss,\n heapTotal: usage.heapTotal,\n heapUsed: usage.heapUsed,\n external: usage.external || 0,\n };\n}\n\n/**\n * Check if stdin is a TTY (terminal)\n */\nexport function isInteractive(): boolean {\n if (IS_DENO) {\n return Deno.stdin.isTerminal();\n }\n if (hasNodeProcess) {\n return nodeProcess!.stdin.isTTY ?? false;\n }\n return false;\n}\n\n/**\n * Get network interfaces\n */\nexport async function getNetworkInterfaces(): Promise<\n Array<{ name: string; address: string; family: \"IPv4\" | \"IPv6\" }>\n> {\n if (IS_DENO) {\n const interfaces = Deno.networkInterfaces();\n return interfaces.map((iface) => ({\n name: iface.name,\n address: iface.address,\n family: iface.family as \"IPv4\" | \"IPv6\",\n }));\n }\n\n if (!hasNodeProcess) {\n throw new Error(\"networkInterfaces() is not supported in this runtime\");\n }\n\n const os = await import(\"node:os\");\n const interfaces = os.networkInterfaces();\n const result: Array<{ name: string; address: string; family: \"IPv4\" | \"IPv6\" }> = [];\n\n for (const [name, addrs] of Object.entries(interfaces)) {\n if (!addrs) continue;\n for (const addr of addrs) {\n result.push({\n name,\n address: addr.address,\n family: addr.family as \"IPv4\" | \"IPv6\",\n });\n }\n }\n\n return result;\n}\n\n/**\n * Get runtime version string\n */\nexport function getRuntimeVersion(): string {\n if (IS_DENO) {\n return `Deno ${Deno.version.deno}`;\n }\n if (\"Bun\" in globalThis) {\n return `Bun ${(globalThis as unknown as { Bun: { version: string } }).Bun.version}`;\n }\n if (hasNodeProcess) {\n return `Node.js ${nodeProcess!.version}`;\n }\n return \"unknown\";\n}\n\n/**\n * Register a signal handler (SIGINT, SIGTERM) for graceful shutdown\n */\nexport function onSignal(signal: \"SIGINT\" | \"SIGTERM\", handler: () => void): void {\n if (IS_DENO) {\n Deno.addSignalListener(signal, handler);\n } else if (hasNodeProcess) {\n nodeProcess!.on(signal, handler);\n }\n}\n\n/**\n * Unreference a timer to prevent it from keeping the process alive\n */\nexport function unrefTimer(timerId: ReturnType<typeof setInterval>): void {\n if (IS_DENO) {\n Deno.unrefTimer(timerId as number);\n } else if (timerId && typeof timerId === \"object\" && \"unref\" in timerId) {\n (timerId as { unref: () => void }).unref();\n }\n}\n\n/**\n * Get the executable path of the current runtime\n */\nexport function execPath(): string {\n if (IS_DENO) {\n return Deno.execPath();\n }\n if (hasNodeProcess) {\n return nodeProcess!.execPath;\n }\n return \"\";\n}\n\n/**\n * Get process uptime in seconds\n * Returns OS uptime on Deno, process uptime on Node.js\n */\nexport function uptime(): number {\n if (IS_DENO) {\n // Deno.osUptime() returns system uptime in seconds\n return Deno.osUptime?.() ?? 0;\n }\n if (hasNodeProcess) {\n // process.uptime() returns process uptime in seconds\n return nodeProcess!.uptime?.() ?? 0;\n }\n return 0;\n}\n\n/**\n * Get stdout stream for writing\n * Returns null if not available (e.g., in browser/workers)\n */\nexport function getStdout(): { write: (data: string) => void } | null {\n if (IS_DENO) {\n const encoder = new TextEncoder();\n return {\n write: (data: string) => {\n Deno.stdout.writeSync(encoder.encode(data));\n },\n };\n }\n if (hasNodeProcess && nodeProcess!.stdout) {\n return {\n write: (data: string) => {\n nodeProcess!.stdout.write(data);\n },\n };\n }\n return null;\n}\n\n// Cached Node.js modules for synchronous prompt\nlet cachedNodeFs: typeof import(\"node:fs\") | null = null;\n\n/**\n * Synchronous prompt function that works across Deno and Node.js\n * Displays a message and reads user input from stdin\n */\nexport function promptSync(message?: string): string | null {\n if (IS_DENO) {\n // Deno has a built-in prompt() function\n return prompt(message);\n }\n\n if (hasNodeProcess) {\n // Print the message\n if (message) {\n nodeProcess!.stdout.write(message + \" \");\n }\n\n // Lazy load fs module\n if (!cachedNodeFs) {\n // Dynamic import converted to sync require for bundling\n // @ts-ignore - dynamic require for Node.js\n cachedNodeFs = globalThis.require?.(\"node:fs\") || null;\n if (!cachedNodeFs) {\n // Try alternative approach\n try {\n // @ts-ignore: __require is injected by bundlers for Node.js require\n cachedNodeFs = __require(\"node:fs\");\n } catch {\n return null;\n }\n }\n }\n\n if (!cachedNodeFs) {\n return null;\n }\n\n // Read synchronously using fs\n // This works by reading from file descriptor 0 (stdin)\n // Use Uint8Array for cross-platform compatibility\n const bufferSize = 1024;\n const uint8Array = new Uint8Array(bufferSize);\n let input = \"\";\n\n try {\n // Read from stdin (fd 0) synchronously\n const bytesRead = cachedNodeFs.readSync(0, uint8Array, 0, bufferSize, null);\n if (bytesRead > 0) {\n const decoder = new TextDecoder(\"utf-8\");\n input = decoder.decode(uint8Array.subarray(0, bytesRead)).trim();\n }\n } catch {\n // If stdin is not available or EOF, return null\n return null;\n }\n\n return input || null;\n }\n\n return null;\n}\n", "import denoConfig from \"../../../deno.json\" with { type: \"json\" };\nimport { getEnv } from \"../../platform/compat/process.ts\";\n\nexport const VERSION: string = getEnv(\"VERYFRONT_VERSION\") ||\n (typeof denoConfig.version === \"string\" ? denoConfig.version : \"0.0.0\");\n", "export const ESM_CDN_BASE = \"https://esm.sh\";\n\nexport const JSDELIVR_CDN_BASE = \"https://cdn.jsdelivr.net\";\n\nexport const DENO_STD_BASE = \"https://deno.land\";\n\nexport const REACT_VERSION_17 = \"17.0.2\";\nexport const REACT_VERSION_18_2 = \"18.2.0\";\nexport const REACT_VERSION_18_3 = \"18.3.1\";\nexport const REACT_VERSION_19_RC = \"19.0.0-rc.0\";\nexport const REACT_VERSION_19 = \"19.1.1\";\n\nexport const REACT_DEFAULT_VERSION = REACT_VERSION_18_3;\n\nexport function getReactCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react@${version}`;\n}\n\nexport function getReactDOMCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react-dom@${version}`;\n}\n\nexport function getReactDOMClientCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react-dom@${version}/client`;\n}\n\nexport function getReactDOMServerCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react-dom@${version}/server`;\n}\n\nexport function getReactJSXRuntimeCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react@${version}/jsx-runtime`;\n}\n\nexport function getReactJSXDevRuntimeCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react@${version}/jsx-dev-runtime`;\n}\n\nexport function getReactImportMap(version: string = REACT_DEFAULT_VERSION): Record<string, string> {\n return {\n react: getReactCDNUrl(version),\n \"react-dom\": getReactDOMCDNUrl(version),\n \"react-dom/client\": getReactDOMClientCDNUrl(version),\n \"react-dom/server\": getReactDOMServerCDNUrl(version),\n \"react/jsx-runtime\": getReactJSXRuntimeCDNUrl(version),\n \"react/jsx-dev-runtime\": getReactJSXDevRuntimeCDNUrl(version),\n };\n}\n\nexport const DEFAULT_ALLOWED_CDN_HOSTS = [ESM_CDN_BASE, DENO_STD_BASE];\n\nexport const DENO_STD_VERSION = \"0.220.0\";\n\nexport function getDenoStdNodeBase(): string {\n return `${DENO_STD_BASE}/std@${DENO_STD_VERSION}/node`;\n}\n\n// UnoCSS constants\nexport const UNOCSS_VERSION = \"0.59.0\";\n\nexport function getUnoCSSTailwindResetUrl(): string {\n return `${ESM_CDN_BASE}/@unocss/reset@${UNOCSS_VERSION}/tailwind.css`;\n}\n\n// Veryfront package version - derived from deno.json (single source of truth)\nexport { VERSION as VERYFRONT_VERSION } from \"../version.ts\";\n", "/**\n * Environment variable utilities\n *\n * Centralized utilities for checking environment flags.\n * This ensures consistent behavior across the entire codebase.\n */\n\n/**\n * Environment variable names used by Veryfront\n */\nexport const ENV_VARS = {\n DEBUG: \"VERYFRONT_DEBUG\",\n DEEP_INSPECT: \"VERYFRONT_DEEP_INSPECT\",\n CACHE_DIR: \"VERYFRONT_CACHE_DIR\",\n PORT: \"VERYFRONT_PORT\",\n VERSION: \"VERYFRONT_VERSION\",\n} as const;\n\n/**\n * Check if a debug environment variable value is truthy.\n * Accepts: \"1\", \"true\", \"yes\" (case-insensitive)\n *\n * @param value - The environment variable value to check\n * @returns true if the value indicates debug mode should be enabled\n */\nexport function isTruthyEnvValue(value: string | undefined): boolean {\n if (!value) return false;\n const normalized = value.toLowerCase().trim();\n return normalized === \"1\" || normalized === \"true\" || normalized === \"yes\";\n}\n\n/**\n * Check if debug mode is enabled via environment variable.\n * Works with RuntimeAdapter's env interface.\n *\n * @param env - Environment accessor object with get() method\n * @returns true if VERYFRONT_DEBUG is set to a truthy value\n */\nexport function isDebugEnabled(env: { get(key: string): string | undefined }): boolean {\n return isTruthyEnvValue(env.get(ENV_VARS.DEBUG));\n}\n\n/**\n * Check if deep inspect mode is enabled via environment variable.\n *\n * @param env - Environment accessor object with get() method\n * @returns true if VERYFRONT_DEEP_INSPECT is set to a truthy value\n */\nexport function isDeepInspectEnabled(env: { get(key: string): string | undefined }): boolean {\n return isTruthyEnvValue(env.get(ENV_VARS.DEEP_INSPECT));\n}\n\n/**\n * Check if either debug or deep inspect mode is enabled.\n *\n * @param env - Environment accessor object with get() method\n * @returns true if either debug flag is enabled\n */\nexport function isAnyDebugEnabled(env: { get(key: string): string | undefined }): boolean {\n return isDebugEnabled(env) || isDeepInspectEnabled(env);\n}\n", "export const HASH_SEED_DJB2 = 5381;\n\nexport const HASH_SEED_FNV1A = 2166136261;\n", "export const KB_IN_BYTES = 1024;\n\nexport const HTTP_MODULE_FETCH_TIMEOUT_MS = 2500;\n\nexport const HMR_RECONNECT_DELAY_MS = 1000;\n\nexport const HMR_RELOAD_DELAY_MS = 1000;\n\nexport const HMR_FILE_WATCHER_DEBOUNCE_MS = 100;\n\nexport const HMR_KEEP_ALIVE_INTERVAL_MS = 30000;\n\nexport const DASHBOARD_RECONNECT_DELAY_MS = 3000;\n\nexport const SERVER_FUNCTION_DEFAULT_TIMEOUT_MS = 30000;\n\nexport const PREFETCH_MAX_SIZE_BYTES = 200 * KB_IN_BYTES;\n\nexport const PREFETCH_DEFAULT_TIMEOUT_MS = 10000;\n\nexport const PREFETCH_DEFAULT_DELAY_MS = 200;\n\nexport const HTTP_OK = 200;\n\nexport const HTTP_NO_CONTENT = 204;\n\nexport const HTTP_CREATED = 201;\n\nexport const HTTP_REDIRECT_FOUND = 302;\n\nexport const HTTP_NOT_MODIFIED = 304;\n\nexport const HTTP_BAD_REQUEST = 400;\n\nexport const HTTP_UNAUTHORIZED = 401;\n\nexport const HTTP_FORBIDDEN = 403;\n\nexport const HTTP_NOT_FOUND = 404;\n\nexport const HTTP_METHOD_NOT_ALLOWED = 405;\n\nexport const HTTP_GONE = 410;\n\nexport const HTTP_PAYLOAD_TOO_LARGE = 413;\n\nexport const HTTP_URI_TOO_LONG = 414;\n\nexport const HTTP_TOO_MANY_REQUESTS = 429;\n\nexport const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;\n\nexport const HTTP_SERVER_ERROR = 500;\n\nexport const HTTP_INTERNAL_SERVER_ERROR = 500;\n\nexport const HTTP_BAD_GATEWAY = 502;\n\nexport const HTTP_NOT_IMPLEMENTED = 501;\n\nexport const HTTP_UNAVAILABLE = 503;\n\nexport const HTTP_NETWORK_CONNECT_TIMEOUT = 599;\n\nexport const HTTP_STATUS_SUCCESS_MIN = 200;\n\nexport const HTTP_STATUS_REDIRECT_MIN = 300;\n\nexport const HTTP_STATUS_CLIENT_ERROR_MIN = 400;\n\nexport const HTTP_STATUS_SERVER_ERROR_MIN = 500;\n\nexport const HTTP_CONTENT_TYPES = {\n JS: \"application/javascript; charset=utf-8\",\n JSON: \"application/json; charset=utf-8\",\n HTML: \"text/html; charset=utf-8\",\n CSS: \"text/css; charset=utf-8\",\n TEXT: \"text/plain; charset=utf-8\",\n} as const;\n\nimport { MS_PER_SECOND, SECONDS_PER_MINUTE } from \"./cache.ts\";\n\nexport const MS_PER_MINUTE = 60000;\n\nexport { MS_PER_SECOND, SECONDS_PER_MINUTE };\n\nexport const HTTP_CONTENT_TYPE_IMAGE_PNG = \"image/png\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_JPEG = \"image/jpeg\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_WEBP = \"image/webp\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_AVIF = \"image/avif\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_SVG = \"image/svg+xml\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_GIF = \"image/gif\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_ICO = \"image/x-icon\";\n", "import { KB_IN_BYTES } from \"./http.ts\";\n\nexport const HMR_MAX_MESSAGE_SIZE_BYTES = 1024 * KB_IN_BYTES;\n\nexport const HMR_MAX_MESSAGES_PER_MINUTE = 100;\n\nexport const HMR_CLIENT_RELOAD_DELAY_MS = 3000;\n\nexport const HMR_PORT_OFFSET = 1;\n\nexport const HMR_RATE_LIMIT_WINDOW_MS = 60000;\n\nexport const HMR_CLOSE_NORMAL = 1000;\n\nexport const HMR_CLOSE_RATE_LIMIT = 1008;\n\nexport const HMR_CLOSE_MESSAGE_TOO_LARGE = 1009;\n\nexport const HMR_MESSAGE_TYPES = {\n CONNECTED: \"connected\",\n UPDATE: \"update\",\n RELOAD: \"reload\",\n PING: \"ping\",\n PONG: \"pong\",\n} as const;\n\nexport function isValidHMRMessageType(type: string): type is keyof typeof HMR_MESSAGE_TYPES {\n return Object.values(HMR_MESSAGE_TYPES).includes(\n type as typeof HMR_MESSAGE_TYPES[keyof typeof HMR_MESSAGE_TYPES],\n );\n}\n", "export const Z_INDEX_DEV_INDICATOR = 9998;\nexport const Z_INDEX_ERROR_OVERLAY = 9999;\n\nexport const BREAKPOINT_SM = 640;\nexport const BREAKPOINT_MD = 768;\nexport const BREAKPOINT_LG = 1024;\nexport const BREAKPOINT_XL = 1280;\n\nexport const PROSE_MAX_WIDTH = \"65ch\";\n", "export const DEFAULT_DEV_SERVER_PORT = 3000;\nexport const DEFAULT_REDIS_PORT = 6379;\nexport const DEFAULT_API_SERVER_PORT = 8080;\nexport const DEFAULT_PREVIEW_SERVER_PORT = 5000;\nexport const DEFAULT_METRICS_PORT = 9000;\n\nexport const BYTES_PER_KB = 1024;\nexport const BYTES_PER_MB = 1024 * 1024;\n\nexport const DEFAULT_IMAGE_THUMBNAIL_SIZE = 256;\nexport const DEFAULT_IMAGE_SMALL_SIZE = 512;\nexport const DEFAULT_IMAGE_LARGE_SIZE = 2048;\n\nexport const RESPONSIVE_IMAGE_WIDTH_XS = 320;\nexport const RESPONSIVE_IMAGE_WIDTH_SM = 640;\nexport const RESPONSIVE_IMAGE_WIDTH_MD = 1024;\nexport const RESPONSIVE_IMAGE_WIDTH_LG = 1920;\n\nexport const RESPONSIVE_IMAGE_WIDTHS = [\n RESPONSIVE_IMAGE_WIDTH_XS,\n RESPONSIVE_IMAGE_WIDTH_SM,\n RESPONSIVE_IMAGE_WIDTH_MD,\n RESPONSIVE_IMAGE_WIDTH_LG,\n] as const;\n\nexport const MAX_CHUNK_SIZE_KB = 4096;\n\nexport const MIN_PORT = 1;\n\nexport const MAX_PORT = 65535;\n\nexport const DEFAULT_SERVER_PORT = 8000;\n", "export const MAX_PATH_TRAVERSAL_DEPTH = 10;\n\nexport const FORBIDDEN_PATH_PATTERNS = [\n /\\0/, // Null bytes\n];\n\nexport const DIRECTORY_TRAVERSAL_PATTERN = /\\.\\.[\\/\\\\]/;\n\nexport const ABSOLUTE_PATH_PATTERN = /^[\\/\\\\]/;\n\nexport const MAX_PATH_LENGTH = 4096;\n\nexport const DEFAULT_MAX_STRING_LENGTH = 1000;\n", "/**\n * Default port for veryfront dev server.\n * This is the single source of truth for the default port.\n */\nexport const DEFAULT_PORT = 3000;\n\nexport const DEFAULT_TIMEOUT_MS = 5000;\n\nexport const SSR_TIMEOUT_MS = 10000;\n\nexport const SANDBOX_TIMEOUT_MS = 5000;\n\nexport const DEFAULT_CACHE_MAX_SIZE = 100;\n\nexport const defaultConfig = {\n server: {\n port: DEFAULT_PORT,\n hostname: \"0.0.0.0\",\n },\n\n timeouts: {\n default: DEFAULT_TIMEOUT_MS,\n api: 30000,\n ssr: SSR_TIMEOUT_MS,\n hmr: 30000,\n sandbox: SANDBOX_TIMEOUT_MS,\n },\n\n cache: {\n jit: {\n maxSize: DEFAULT_CACHE_MAX_SIZE,\n tempDirPrefix: \"vf-bundle-\",\n },\n },\n\n metrics: {\n ssrBoundaries: [5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000],\n },\n} as const;\n\nexport const DEFAULT_PREFETCH_DELAY_MS = 100;\n\nexport const DEFAULT_METRICS_COLLECT_INTERVAL_MS = 60000;\n\nexport const DURATION_HISTOGRAM_BOUNDARIES_MS = [\n 5,\n 10,\n 25,\n 50,\n 75,\n 100,\n 250,\n 500,\n 750,\n 1000,\n 2500,\n 5000,\n 7500,\n 10000,\n];\n\nexport const SIZE_HISTOGRAM_BOUNDARIES_KB = [\n 1,\n 5,\n 10,\n 25,\n 50,\n 100,\n 250,\n 500,\n 1000,\n 2500,\n 5000,\n 10000,\n];\n\nexport const DEFAULT_REDIS_SCAN_COUNT = 100;\n\nexport const DEFAULT_REDIS_BATCH_DELETE_SIZE = 1000;\n\nexport const PAGE_TRANSITION_DELAY_MS = 150;\n\nexport type DefaultConfig = typeof defaultConfig;\n", "/**\n * Centralized server endpoints and paths registry\n *\n * All internal veryfront URLs should be defined here as the single source of truth.\n * This prevents hardcoding URLs across the codebase and makes refactoring easier.\n */\n\n// Re-export DEFAULT_PORT from config/defaults.ts (the single source of truth)\nexport { DEFAULT_PORT } from \"@veryfront/config/defaults.ts\";\n\n/** Default port for development dashboard */\nexport const DEFAULT_DASHBOARD_PORT = 3002;\n\n/** Internal URL prefix for all veryfront endpoints */\nexport const INTERNAL_PREFIX = \"/_veryfront\" as const;\n\n/**\n * All internal veryfront URL path prefixes (directories)\n */\nexport const INTERNAL_PATH_PREFIXES = {\n /** React Server Components endpoints */\n RSC: `${INTERNAL_PREFIX}/rsc/`,\n /** File system access endpoints (base64 encoded paths) */\n FS: `${INTERNAL_PREFIX}/fs/`,\n /** Virtual module system */\n MODULES: `${INTERNAL_PREFIX}/modules/`,\n /** Generated page modules */\n PAGES: `${INTERNAL_PREFIX}/pages/`,\n /** Data JSON endpoints */\n DATA: `${INTERNAL_PREFIX}/data/`,\n /** Library modules (AI SDK, etc.) */\n LIB: `${INTERNAL_PREFIX}/lib/`,\n /** Chunk assets */\n CHUNKS: `${INTERNAL_PREFIX}/chunks/`,\n /** Client component modules */\n CLIENT: `${INTERNAL_PREFIX}/client/`,\n} as const;\n\n/**\n * Specific internal endpoint URLs\n */\nexport const INTERNAL_ENDPOINTS = {\n // Development endpoints\n HMR_RUNTIME: `${INTERNAL_PREFIX}/hmr-runtime.js`,\n HMR: `${INTERNAL_PREFIX}/hmr.js`,\n HYDRATE: `${INTERNAL_PREFIX}/hydrate.js`,\n ERROR_OVERLAY: `${INTERNAL_PREFIX}/error-overlay.js`,\n DEV_LOADER: `${INTERNAL_PREFIX}/dev-loader.js`,\n CLIENT_LOG: `${INTERNAL_PREFIX}/log`,\n\n // Production endpoints\n CLIENT_JS: `${INTERNAL_PREFIX}/client.js`,\n ROUTER_JS: `${INTERNAL_PREFIX}/router.js`,\n PREFETCH_JS: `${INTERNAL_PREFIX}/prefetch.js`,\n MANIFEST_JSON: `${INTERNAL_PREFIX}/manifest.json`,\n APP_JS: `${INTERNAL_PREFIX}/app.js`,\n\n // RSC endpoints\n RSC_CLIENT: `${INTERNAL_PREFIX}/rsc/client.js`,\n RSC_MANIFEST: `${INTERNAL_PREFIX}/rsc/manifest`,\n RSC_STREAM: `${INTERNAL_PREFIX}/rsc/stream`,\n RSC_PAYLOAD: `${INTERNAL_PREFIX}/rsc/payload`,\n RSC_RENDER: `${INTERNAL_PREFIX}/rsc/render`,\n RSC_PAGE: `${INTERNAL_PREFIX}/rsc/page`,\n RSC_MODULE: `${INTERNAL_PREFIX}/rsc/module`,\n RSC_DOM: `${INTERNAL_PREFIX}/rsc/dom.js`,\n RSC_HYDRATOR: `${INTERNAL_PREFIX}/rsc/hydrator.js`,\n RSC_HYDRATE_CLIENT: `${INTERNAL_PREFIX}/rsc/hydrate-client.js`,\n\n // Library module endpoints\n LIB_AI_REACT: `${INTERNAL_PREFIX}/lib/ai/react.js`,\n LIB_AI_COMPONENTS: `${INTERNAL_PREFIX}/lib/ai/components.js`,\n LIB_AI_PRIMITIVES: `${INTERNAL_PREFIX}/lib/ai/primitives.js`,\n} as const;\n\n/**\n * Build output directory paths (relative)\n */\nexport const BUILD_DIRS = {\n /** Main build output directory */\n ROOT: \"_veryfront\",\n /** Chunks directory */\n CHUNKS: \"_veryfront/chunks\",\n /** Data directory */\n DATA: \"_veryfront/data\",\n /** Assets directory */\n ASSETS: \"_veryfront/assets\",\n} as const;\n\n/**\n * Local project directory paths (relative to project root)\n * These are .gitignore'd directories for caching and temporary files\n */\nexport const PROJECT_DIRS = {\n /** Base veryfront internal directory */\n ROOT: \".veryfront\",\n /** Cache directory for build artifacts, transforms, etc. */\n CACHE: \".veryfront/cache\",\n /** KV store directory */\n KV: \".veryfront/kv\",\n /** Log files directory */\n LOGS: \".veryfront/logs\",\n /** Temporary files directory */\n TMP: \".veryfront/tmp\",\n} as const;\n\n/** Default cache directory path */\nexport const DEFAULT_CACHE_DIR = PROJECT_DIRS.CACHE;\n\n/**\n * Helper to check if a pathname is an internal veryfront endpoint\n */\nexport function isInternalEndpoint(pathname: string): boolean {\n return pathname.startsWith(INTERNAL_PREFIX + \"/\");\n}\n\n/**\n * Helper to check if a pathname is a static asset (has extension or is internal)\n */\nexport function isStaticAsset(pathname: string): boolean {\n return pathname.includes(\".\") || isInternalEndpoint(pathname);\n}\n\n/**\n * Normalize a chunk path to include the base prefix\n */\nexport function normalizeChunkPath(\n filename: string,\n basePath: string = INTERNAL_PATH_PREFIXES.CHUNKS,\n): string {\n if (filename.startsWith(\"/\")) {\n return filename;\n }\n return `${basePath.replace(/\\/$/, \"\")}/${filename}`;\n}\n\n// Re-export for backward compatibility\nexport const DEV_SERVER_ENDPOINTS = {\n HMR_RUNTIME: INTERNAL_ENDPOINTS.HMR_RUNTIME,\n ERROR_OVERLAY: INTERNAL_ENDPOINTS.ERROR_OVERLAY,\n} as const;\n", "export * from \"./build.ts\";\nexport * from \"./cache.ts\";\nexport * from \"./cdn.ts\";\nexport * from \"./env.ts\";\nexport * from \"./hash.ts\";\nexport * from \"./hmr.ts\";\nexport * from \"./html.ts\";\nexport * from \"./http.ts\";\nexport * from \"./network.ts\";\nexport * from \"./security.ts\";\nexport * from \"./server.ts\";\n", "/**\n * Project directory paths and file extensions\n *\n * For internal veryfront URL endpoints, see ./constants/server.ts\n */\n\nimport {\n BUILD_DIRS,\n INTERNAL_ENDPOINTS,\n INTERNAL_PATH_PREFIXES,\n INTERNAL_PREFIX,\n} from \"./constants/server.ts\";\n\nexport const PATHS = {\n PAGES_DIR: \"pages\",\n COMPONENTS_DIR: \"components\",\n PUBLIC_DIR: \"public\",\n STYLES_DIR: \"styles\",\n DIST_DIR: \"dist\",\n CONFIG_FILE: \"veryfront.config.js\",\n} as const;\n\n/**\n * @deprecated Use INTERNAL_PREFIX, INTERNAL_ENDPOINTS, INTERNAL_PATH_PREFIXES from ./constants/server.ts\n */\nexport const VERYFRONT_PATHS = {\n INTERNAL_PREFIX: INTERNAL_PREFIX,\n BUILD_DIR: BUILD_DIRS.ROOT,\n CHUNKS_DIR: BUILD_DIRS.CHUNKS,\n DATA_DIR: BUILD_DIRS.DATA,\n ASSETS_DIR: BUILD_DIRS.ASSETS,\n HMR_RUNTIME: INTERNAL_ENDPOINTS.HMR_RUNTIME,\n CLIENT_JS: INTERNAL_ENDPOINTS.CLIENT_JS,\n ROUTER_JS: INTERNAL_ENDPOINTS.ROUTER_JS,\n ERROR_OVERLAY: INTERNAL_ENDPOINTS.ERROR_OVERLAY,\n} as const;\n\nexport const FILE_EXTENSIONS = {\n MDX: [\".mdx\", \".md\"],\n SCRIPT: [\".tsx\", \".ts\", \".jsx\", \".js\"],\n STYLE: [\".css\", \".scss\", \".sass\"],\n ALL: [\".mdx\", \".md\", \".tsx\", \".ts\", \".jsx\", \".js\", \".css\"],\n} as const;\n\n// Re-export for convenience\nexport { BUILD_DIRS, INTERNAL_ENDPOINTS, INTERNAL_PATH_PREFIXES, INTERNAL_PREFIX };\n", "export async function computeHash(content: string): Promise<string> {\n const encoder = new TextEncoder();\n const data = encoder.encode(content);\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nexport function getContentHash(content: string): Promise<string> {\n return computeHash(content);\n}\n\nexport function computeContentHash(content: string): Promise<string> {\n return computeHash(content);\n}\n\nexport interface BundleCode {\n code: string;\n css?: string;\n sourceMap?: string;\n}\n\nexport function computeCodeHash(code: BundleCode): Promise<string> {\n const combined = code.code + (code.css || \"\") + (code.sourceMap || \"\");\n return computeHash(combined);\n}\n\nexport function simpleHash(str: string): number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return Math.abs(hash);\n}\n\nexport async function shortHash(content: string): Promise<string> {\n const fullHash = await computeHash(content);\n return fullHash.slice(0, 8);\n}\n", "export class MemoCache<V> {\n private cache = new Map<string, V>();\n\n get(key: string): V | undefined {\n return this.cache.get(key);\n }\n\n set(key: string, value: V): void {\n this.cache.set(key, value);\n }\n\n has(key: string): boolean {\n return this.cache.has(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n size(): number {\n return this.cache.size;\n }\n}\n\nexport function memoizeAsync<Args extends unknown[], Result>(\n fn: (...args: Args) => Promise<Result>,\n keyHasher: (...args: Args) => string,\n): (...args: Args) => Promise<Result> {\n const cache = new MemoCache<Result>();\n\n return async (...args: Args): Promise<Result> => {\n const key = keyHasher(...args);\n if (cache.has(key)) {\n return cache.get(key)!;\n }\n\n const result = await fn(...args);\n cache.set(key, result);\n return result;\n };\n}\n\nexport function memoize<Args extends unknown[], Result>(\n fn: (...args: Args) => Result,\n keyHasher: (...args: Args) => string,\n): (...args: Args) => Result {\n const cache = new MemoCache<Result>();\n\n return (...args: Args): Result => {\n const key = keyHasher(...args);\n if (cache.has(key)) {\n return cache.get(key)!;\n }\n\n const result = fn(...args);\n cache.set(key, result);\n return result;\n };\n}\n\n/**\n * FNV-1a hash algorithm for fast cache key generation.\n * 10-15x faster than JSON.stringify() and uses 70-80% less memory.\n *\n * @param values - Values to hash\n * @returns Hash string\n */\nexport function simpleHash(...values: unknown[]): string {\n const FNV_OFFSET_BASIS = 2166136261;\n const FNV_PRIME = 16777619;\n\n let hash = FNV_OFFSET_BASIS;\n\n for (const value of values) {\n const str = typeof value === \"string\" ? value : String(value);\n\n for (let i = 0; i < str.length; i++) {\n hash ^= str.charCodeAt(i);\n hash = Math.imul(hash, FNV_PRIME);\n }\n }\n\n // Convert to unsigned 32-bit and then to base-36 string\n return (hash >>> 0).toString(36);\n}\n", "import { logger } from \"./logger/logger.ts\";\n\nexport function normalizePath(pathname: string): string {\n pathname = pathname.replace(/\\\\+/g, \"/\").replace(/\\/\\.+\\//g, \"/\");\n\n if (pathname !== \"/\" && pathname.endsWith(\"/\")) {\n pathname = pathname.slice(0, -1);\n }\n\n return pathname;\n}\n\nexport function joinPath(a: string, b: string): string {\n return `${a.replace(/\\/$/, \"\")}/${b.replace(/^\\//, \"\")}`;\n}\n\nexport function isWithinDirectory(root: string, target: string): boolean {\n const normalizedRoot = normalizePath(root);\n const normalizedTarget = normalizePath(target);\n return normalizedTarget.startsWith(`${normalizedRoot}/`) || normalizedTarget === normalizedRoot;\n}\n\nexport function getExtension(path: string): string {\n const lastDot = path.lastIndexOf(\".\");\n if (lastDot === -1 || lastDot === path.length - 1) {\n return \"\";\n }\n return path.slice(lastDot);\n}\n\nexport function getDirectory(path: string): string {\n const normalized = normalizePath(path);\n const lastSlash = normalized.lastIndexOf(\"/\");\n return lastSlash <= 0 ? \"/\" : normalized.slice(0, lastSlash);\n}\n\nexport function hasHashedFilename(path: string): boolean {\n return /\\.[a-f0-9]{8,}\\./.test(path);\n}\n\nexport function isAbsolutePath(path: string): boolean {\n return path.startsWith(\"/\") || /^[A-Za-z]:[\\\\/]/.test(path);\n}\n\nexport function toBase64Url(s: string): string {\n const b64 = btoa(s);\n return b64.replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replaceAll(\"=\", \"\");\n}\n\nexport function fromBase64Url(encoded: string): string {\n const b64 = encoded.replaceAll(\"-\", \"+\").replaceAll(\"_\", \"/\");\n const pad = b64.length % 4 === 2 ? \"==\" : b64.length % 4 === 3 ? \"=\" : \"\";\n try {\n return atob(b64 + pad);\n } catch (error) {\n logger.debug(`Failed to decode base64url string \"${encoded}\":`, error);\n return \"\";\n }\n}\n", "import { logger } from \"./logger/logger.ts\";\n\nexport function formatBytes(bytes: number): string {\n if (bytes === 0) return \"0 Bytes\";\n\n const absBytes = Math.abs(bytes);\n\n if (absBytes < 1) {\n return `${absBytes} Bytes`;\n }\n\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n const i = Math.floor(Math.log(absBytes) / Math.log(k));\n\n const index = Math.max(0, Math.min(i, sizes.length - 1));\n\n return `${parseFloat((absBytes / Math.pow(k, index)).toFixed(2))} ${sizes[index]}`;\n}\n\nexport function estimateSize(value: unknown): number {\n if (value === null || value === undefined) return 8;\n\n switch (typeof value) {\n case \"boolean\":\n return 4;\n case \"number\":\n return 8;\n case \"string\":\n return value.length * 2; // UTF-16\n case \"function\":\n return 0; // Functions not cached\n case \"object\":\n return estimateObjectSize(value);\n default:\n return 32;\n }\n}\n\nexport function estimateSizeWithCircularHandling(value: unknown): number {\n const seen = new WeakSet();\n const encoder = new TextEncoder();\n\n const json = JSON.stringify(value, (_key, val) => {\n if (typeof val === \"object\" && val !== null) {\n if (seen.has(val as object)) return undefined;\n seen.add(val as object);\n\n if (val instanceof Map) {\n return { __type: \"Map\", entries: Array.from(val.entries()) };\n }\n if (val instanceof Set) {\n return { __type: \"Set\", values: Array.from(val.values()) };\n }\n }\n\n if (typeof val === \"function\") return undefined;\n\n if (val instanceof Uint8Array) {\n return { __type: \"Uint8Array\", length: val.length };\n }\n\n return val;\n });\n\n return encoder.encode(json ?? \"\").length;\n}\n\nfunction estimateObjectSize(value: object): number {\n if (value instanceof ArrayBuffer) return value.byteLength;\n\n if (\n value instanceof Uint8Array || value instanceof Uint16Array ||\n value instanceof Uint32Array || value instanceof Int8Array ||\n value instanceof Int16Array || value instanceof Int32Array\n ) {\n return value.byteLength;\n }\n\n try {\n return JSON.stringify(value).length * 2;\n } catch (error) {\n logger.debug(\"Failed to estimate size of non-serializable object:\", error);\n return 1024; // Default estimate for non-serializable\n }\n}\n\nexport function formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n if (ms < 3600000) return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;\n return `${Math.floor(ms / 3600000)}h ${Math.floor((ms % 3600000) / 60000)}m`;\n}\n\nexport function formatNumber(num: number): string {\n return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\nexport function truncateString(str: string, maxLength: number): string {\n if (str.length <= maxLength) return str;\n return str.slice(0, maxLength - 3) + \"...\";\n}\n", "import { serverLogger as logger } from \"./logger/index.ts\";\n\nexport interface BundleMetadata {\n hash: string;\n codeHash: string;\n size: number;\n compiledAt: number;\n source: string;\n mode: \"development\" | \"production\";\n meta?: {\n type?: \"mdx\" | \"component\" | \"layout\" | \"provider\";\n depsHash?: string;\n reactVersion?: string;\n };\n}\n\nexport interface BundleCode {\n code: string;\n sourceMap?: string;\n css?: string;\n}\n\nexport interface BundleManifestStore {\n getBundleMetadata(key: string): Promise<BundleMetadata | undefined>;\n\n setBundleMetadata(key: string, metadata: BundleMetadata, ttlMs?: number): Promise<void>;\n\n getBundleCode(hash: string): Promise<BundleCode | undefined>;\n\n setBundleCode(hash: string, code: BundleCode, ttlMs?: number): Promise<void>;\n\n deleteBundle(key: string): Promise<void>;\n\n invalidateSource(source: string): Promise<number>;\n\n clear(): Promise<void>;\n\n isAvailable(): Promise<boolean>;\n\n getStats(): Promise<{\n totalBundles: number;\n totalSize: number;\n oldestBundle?: number;\n newestBundle?: number;\n }>;\n}\n\nexport class InMemoryBundleManifestStore implements BundleManifestStore {\n private metadata = new Map<string, { value: BundleMetadata; expiry?: number }>();\n private code = new Map<string, { value: BundleCode; expiry?: number }>();\n private sourceIndex = new Map<string, Set<string>>();\n\n getBundleMetadata(key: string): Promise<BundleMetadata | undefined> {\n const entry = this.metadata.get(key);\n if (!entry) return Promise.resolve(undefined);\n if (entry.expiry && Date.now() > entry.expiry) {\n this.metadata.delete(key);\n return Promise.resolve(undefined);\n }\n return Promise.resolve(entry.value);\n }\n\n setBundleMetadata(key: string, metadata: BundleMetadata, ttlMs?: number): Promise<void> {\n const expiry = ttlMs ? Date.now() + ttlMs : undefined;\n this.metadata.set(key, { value: metadata, expiry });\n\n if (!this.sourceIndex.has(metadata.source)) {\n this.sourceIndex.set(metadata.source, new Set());\n }\n this.sourceIndex.get(metadata.source)!.add(key);\n return Promise.resolve();\n }\n\n getBundleCode(hash: string): Promise<BundleCode | undefined> {\n const entry = this.code.get(hash);\n if (!entry) return Promise.resolve(undefined);\n if (entry.expiry && Date.now() > entry.expiry) {\n this.code.delete(hash);\n return Promise.resolve(undefined);\n }\n return Promise.resolve(entry.value);\n }\n\n setBundleCode(hash: string, code: BundleCode, ttlMs?: number): Promise<void> {\n const expiry = ttlMs ? Date.now() + ttlMs : undefined;\n this.code.set(hash, { value: code, expiry });\n return Promise.resolve();\n }\n\n async deleteBundle(key: string): Promise<void> {\n const metadata = await this.getBundleMetadata(key);\n this.metadata.delete(key);\n if (metadata) {\n this.code.delete(metadata.codeHash);\n const sourceKeys = this.sourceIndex.get(metadata.source);\n if (sourceKeys) {\n sourceKeys.delete(key);\n if (sourceKeys.size === 0) {\n this.sourceIndex.delete(metadata.source);\n }\n }\n }\n }\n\n async invalidateSource(source: string): Promise<number> {\n const keys = this.sourceIndex.get(source);\n if (!keys) return 0;\n\n let count = 0;\n for (const key of Array.from(keys)) {\n await this.deleteBundle(key);\n count++;\n }\n this.sourceIndex.delete(source);\n return count;\n }\n\n clear(): Promise<void> {\n this.metadata.clear();\n this.code.clear();\n this.sourceIndex.clear();\n return Promise.resolve();\n }\n\n isAvailable(): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n getStats(): Promise<{\n totalBundles: number;\n totalSize: number;\n oldestBundle?: number;\n newestBundle?: number;\n }> {\n let totalSize = 0;\n let oldest: number | undefined;\n let newest: number | undefined;\n\n for (const { value } of this.metadata.values()) {\n totalSize += value.size;\n if (!oldest || value.compiledAt < oldest) oldest = value.compiledAt;\n if (!newest || value.compiledAt > newest) newest = value.compiledAt;\n }\n\n return Promise.resolve({\n totalBundles: this.metadata.size,\n totalSize,\n oldestBundle: oldest,\n newestBundle: newest,\n });\n }\n}\n\nlet manifestStore: BundleManifestStore = new InMemoryBundleManifestStore();\n\nexport function setBundleManifestStore(store: BundleManifestStore): void {\n manifestStore = store;\n logger.info(\"[bundle-manifest] Bundle manifest store configured\", {\n type: store.constructor.name,\n });\n}\n\nexport function getBundleManifestStore(): BundleManifestStore {\n return manifestStore;\n}\n\nexport { computeCodeHash, computeContentHash } from \"./hash-utils.ts\";\n", "import type { RuntimeAdapter } from \"@veryfront/platform/adapters/base.ts\";\nimport type { VeryfrontConfig } from \"@veryfront/config\";\nimport { serverLogger as logger } from \"./logger/index.ts\";\nimport {\n type BundleManifestStore,\n InMemoryBundleManifestStore,\n setBundleManifestStore,\n} from \"./bundle-manifest.ts\";\nimport { BUNDLE_MANIFEST_DEV_TTL_MS, BUNDLE_MANIFEST_PROD_TTL_MS } from \"./constants/cache.ts\";\n\nexport async function initializeBundleManifest(\n config: VeryfrontConfig,\n mode: \"development\" | \"production\",\n adapter?: RuntimeAdapter,\n): Promise<void> {\n const manifestConfig = config.cache?.bundleManifest;\n const enabled = manifestConfig?.enabled ?? mode === \"production\";\n\n if (!enabled) {\n logger.info(\"[bundle-manifest] Bundle manifest disabled\");\n setBundleManifestStore(new InMemoryBundleManifestStore());\n return;\n }\n\n const envType = adapter?.env.get(\"VERYFRONT_BUNDLE_MANIFEST_TYPE\");\n const storeType = manifestConfig?.type || envType || \"memory\";\n\n logger.info(\"[bundle-manifest] Initializing bundle manifest\", {\n type: storeType,\n mode,\n });\n\n try {\n let store: BundleManifestStore;\n\n switch (storeType) {\n case \"redis\": {\n const { RedisBundleManifestStore } = await import(\"./bundle-manifest-redis.ts\");\n const redisUrl = manifestConfig?.redisUrl ||\n adapter?.env.get(\"VERYFRONT_BUNDLE_MANIFEST_REDIS_URL\");\n store = new RedisBundleManifestStore(\n {\n url: redisUrl,\n keyPrefix: manifestConfig?.keyPrefix,\n },\n adapter,\n );\n\n const available = await store.isAvailable();\n if (!available) {\n logger.warn(\"[bundle-manifest] Redis not available, falling back to in-memory\");\n store = new InMemoryBundleManifestStore();\n } else {\n logger.info(\"[bundle-manifest] Redis store initialized\");\n }\n break;\n }\n\n case \"kv\": {\n const { KVBundleManifestStore } = await import(\"./bundle-manifest-kv.ts\");\n store = new KVBundleManifestStore({\n keyPrefix: manifestConfig?.keyPrefix,\n });\n\n const available = await store.isAvailable();\n if (!available) {\n logger.warn(\"[bundle-manifest] KV not available, falling back to in-memory\");\n store = new InMemoryBundleManifestStore();\n } else {\n logger.info(\"[bundle-manifest] KV store initialized\");\n }\n break;\n }\n\n case \"memory\":\n default: {\n store = new InMemoryBundleManifestStore();\n logger.info(\"[bundle-manifest] In-memory store initialized\");\n break;\n }\n }\n\n setBundleManifestStore(store);\n\n try {\n const stats = await store.getStats();\n logger.info(\"[bundle-manifest] Store statistics\", stats);\n } catch (error) {\n logger.debug(\"[bundle-manifest] Failed to get stats\", { error });\n }\n } catch (error) {\n logger.error(\"[bundle-manifest] Failed to initialize store, using in-memory fallback\", {\n error,\n });\n setBundleManifestStore(new InMemoryBundleManifestStore());\n }\n}\n\nexport function getBundleManifestTTL(\n config: VeryfrontConfig,\n mode: \"development\" | \"production\",\n): number | undefined {\n const manifestConfig = config.cache?.bundleManifest;\n if (manifestConfig?.ttl) {\n return manifestConfig.ttl;\n }\n\n if (mode === \"production\") {\n return BUNDLE_MANIFEST_PROD_TTL_MS;\n } else {\n return BUNDLE_MANIFEST_DEV_TTL_MS;\n }\n}\n\nexport async function warmupBundleManifest(\n store: BundleManifestStore,\n keys: string[],\n): Promise<void> {\n logger.info(\"[bundle-manifest] Warming up cache\", { keys: keys.length });\n\n let loaded = 0;\n let failed = 0;\n\n for (const key of keys) {\n try {\n const metadata = await store.getBundleMetadata(key);\n if (metadata) {\n await store.getBundleCode(metadata.codeHash);\n loaded++;\n }\n } catch (error) {\n logger.debug(\"[bundle-manifest] Failed to warm up key\", { key, error });\n failed++;\n }\n }\n\n logger.info(\"[bundle-manifest] Cache warmup complete\", { loaded, failed });\n}\n", "declare const process: { env: Record<string, string | undefined> } | undefined;\nimport { getEnv } from \"../../platform/compat/process.ts\";\n\n/**\n * Checks if React Server Components (RSC) are enabled.\n *\n * Priority order:\n * 1. Config file (config.experimental.rsc)\n * 2. Environment variables (VERYFRONT_EXPERIMENTAL_RSC=1)\n * 3. Default (false)\n *\n * @param config - Optional config object to check first\n * @returns true if RSC is enabled, false otherwise\n */\nexport function isRSCEnabled(config?: { experimental?: { rsc?: boolean } }): boolean {\n // 1. Check config first (highest priority)\n if (config?.experimental?.rsc !== undefined) {\n return config.experimental.rsc;\n }\n\n // 2. Fallback to environment variables (backward compatibility)\n return getEnv(\"VERYFRONT_EXPERIMENTAL_RSC\") === \"1\";\n}\n", "/**\n * Platform detection utilities\n */\n\nimport { isDeno } from \"../../platform/compat/runtime.ts\";\nimport { execPath } from \"../../platform/compat/process.ts\";\n\n/**\n * Detect if the code is running in a compiled Deno binary\n * @returns true if running in a compiled binary, false otherwise\n */\nexport function isCompiledBinary(): boolean {\n if (!isDeno) return false;\n\n try {\n const path = execPath();\n return path.includes(\"veryfront\");\n } catch {\n return false;\n }\n}\n", "export * from \"./runtime-guards.ts\";\n\nexport * from \"./logger/index.ts\";\n\nexport * from \"./constants/index.ts\";\nexport { VERSION } from \"./version.ts\";\n\nexport * from \"./paths.ts\";\n\nexport {\n type BundleCode as HashBundleCode, // Alias to avoid conflict with bundle-manifest\n computeCodeHash,\n computeContentHash,\n computeHash,\n getContentHash,\n shortHash,\n simpleHash,\n simpleHash as numericHash, // Alias to avoid conflict with memoize\n} from \"./hash-utils.ts\";\n\nexport {\n MemoCache,\n memoize,\n memoizeAsync,\n simpleHash as memoizeHash, // Alias to distinguish from hash-utils version\n} from \"./memoize.ts\";\n\nexport * from \"./path-utils.ts\";\n\nexport * from \"./format-utils.ts\";\n\nexport * from \"./bundle-manifest.ts\";\nexport * from \"./bundle-manifest-init.ts\";\n\nexport * from \"./feature-flags.ts\";\n\nexport { isCompiledBinary } from \"./platform.ts\";\n", "export interface BuildContext {\n file?: string;\n line?: number;\n column?: number;\n moduleId?: string;\n phase?: \"parse\" | \"transform\" | \"bundle\" | \"optimize\";\n}\n\nexport interface APIContext {\n endpoint?: string;\n method?: string;\n statusCode?: number;\n headers?: Record<string, string>;\n}\n\nexport interface RenderContext {\n component?: string;\n route?: string;\n phase?: \"server\" | \"client\" | \"hydration\";\n props?: unknown;\n}\n\nexport interface ConfigContext {\n configFile?: string;\n field?: string;\n value?: unknown;\n expected?: string;\n}\n\nexport interface AgentContext {\n agentId?: string;\n intent?: string;\n timeout?: number;\n}\n\nexport interface FileContext {\n path?: string;\n operation?: \"read\" | \"write\" | \"delete\" | \"mkdir\";\n permissions?: string;\n}\n\nexport interface NetworkContext {\n url?: string;\n timeout?: number;\n retryCount?: number;\n}\n\nexport type VeryfrontError =\n | { type: \"build\"; message: string; context?: BuildContext }\n | { type: \"api\"; message: string; context?: APIContext }\n | { type: \"render\"; message: string; context?: RenderContext }\n | { type: \"config\"; message: string; context?: ConfigContext }\n | { type: \"agent\"; message: string; context?: AgentContext }\n | { type: \"file\"; message: string; context?: FileContext }\n | { type: \"network\"; message: string; context?: NetworkContext }\n | { type: \"permission\"; message: string; context?: FileContext }\n | { type: \"not_supported\"; message: string; feature?: string };\n\nexport function createError(error: VeryfrontError): VeryfrontError {\n return error;\n}\n\nexport function isBuildError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"build\" }> {\n return error.type === \"build\";\n}\n\nexport function isAPIError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"api\" }> {\n return error.type === \"api\";\n}\n\nexport function isRenderError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"render\" }> {\n return error.type === \"render\";\n}\n\nexport function isConfigError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"config\" }> {\n return error.type === \"config\";\n}\n\nexport function isAgentError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"agent\" }> {\n return error.type === \"agent\";\n}\n\nexport function isFileError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"file\" }> {\n return error.type === \"file\";\n}\n\nexport function isNetworkError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"network\" }> {\n return error.type === \"network\";\n}\n\nexport function toError(veryfrontError: VeryfrontError): Error {\n const error = new Error(veryfrontError.message);\n error.name = `VeryfrontError[${veryfrontError.type}]`;\n Object.defineProperty(error, \"context\", {\n value: veryfrontError,\n enumerable: false,\n configurable: true,\n });\n return error;\n}\n\nexport function fromError(error: unknown): VeryfrontError | null {\n if (error && typeof error === \"object\" && \"context\" in error) {\n // Safe access after 'in' check\n const context = (error as Record<string, unknown>).context;\n if (\n context &&\n typeof context === \"object\" &&\n \"type\" in context &&\n \"message\" in context\n ) {\n return context as VeryfrontError;\n }\n }\n return null;\n}\n\nexport function logError(\n error: VeryfrontError,\n logger?: { error: (msg: string, ...args: unknown[]) => void },\n): void {\n const log = logger || console;\n const context = \"context\" in error ? error.context || {} : {};\n log.error(`[${error.type}] ${error.message}`, context);\n}\n", "import { z } from \"zod\";\nimport type { VeryfrontConfig } from \"./types.ts\";\nimport { type ConfigContext, createError, toError } from \"../errors/veryfront-error.ts\";\n\nconst corsSchema = z.union([z.boolean(), z.object({ origin: z.string().optional() }).strict()]);\n\nexport const veryfrontConfigSchema = z\n .object({\n title: z.string().optional(),\n description: z.string().optional(),\n experimental: z.object({\n esmLayouts: z.boolean().optional(),\n precompileMDX: z.boolean().optional(),\n }).partial().optional(),\n router: z.enum([\"app\", \"pages\"]).optional(),\n defaultLayout: z.string().optional(),\n theme: z\n .object({ colors: z.record(z.string()).optional() })\n .partial()\n .optional(),\n build: z\n .object({\n outDir: z.string().optional(),\n trailingSlash: z.boolean().optional(),\n esbuild: z\n .object({\n wasmURL: z.string().url().optional(),\n worker: z.boolean().optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n cache: z\n .object({\n dir: z.string().optional(),\n bundleManifest: z\n .object({\n type: z.enum([\"redis\", \"kv\", \"memory\"]).optional(),\n redisUrl: z.string().optional(),\n keyPrefix: z.string().optional(),\n ttl: z.number().int().positive().optional(),\n enabled: z.boolean().optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n dev: z\n .object({\n port: z.number().int().positive().optional(),\n host: z.string().optional(),\n open: z.boolean().optional(),\n hmr: z.boolean().optional(),\n components: z.array(z.string()).optional(),\n })\n .partial()\n .optional(),\n resolve: z\n .object({\n importMap: z\n .object({\n imports: z.record(z.string()).optional(),\n scopes: z.record(z.record(z.string())).optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n security: z\n .object({\n csp: z.record(z.array(z.string())).optional(),\n remoteHosts: z.array(z.string().url()).optional(),\n cors: corsSchema.optional(),\n coop: z.enum([\"same-origin\", \"same-origin-allow-popups\", \"unsafe-none\"]).optional(),\n corp: z.enum([\"same-origin\", \"same-site\", \"cross-origin\"]).optional(),\n coep: z.enum([\"require-corp\", \"unsafe-none\"]).optional(),\n })\n .partial()\n .optional(),\n middleware: z\n .object({\n custom: z.array(z.function()).optional(),\n })\n .partial()\n .optional(),\n theming: z\n .object({\n brandName: z.string().optional(),\n logoHtml: z.string().optional(),\n })\n .partial()\n .optional(),\n assetPipeline: z\n .object({\n images: z\n .object({\n enabled: z.boolean().optional(),\n formats: z.array(z.enum([\"webp\", \"avif\", \"jpeg\", \"png\"])).optional(),\n sizes: z.array(z.number().int().positive()).optional(),\n quality: z.number().int().min(1).max(100).optional(),\n inputDir: z.string().optional(),\n outputDir: z.string().optional(),\n preserveOriginal: z.boolean().optional(),\n })\n .partial()\n .optional(),\n css: z\n .object({\n enabled: z.boolean().optional(),\n minify: z.boolean().optional(),\n autoprefixer: z.boolean().optional(),\n purge: z.boolean().optional(),\n criticalCSS: z.boolean().optional(),\n inputDir: z.string().optional(),\n outputDir: z.string().optional(),\n browsers: z.array(z.string()).optional(),\n purgeContent: z.array(z.string()).optional(),\n sourceMap: z.boolean().optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n observability: z\n .object({\n tracing: z\n .object({\n enabled: z.boolean().optional(),\n exporter: z.enum([\"jaeger\", \"zipkin\", \"otlp\", \"console\"]).optional(),\n endpoint: z.string().optional(),\n serviceName: z.string().optional(),\n sampleRate: z.number().min(0).max(1).optional(),\n })\n .partial()\n .optional(),\n metrics: z\n .object({\n enabled: z.boolean().optional(),\n exporter: z.enum([\"prometheus\", \"otlp\", \"console\"]).optional(),\n endpoint: z.string().optional(),\n prefix: z.string().optional(),\n collectInterval: z.number().int().positive().optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n fs: z\n .object({\n type: z.enum([\"local\", \"veryfront-api\", \"memory\"]).optional(),\n local: z\n .object({\n baseDir: z.string().optional(),\n })\n .partial()\n .optional(),\n veryfront: z\n .object({\n apiBaseUrl: z.string().url(),\n apiToken: z.string(),\n projectSlug: z.string(),\n cache: z\n .object({\n enabled: z.boolean().optional(),\n ttl: z.number().int().positive().optional(),\n maxSize: z.number().int().positive().optional(),\n })\n .partial()\n .optional(),\n retry: z\n .object({\n maxRetries: z.number().int().min(0).optional(),\n initialDelay: z.number().int().positive().optional(),\n maxDelay: z.number().int().positive().optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n memory: z\n .object({\n files: z.record(z.union([z.string(), z.instanceof(Uint8Array)])).optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n client: z\n .object({\n moduleResolution: z.enum([\"cdn\", \"self-hosted\", \"bundled\"]).optional(),\n cdn: z\n .object({\n provider: z.enum([\"esm.sh\", \"unpkg\", \"jsdelivr\"]).optional(),\n versions: z\n .union([\n z.literal(\"auto\"),\n z.object({\n react: z.string().optional(),\n veryfront: z.string().optional(),\n }),\n ])\n .optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n })\n .partial();\n\nexport type VeryfrontConfigInput = z.input<typeof veryfrontConfigSchema>;\n\nexport function validateVeryfrontConfig(input: unknown): VeryfrontConfig {\n const parsed = veryfrontConfigSchema.safeParse(input);\n if (!parsed.success) {\n const first = parsed.error.issues[0];\n const path = first?.path?.length ? first.path.join(\".\") : \"<root>\";\n const expected = first?.message || String(first);\n let hint = \"\";\n if (String(path).includes(\"security.cors\")) {\n hint = \" Expected boolean or { origin?: string }.\";\n }\n\n const context: ConfigContext = {\n field: path,\n expected: expected + hint,\n value: input,\n };\n\n throw toError(\n createError({\n type: \"config\",\n message: `Invalid veryfront.config at ${path}: ${expected}.${hint}`,\n context,\n }),\n );\n }\n return parsed.data as VeryfrontConfig;\n}\n\nexport function findUnknownTopLevelKeys(input: Record<string, unknown>): string[] {\n const known = new Set([\n \"title\",\n \"description\",\n \"experimental\",\n \"router\",\n \"defaultLayout\",\n \"theme\",\n \"build\",\n \"cache\",\n \"dev\",\n \"resolve\",\n \"security\",\n \"middleware\",\n \"theming\",\n \"assetPipeline\",\n \"observability\",\n \"fs\",\n \"client\",\n ]);\n return Object.keys(input).filter((k) => !known.has(k));\n}\n", "import type { VeryfrontConfig } from \"./types.ts\";\nimport { findUnknownTopLevelKeys, validateVeryfrontConfig } from \"./schema.ts\";\nimport { join } from \"std/path/mod.ts\";\nimport type { RuntimeAdapter } from \"@veryfront/platform/adapters/base.ts\";\nimport { serverLogger } from \"@veryfront/utils/logger/logger.ts\";\nimport { getReactImportMap, REACT_DEFAULT_VERSION } from \"@veryfront/utils/constants/cdn.ts\";\nimport { DEFAULT_CACHE_DIR } from \"@veryfront/utils/constants/server.ts\";\nimport { DEFAULT_PORT } from \"./defaults.ts\";\n\nexport type { VeryfrontConfig } from \"./types.ts\";\n\nfunction getDefaultImportMapForConfig() {\n return { imports: getReactImportMap(REACT_DEFAULT_VERSION) };\n}\n\nconst DEFAULT_CONFIG: Partial<VeryfrontConfig> = {\n title: \"Veryfront App\",\n description: \"Built with Veryfront\",\n experimental: {\n esmLayouts: true,\n },\n router: undefined,\n defaultLayout: undefined,\n theme: {\n colors: {\n primary: \"#3B82F6\",\n },\n },\n build: {\n outDir: \"dist\",\n trailingSlash: false,\n esbuild: {\n wasmURL: \"https://deno.land/x/esbuild@v0.20.1/esbuild.wasm\",\n worker: false,\n },\n },\n cache: {\n dir: DEFAULT_CACHE_DIR,\n render: {\n type: \"memory\",\n ttl: undefined,\n maxEntries: 500,\n kvPath: undefined,\n redisUrl: undefined,\n redisKeyPrefix: undefined,\n },\n },\n dev: {\n port: DEFAULT_PORT,\n host: \"localhost\",\n open: false,\n },\n resolve: {\n importMap: getDefaultImportMapForConfig(),\n },\n client: {\n moduleResolution: \"cdn\",\n cdn: {\n provider: \"esm.sh\",\n versions: \"auto\",\n },\n },\n};\n\nconst configCacheByProject = new Map<string, { revision: number; config: VeryfrontConfig }>();\nlet cacheRevision = 0;\n\nfunction validateCorsConfig(userConfig: unknown): void {\n if (!userConfig || typeof userConfig !== \"object\") {\n return;\n }\n const config = userConfig as Record<string, unknown>;\n const security = config.security as Record<string, unknown> | undefined;\n const cors = security?.cors;\n if (!cors || typeof cors !== \"object\" || Array.isArray(cors)) {\n return;\n }\n\n const corsObj = cors as Record<string, unknown>;\n const origin = corsObj.origin;\n if (origin !== undefined && typeof origin !== \"string\") {\n throw new ConfigValidationError(\n \"security.cors.origin must be a string. Expected boolean or { origin?: string }\",\n );\n }\n}\n\nfunction validateConfigShape(userConfig: unknown): void {\n validateVeryfrontConfig(userConfig);\n const unknown = typeof userConfig === \"object\" && userConfig\n ? findUnknownTopLevelKeys(userConfig as Record<string, unknown>)\n : [];\n if (unknown.length > 0) {\n serverLogger.warn(`Unknown config keys: ${unknown.join(\", \")}. These will be ignored.`);\n }\n}\n\nfunction mergeConfigs(userConfig: Partial<VeryfrontConfig>): VeryfrontConfig {\n const merged: VeryfrontConfig = {\n ...DEFAULT_CONFIG,\n ...userConfig,\n dev: {\n ...DEFAULT_CONFIG.dev,\n ...userConfig.dev,\n },\n theme: {\n ...DEFAULT_CONFIG.theme,\n ...userConfig.theme,\n },\n build: {\n ...DEFAULT_CONFIG.build,\n ...userConfig.build,\n },\n cache: {\n ...DEFAULT_CONFIG.cache,\n ...userConfig.cache,\n },\n resolve: {\n ...DEFAULT_CONFIG.resolve,\n ...userConfig.resolve,\n },\n client: {\n ...DEFAULT_CONFIG.client,\n ...userConfig.client,\n cdn: {\n ...DEFAULT_CONFIG.client?.cdn,\n ...userConfig.client?.cdn,\n },\n },\n } as VeryfrontConfig;\n\n if (merged.resolve) {\n const defaultMap = DEFAULT_CONFIG.resolve?.importMap;\n const userMap = userConfig.resolve?.importMap;\n\n if (defaultMap || userMap) {\n merged.resolve.importMap = {\n imports: {\n ...(defaultMap?.imports ?? {}),\n ...(userMap?.imports ?? {}),\n },\n scopes: {\n ...(defaultMap?.scopes ?? {}),\n ...(userMap?.scopes ?? {}),\n },\n };\n }\n }\n\n return merged;\n}\n\nclass ConfigValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ConfigValidationError\";\n }\n}\n\nasync function loadAndMergeConfig(\n configPath: string,\n projectDir: string,\n): Promise<VeryfrontConfig | null> {\n try {\n const configUrl = `file://${configPath}?t=${Date.now()}-${crypto.randomUUID()}`;\n const configModule = await import(configUrl);\n const userConfig = configModule.default || configModule;\n\n if (userConfig === null || typeof userConfig !== \"object\" || Array.isArray(userConfig)) {\n throw new ConfigValidationError(\n `Expected object, received ${userConfig === null ? \"null\" : typeof userConfig}`,\n );\n }\n\n validateCorsConfig(userConfig);\n validateConfigShape(userConfig);\n\n const merged = mergeConfigs(userConfig);\n configCacheByProject.set(projectDir, { revision: cacheRevision, config: merged });\n return merged;\n } catch (error) {\n if (error instanceof ConfigValidationError) {\n throw error;\n }\n\n if (error instanceof Error && error.message.startsWith(\"Invalid veryfront.config\")) {\n throw error;\n }\n\n throw error;\n }\n}\n\nexport async function getConfig(\n projectDir: string,\n adapter: RuntimeAdapter,\n): Promise<VeryfrontConfig> {\n const cached = configCacheByProject.get(projectDir);\n if (cached && cached.revision === cacheRevision) return cached.config;\n\n const configFiles = [\"veryfront.config.js\", \"veryfront.config.ts\", \"veryfront.config.mjs\"];\n\n for (const configFile of configFiles) {\n const configPath = join(projectDir, configFile);\n\n const exists = await adapter.fs.exists(configPath);\n if (!exists) continue;\n\n try {\n const merged = await loadAndMergeConfig(configPath, projectDir);\n if (merged) return merged;\n } catch (error) {\n if (error instanceof ConfigValidationError) {\n throw error;\n }\n\n if (error instanceof Error && error.message.startsWith(\"Invalid veryfront.config\")) {\n throw error;\n }\n\n // Only log at debug level - this is expected when .ts exists but .js is tried first\n const errorMessage = error instanceof Error ? error.message : String(error);\n serverLogger.debug(`[CONFIG] Failed to load ${configFile}, trying next config file:`, {\n error: errorMessage,\n });\n\n continue;\n }\n }\n\n const defaultConfig = DEFAULT_CONFIG as VeryfrontConfig;\n configCacheByProject.set(projectDir, { revision: cacheRevision, config: defaultConfig });\n return defaultConfig;\n}\n\nexport function clearConfigCache() {\n configCacheByProject.clear();\n cacheRevision++;\n}\n", "import type { VeryfrontConfig } from \"./types.ts\";\nimport { createError, toError } from \"../../core/errors/veryfront-error.ts\";\nimport { getEnv } from \"../../platform/compat/process.ts\";\n\nexport function defineConfig(config: VeryfrontConfig): VeryfrontConfig {\n return config;\n}\n\nexport function defineConfigWithEnv(\n factory: (env: string) => VeryfrontConfig,\n): VeryfrontConfig {\n const env = getEnv(\"NODE_ENV\") || \"development\";\n return factory(env);\n}\n\nexport function mergeConfigs(\n ...configs: Partial<VeryfrontConfig>[]\n): VeryfrontConfig {\n const merged: Partial<VeryfrontConfig> = {};\n\n for (const config of configs) {\n Object.assign(merged, config);\n }\n\n return merged as VeryfrontConfig;\n}\n\nexport async function validateConfig(config: unknown): Promise<void> {\n if (!config || typeof config !== \"object\") {\n throw toError(createError({\n type: \"config\",\n message: \"Configuration must be an object\",\n }));\n }\n\n const cfg = config as Record<string, unknown>;\n\n if (cfg.dev && typeof cfg.dev === \"object\") {\n const dev = cfg.dev as Record<string, unknown>;\n if (dev.port !== undefined) {\n const { MIN_PORT, MAX_PORT } = await import(\"../utils/constants/network.ts\");\n if (typeof dev.port !== \"number\" || dev.port < MIN_PORT || dev.port > MAX_PORT) {\n throw toError(createError({\n type: \"config\",\n message: `dev.port must be a number between ${MIN_PORT} and ${MAX_PORT}`,\n context: {\n field: \"dev.port\",\n value: dev.port,\n expected: `number between ${MIN_PORT} and ${MAX_PORT}`,\n },\n }));\n }\n }\n }\n\n if (cfg.build && typeof cfg.build === \"object\") {\n const build = cfg.build as Record<string, unknown>;\n if (build.outDir !== undefined && typeof build.outDir !== \"string\") {\n throw toError(createError({\n type: \"config\",\n message: \"build.outDir must be a string\",\n context: { field: \"build.outDir\", value: build.outDir, expected: \"string\" },\n }));\n }\n }\n}\n", "export const LOCALHOST = {\n IPV4: \"127.0.0.1\",\n IPV6: \"::1\",\n HOSTNAME: \"localhost\",\n} as const;\n\nexport const HTTP_DEFAULTS = {\n PORT: 3000,\n HOST: \"localhost\",\n PROD_HOST: \"0.0.0.0\",\n} as const;\n\nexport const REDIS_DEFAULTS = {\n URL: \"redis://127.0.0.1:6379\",\n PORT: 6379,\n HOST: \"127.0.0.1\",\n} as const;\n\nexport const DEV_LOCALHOST_ORIGINS = [\n \"http://localhost\",\n \"http://127.0.0.1\",\n \"https://localhost\",\n \"https://127.0.0.1\",\n] as const;\n\nexport const DEV_LOCALHOST_CSP = {\n WS: \"ws://localhost:* wss://localhost:*\",\n HTTP: \"http://localhost\",\n} as const;\n\nexport const LOCALHOST_URLS = {\n HTTP: \"http://localhost\",\n HTTPS: \"https://localhost\",\n HTTP_IPV4: \"http://127.0.0.1\",\n HTTPS_IPV4: \"https://127.0.0.1\",\n} as const;\n\nexport function buildLocalhostUrl(\n port: number,\n protocol: \"http\" | \"https\" = \"http\",\n): string {\n return `${protocol}://${LOCALHOST.HOSTNAME}:${port}`;\n}\n\nexport function buildIpv4Url(\n port: number,\n protocol: \"http\" | \"https\" = \"http\",\n): string {\n return `${protocol}://${LOCALHOST.IPV4}:${port}`;\n}\n", "export { clearConfigCache, getConfig } from \"./loader.ts\";\n\nexport { defineConfig } from \"./define-config.ts\";\n\nexport type { VeryfrontConfig } from \"./types.ts\";\n\nexport {\n findUnknownTopLevelKeys,\n validateVeryfrontConfig,\n veryfrontConfigSchema,\n} from \"./schema.ts\";\n\nexport {\n DEFAULT_CACHE_MAX_SIZE,\n DEFAULT_METRICS_COLLECT_INTERVAL_MS,\n DEFAULT_PORT,\n DEFAULT_PREFETCH_DELAY_MS,\n DEFAULT_REDIS_BATCH_DELETE_SIZE,\n DEFAULT_REDIS_SCAN_COUNT,\n DEFAULT_TIMEOUT_MS,\n type DefaultConfig,\n defaultConfig,\n DURATION_HISTOGRAM_BOUNDARIES_MS,\n PAGE_TRANSITION_DELAY_MS,\n SANDBOX_TIMEOUT_MS,\n SIZE_HISTOGRAM_BOUNDARIES_KB,\n SSR_TIMEOUT_MS,\n} from \"./defaults.ts\";\n\nexport {\n buildIpv4Url,\n buildLocalhostUrl,\n DEV_LOCALHOST_CSP,\n DEV_LOCALHOST_ORIGINS,\n HTTP_DEFAULTS,\n LOCALHOST,\n LOCALHOST_URLS,\n REDIS_DEFAULTS,\n} from \"./network-defaults.ts\";\n", "import { createError, toError } from \"../../core/errors/veryfront-error.ts\";\nimport type {\n DirEntry,\n EnvironmentAdapter,\n FileChangeEvent,\n FileChangeKind,\n FileInfo,\n FileSystemAdapter,\n FileWatcher,\n RuntimeAdapter,\n RuntimeFeatures,\n ServeOptions,\n Server,\n ServerAdapter,\n ShellAdapter,\n WatchOptions,\n WebSocketUpgrade,\n} from \"./base.ts\";\nimport { DEFAULT_PORT } from \"@veryfront/config\";\nimport { serverLogger } from \"@veryfront/utils\";\n\nclass DenoFileSystemAdapter implements FileSystemAdapter {\n async readFile(path: string): Promise<string> {\n return await Deno.readTextFile(path);\n }\n\n async readFileBytes(path: string): Promise<Uint8Array> {\n return await Deno.readFile(path);\n }\n\n async writeFile(path: string, content: string): Promise<void> {\n await Deno.writeTextFile(path, content);\n }\n\n async exists(path: string): Promise<boolean> {\n try {\n await Deno.stat(path);\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n async *readDir(path: string): AsyncIterable<DirEntry> {\n for await (const entry of Deno.readDir(path)) {\n yield {\n name: entry.name,\n isFile: entry.isFile,\n isDirectory: entry.isDirectory,\n isSymlink: entry.isSymlink,\n };\n }\n }\n\n async stat(path: string): Promise<FileInfo> {\n const stat = await Deno.stat(path);\n return {\n size: stat.size,\n isFile: stat.isFile,\n isDirectory: stat.isDirectory,\n isSymlink: stat.isSymlink,\n mtime: stat.mtime,\n };\n }\n\n async mkdir(path: string, options?: { recursive?: boolean }): Promise<void> {\n await Deno.mkdir(path, options);\n }\n\n async remove(path: string, options?: { recursive?: boolean }): Promise<void> {\n await Deno.remove(path, options);\n }\n\n async makeTempDir(prefix: string): Promise<string> {\n return await Deno.makeTempDir({ prefix });\n }\n\n watch(paths: string | string[], options?: WatchOptions): FileWatcher {\n const pathArray = Array.isArray(paths) ? paths : [paths];\n const recursive = options?.recursive ?? true;\n const signal = options?.signal;\n\n const watcher = Deno.watchFs(pathArray, { recursive });\n let closed = false;\n\n const denoIterator = watcher[Symbol.asyncIterator]();\n\n const mapEventKind = (kind: string): FileChangeKind => {\n switch (kind) {\n case \"create\":\n return \"create\";\n case \"modify\":\n return \"modify\";\n case \"remove\":\n return \"delete\";\n default:\n return \"any\";\n }\n };\n\n const iterator: AsyncIterator<FileChangeEvent> = {\n async next(): Promise<IteratorResult<FileChangeEvent>> {\n if (closed || signal?.aborted) {\n return { done: true, value: undefined };\n }\n\n try {\n const result = await denoIterator.next();\n if (result.done) {\n return { done: true, value: undefined };\n }\n\n return {\n done: false,\n value: {\n kind: mapEventKind(result.value.kind),\n paths: result.value.paths,\n },\n };\n } catch (error) {\n if (closed || signal?.aborted) {\n return { done: true, value: undefined };\n }\n throw error;\n }\n },\n\n async return(): Promise<IteratorResult<FileChangeEvent>> {\n closed = true;\n if (denoIterator.return) {\n await denoIterator.return();\n }\n return { done: true, value: undefined };\n },\n };\n\n const cleanup = () => {\n if (closed) return;\n closed = true;\n try {\n if (\"close\" in watcher && typeof watcher.close === \"function\") {\n watcher.close();\n }\n } catch (error) {\n serverLogger.debug(\"[Deno] Filesystem watcher cleanup failed\", { error });\n }\n };\n\n if (signal) {\n signal.addEventListener(\"abort\", cleanup);\n }\n\n return {\n [Symbol.asyncIterator]() {\n return iterator;\n },\n close: cleanup,\n };\n }\n}\n\nclass DenoEnvironmentAdapter implements EnvironmentAdapter {\n get(key: string): string | undefined {\n return Deno.env.get(key);\n }\n\n set(key: string, value: string): void {\n Deno.env.set(key, value);\n }\n\n toObject(): Record<string, string> {\n return Deno.env.toObject();\n }\n}\n\nclass DenoServerAdapter implements ServerAdapter {\n upgradeWebSocket(request: Request): WebSocketUpgrade {\n const { socket, response } = Deno.upgradeWebSocket(request);\n return { socket, response };\n }\n}\n\nclass DenoShellAdapter implements ShellAdapter {\n statSync(path: string): { isFile: boolean; isDirectory: boolean } {\n try {\n const stat = Deno.statSync(path);\n return {\n isFile: stat.isFile,\n isDirectory: stat.isDirectory,\n };\n } catch (error) {\n throw toError(createError({\n type: \"file\",\n message: `Failed to stat file: ${error}`,\n }));\n }\n }\n\n readFileSync(path: string): string {\n try {\n return Deno.readTextFileSync(path);\n } catch (error) {\n throw toError(createError({\n type: \"file\",\n message: `Failed to read file: ${error}`,\n }));\n }\n }\n}\n\nclass DenoServer implements Server {\n constructor(\n private server: Deno.HttpServer,\n private hostname: string,\n private port: number,\n private abortController?: AbortController,\n ) {}\n\n async stop(): Promise<void> {\n try {\n if (this.abortController) {\n this.abortController.abort();\n }\n\n await this.server.shutdown();\n } catch (error) {\n serverLogger.debug(\"[Deno] Server shutdown failed\", { error });\n }\n }\n\n get addr() {\n return { hostname: this.hostname, port: this.port };\n }\n}\n\nexport class DenoAdapter implements RuntimeAdapter {\n readonly id = \"deno\" as const;\n readonly name = \"deno\";\n /** @deprecated Use `id` instead */\n readonly platform = \"deno\" as const;\n\n fs = new DenoFileSystemAdapter();\n env = new DenoEnvironmentAdapter();\n server = new DenoServerAdapter();\n shell = new DenoShellAdapter();\n\n readonly capabilities = {\n typescript: true,\n jsx: true,\n http2: true,\n websocket: true,\n workers: true,\n fileWatching: true,\n shell: true,\n kvStore: true, // Deno KV available\n writableFs: true,\n };\n\n /** @deprecated Use `capabilities` instead */\n readonly features: RuntimeFeatures = {\n websocket: true,\n http2: true,\n workers: true,\n jsx: true,\n typescript: true,\n };\n\n serve(\n handler: (request: Request) => Promise<Response> | Response,\n options: ServeOptions = {},\n ): Promise<Server> {\n const { port = DEFAULT_PORT, hostname = \"localhost\", onListen } = options;\n\n const controller = new AbortController();\n const signal = options.signal || controller.signal;\n\n const server = Deno.serve({\n port,\n hostname,\n signal,\n handler: async (request, _info) => {\n try {\n return await handler(request);\n } catch (error) {\n const { serverLogger } = await import(\"@veryfront/utils\");\n serverLogger.error(\"Request handler error:\", error);\n return new Response(\"Internal Server Error\", { status: 500 });\n }\n },\n onListen: (params) => {\n onListen?.({ hostname: params.hostname, port: params.port });\n },\n });\n\n const controllerToPass = options.signal ? undefined : controller;\n return Promise.resolve(new DenoServer(server, hostname, port, controllerToPass));\n }\n}\n\nexport const denoAdapter = new DenoAdapter();\n", "import type { FileChangeEvent, FileChangeKind, FileWatcher } from \"./base.ts\";\nimport { join } from \"node:path\";\n\nexport async function setupNodeFsWatcher(\n path: string,\n options: {\n recursive: boolean;\n closed: () => boolean;\n signal: AbortSignal | undefined;\n eventQueue: FileChangeEvent[];\n getResolver: () => ((value: IteratorResult<FileChangeEvent>) => void) | null;\n setResolver: (resolver: ((value: IteratorResult<FileChangeEvent>) => void) | null) => void;\n watchers: Array<import(\"node:fs\").FSWatcher>;\n onError: (error: Error, path: string) => void;\n },\n): Promise<void> {\n try {\n const fs = await import(\"node:fs\");\n const fsPromises = await import(\"node:fs/promises\");\n\n const exists = await fsPromises.access(path).then(() => true).catch(() => false);\n if (!exists) return;\n\n const watcher = fs.watch(path, { recursive: options.recursive }, (eventType, filename) => {\n if (options.closed() || options.signal?.aborted) return;\n\n const kind: FileChangeKind = eventType === \"change\" ? \"modify\" : \"any\";\n const fullPath = filename ? join(path, filename) : path;\n\n enqueueWatchEvent(\n { kind, paths: [fullPath] },\n options.eventQueue,\n options.getResolver,\n options.setResolver,\n );\n });\n\n watcher.on(\"error\", (error: Error) => {\n if (!options.closed() && !options.signal?.aborted) {\n options.onError(error, path);\n }\n });\n\n options.watchers.push(watcher);\n } catch (error) {\n options.onError(error as Error, path);\n }\n}\n\nexport function createWatcherIterator(\n eventQueue: FileChangeEvent[],\n _getResolver: () => ((value: IteratorResult<FileChangeEvent>) => void) | null,\n setResolver: (r: ((value: IteratorResult<FileChangeEvent>) => void) | null) => void,\n isClosed: () => boolean,\n isAborted: () => boolean,\n): AsyncIterator<FileChangeEvent> {\n return {\n next(): Promise<IteratorResult<FileChangeEvent>> {\n if (isClosed() || isAborted()) {\n return Promise.resolve({ done: true, value: undefined });\n }\n\n if (eventQueue.length > 0) {\n const event = eventQueue.shift()!;\n return Promise.resolve({ done: false, value: event });\n }\n\n return new Promise((resolve) => {\n if (isClosed() || isAborted()) {\n resolve({ done: true, value: undefined });\n return;\n }\n setResolver(resolve);\n });\n },\n\n return(): Promise<IteratorResult<FileChangeEvent>> {\n return Promise.resolve({ done: true, value: undefined });\n },\n };\n}\n\nexport function enqueueWatchEvent(\n event: FileChangeEvent,\n eventQueue: FileChangeEvent[],\n getResolver: () => ((value: IteratorResult<FileChangeEvent>) => void) | null,\n setResolver: (resolver: ((value: IteratorResult<FileChangeEvent>) => void) | null) => void,\n): void {\n const resolver = getResolver();\n if (resolver) {\n resolver({ done: false, value: event });\n setResolver(null);\n } else {\n eventQueue.push(event);\n }\n}\n\nexport function createFileWatcher(\n iterator: AsyncIterator<FileChangeEvent>,\n cleanup: () => void,\n): FileWatcher {\n return {\n [Symbol.asyncIterator]() {\n return iterator;\n },\n close: cleanup,\n };\n}\n", "import type { DirEntry, FileInfo, FileSystemAdapter, FileWatcher, WatchOptions } from \"../base.ts\";\nimport { createFileWatcher, createWatcherIterator, setupNodeFsWatcher } from \"../shared-watcher.ts\";\nimport { serverLogger } from \"@veryfront/utils\";\nimport type { FileChangeEvent } from \"../base.ts\";\n\nexport class NodeFileSystemAdapter implements FileSystemAdapter {\n async readFile(path: string): Promise<string> {\n const fs = await import(\"node:fs/promises\");\n return await fs.readFile(path, \"utf-8\");\n }\n\n async readFileBytes(path: string): Promise<Uint8Array> {\n const fs = await import(\"node:fs/promises\");\n const buffer = await fs.readFile(path);\n return buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);\n }\n\n async writeFile(path: string, content: string): Promise<void> {\n const fs = await import(\"node:fs/promises\");\n await fs.writeFile(path, content, \"utf-8\");\n }\n\n async exists(path: string): Promise<boolean> {\n const fs = await import(\"node:fs/promises\");\n try {\n await fs.access(path);\n return true;\n } catch (error) {\n serverLogger.debug(`File access check failed for ${path}:`, error);\n return false;\n }\n }\n\n async *readDir(path: string): AsyncIterable<DirEntry> {\n const fs = await import(\"node:fs/promises\");\n const entries = await fs.readdir(path, { withFileTypes: true });\n\n for (const entry of entries) {\n yield {\n name: entry.name,\n isFile: entry.isFile(),\n isDirectory: entry.isDirectory(),\n isSymlink: entry.isSymbolicLink(),\n };\n }\n }\n\n async stat(path: string): Promise<FileInfo> {\n const fs = await import(\"node:fs/promises\");\n const stats = await fs.stat(path);\n\n return {\n size: stats.size,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n isSymlink: stats.isSymbolicLink(),\n mtime: stats.mtime,\n };\n }\n\n async mkdir(path: string, options?: { recursive?: boolean }): Promise<void> {\n const fs = await import(\"node:fs/promises\");\n await fs.mkdir(path, options);\n }\n\n async remove(path: string, options?: { recursive?: boolean }): Promise<void> {\n const fs = await import(\"node:fs/promises\");\n await fs.rm(path, { recursive: options?.recursive, force: true });\n }\n\n async makeTempDir(prefix: string): Promise<string> {\n const { mkdtemp } = await import(\"node:fs/promises\");\n const { join } = await import(\"node:path\");\n const { tmpdir } = await import(\"node:os\");\n return await mkdtemp(join(tmpdir(), prefix));\n }\n\n watch(paths: string | string[], options?: WatchOptions): FileWatcher {\n const pathArray = Array.isArray(paths) ? paths : [paths];\n const recursive = options?.recursive ?? true;\n const signal = options?.signal;\n\n let closed = false;\n const watchers: Array<import(\"node:fs\").FSWatcher> = [];\n const eventQueue: FileChangeEvent[] = [];\n let resolver: ((value: IteratorResult<FileChangeEvent>) => void) | null = null;\n\n Promise.all(\n pathArray.map((path) =>\n setupNodeFsWatcher(path, {\n recursive,\n closed: () => closed,\n signal,\n eventQueue,\n getResolver: () => resolver,\n setResolver: (r) => {\n resolver = r;\n },\n watchers,\n onError: (error, path) => serverLogger.error(`File watcher error for ${path}:`, error),\n })\n ),\n ).catch((error) => {\n serverLogger.error(\"Failed to setup file watchers:\", error);\n });\n\n const iterator = createWatcherIterator(\n eventQueue,\n () => resolver,\n (r) => {\n resolver = r;\n },\n () => closed,\n () => signal?.aborted ?? false,\n );\n\n const cleanup = () => {\n closed = true;\n watchers.forEach((watcher) => {\n try {\n watcher.close();\n } catch (error) {\n serverLogger.debug(\"Error closing file watcher during cleanup:\", error);\n }\n });\n if (resolver) {\n resolver({ done: true, value: undefined });\n resolver = null;\n }\n };\n\n if (signal) {\n signal.addEventListener(\"abort\", cleanup);\n }\n\n return createFileWatcher(iterator, cleanup);\n }\n}\n", "import process from \"node:process\";\nimport type { EnvironmentAdapter } from \"../base.ts\";\n\nexport class NodeEnvironmentAdapter implements EnvironmentAdapter {\n get(key: string): string | undefined {\n return process.env[key];\n }\n\n set(key: string, value: string): void {\n process.env[key] = value;\n }\n\n toObject(): Record<string, string> {\n return { ...process.env } as Record<string, string>;\n }\n}\n", "import type { ServeOptions, Server } from \"../base.ts\";\nimport type { NodeHttpServer, WSWebSocket, WSWebSocketServer } from \"./types.ts\";\nimport { DEFAULT_PORT } from \"@veryfront/config\";\n\n// Track pending WebSocket upgrades by request ID\nconst pendingWebSocketUpgrades = new Map<string, {\n resolve: (ws: WSWebSocket) => void;\n reject: (error: Error) => void;\n}>();\n\n// Singleton WebSocket server instance (one per HTTP server)\nlet wsServer: WSWebSocketServer | null = null;\n\nexport class NodeServer implements Server {\n constructor(\n private server: NodeHttpServer,\n private hostname: string,\n private port: number,\n ) {}\n\n stop(): Promise<void> {\n return new Promise((resolve) => {\n // Close WebSocket server first\n if (wsServer) {\n wsServer.close();\n wsServer = null;\n }\n this.server.close(() => resolve());\n });\n }\n\n get addr() {\n return { hostname: this.hostname, port: this.port };\n }\n}\n\n/**\n * Create a request ID for matching WebSocket upgrades\n */\nfunction createRequestId(req: { headers: Record<string, string | string[] | undefined> }): string {\n const key = req.headers[\"sec-websocket-key\"];\n return typeof key === \"string\" ? key : (Array.isArray(key) ? key[0] : \"\") || crypto.randomUUID();\n}\n\n/**\n * Register a pending WebSocket upgrade\n * Called by NodeServerAdapter.upgradeWebSocket\n */\nexport function registerWebSocketUpgrade(requestId: string): Promise<WSWebSocket> {\n return new Promise((resolve, reject) => {\n pendingWebSocketUpgrades.set(requestId, { resolve, reject });\n // Cleanup after timeout (30 seconds)\n setTimeout(() => {\n if (pendingWebSocketUpgrades.has(requestId)) {\n pendingWebSocketUpgrades.delete(requestId);\n reject(new Error(\"WebSocket upgrade timed out\"));\n }\n }, 30000);\n });\n}\n\nexport async function createNodeServer(\n handler: (request: Request) => Promise<Response> | Response,\n options: ServeOptions = {},\n): Promise<Server> {\n const { port = DEFAULT_PORT, hostname = \"localhost\", onListen } = options;\n const { createServer } = await import(\"node:http\");\n\n const server = createServer(async (_req, _res) => {\n try {\n const url = new URL(_req.url || \"/\", `http://${_req.headers.host || hostname}`);\n const body = _req.method === \"GET\" || _req.method === \"HEAD\" ? null : _req;\n\n const headersRecord: Record<string, string> = {};\n for (const [key, value] of Object.entries(_req.headers)) {\n if (typeof value === \"string\") {\n headersRecord[key] = value;\n } else if (Array.isArray(value)) {\n headersRecord[key] = value[0] || \"\";\n }\n }\n\n // Node.js 18+ requires duplex: \"half\" when creating a Request with a streaming body\n const requestInit: RequestInit & { duplex?: string } = {\n method: _req.method,\n headers: headersRecord,\n body: body as BodyInit | null,\n };\n // Only add duplex for requests with a body (POST, PUT, PATCH, etc.)\n if (body !== null) {\n requestInit.duplex = \"half\";\n }\n const request = new Request(url.toString(), requestInit);\n\n const response = await handler(request);\n\n // Check if this is a WebSocket upgrade response (status 101)\n // The actual WebSocket handling is done in the 'upgrade' event\n if (response.status === 101) {\n // Don't end the response - the upgrade handler will take over\n return;\n }\n\n _res.statusCode = response.status;\n _res.statusMessage = response.statusText;\n\n response.headers.forEach((value, key) => {\n _res.setHeader(key, value);\n });\n\n if (response.body) {\n const reader = response.body.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n _res.write(value);\n }\n }\n\n _res.end();\n } catch (_error) {\n const { serverLogger } = await import(\"@veryfront/utils\");\n serverLogger.error(\"Request handler error:\", _error);\n _res.statusCode = 500;\n _res.end(\"Internal Server Error\");\n }\n });\n\n // Handle WebSocket upgrades\n server.on(\"upgrade\", async (request, socket, head) => {\n try {\n // Lazy load ws package\n const { WebSocketServer } = await import(\"ws\");\n\n // Create WebSocket server if not exists\n if (!wsServer) {\n wsServer = new WebSocketServer({ noServer: true }) as unknown as WSWebSocketServer;\n }\n\n // Get request ID to match with pending upgrade\n const requestId = createRequestId(request);\n\n // Handle the upgrade\n (wsServer as unknown as {\n handleUpgrade: (\n req: unknown,\n socket: unknown,\n head: unknown,\n callback: (ws: WSWebSocket) => void,\n ) => void;\n })\n .handleUpgrade(request, socket, head, (ws: WSWebSocket) => {\n const pending = pendingWebSocketUpgrades.get(requestId);\n if (pending) {\n pendingWebSocketUpgrades.delete(requestId);\n pending.resolve(ws);\n }\n // Emit connection event\n (wsServer as unknown as { emit: (event: string, ws: WSWebSocket, req: unknown) => void })\n .emit(\"connection\", ws, request);\n });\n } catch (error) {\n const { serverLogger } = await import(\"@veryfront/utils\");\n serverLogger.error(\"WebSocket upgrade error:\", error);\n socket.destroy();\n }\n });\n\n if (options.signal) {\n options.signal.addEventListener(\"abort\", () => {\n if (wsServer) {\n wsServer.close();\n wsServer = null;\n }\n server.close();\n });\n }\n\n return new Promise((resolve) => {\n server.listen(port, hostname, () => {\n onListen?.({ hostname, port });\n resolve(new NodeServer(server as unknown as NodeHttpServer, hostname, port));\n });\n });\n}\n", "import type { ServerAdapter, WebSocketUpgrade } from \"../base.ts\";\nimport type { WSMessageData, WSWebSocket } from \"./types.ts\";\nimport { createError, toError } from \"../../../core/errors/veryfront-error.ts\";\nimport { serverLogger } from \"@veryfront/utils\";\nimport { registerWebSocketUpgrade } from \"./http-server.ts\";\nimport * as crypto from \"node:crypto\";\n\nexport class NodeServerAdapter implements ServerAdapter {\n upgradeWebSocket(request: Request): WebSocketUpgrade {\n const key = request.headers.get(\"sec-websocket-key\");\n const protocol = request.headers.get(\"sec-websocket-protocol\");\n\n if (!key) {\n throw toError(createError({\n type: \"network\",\n message: \"Missing Sec-WebSocket-Key header\",\n }));\n }\n\n // Create a proxy WebSocket that will be connected when the upgrade completes\n const socket = new NodeWebSocket();\n\n // Register the upgrade and connect when complete\n registerWebSocketUpgrade(key).then((ws) => {\n socket._attachRealSocket(ws);\n }).catch((error) => {\n serverLogger.error(\"WebSocket upgrade failed:\", error);\n socket._emitError(error);\n });\n\n // Return 101 response - the http-server upgrade handler will complete the handshake\n const response = new Response(null, {\n status: 101,\n statusText: \"Switching Protocols\",\n headers: {\n \"Upgrade\": \"websocket\",\n \"Connection\": \"Upgrade\",\n \"Sec-WebSocket-Accept\": this.generateAcceptKey(key),\n ...(protocol ? { \"Sec-WebSocket-Protocol\": protocol } : {}),\n },\n });\n\n return { socket: socket as unknown as WebSocket, response };\n }\n\n private generateAcceptKey(key: string): string {\n const GUID = \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\";\n return crypto.createHash(\"sha1\").update(key + GUID).digest(\"base64\");\n }\n}\n\n/**\n * NodeWebSocket - A WebSocket wrapper that works with Node.js\n * Proxies to the real ws WebSocket once the upgrade completes\n */\nexport class NodeWebSocket {\n private ws: WSWebSocket | null = null;\n public readyState = 0; // CONNECTING\n\n public onopen: ((event: Event) => void) | null = null;\n public onclose: ((event: CloseEvent) => void) | null = null;\n public onerror: ((event: Event) => void) | null = null;\n public onmessage: ((event: MessageEvent) => void) | null = null;\n\n static readonly CONNECTING = 0;\n static readonly OPEN = 1;\n static readonly CLOSING = 2;\n static readonly CLOSED = 3;\n\n // Queue messages sent before the socket is ready\n private pendingMessages: Array<string | ArrayBuffer> = [];\n\n /**\n * Attach the real WebSocket after upgrade completes\n * Called by NodeServerAdapter\n */\n _attachRealSocket(ws: WSWebSocket) {\n this.ws = ws;\n this.readyState = 1; // OPEN\n\n // Set up event handlers\n ws.on(\"open\", () => {\n this.readyState = 1;\n this.onopen?.(new Event(\"open\"));\n });\n\n ws.on(\"message\", (data: WSMessageData) => {\n this.onmessage?.(new MessageEvent(\"message\", { data: data.toString() }));\n });\n\n ws.on(\"close\", () => {\n this.readyState = 3;\n this.onclose?.(new CloseEvent(\"close\"));\n });\n\n ws.on(\"error\", (error: Error) => {\n this.onerror?.(new ErrorEvent(\"error\", { error }));\n });\n\n // Send any pending messages\n for (const msg of this.pendingMessages) {\n ws.send(msg);\n }\n this.pendingMessages = [];\n\n // The socket is already open when we get it from handleUpgrade\n this.onopen?.(new Event(\"open\"));\n }\n\n /**\n * Emit an error when upgrade fails\n * Called by NodeServerAdapter\n */\n _emitError(error: Error) {\n this.readyState = 3; // CLOSED\n this.onerror?.(new ErrorEvent(\"error\", { error }));\n }\n\n send(data: string | ArrayBuffer) {\n if (this.ws && this.readyState === 1) {\n this.ws.send(data);\n } else if (this.readyState === 0) {\n // Queue the message until the socket is ready\n this.pendingMessages.push(data);\n } else {\n throw toError(createError({\n type: \"network\",\n message: \"WebSocket is not open\",\n }));\n }\n }\n\n close(code?: number, reason?: string) {\n if (this.ws) {\n this.ws.close(code, reason);\n }\n this.readyState = 2; // CLOSING\n }\n\n // WebSocket standard interface\n addEventListener(type: string, listener: EventListener) {\n switch (type) {\n case \"open\":\n this.onopen = listener as (event: Event) => void;\n break;\n case \"close\":\n this.onclose = listener as (event: CloseEvent) => void;\n break;\n case \"error\":\n this.onerror = listener as (event: Event) => void;\n break;\n case \"message\":\n this.onmessage = listener as (event: MessageEvent) => void;\n break;\n }\n }\n\n removeEventListener(_type: string, _listener: EventListener) {\n // Simplified - just null out the handler\n switch (_type) {\n case \"open\":\n this.onopen = null;\n break;\n case \"close\":\n this.onclose = null;\n break;\n case \"error\":\n this.onerror = null;\n break;\n case \"message\":\n this.onmessage = null;\n break;\n }\n }\n}\n", "import type {\n RuntimeAdapter,\n RuntimeCapabilities,\n RuntimeFeatures,\n ServeOptions,\n Server,\n} from \"../base.ts\";\nimport { NodeFileSystemAdapter } from \"./filesystem-adapter.ts\";\nimport { NodeEnvironmentAdapter } from \"./environment-adapter.ts\";\nimport { NodeServerAdapter } from \"./websocket-adapter.ts\";\nimport { createNodeServer } from \"./http-server.ts\";\n\nexport class NodeAdapter implements RuntimeAdapter {\n readonly id = \"node\" as const;\n readonly name = \"node\";\n /** @deprecated Use `id` instead */\n readonly platform = \"node\" as const;\n\n fs = new NodeFileSystemAdapter();\n env = new NodeEnvironmentAdapter();\n server = new NodeServerAdapter();\n\n readonly capabilities: RuntimeCapabilities = {\n typescript: false, // Requires compilation\n jsx: false, // Requires compilation\n http2: true,\n websocket: true,\n workers: true,\n fileWatching: true,\n shell: true,\n kvStore: false,\n writableFs: true,\n };\n\n /** @deprecated Use `capabilities` instead */\n readonly features: RuntimeFeatures = {\n websocket: true,\n http2: true,\n workers: true,\n jsx: false,\n typescript: false,\n };\n\n serve(\n handler: (request: Request) => Promise<Response> | Response,\n options: ServeOptions = {},\n ): Promise<Server> {\n return createNodeServer(handler, options);\n }\n}\n\nexport const nodeAdapter = new NodeAdapter();\n", "export { NodeAdapter, nodeAdapter } from \"./adapter.ts\";\nexport { NodeFileSystemAdapter } from \"./filesystem-adapter.ts\";\nexport { NodeEnvironmentAdapter } from \"./environment-adapter.ts\";\nexport { NodeServerAdapter, NodeWebSocket } from \"./websocket-adapter.ts\";\nexport { createNodeServer, NodeServer } from \"./http-server.ts\";\nexport type {\n NodeHttpServer,\n NodeIncomingMessage,\n NodeServerResponse,\n WSMessageData,\n WSWebSocket,\n} from \"./types.ts\";\n", "export {\n createNodeServer,\n NodeAdapter,\n nodeAdapter,\n NodeEnvironmentAdapter,\n NodeFileSystemAdapter,\n NodeServer,\n NodeServerAdapter,\n NodeWebSocket,\n} from \"./node/index.ts\";\n\nexport type {\n NodeHttpServer,\n NodeIncomingMessage,\n NodeServerResponse,\n WSMessageData,\n WSWebSocket,\n} from \"./node/index.ts\";\n", "export enum ErrorCode {\n FILE_NOT_FOUND = \"FILE_NOT_FOUND\",\n BUILD_ERROR = \"BUILD_ERROR\",\n CONFIG_ERROR = \"CONFIG_ERROR\",\n COMPILATION_ERROR = \"COMPILATION_ERROR\",\n NETWORK_ERROR = \"NETWORK_ERROR\",\n PERMISSION_ERROR = \"PERMISSION_ERROR\",\n RENDER_ERROR = \"RENDER_ERROR\",\n INITIALIZATION_ERROR = \"INITIALIZATION_ERROR\",\n AGENT_ERROR = \"AGENT_ERROR\",\n AGENT_NOT_FOUND = \"AGENT_NOT_FOUND\",\n AGENT_TIMEOUT = \"AGENT_TIMEOUT\",\n AGENT_INTENT_ERROR = \"AGENT_INTENT_ERROR\",\n ORCHESTRATION_ERROR = \"ORCHESTRATION_ERROR\",\n NOT_SUPPORTED = \"NOT_SUPPORTED\",\n}\n\nexport class VeryfrontError extends Error {\n public code: ErrorCode;\n public context?: unknown;\n\n constructor(message: string, code: ErrorCode, context?: unknown) {\n super(message);\n this.name = \"VeryfrontError\";\n this.code = code;\n this.context = context;\n }\n}\n", "import { ErrorCode, VeryfrontError } from \"./types.ts\";\n\nexport class AgentError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.AGENT_ERROR, context);\n this.name = \"AgentError\";\n }\n}\n\nexport class AgentNotFoundError extends VeryfrontError {\n constructor(agentId: string, context?: unknown) {\n super(`Agent with ID '${agentId}' not found`, ErrorCode.AGENT_NOT_FOUND, {\n agentId,\n ...(context as Record<string, unknown> | undefined),\n });\n this.name = \"AgentNotFoundError\";\n }\n}\n\nexport class AgentTimeoutError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.AGENT_TIMEOUT, context);\n this.name = \"AgentTimeoutError\";\n }\n}\n\nexport class AgentIntentError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.AGENT_INTENT_ERROR, context);\n this.name = \"AgentIntentError\";\n }\n}\n\nexport class OrchestrationError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.ORCHESTRATION_ERROR, context);\n this.name = \"OrchestrationError\";\n }\n}\n", "import { ErrorCode, VeryfrontError } from \"./types.ts\";\n\nexport class BuildError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.BUILD_ERROR, context);\n this.name = \"BuildError\";\n }\n}\n\nexport class CompilationError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.COMPILATION_ERROR, context);\n this.name = \"CompilationError\";\n }\n}\n", "import { ErrorCode, VeryfrontError } from \"./types.ts\";\n\nexport class RuntimeError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.RENDER_ERROR, context);\n this.name = \"RuntimeError\";\n }\n}\n\nexport class RenderError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.RENDER_ERROR, context);\n this.name = \"RenderError\";\n }\n}\n", "import { ErrorCode, VeryfrontError } from \"./types.ts\";\n\nexport class FileSystemError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.FILE_NOT_FOUND, context);\n this.name = \"FileSystemError\";\n }\n}\n\nexport class ConfigError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.CONFIG_ERROR, context);\n this.name = \"ConfigError\";\n }\n}\n\nexport class NetworkError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.NETWORK_ERROR, context);\n this.name = \"NetworkError\";\n }\n}\n\nexport class PermissionError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.PERMISSION_ERROR, context);\n this.name = \"PermissionError\";\n }\n}\n\nexport class NotSupportedError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.NOT_SUPPORTED, context);\n this.name = \"NotSupportedError\";\n }\n}\n", "import { serverLogger } from \"@veryfront/utils/logger/logger.ts\";\nimport { ErrorCode, VeryfrontError } from \"./types.ts\";\n\n/** Default max retries for retry operations */\nconst DEFAULT_MAX_RETRIES = 3;\n\n/** Default initial delay for exponential backoff (100ms) */\nconst DEFAULT_INITIAL_DELAY_MS = 100;\n\n/** Default max delay cap for exponential backoff (5 seconds) */\nconst DEFAULT_MAX_DELAY_MS = 5000;\n\nfunction safeLog(logFn: () => void): void {\n try {\n logFn();\n } catch (error) {\n try {\n serverLogger.warn(\"[errors] Logging failed:\", error);\n } catch {\n // Silently ignore if even warning fails\n }\n }\n}\n\nexport function handleError(error: Error): void {\n safeLog(() => serverLogger.error(`Error: ${error.message}`));\n\n if (error instanceof VeryfrontError && error.context) {\n safeLog(() => serverLogger.error(\"Context:\", error.context));\n }\n\n if (error.stack) {\n safeLog(() => serverLogger.error(error.stack as string));\n }\n}\n\nexport function wrapError(\n error: unknown,\n message: string,\n context?: unknown,\n): VeryfrontError {\n const originalError = error instanceof Error ? error : new Error(String(error));\n const errorMessage = `${message}: ${originalError.message}`;\n\n const wrappedContext = {\n originalError: {\n name: originalError.name,\n message: originalError.message,\n stack: originalError.stack,\n },\n ...(context as Record<string, unknown> | undefined),\n };\n\n const errorCode = error instanceof VeryfrontError ? error.code : ErrorCode.RENDER_ERROR;\n\n return new VeryfrontError(errorMessage, errorCode, wrappedContext);\n}\n\nexport function logAndThrow(\n error: unknown,\n message?: string,\n logger: typeof serverLogger = serverLogger,\n): never {\n const errorObj = error instanceof Error ? error : new Error(String(error));\n const logMessage = message ? `${message}: ${errorObj.message}` : errorObj.message;\n\n safeLog(() => logger.error(logMessage, error));\n\n if (error instanceof Error) {\n throw error;\n }\n throw errorObj;\n}\n\nexport async function handleErrorWithFallback<T>(\n fn: () => T | Promise<T>,\n fallback: T,\n logger: typeof serverLogger = serverLogger,\n): Promise<T> {\n try {\n return await fn();\n } catch (error) {\n safeLog(() => logger.warn(\"Operation failed, using fallback\", error));\n return fallback;\n }\n}\n\nexport function handleErrorWithFallbackSync<T>(\n fn: () => T,\n fallback: T,\n logger: typeof serverLogger = serverLogger,\n): T {\n try {\n return fn();\n } catch (error) {\n safeLog(() => logger.warn(\"Operation failed, using fallback\", error));\n return fallback;\n }\n}\n\nexport async function retryWithBackoff<T>(\n fn: () => Promise<T>,\n options: {\n maxRetries?: number;\n initialDelay?: number;\n maxDelay?: number;\n logger?: typeof serverLogger;\n } = {},\n): Promise<T> {\n const {\n maxRetries = DEFAULT_MAX_RETRIES,\n initialDelay = DEFAULT_INITIAL_DELAY_MS,\n maxDelay = DEFAULT_MAX_DELAY_MS,\n logger: log = serverLogger,\n } = options;\n\n let lastError: unknown;\n let delay = initialDelay;\n\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error;\n safeLog(() => log.warn(`Attempt ${attempt + 1} failed, retrying...`, error));\n\n if (attempt < maxRetries - 1) {\n await new Promise((resolve) => setTimeout(resolve, delay));\n delay = Math.min(delay * 2, maxDelay);\n }\n }\n }\n\n throw lastError;\n}\n", "export const ErrorCode = {\n CONFIG_NOT_FOUND: \"VF001\",\n CONFIG_INVALID: \"VF002\",\n CONFIG_PARSE_ERROR: \"VF003\",\n CONFIG_VALIDATION_ERROR: \"VF004\",\n CONFIG_TYPE_ERROR: \"VF005\",\n IMPORT_MAP_INVALID: \"VF006\",\n CORS_CONFIG_INVALID: \"VF007\",\n\n BUILD_FAILED: \"VF100\",\n BUNDLE_ERROR: \"VF101\",\n TYPESCRIPT_ERROR: \"VF102\",\n MDX_COMPILE_ERROR: \"VF103\",\n ASSET_OPTIMIZATION_ERROR: \"VF104\",\n SSG_GENERATION_ERROR: \"VF105\",\n SOURCEMAP_ERROR: \"VF106\",\n\n HYDRATION_MISMATCH: \"VF200\",\n RENDER_ERROR: \"VF201\",\n COMPONENT_ERROR: \"VF202\",\n LAYOUT_NOT_FOUND: \"VF203\",\n PAGE_NOT_FOUND: \"VF204\",\n API_ERROR: \"VF205\",\n MIDDLEWARE_ERROR: \"VF206\",\n\n ROUTE_CONFLICT: \"VF300\",\n INVALID_ROUTE_FILE: \"VF301\",\n ROUTE_HANDLER_INVALID: \"VF302\",\n DYNAMIC_ROUTE_ERROR: \"VF303\",\n ROUTE_PARAMS_ERROR: \"VF304\",\n API_ROUTE_ERROR: \"VF305\",\n\n MODULE_NOT_FOUND: \"VF400\",\n IMPORT_RESOLUTION_ERROR: \"VF401\",\n CIRCULAR_DEPENDENCY: \"VF402\",\n INVALID_IMPORT: \"VF403\",\n DEPENDENCY_MISSING: \"VF404\",\n VERSION_MISMATCH: \"VF405\",\n\n PORT_IN_USE: \"VF500\",\n SERVER_START_ERROR: \"VF501\",\n HMR_ERROR: \"VF502\",\n CACHE_ERROR: \"VF503\",\n FILE_WATCH_ERROR: \"VF504\",\n REQUEST_ERROR: \"VF505\",\n\n CLIENT_BOUNDARY_VIOLATION: \"VF600\",\n SERVER_ONLY_IN_CLIENT: \"VF601\",\n CLIENT_ONLY_IN_SERVER: \"VF602\",\n INVALID_USE_CLIENT: \"VF603\",\n INVALID_USE_SERVER: \"VF604\",\n RSC_PAYLOAD_ERROR: \"VF605\",\n\n DEV_SERVER_ERROR: \"VF700\",\n FAST_REFRESH_ERROR: \"VF701\",\n ERROR_OVERLAY_ERROR: \"VF702\",\n SOURCE_MAP_ERROR: \"VF703\",\n\n DEPLOYMENT_ERROR: \"VF800\",\n PLATFORM_ERROR: \"VF801\",\n ENV_VAR_MISSING: \"VF802\",\n PRODUCTION_BUILD_REQUIRED: \"VF803\",\n\n UNKNOWN_ERROR: \"VF900\",\n PERMISSION_DENIED: \"VF901\",\n FILE_NOT_FOUND: \"VF902\",\n INVALID_ARGUMENT: \"VF903\",\n TIMEOUT_ERROR: \"VF904\",\n} as const;\n\nexport type ErrorCodeType = typeof ErrorCode[keyof typeof ErrorCode];\n\nexport function getErrorDocsUrl(code: ErrorCodeType): string {\n return `https://veryfront.com/docs/errors/${code}`;\n}\n\nexport function inferErrorCode(error: Error): ErrorCodeType | null {\n const message = error.message.toLowerCase();\n\n if (message.includes(\"config\") && message.includes(\"not found\")) {\n return ErrorCode.CONFIG_NOT_FOUND;\n }\n if (message.includes(\"config\") && message.includes(\"invalid\")) return ErrorCode.CONFIG_INVALID;\n if (message.includes(\"cors\")) return ErrorCode.CORS_CONFIG_INVALID;\n\n if (message.includes(\"route\") && message.includes(\"conflict\")) return ErrorCode.ROUTE_CONFLICT;\n if (message.includes(\"route\") && message.includes(\"invalid\")) return ErrorCode.INVALID_ROUTE_FILE;\n\n if (message.includes(\"client\") && message.includes(\"boundary\")) {\n return ErrorCode.CLIENT_BOUNDARY_VIOLATION;\n }\n if (message.includes(\"server-only\") && message.includes(\"client\")) {\n return ErrorCode.SERVER_ONLY_IN_CLIENT;\n }\n\n if (message.includes(\"module not found\") || message.includes(\"cannot find module\")) {\n return ErrorCode.MODULE_NOT_FOUND;\n }\n if (message.includes(\"import\") || message.includes(\"resolve\")) {\n return ErrorCode.IMPORT_RESOLUTION_ERROR;\n }\n if (message.includes(\"react\") && message.includes(\"not found\")) {\n return ErrorCode.DEPENDENCY_MISSING;\n }\n\n if (message.includes(\"port\") && (message.includes(\"in use\") || message.includes(\"eaddrinuse\"))) {\n return ErrorCode.PORT_IN_USE;\n }\n if (message.includes(\"hydration\")) return ErrorCode.HYDRATION_MISMATCH;\n\n if (message.includes(\"build\") && message.includes(\"fail\")) return ErrorCode.BUILD_FAILED;\n if (message.includes(\"mdx\")) return ErrorCode.MDX_COMPILE_ERROR;\n if (message.includes(\"typescript\")) return ErrorCode.TYPESCRIPT_ERROR;\n\n return null;\n}\n", "import type { ErrorCodeType } from \"../error-codes.ts\";\nimport { getErrorDocsUrl } from \"../error-codes.ts\";\nimport type { ErrorSolution } from \"./types.ts\";\n\nexport function createErrorSolution(\n code: ErrorCodeType,\n config: Omit<ErrorSolution, \"code\" | \"docs\"> & { docs?: string },\n): ErrorSolution {\n return {\n code,\n ...config,\n docs: config.docs ?? getErrorDocsUrl(code),\n };\n}\n\nexport function createSimpleError(\n code: ErrorCodeType,\n title: string,\n message: string,\n steps: string[],\n): ErrorSolution {\n return createErrorSolution(code, { title, message, steps });\n}\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const CONFIG_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.CONFIG_NOT_FOUND]: createErrorSolution(ErrorCode.CONFIG_NOT_FOUND, {\n title: \"Configuration file not found\",\n message: \"Veryfront could not find veryfront.config.js in your project root.\",\n steps: [\n \"Create veryfront.config.js in your project root directory\",\n \"Run 'veryfront init' to generate a default configuration\",\n \"Or copy from an example project\",\n ],\n example: `// veryfront.config.js\nexport default {\n title: \"My App\",\n dev: { port: 3002 }\n}`,\n tips: [\"You can use .ts or .mjs extensions too\", \"Config is optional for simple projects\"],\n }),\n\n [ErrorCode.CONFIG_INVALID]: createErrorSolution(ErrorCode.CONFIG_INVALID, {\n title: \"Invalid configuration\",\n message: \"Your configuration file has invalid values or structure.\",\n steps: [\n \"Check that the config exports a default object\",\n \"Ensure all values are valid JavaScript types\",\n \"Remove any trailing commas\",\n \"Verify property names match the schema\",\n ],\n example: `// \u2713 Valid config\nexport default {\n title: \"My App\",\n dev: {\n port: 3002,\n open: true\n }\n}`,\n }),\n\n [ErrorCode.CONFIG_PARSE_ERROR]: createSimpleError(\n ErrorCode.CONFIG_PARSE_ERROR,\n \"Configuration parse error\",\n \"Failed to parse your configuration file.\",\n [\n \"Check for syntax errors (missing brackets, quotes, etc.)\",\n \"Ensure the file has valid JavaScript/TypeScript syntax\",\n \"Look for the specific parse error in the output above\",\n ],\n ),\n\n [ErrorCode.CONFIG_VALIDATION_ERROR]: createSimpleError(\n ErrorCode.CONFIG_VALIDATION_ERROR,\n \"Configuration validation failed\",\n \"Configuration values do not pass validation.\",\n [\n \"Check that port numbers are between 1-65535\",\n \"Ensure boolean flags are true/false (not strings)\",\n \"Verify URLs are properly formatted\",\n \"Check array/object structures match expected format\",\n ],\n ),\n\n [ErrorCode.CONFIG_TYPE_ERROR]: createSimpleError(\n ErrorCode.CONFIG_TYPE_ERROR,\n \"Configuration type error\",\n \"A configuration value has the wrong type.\",\n [\n \"Check that numbers are not in quotes\",\n 'Ensure booleans are true/false, not \"true\"/\"false\"',\n \"Verify arrays use [] brackets\",\n \"Check objects use {} braces\",\n ],\n ),\n\n [ErrorCode.IMPORT_MAP_INVALID]: createErrorSolution(ErrorCode.IMPORT_MAP_INVALID, {\n title: \"Invalid import map\",\n message: \"The import map in your configuration is invalid.\",\n steps: [\n \"Check import map structure: { imports: {}, scopes: {} }\",\n \"Ensure URLs are valid and accessible\",\n \"Verify package names are correct\",\n ],\n example: `resolve: {\n importMap: {\n imports: {\n \"react\": \"https://esm.sh/react@19\",\n \"@/utils\": \"./src/utils/index.ts\"\n }\n }\n}`,\n }),\n\n [ErrorCode.CORS_CONFIG_INVALID]: createErrorSolution(ErrorCode.CORS_CONFIG_INVALID, {\n title: \"Invalid CORS configuration\",\n message: \"The CORS configuration is invalid.\",\n steps: [\n \"Use true for default CORS settings\",\n \"Or provide an object with origin, methods, headers\",\n \"Ensure origin is a string, not an array\",\n ],\n example: `security: {\n cors: true // or { origin: \"https://example.com\" }\n}`,\n }),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const BUILD_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.BUILD_FAILED]: createErrorSolution(ErrorCode.BUILD_FAILED, {\n title: \"Build failed\",\n message: \"The build process encountered errors.\",\n steps: [\n \"Check the error messages above for specific issues\",\n \"Fix any TypeScript or syntax errors\",\n \"Ensure all imports can be resolved\",\n \"Run 'veryfront doctor' to check your environment\",\n ],\n tips: [\"Try running with --verbose for more details\", \"Check build logs for warnings\"],\n }),\n\n [ErrorCode.BUNDLE_ERROR]: createSimpleError(\n ErrorCode.BUNDLE_ERROR,\n \"Bundle generation failed\",\n \"Failed to generate JavaScript bundles.\",\n [\n \"Check for circular dependencies\",\n \"Ensure all imports are valid\",\n \"Try clearing cache: veryfront clean\",\n ],\n ),\n\n [ErrorCode.TYPESCRIPT_ERROR]: createSimpleError(\n ErrorCode.TYPESCRIPT_ERROR,\n \"TypeScript compilation error\",\n \"TypeScript found errors in your code.\",\n [\n \"Fix the TypeScript errors shown above\",\n \"Check your tsconfig.json configuration\",\n \"Ensure all types are properly imported\",\n ],\n ),\n\n [ErrorCode.MDX_COMPILE_ERROR]: createErrorSolution(ErrorCode.MDX_COMPILE_ERROR, {\n title: \"MDX compilation failed\",\n message: \"Failed to compile MDX file.\",\n steps: [\n \"Check for syntax errors in your MDX file\",\n \"Ensure frontmatter YAML is valid\",\n \"Verify JSX components are properly imported\",\n \"Check for unclosed tags or brackets\",\n ],\n example: `---\ntitle: My Post\n---\n\nimport Button from './components/Button.jsx'\n\n# Hello World\n\n<Button>Click me</Button>`,\n }),\n\n [ErrorCode.ASSET_OPTIMIZATION_ERROR]: createSimpleError(\n ErrorCode.ASSET_OPTIMIZATION_ERROR,\n \"Asset optimization failed\",\n \"Failed to optimize assets (images, CSS, etc.).\",\n [\n \"Check that asset files are valid\",\n \"Ensure file paths are correct\",\n \"Try disabling optimization temporarily\",\n ],\n ),\n\n [ErrorCode.SSG_GENERATION_ERROR]: createSimpleError(\n ErrorCode.SSG_GENERATION_ERROR,\n \"Static site generation failed\",\n \"Failed to generate static pages.\",\n [\n \"Check that all routes are valid\",\n \"Ensure getStaticData functions return correctly\",\n \"Verify no dynamic content requires runtime\",\n ],\n ),\n\n [ErrorCode.SOURCEMAP_ERROR]: createSimpleError(\n ErrorCode.SOURCEMAP_ERROR,\n \"Source map generation failed\",\n \"Failed to generate source maps.\",\n [\n \"Try disabling source maps temporarily\",\n \"Check for very large files that might cause issues\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const RUNTIME_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.HYDRATION_MISMATCH]: createErrorSolution(ErrorCode.HYDRATION_MISMATCH, {\n title: \"Hydration mismatch\",\n message: \"Client-side HTML does not match server-rendered HTML.\",\n steps: [\n \"Check for random values or timestamps in render\",\n \"Ensure Date() calls are consistent\",\n \"Avoid using browser-only APIs during SSR\",\n \"Check for white space or formatting differences\",\n ],\n example: `// \u274C Wrong - random on each render\n<div>{Math.random()}</div>\n\nconst [random, setRandom] = useState(0)\nuseEffect(() => setRandom(Math.random()), [])\n<div>{random}</div>`,\n relatedErrors: [ErrorCode.RENDER_ERROR],\n }),\n\n [ErrorCode.RENDER_ERROR]: createSimpleError(\n ErrorCode.RENDER_ERROR,\n \"Render error\",\n \"Failed to render component.\",\n [\n \"Check the component for errors\",\n \"Ensure all props are valid\",\n \"Look for null/undefined access\",\n \"Check error boundaries\",\n ],\n ),\n\n [ErrorCode.COMPONENT_ERROR]: createSimpleError(\n ErrorCode.COMPONENT_ERROR,\n \"Component error\",\n \"Error in component lifecycle or render.\",\n [\n \"Check component code for errors\",\n \"Ensure hooks follow Rules of Hooks\",\n \"Verify props are passed correctly\",\n ],\n ),\n\n [ErrorCode.LAYOUT_NOT_FOUND]: createErrorSolution(ErrorCode.LAYOUT_NOT_FOUND, {\n title: \"Layout file not found\",\n message: \"Required layout file is missing.\",\n steps: [\n \"Create app/layout.tsx in App Router\",\n \"Or create layouts/default.mdx for Pages Router\",\n \"Check file path and name are correct\",\n ],\n example: `// app/layout.tsx\nexport default function RootLayout({ children }) {\n return (\n <html lang=\"en\">\n <body>{children}</body>\n </html>\n )\n}`,\n }),\n\n [ErrorCode.PAGE_NOT_FOUND]: createSimpleError(\n ErrorCode.PAGE_NOT_FOUND,\n \"Page not found\",\n \"The requested page does not exist.\",\n [\n \"Check that the page file exists\",\n \"Verify file name matches route\",\n \"Ensure file extension is correct (.tsx, .jsx, .mdx)\",\n ],\n ),\n\n [ErrorCode.API_ERROR]: createSimpleError(\n ErrorCode.API_ERROR,\n \"API handler error\",\n \"Error in API route handler.\",\n [\n \"Check API handler code for errors\",\n \"Ensure proper error handling\",\n \"Verify request/response format\",\n ],\n ),\n\n [ErrorCode.MIDDLEWARE_ERROR]: createSimpleError(\n ErrorCode.MIDDLEWARE_ERROR,\n \"Middleware error\",\n \"Error in middleware execution.\",\n [\n \"Check middleware code for errors\",\n \"Ensure middleware returns Response\",\n \"Verify middleware is properly exported\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const ROUTE_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.ROUTE_CONFLICT]: createSimpleError(\n ErrorCode.ROUTE_CONFLICT,\n \"Route conflict\",\n \"Multiple files are trying to handle the same route.\",\n [\n \"Check for duplicate route files\",\n \"Remove conflicting routes\",\n \"Use dynamic routes [id] carefully\",\n ],\n ),\n\n [ErrorCode.INVALID_ROUTE_FILE]: createErrorSolution(ErrorCode.INVALID_ROUTE_FILE, {\n title: \"Invalid route file\",\n message: \"Route file has invalid structure or exports.\",\n steps: [\n \"API routes must export GET, POST, etc. functions\",\n \"Page routes must export default component\",\n \"Check for syntax errors\",\n ],\n example: `// app/api/users/route.ts\nexport async function GET() {\n return Response.json({ users: [] })\n}`,\n }),\n\n [ErrorCode.ROUTE_HANDLER_INVALID]: createSimpleError(\n ErrorCode.ROUTE_HANDLER_INVALID,\n \"Invalid route handler\",\n \"Route handler does not return Response.\",\n [\n \"Ensure handler returns Response object\",\n \"Use Response.json() for JSON responses\",\n \"Check for missing return statement\",\n ],\n ),\n\n [ErrorCode.DYNAMIC_ROUTE_ERROR]: createSimpleError(\n ErrorCode.DYNAMIC_ROUTE_ERROR,\n \"Dynamic route error\",\n \"Error in dynamic route handling.\",\n [\n \"Check [param] syntax is correct\",\n \"Ensure params are accessed properly\",\n \"Verify dynamic segment names\",\n ],\n ),\n\n [ErrorCode.ROUTE_PARAMS_ERROR]: createSimpleError(\n ErrorCode.ROUTE_PARAMS_ERROR,\n \"Route parameters error\",\n \"Error accessing route parameters.\",\n [\n \"Check params object structure\",\n \"Ensure parameter names match route\",\n \"Verify params are strings\",\n ],\n ),\n\n [ErrorCode.API_ROUTE_ERROR]: createSimpleError(\n ErrorCode.API_ROUTE_ERROR,\n \"API route error\",\n \"Error in API route execution.\",\n [\n \"Check API handler code\",\n \"Ensure proper error handling\",\n \"Verify request parsing\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const MODULE_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.MODULE_NOT_FOUND]: createErrorSolution(ErrorCode.MODULE_NOT_FOUND, {\n title: \"Module not found\",\n message: \"Cannot find the imported module.\",\n steps: [\n \"Check that the file path is correct\",\n \"Ensure the module is installed or exists\",\n \"Add missing module to import map\",\n \"Check for typos in import statement\",\n ],\n example: `// Add to veryfront.config.js\nresolve: {\n importMap: {\n imports: {\n \"missing-lib\": \"https://esm.sh/missing-lib@1.0.0\"\n }\n }\n}`,\n }),\n\n [ErrorCode.IMPORT_RESOLUTION_ERROR]: createSimpleError(\n ErrorCode.IMPORT_RESOLUTION_ERROR,\n \"Import resolution failed\",\n \"Failed to resolve import specifier.\",\n [\n \"Check import paths are correct\",\n \"Ensure modules are in import map\",\n \"Verify network connectivity for remote imports\",\n ],\n ),\n\n [ErrorCode.CIRCULAR_DEPENDENCY]: createSimpleError(\n ErrorCode.CIRCULAR_DEPENDENCY,\n \"Circular dependency detected\",\n \"Files are importing each other in a circle.\",\n [\n \"Identify the circular import chain\",\n \"Extract shared code to separate file\",\n \"Use dependency injection or lazy imports\",\n ],\n ),\n\n [ErrorCode.INVALID_IMPORT]: createSimpleError(\n ErrorCode.INVALID_IMPORT,\n \"Invalid import statement\",\n \"Import statement has invalid syntax.\",\n [\n 'Check import syntax: import X from \"y\"',\n \"Ensure quotes are properly closed\",\n \"Verify export exists in target module\",\n ],\n ),\n\n [ErrorCode.DEPENDENCY_MISSING]: createErrorSolution(ErrorCode.DEPENDENCY_MISSING, {\n title: \"Required dependency not found\",\n message: \"A required dependency is missing.\",\n steps: [\n \"Add React to your import map\",\n \"Ensure all peer dependencies are included\",\n \"Run 'veryfront doctor' to verify setup\",\n ],\n example: `// Minimum required imports\nresolve: {\n importMap: {\n imports: {\n \"react\": \"https://esm.sh/react@19\",\n \"react-dom\": \"https://esm.sh/react-dom@19\"\n }\n }\n}`,\n }),\n\n [ErrorCode.VERSION_MISMATCH]: createSimpleError(\n ErrorCode.VERSION_MISMATCH,\n \"Dependency version mismatch\",\n \"Incompatible versions of dependencies detected.\",\n [\n \"Ensure React and React-DOM versions match\",\n \"Check for multiple React instances\",\n \"Update dependencies to compatible versions\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const SERVER_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.PORT_IN_USE]: createErrorSolution(ErrorCode.PORT_IN_USE, {\n title: \"Port already in use\",\n message: \"Another process is using the specified port.\",\n steps: [\n \"Stop the other process: lsof -i :PORT\",\n \"Use a different port: veryfront dev --port 3003\",\n \"Add port to config file\",\n ],\n example: `// veryfront.config.js\ndev: {\n port: 3003\n}`,\n }),\n\n [ErrorCode.SERVER_START_ERROR]: createSimpleError(\n ErrorCode.SERVER_START_ERROR,\n \"Server failed to start\",\n \"Development server could not start.\",\n [\n \"Check for port conflicts\",\n \"Ensure file permissions are correct\",\n \"Verify configuration is valid\",\n ],\n ),\n\n [ErrorCode.HMR_ERROR]: createSimpleError(\n ErrorCode.HMR_ERROR,\n \"Hot Module Replacement error\",\n \"HMR failed to update module.\",\n [\n \"Try refreshing the page\",\n \"Check for syntax errors\",\n \"Restart dev server if persistent\",\n ],\n ),\n\n [ErrorCode.CACHE_ERROR]: createSimpleError(\n ErrorCode.CACHE_ERROR,\n \"Cache operation failed\",\n \"Error reading or writing cache.\",\n [\n \"Clear cache: veryfront clean --cache\",\n \"Check disk space\",\n \"Verify file permissions\",\n ],\n ),\n\n [ErrorCode.FILE_WATCH_ERROR]: createSimpleError(\n ErrorCode.FILE_WATCH_ERROR,\n \"File watching failed\",\n \"Could not watch files for changes.\",\n [\n \"Check system file watch limits\",\n \"Reduce number of watched files\",\n \"Try restarting dev server\",\n ],\n ),\n\n [ErrorCode.REQUEST_ERROR]: createSimpleError(\n ErrorCode.REQUEST_ERROR,\n \"Request handling error\",\n \"Error processing HTTP request.\",\n [\n \"Check request format and headers\",\n \"Verify route handler code\",\n \"Check for middleware errors\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const RSC_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.CLIENT_BOUNDARY_VIOLATION]: createErrorSolution(\n ErrorCode.CLIENT_BOUNDARY_VIOLATION,\n {\n title: \"Client/Server boundary violation\",\n message: \"Server-only code used in Client Component.\",\n steps: [\n \"Move server-only imports to Server Components\",\n \"Use 'use server' for server actions\",\n \"Split component into server and client parts\",\n ],\n example: `// \u2713 Correct pattern\nimport { db } from './database'\nexport default async function ServerComponent() {\n const data = await db.query('...')\n return <ClientComponent data={data} />\n}\n\n'use client'\nexport default function ClientComponent({ data }) {\n return <div>{data}</div>\n}`,\n },\n ),\n\n [ErrorCode.SERVER_ONLY_IN_CLIENT]: createSimpleError(\n ErrorCode.SERVER_ONLY_IN_CLIENT,\n \"Server-only module in Client Component\",\n \"Cannot use server-only module in client code.\",\n [\n \"Move server logic to Server Component\",\n \"Use API routes for client data fetching\",\n \"Pass data as props from server\",\n ],\n ),\n\n [ErrorCode.CLIENT_ONLY_IN_SERVER]: createSimpleError(\n ErrorCode.CLIENT_ONLY_IN_SERVER,\n \"Client-only code in Server Component\",\n \"Cannot use browser APIs in Server Component.\",\n [\n \"Add 'use client' directive\",\n \"Move client-only code to Client Component\",\n \"Use useEffect for client-side logic\",\n ],\n ),\n\n [ErrorCode.INVALID_USE_CLIENT]: createErrorSolution(ErrorCode.INVALID_USE_CLIENT, {\n title: \"Invalid 'use client' directive\",\n message: \"'use client' directive is not properly placed.\",\n steps: [\n \"Place 'use client' at the very top of file\",\n \"Must be before any imports\",\n 'Use exact string: \"use client\"',\n ],\n example: `'use client' // Must be first line\n\nimport React from 'react'`,\n }),\n\n [ErrorCode.INVALID_USE_SERVER]: createSimpleError(\n ErrorCode.INVALID_USE_SERVER,\n \"Invalid 'use server' directive\",\n \"'use server' directive is not properly placed.\",\n [\n \"Place 'use server' at top of function\",\n \"Or at top of file for all functions\",\n 'Use exact string: \"use server\"',\n ],\n ),\n\n [ErrorCode.RSC_PAYLOAD_ERROR]: createSimpleError(\n ErrorCode.RSC_PAYLOAD_ERROR,\n \"RSC payload error\",\n \"Error serializing Server Component payload.\",\n [\n \"Ensure props are JSON-serializable\",\n \"Avoid passing functions as props\",\n \"Check for circular references\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createSimpleError } from \"./factory.ts\";\n\nexport const DEV_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.DEV_SERVER_ERROR]: createSimpleError(\n ErrorCode.DEV_SERVER_ERROR,\n \"Development server error\",\n \"Error in development server.\",\n [\n \"Check server logs for details\",\n \"Try restarting dev server\",\n \"Clear cache and restart\",\n ],\n ),\n\n [ErrorCode.FAST_REFRESH_ERROR]: createSimpleError(\n ErrorCode.FAST_REFRESH_ERROR,\n \"Fast Refresh error\",\n \"React Fast Refresh failed.\",\n [\n \"Check for syntax errors\",\n \"Ensure components follow Fast Refresh rules\",\n \"Try full page refresh\",\n ],\n ),\n\n [ErrorCode.ERROR_OVERLAY_ERROR]: createSimpleError(\n ErrorCode.ERROR_OVERLAY_ERROR,\n \"Error overlay failed\",\n \"Could not display error overlay.\",\n [\n \"Check browser console for details\",\n \"Try disabling browser extensions\",\n \"Refresh the page\",\n ],\n ),\n\n [ErrorCode.SOURCE_MAP_ERROR]: createSimpleError(\n ErrorCode.SOURCE_MAP_ERROR,\n \"Source map error\",\n \"Error loading or parsing source map.\",\n [\n \"Check that source maps are enabled\",\n \"Try rebuilding the project\",\n \"Check for corrupted build files\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createSimpleError } from \"./factory.ts\";\n\nexport const DEPLOYMENT_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.DEPLOYMENT_ERROR]: createSimpleError(\n ErrorCode.DEPLOYMENT_ERROR,\n \"Deployment failed\",\n \"Failed to deploy application.\",\n [\n \"Check deployment logs for details\",\n \"Verify platform credentials\",\n \"Ensure build succeeded first\",\n ],\n ),\n\n [ErrorCode.PLATFORM_ERROR]: createSimpleError(\n ErrorCode.PLATFORM_ERROR,\n \"Platform error\",\n \"Deployment platform returned an error.\",\n [\n \"Check platform status page\",\n \"Verify API keys and credentials\",\n \"Try deploying again\",\n ],\n ),\n\n [ErrorCode.ENV_VAR_MISSING]: createSimpleError(\n ErrorCode.ENV_VAR_MISSING,\n \"Environment variable missing\",\n \"Required environment variable is not set.\",\n [\n \"Add variable to .env file\",\n \"Set variable in deployment platform\",\n \"Check variable name is correct\",\n ],\n ),\n\n [ErrorCode.PRODUCTION_BUILD_REQUIRED]: createSimpleError(\n ErrorCode.PRODUCTION_BUILD_REQUIRED,\n \"Production build required\",\n \"Must build project before deploying.\",\n [\n \"Run 'veryfront build' first\",\n \"Check that dist/ directory exists\",\n \"Verify build completed successfully\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createSimpleError } from \"./factory.ts\";\n\nexport const GENERAL_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.UNKNOWN_ERROR]: createSimpleError(\n ErrorCode.UNKNOWN_ERROR,\n \"Unknown error\",\n \"An unexpected error occurred.\",\n [\n \"Check error details above\",\n \"Run 'veryfront doctor' to diagnose\",\n \"Try restarting the operation\",\n \"Check GitHub issues for similar problems\",\n ],\n ),\n\n [ErrorCode.PERMISSION_DENIED]: createSimpleError(\n ErrorCode.PERMISSION_DENIED,\n \"Permission denied\",\n \"Insufficient permissions to perform operation.\",\n [\n \"Check file/directory permissions\",\n \"Run with appropriate permissions\",\n \"Verify user has write access\",\n ],\n ),\n\n [ErrorCode.FILE_NOT_FOUND]: createSimpleError(\n ErrorCode.FILE_NOT_FOUND,\n \"File not found\",\n \"Required file does not exist.\",\n [\n \"Check that file path is correct\",\n \"Verify file exists in project\",\n \"Check for typos in file name\",\n ],\n ),\n\n [ErrorCode.INVALID_ARGUMENT]: createSimpleError(\n ErrorCode.INVALID_ARGUMENT,\n \"Invalid argument\",\n \"Command received invalid argument.\",\n [\n \"Check command syntax\",\n \"Verify argument values\",\n \"Run 'veryfront help <command>' for usage\",\n ],\n ),\n\n [ErrorCode.TIMEOUT_ERROR]: createSimpleError(\n ErrorCode.TIMEOUT_ERROR,\n \"Operation timed out\",\n \"Operation took too long to complete.\",\n [\n \"Check network connectivity\",\n \"Try increasing timeout if available\",\n \"Check for very large files\",\n ],\n ),\n};\n", "import type { ErrorCodeType } from \"../error-codes.ts\";\nimport type { ErrorCatalog, ErrorSolution } from \"./types.ts\";\n\nimport { CONFIG_ERROR_CATALOG } from \"./config-errors.ts\";\nimport { BUILD_ERROR_CATALOG } from \"./build-errors.ts\";\nimport { RUNTIME_ERROR_CATALOG } from \"./runtime-errors.ts\";\nimport { ROUTE_ERROR_CATALOG } from \"./route-errors.ts\";\nimport { MODULE_ERROR_CATALOG } from \"./module-errors.ts\";\nimport { SERVER_ERROR_CATALOG } from \"./server-errors.ts\";\nimport { RSC_ERROR_CATALOG } from \"./rsc-errors.ts\";\nimport { DEV_ERROR_CATALOG } from \"./dev-errors.ts\";\nimport { DEPLOYMENT_ERROR_CATALOG } from \"./deployment-errors.ts\";\nimport { GENERAL_ERROR_CATALOG } from \"./general-errors.ts\";\n\nexport const ERROR_CATALOG = {\n ...CONFIG_ERROR_CATALOG,\n ...BUILD_ERROR_CATALOG,\n ...RUNTIME_ERROR_CATALOG,\n ...ROUTE_ERROR_CATALOG,\n ...MODULE_ERROR_CATALOG,\n ...SERVER_ERROR_CATALOG,\n ...RSC_ERROR_CATALOG,\n ...DEV_ERROR_CATALOG,\n ...DEPLOYMENT_ERROR_CATALOG,\n ...GENERAL_ERROR_CATALOG,\n} as ErrorCatalog;\n\nexport function getErrorSolution(code: ErrorCodeType): ErrorSolution | null {\n return ERROR_CATALOG[code] || null;\n}\n\nexport function searchErrors(query: string): ErrorSolution[] {\n const lowerQuery = query.toLowerCase();\n return Object.values(ERROR_CATALOG).filter(\n (error) =>\n error.title.toLowerCase().includes(lowerQuery) ||\n error.message.toLowerCase().includes(lowerQuery) ||\n error.steps?.some((step) => step.toLowerCase().includes(lowerQuery)),\n );\n}\n\nexport type { ErrorCatalog, ErrorSolution, PartialErrorCatalog } from \"./types.ts\";\n\nexport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport {\n BUILD_ERROR_CATALOG,\n CONFIG_ERROR_CATALOG,\n DEPLOYMENT_ERROR_CATALOG,\n DEV_ERROR_CATALOG,\n GENERAL_ERROR_CATALOG,\n MODULE_ERROR_CATALOG,\n ROUTE_ERROR_CATALOG,\n RSC_ERROR_CATALOG,\n RUNTIME_ERROR_CATALOG,\n SERVER_ERROR_CATALOG,\n};\n", "export interface ErrorSolution {\n message: string;\n steps?: string[];\n example?: string;\n docs?: string;\n}\n\nexport const ERROR_SOLUTIONS: Record<string, ErrorSolution> = {\n \"missing-config\": {\n message: \"No veryfront.config.js found in project directory\",\n steps: [\n \"Create a veryfront.config.js file in your project root\",\n \"Run 'veryfront init' to generate a default config\",\n \"Or create one manually with minimal configuration\",\n ],\n example: `export default {\n title: \"My App\",\n dev: { port: 3002 }\n};`,\n },\n\n \"invalid-config\": {\n message: \"Invalid configuration in veryfront.config.js\",\n steps: [\n \"Check that your config exports a default object\",\n \"Ensure all values are valid JavaScript\",\n \"Remove any trailing commas in objects\",\n ],\n example: `export default {\n title: \"My App\", // \u2713 Valid string\n dev: {\n port: 3002, // \u2713 Valid number\n open: true // \u2713 No trailing comma\n }\n};`,\n },\n\n \"invalid-route\": {\n message: \"Invalid route file format\",\n steps: [\n \"Route files must export handler functions (GET, POST, etc.)\",\n \"Each handler must return a Response object\",\n \"Check for syntax errors in your route file\",\n ],\n example: `// app/api/users/route.ts\nexport async function GET() {\n return Response.json({ users: [] });\n}\n\nexport async function POST(request: Request) {\n const body = await request.json();\n return Response.json({ created: true });\n}`,\n },\n\n \"client-boundary\": {\n message: \"Server-only code used in Client Component\",\n steps: [\n \"Move server-only imports to Server Components\",\n \"Use 'use server' directive for server actions\",\n \"Split component into server and client parts\",\n ],\n example: `// \u274C Wrong - database import in client component\n'use client';\nimport { db } from './database'; // Error!\n\nimport { db } from './database';\nexport default async function ServerComponent() {\n const data = await db.query('...');\n return <ClientComponent data={data} />;\n}\n\n'use client';\nexport default function ClientComponent({ data }) {\n}`,\n docs: \"https://github.com/veryfront/veryfront/docs/rsc-boundaries\",\n },\n\n \"import-not-found\": {\n message: \"Failed to resolve import\",\n steps: [\n \"Check that the file path is correct\",\n \"Ensure the module is installed or available\",\n \"For remote imports, check network connectivity\",\n \"Add missing imports to veryfront.config.js importMap\",\n ],\n example: `// veryfront.config.js\nresolve: {\n importMap: {\n imports: {\n \"my-lib\": \"https://esm.sh/my-lib@1.0.0\",\n \"@/utils\": \"./src/utils/index.ts\"\n }\n }\n}`,\n },\n\n \"port-in-use\": {\n message: \"Port is already in use\",\n steps: [\n \"Stop any other servers running on this port\",\n \"Use a different port with --port flag\",\n \"Check for zombie processes: lsof -i :PORT\",\n ],\n example: `veryfront dev --port 3003`,\n },\n\n \"build-failed\": {\n message: \"Build failed with errors\",\n steps: [\n \"Check the error messages above for details\",\n \"Fix any TypeScript or syntax errors\",\n \"Ensure all imports can be resolved\",\n \"Run 'veryfront doctor' to check system\",\n ],\n },\n\n \"missing-deps\": {\n message: \"Required dependencies not found\",\n steps: [\n \"Check that React is in your import map\",\n \"Ensure all peer dependencies are included\",\n \"Run 'veryfront doctor' to verify setup\",\n ],\n example: `// Minimum required imports\n\"react\": \"https://esm.sh/react@19.1.1\",\n\"react-dom\": \"https://esm.sh/react-dom@19.1.1\"`,\n },\n};\n", "/**\n * Pure ANSI escape code colors for npm/Node.js builds\n *\n * This file provides a zero-dependency color implementation using ANSI codes.\n * It's used in npm builds where std/fmt/colors.ts isn't available.\n */\n\nimport type { ColorFunction, ConsoleStyler } from \"./types.ts\";\n\nconst ansi = (open: number, close: number): ColorFunction => (text: string) =>\n `\\x1b[${open}m${text}\\x1b[${close}m`;\n\nexport const red: ColorFunction = ansi(31, 39);\nexport const green: ColorFunction = ansi(32, 39);\nexport const yellow: ColorFunction = ansi(33, 39);\nexport const blue: ColorFunction = ansi(34, 39);\nexport const magenta: ColorFunction = ansi(35, 39);\nexport const cyan: ColorFunction = ansi(36, 39);\nexport const white: ColorFunction = ansi(37, 39);\nexport const gray: ColorFunction = ansi(90, 39);\nexport const bold: ColorFunction = ansi(1, 22);\nexport const dim: ColorFunction = ansi(2, 22);\nexport const italic: ColorFunction = ansi(3, 23);\nexport const underline: ColorFunction = ansi(4, 24);\nexport const strikethrough: ColorFunction = ansi(9, 29);\nexport const reset: ColorFunction = (text: string) => `\\x1b[0m${text}`;\n\nexport const colors: ConsoleStyler = {\n red,\n green,\n yellow,\n blue,\n cyan,\n magenta,\n white,\n gray,\n bold,\n dim,\n italic,\n underline,\n strikethrough,\n reset,\n};\n", "/**\n * Deno console styling implementation using std/fmt/colors.ts\n */\n\nimport {\n blue,\n bold,\n cyan,\n dim,\n gray,\n green,\n italic,\n magenta,\n red,\n reset,\n strikethrough,\n underline,\n white,\n yellow,\n} from \"std/fmt/colors.ts\";\n\nimport type { ConsoleStyler } from \"./types.ts\";\n\nexport const colors: ConsoleStyler = {\n red,\n green,\n yellow,\n blue,\n cyan,\n magenta,\n white,\n gray,\n bold,\n dim,\n italic,\n underline,\n strikethrough,\n reset,\n};\n\nexport {\n blue,\n bold,\n cyan,\n dim,\n gray,\n green,\n italic,\n magenta,\n red,\n reset,\n strikethrough,\n underline,\n white,\n yellow,\n};\n", "/**\n * Node.js console styling implementation using picocolors\n */\n\nimport type { ConsoleStyler } from \"./types.ts\";\n\n// Lazy-loaded picocolors instance\ntype PicoColors = {\n red: (s: string) => string;\n green: (s: string) => string;\n yellow: (s: string) => string;\n blue: (s: string) => string;\n cyan: (s: string) => string;\n magenta: (s: string) => string;\n white: (s: string) => string;\n gray: (s: string) => string;\n bold: (s: string) => string;\n dim: (s: string) => string;\n italic: (s: string) => string;\n underline: (s: string) => string;\n strikethrough: (s: string) => string;\n reset: (s: string) => string;\n};\n\nlet pc: PicoColors | null = null;\n\nasync function ensurePc(): Promise<PicoColors> {\n if (pc) return pc;\n // Construct module name dynamically to prevent Deno static analyzer\n // from trying to resolve this npm package during lint/check\n const picocolorsModule = [\"npm:\", \"picocolors\"].join(\"\");\n const mod = await import(picocolorsModule);\n pc = mod.default as PicoColors;\n return pc;\n}\n\n// Lazy wrapper that falls back to identity if not loaded\nconst lazyColor = (fn: keyof PicoColors) => (s: string) => pc?.[fn]?.(s) ?? s;\n\nexport const colors: ConsoleStyler = {\n red: lazyColor(\"red\"),\n green: lazyColor(\"green\"),\n yellow: lazyColor(\"yellow\"),\n blue: lazyColor(\"blue\"),\n cyan: lazyColor(\"cyan\"),\n magenta: lazyColor(\"magenta\"),\n white: lazyColor(\"white\"),\n gray: lazyColor(\"gray\"),\n bold: lazyColor(\"bold\"),\n dim: lazyColor(\"dim\"),\n italic: lazyColor(\"italic\"),\n underline: lazyColor(\"underline\"),\n strikethrough: lazyColor(\"strikethrough\"),\n reset: lazyColor(\"reset\"),\n};\n\nexport const red = lazyColor(\"red\");\nexport const green = lazyColor(\"green\");\nexport const yellow = lazyColor(\"yellow\");\nexport const blue = lazyColor(\"blue\");\nexport const cyan = lazyColor(\"cyan\");\nexport const magenta = lazyColor(\"magenta\");\nexport const white = lazyColor(\"white\");\nexport const gray = lazyColor(\"gray\");\nexport const bold = lazyColor(\"bold\");\nexport const dim = lazyColor(\"dim\");\nexport const italic = lazyColor(\"italic\");\nexport const underline = lazyColor(\"underline\");\nexport const strikethrough = lazyColor(\"strikethrough\");\nexport const reset = lazyColor(\"reset\");\n\n// Initialize picocolors on first use\nexport async function initColors(): Promise<void> {\n await ensurePc();\n}\n", "/**\n * Cross-runtime console styling\n *\n * Provides terminal colors that work in Deno, Node.js, and Bun.\n * Falls back to no-op functions in environments without terminal support.\n */\n\nimport { isDeno } from \"../runtime.ts\";\nimport type { ColorFunction, ConsoleStyler } from \"./types.ts\";\n\nexport type { ColorFunction, ConsoleStyler } from \"./types.ts\";\n\nconst noOp: ColorFunction = (text: string) => text;\n\nconst fallbackColors: ConsoleStyler = {\n red: noOp,\n green: noOp,\n yellow: noOp,\n blue: noOp,\n cyan: noOp,\n magenta: noOp,\n white: noOp,\n gray: noOp,\n bold: noOp,\n dim: noOp,\n italic: noOp,\n underline: noOp,\n strikethrough: noOp,\n reset: noOp,\n};\n\nlet _colors: ConsoleStyler | null = null;\n\nasync function loadColors(): Promise<ConsoleStyler> {\n if (_colors) return _colors;\n\n try {\n if (isDeno) {\n const mod = await import(\"./deno.ts\");\n _colors = mod.colors;\n } else {\n const mod = await import(\"./node.ts\");\n _colors = mod.colors;\n }\n } catch {\n _colors = fallbackColors;\n }\n\n return _colors;\n}\n\nconst colorsPromise = loadColors();\n\nfunction getColors(): ConsoleStyler {\n return _colors ?? fallbackColors;\n}\n\nexport const red: ColorFunction = (text) => getColors().red(text);\nexport const green: ColorFunction = (text) => getColors().green(text);\nexport const yellow: ColorFunction = (text) => getColors().yellow(text);\nexport const blue: ColorFunction = (text) => getColors().blue(text);\nexport const cyan: ColorFunction = (text) => getColors().cyan(text);\nexport const magenta: ColorFunction = (text) => getColors().magenta(text);\nexport const white: ColorFunction = (text) => getColors().white(text);\nexport const gray: ColorFunction = (text) => getColors().gray(text);\nexport const bold: ColorFunction = (text) => getColors().bold(text);\nexport const dim: ColorFunction = (text) => getColors().dim(text);\nexport const italic: ColorFunction = (text) => getColors().italic(text);\nexport const underline: ColorFunction = (text) => getColors().underline(text);\nexport const strikethrough: ColorFunction = (text) => getColors().strikethrough(text);\nexport const reset: ColorFunction = (text) => getColors().reset(text);\n\nexport const colors = {\n red,\n green,\n yellow,\n blue,\n cyan,\n magenta,\n white,\n gray,\n bold,\n dim,\n italic,\n underline,\n strikethrough,\n reset,\n} satisfies ConsoleStyler;\n\nexport { colorsPromise };\n", "export function identifyError(error: Error): string {\n const message = error.message.toLowerCase();\n\n if (message.includes(\"veryfront.config\") && message.includes(\"not found\")) {\n return \"missing-config\";\n }\n if (message.includes(\"config\") && (message.includes(\"invalid\") || message.includes(\"parse\"))) {\n return \"invalid-config\";\n }\n\n if (message.includes(\"route\") && (message.includes(\"invalid\") || message.includes(\"export\"))) {\n return \"invalid-route\";\n }\n\n if (message.includes(\"client\") && (message.includes(\"boundary\") || message.includes(\"server\"))) {\n return \"client-boundary\";\n }\n\n if (\n message.includes(\"import\") ||\n message.includes(\"module not found\") ||\n message.includes(\"resolve\")\n ) {\n return \"import-not-found\";\n }\n\n if (message.includes(\"port\") && (message.includes(\"in use\") || message.includes(\"eaddrinuse\"))) {\n return \"port-in-use\";\n }\n\n if (message.includes(\"build\") && message.includes(\"fail\")) {\n return \"build-failed\";\n }\n\n if (message.includes(\"react\") && message.includes(\"not found\")) {\n return \"missing-deps\";\n }\n\n return \"unknown\";\n}\n", "import { bold, cyan, dim, red, yellow } from \"@veryfront/compat/console\";\nimport { ERROR_SOLUTIONS } from \"./error-catalog.ts\";\nimport { identifyError } from \"./error-identifier.ts\";\n\nexport function formatUserError(error: Error): string {\n const output: string[] = [];\n\n output.push(\"\");\n output.push(red(bold(\"\u2716 Error: \")) + bold(error.message));\n output.push(\"\");\n\n const errorKey = identifyError(error);\n const solution = ERROR_SOLUTIONS[errorKey];\n\n if (solution) {\n if (solution.message) {\n output.push(yellow(\"Problem: \") + solution.message);\n output.push(\"\");\n }\n\n if (solution.steps && solution.steps.length > 0) {\n output.push(cyan(\"How to fix:\"));\n solution.steps.forEach((step, i) => {\n output.push(` ${dim(`${i + 1}.`)} ${step}`);\n });\n output.push(\"\");\n }\n\n if (solution.example) {\n output.push(cyan(\"Example:\"));\n output.push(\"\");\n solution.example.split(\"\\n\").forEach((line) => {\n output.push(` ${dim(line)}`);\n });\n output.push(\"\");\n }\n\n if (solution.docs) {\n output.push(dim(\"Learn more: \") + cyan(solution.docs));\n output.push(\"\");\n }\n } else {\n if (error.stack) {\n output.push(yellow(\"Stack trace:\"));\n const stackLines = error.stack.split(\"\\n\").slice(1, 4);\n stackLines.forEach((line) => {\n output.push(dim(` ${line.trim()}`));\n });\n output.push(\"\");\n }\n\n output.push(dim(\"For help, run: \") + cyan(\"veryfront doctor\"));\n output.push(\"\");\n }\n\n return output.join(\"\\n\");\n}\n", "import { red } from \"@veryfront/compat/console\";\nimport { exit } from \"@veryfront/platform/compat/process.ts\";\nimport { cliLogger } from \"@veryfront/utils/logger/logger.ts\";\nimport { formatUserError } from \"./error-formatter.ts\";\n\nexport function wrapErrorHandler<TArgs extends unknown[], TReturn>(\n fn: (...args: TArgs) => Promise<TReturn>,\n): (...args: TArgs) => Promise<TReturn> {\n return async (...args: TArgs): Promise<TReturn> => {\n try {\n return await fn(...args);\n } catch (error) {\n if (error instanceof Error) {\n cliLogger.error(formatUserError(error));\n } else {\n cliLogger.error(red(\"\u2716 Unknown error:\"), error);\n }\n if (import.meta.main) {\n exit(1);\n }\n throw error;\n }\n };\n}\n", "export { ERROR_SOLUTIONS, type ErrorSolution } from \"./error-catalog.ts\";\nexport { formatUserError } from \"./error-formatter.ts\";\nexport { identifyError } from \"./error-identifier.ts\";\nexport { wrapErrorHandler } from \"./error-wrapper.ts\";\n", "export { ErrorCode, VeryfrontError } from \"./types.ts\";\n\nexport {\n AgentError,\n AgentIntentError,\n AgentNotFoundError,\n AgentTimeoutError,\n OrchestrationError,\n} from \"./agent-errors.ts\";\n\nexport { BuildError, CompilationError } from \"./build-errors.ts\";\n\nexport { RenderError, RuntimeError } from \"./runtime-errors.ts\";\n\nexport {\n ConfigError,\n FileSystemError,\n NetworkError,\n NotSupportedError,\n PermissionError,\n} from \"./system-errors.ts\";\n\nexport {\n handleError,\n handleErrorWithFallback,\n handleErrorWithFallbackSync,\n logAndThrow,\n retryWithBackoff,\n wrapError,\n} from \"./error-handlers.ts\";\n\nexport {\n BUILD_ERROR_CATALOG,\n CONFIG_ERROR_CATALOG,\n createErrorSolution,\n createSimpleError,\n DEPLOYMENT_ERROR_CATALOG,\n DEV_ERROR_CATALOG,\n ERROR_CATALOG,\n GENERAL_ERROR_CATALOG,\n getErrorSolution,\n MODULE_ERROR_CATALOG,\n ROUTE_ERROR_CATALOG,\n RSC_ERROR_CATALOG,\n RUNTIME_ERROR_CATALOG,\n searchErrors,\n SERVER_ERROR_CATALOG,\n} from \"./catalog/index.ts\";\n\nexport type { ErrorCatalog, ErrorSolution, PartialErrorCatalog } from \"./catalog/index.ts\";\n\nexport {\n ERROR_SOLUTIONS,\n formatUserError,\n identifyError,\n wrapErrorHandler,\n} from \"./user-friendly/index.ts\";\n\nexport type { ErrorSolution as UserFriendlyErrorSolution } from \"./user-friendly/index.ts\";\n\nexport type { ErrorCodeType } from \"./error-codes.ts\";\n", "import { FileSystemError } from \"@veryfront/errors\";\nimport { createError, toError } from \"../../../core/errors/veryfront-error.ts\";\nimport type {\n DirEntry,\n FileChangeEvent,\n FileChangeKind,\n FileInfo,\n FileSystemAdapter,\n FileWatcher,\n WatchOptions,\n} from \"../base.ts\";\n\nimport { createFileWatcher, createWatcherIterator, enqueueWatchEvent } from \"../shared-watcher.ts\";\nimport type { BunFSWatcher, BunWatchEvent } from \"./types.ts\";\nimport { serverLogger } from \"@veryfront/utils\";\n\nexport class BunFileSystemAdapter implements FileSystemAdapter {\n async readFile(path: string): Promise<string> {\n const file = Bun.file(path);\n return await file.text();\n }\n\n async readFileBytes(path: string): Promise<Uint8Array> {\n const file = Bun.file(path);\n // deno-lint-ignore no-explicit-any\n const buffer = await (file as any).arrayBuffer();\n return new Uint8Array(buffer);\n }\n\n async writeFile(path: string, content: string): Promise<void> {\n await Bun.write(path, content);\n }\n\n async exists(path: string): Promise<boolean> {\n const file = Bun.file(path);\n return await file.exists();\n }\n\n async *readDir(path: string): AsyncIterable<DirEntry> {\n const { readdir } = await import(\"node:fs/promises\");\n const entries = await readdir(path, { withFileTypes: true });\n\n for (const entry of entries) {\n yield {\n name: entry.name,\n isFile: entry.isFile(),\n isDirectory: entry.isDirectory(),\n isSymlink: entry.isSymbolicLink(),\n };\n }\n }\n\n async stat(path: string): Promise<FileInfo> {\n const file = Bun.file(path);\n const exists = await file.exists();\n if (!exists) {\n throw new FileSystemError(`File not found: ${path}`, { path });\n }\n\n const { stat } = await import(\"node:fs/promises\");\n const stats = await stat(path);\n\n return {\n size: file.size,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n isSymlink: stats.isSymbolicLink(),\n mtime: stats.mtime,\n };\n }\n\n async mkdir(path: string, options?: { recursive?: boolean }): Promise<void> {\n const { mkdir } = await import(\"node:fs/promises\");\n await mkdir(path, options);\n }\n\n async remove(path: string, options?: { recursive?: boolean }): Promise<void> {\n const { rm } = await import(\"node:fs/promises\");\n await rm(path, { recursive: options?.recursive, force: true });\n }\n\n async makeTempDir(prefix: string): Promise<string> {\n const { mkdtemp } = await import(\"node:fs/promises\");\n const { join } = await import(\"node:path\");\n const { tmpdir } = await import(\"node:os\");\n return await mkdtemp(join(tmpdir(), prefix));\n }\n\n watch(paths: string | string[], options?: WatchOptions): FileWatcher {\n const pathArray = Array.isArray(paths) ? paths : [paths];\n const recursive = options?.recursive ?? true;\n const signal = options?.signal;\n\n let closed = false;\n const watchers: Array<BunFSWatcher | import(\"node:fs\").FSWatcher> = [];\n const eventQueue: FileChangeEvent[] = [];\n let resolver: ((value: IteratorResult<FileChangeEvent>) => void) | null = null;\n\n const mapBunEventKind = (type: string): FileChangeKind => {\n switch (type) {\n case \"create\":\n return \"create\";\n case \"change\":\n return \"modify\";\n case \"delete\":\n return \"delete\";\n default:\n return \"any\";\n }\n };\n\n const setupWatcher = (path: string) => {\n try {\n if (typeof Bun !== \"undefined\" && Bun.watch) {\n const watcher = Bun.watch(path, {\n recursive,\n onChange: (event: BunWatchEvent) => {\n if (closed || signal?.aborted) return;\n\n enqueueWatchEvent(\n { kind: mapBunEventKind(event.type), paths: [event.path] },\n eventQueue,\n () => resolver,\n (r) => {\n resolver = r;\n },\n );\n },\n });\n watchers.push(watcher);\n } else {\n throw toError(createError({\n type: \"not_supported\",\n message: \"Bun.watch is not available in this environment\",\n feature: \"Bun.watch\",\n }));\n }\n } catch (error) {\n serverLogger.error(`Failed to watch ${path}:`, error);\n }\n };\n\n Promise.all(pathArray.map(setupWatcher)).catch((error) => {\n serverLogger.error(\"Failed to setup Bun file watchers:\", error);\n });\n\n const iterator = createWatcherIterator(\n eventQueue,\n () => resolver,\n (r) => {\n resolver = r;\n },\n () => closed,\n () => signal?.aborted ?? false,\n );\n\n const cleanup = () => {\n closed = true;\n watchers.forEach((watcher) => {\n try {\n if (\"stop\" in watcher && typeof watcher.stop === \"function\") {\n watcher.stop();\n } else if (\"close\" in watcher && typeof watcher.close === \"function\") {\n watcher.close();\n }\n } catch (error) {\n serverLogger.debug(\"Error closing Bun file watcher during cleanup:\", error);\n }\n });\n if (resolver) {\n resolver({ done: true, value: undefined });\n resolver = null;\n }\n };\n\n if (signal) {\n signal.addEventListener(\"abort\", cleanup);\n }\n\n return createFileWatcher(iterator, cleanup);\n }\n}\n", "import type { EnvironmentAdapter } from \"../base.ts\";\n\nexport class BunEnvironmentAdapter implements EnvironmentAdapter {\n get(key: string): string | undefined {\n return Bun.env[key];\n }\n\n set(key: string, value: string): void {\n Bun.env[key] = value;\n }\n\n toObject(): Record<string, string> {\n return { ...Bun.env };\n }\n}\n", "import type { ServerAdapter, WebSocketUpgrade } from \"../base.ts\";\nimport { createError, toError } from \"../../../core/errors/veryfront-error.ts\";\n\nexport class BunServerAdapter implements ServerAdapter {\n upgradeWebSocket(request: Request): WebSocketUpgrade {\n const success = Bun.upgrade(request);\n\n if (!success) {\n throw toError(createError({\n type: \"network\",\n message: \"Failed to upgrade WebSocket connection\",\n }));\n }\n\n const socket = new BunWebSocket();\n const response = new Response(null, {\n status: 101,\n statusText: \"Switching Protocols\",\n });\n\n return { socket: socket as unknown as WebSocket, response };\n }\n}\n\nexport class BunWebSocket {\n public readyState = 1;\n\n public onopen: ((event: Event) => void) | null = null;\n public onclose: ((event: Event) => void) | null = null;\n public onerror: ((event: Event) => void) | null = null;\n public onmessage: ((event: MessageEvent) => void) | null = null;\n\n static readonly CONNECTING = 0;\n static readonly OPEN = 1;\n static readonly CLOSING = 2;\n static readonly CLOSED = 3;\n\n send(_data: string | ArrayBuffer) {\n throw toError(createError({\n type: \"network\",\n message: \"WebSocket send called on placeholder - use Bun.serve websocket handlers\",\n }));\n }\n\n close(_code?: number, _reason?: string) {\n this.readyState = 3;\n }\n}\n", "import type { ServeOptions, Server } from \"../base.ts\";\nimport type { BunServer as BunServerType } from \"./types.ts\";\nimport { DEFAULT_PORT } from \"@veryfront/config\";\nimport { serverLogger } from \"@veryfront/utils\";\n\nexport class BunServer implements Server {\n constructor(\n private server: BunServerType,\n private hostname: string,\n private port: number,\n ) {}\n\n stop(): Promise<void> {\n this.server.stop();\n return Promise.resolve();\n }\n\n get addr() {\n return { hostname: this.hostname, port: this.port };\n }\n}\n\nexport function createBunServer(\n handler: (request: Request) => Promise<Response> | Response,\n options: ServeOptions = {},\n): Promise<Server> {\n const { port = DEFAULT_PORT, hostname = \"localhost\", onListen } = options;\n\n const server = Bun.serve({\n port,\n hostname,\n async fetch(request: Request) {\n try {\n return await handler(request);\n } catch (error) {\n serverLogger.error(\"Request handler error:\", error);\n return new Response(\"Internal Server Error\", { status: 500 });\n }\n },\n });\n\n onListen?.({ hostname, port });\n\n return Promise.resolve(new BunServer(server, hostname, port));\n}\n", "import type {\n RuntimeAdapter,\n RuntimeCapabilities,\n RuntimeFeatures,\n ServeOptions,\n Server,\n} from \"../base.ts\";\nimport { BunFileSystemAdapter } from \"./filesystem-adapter.ts\";\nimport { BunEnvironmentAdapter } from \"./environment-adapter.ts\";\nimport { BunServerAdapter } from \"./websocket-adapter.ts\";\nimport { createBunServer } from \"./http-server.ts\";\n\nexport class BunAdapter implements RuntimeAdapter {\n readonly id = \"bun\" as const;\n readonly name = \"bun\";\n /** @deprecated Use `id` instead */\n readonly platform = \"bun\" as const;\n\n fs = new BunFileSystemAdapter();\n env = new BunEnvironmentAdapter();\n server = new BunServerAdapter();\n\n readonly capabilities: RuntimeCapabilities = {\n typescript: true,\n jsx: true,\n http2: false, // Bun's HTTP/2 support is experimental\n websocket: true,\n workers: true,\n fileWatching: true,\n shell: true,\n kvStore: false,\n writableFs: true,\n };\n\n /** @deprecated Use `capabilities` instead */\n readonly features: RuntimeFeatures = {\n websocket: true,\n http2: false,\n workers: true,\n jsx: true,\n typescript: true,\n };\n\n serve(\n handler: (request: Request) => Promise<Response> | Response,\n options: ServeOptions = {},\n ): Promise<Server> {\n return createBunServer(handler, options);\n }\n}\n\nexport const bunAdapter = new BunAdapter();\n", "export { BunAdapter, bunAdapter } from \"./adapter.ts\";\nexport { BunFileSystemAdapter } from \"./filesystem-adapter.ts\";\nexport { BunEnvironmentAdapter } from \"./environment-adapter.ts\";\nexport { BunServerAdapter, BunWebSocket } from \"./websocket-adapter.ts\";\nexport { BunServer, createBunServer } from \"./http-server.ts\";\nexport type {\n BunFile,\n BunFSWatcher,\n BunNamespace,\n BunServeOptions,\n BunServer as BunServerType,\n BunWatchEvent,\n BunWatchOptions,\n} from \"./types.ts\";\n", "export {\n BunAdapter,\n bunAdapter,\n BunEnvironmentAdapter,\n BunFileSystemAdapter,\n BunServer,\n BunServerAdapter,\n BunWebSocket,\n createBunServer,\n} from \"./bun/index.ts\";\n\nexport type {\n BunFile,\n BunFSWatcher,\n BunNamespace,\n BunServeOptions,\n BunServerType,\n BunWatchEvent,\n BunWatchOptions,\n} from \"./bun/index.ts\";\n", "import { createError, toError } from \"../../core/errors/veryfront-error.ts\";\nimport type { RuntimeAdapter } from \"./base.ts\";\n\nexport interface MockRuntimeAdapter extends RuntimeAdapter {\n fs: RuntimeAdapter[\"fs\"] & {\n files: Map<string, string>;\n directories: Set<string>;\n };\n}\n\n/**\n * Mock RuntimeAdapter for testing\n *\n * Provides an in-memory filesystem and environment for unit testing.\n * This adapter is useful for testing code that depends on the filesystem\n * without requiring actual file I/O.\n *\n * @example\n * ```typescript\n * const adapter = createMockAdapter();\n * adapter.fs.files.set(\"/project/pages/index.tsx\", \"export default () => <div>Home</div>\");\n * const content = await adapter.fs.readFile(\"/project/pages/index.tsx\");\n * ```\n */\n\n/**\n * Creates a mock RuntimeAdapter for testing\n *\n * The mock adapter uses in-memory Map and Set for file storage:\n * - `files`: Map<string, string> for file contents\n * - `directories`: Set<string> for tracking directories\n * - `envVars`: Map<string, string> for environment variables\n */\nexport function createMockAdapter(): MockRuntimeAdapter {\n const files = new Map<string, string>();\n const directories = new Set<string>();\n const envVars = new Map<string, string>();\n\n return {\n id: \"memory\" as const,\n name: \"mock\",\n /** @deprecated Use `id` instead */\n platform: \"memory\" as const,\n capabilities: {\n typescript: false,\n jsx: false,\n http2: false,\n websocket: false,\n workers: false,\n fileWatching: false,\n shell: false,\n kvStore: false,\n writableFs: true, // In-memory writes work\n },\n serve: (_handler, _options) => {\n return Promise.resolve({\n stop: () => Promise.resolve(),\n addr: { hostname: \"localhost\", port: 8000 },\n });\n },\n fs: {\n files,\n directories,\n readFile: (path: string) => {\n const content = files.get(path);\n if (!content) {\n throw toError(createError({\n type: \"file\",\n message: `File not found: ${path}`,\n }));\n }\n return Promise.resolve(content);\n },\n readFileBytes: (path: string) => {\n const content = files.get(path);\n if (!content) {\n throw toError(createError({\n type: \"file\",\n message: `File not found: ${path}`,\n }));\n }\n return Promise.resolve(new TextEncoder().encode(content));\n },\n writeFile: (path: string, content: string) => {\n files.set(path, content);\n return Promise.resolve();\n },\n exists: (path: string) => {\n if (files.has(path)) return Promise.resolve(true);\n if (directories.has(path)) return Promise.resolve(true);\n for (const filePath of files.keys()) {\n if (filePath.startsWith(path + \"/\")) return Promise.resolve(true);\n }\n return Promise.resolve(false);\n },\n readDir: async function* (path: string) {\n const entries = new Map<string, { isFile: boolean; isDirectory: boolean }>();\n\n for (const filePath of files.keys()) {\n if (filePath.startsWith(path + \"/\")) {\n const relativePath = filePath.slice(path.length + 1);\n const parts = relativePath.split(\"/\");\n const name = parts[0]!;\n\n if (!entries.has(name)) {\n entries.set(name, {\n isFile: parts.length === 1,\n isDirectory: parts.length > 1,\n });\n }\n }\n }\n\n for (const [name, meta] of entries.entries()) {\n yield { name, ...meta, isSymlink: false };\n }\n },\n stat: (path: string) => {\n if (files.has(path)) {\n const content = files.get(path)!;\n return Promise.resolve({\n size: content.length,\n isFile: true,\n isDirectory: false,\n isSymlink: false,\n mtime: new Date(),\n });\n }\n\n if (directories.has(path)) {\n return Promise.resolve({\n size: 0,\n isFile: false,\n isDirectory: true,\n isSymlink: false,\n mtime: new Date(),\n });\n }\n\n for (const filePath of files.keys()) {\n if (filePath.startsWith(path + \"/\")) {\n return Promise.resolve({\n size: 0,\n isFile: false,\n isDirectory: true,\n isSymlink: false,\n mtime: new Date(),\n });\n }\n }\n\n return Promise.reject(new Error(`Path not found: ${path}`));\n },\n mkdir: (_path: string) => Promise.resolve(),\n remove: (_path: string) => Promise.resolve(),\n makeTempDir: (prefix: string) =>\n Promise.resolve(`/tmp/${prefix}-${Math.random().toString(36).slice(2)}`),\n watch: () => ({\n async *[Symbol.asyncIterator]() {\n yield { kind: \"any\", paths: [] };\n },\n close: () => {},\n }),\n },\n env: {\n get: (key: string) => envVars.get(key),\n set: (key: string, value: string) => envVars.set(key, value),\n toObject: () => Object.fromEntries(envVars),\n },\n server: {\n upgradeWebSocket: (_request) => {\n throw new Error(\n \"WebSocket upgrade not available in mock adapter. \" +\n \"The mock adapter is designed for unit testing filesystem and environment operations. \" +\n \"For WebSocket testing, use integration tests with the actual Deno/Node/Bun adapter, \" +\n \"or mock the WebSocket behavior at a higher level in your tests.\",\n );\n },\n },\n features: {\n websocket: false,\n http2: false,\n workers: false,\n jsx: false,\n typescript: false,\n },\n };\n}\n", "/**\n * Adapter Registry - Singleton management for RuntimeAdapter\n *\n * Provides a centralized way to access and configure the runtime adapter.\n * Supports auto-detection, manual configuration, and testing overrides.\n *\n * @example\n * ```ts\n * // Auto-detect and get adapter\n * const adapter = await runtime.get();\n *\n * // Manual configuration (e.g., Cloudflare Workers)\n * await runtime.set(createCloudflareAdapter(env));\n *\n * // Testing override\n * await runtime.set(createMockAdapter());\n * ```\n */\n\nimport type { RuntimeAdapter, RuntimeId } from \"./base.ts\";\n\ntype AdapterLoader = () => Promise<RuntimeAdapter>;\n\n/**\n * Registry for managing RuntimeAdapter singleton\n */\nclass AdapterRegistry {\n private instance: RuntimeAdapter | null = null;\n private initialized = false;\n private loaders: Map<RuntimeId, AdapterLoader> = new Map();\n\n constructor() {\n // Register default loaders (lazy imports to avoid bundling unused adapters)\n this.loaders.set(\"deno\", async () => {\n const { denoAdapter } = await import(\"./deno.ts\");\n return denoAdapter;\n });\n\n this.loaders.set(\"node\", async () => {\n const { nodeAdapter } = await import(\"./node.ts\");\n return nodeAdapter;\n });\n\n this.loaders.set(\"bun\", async () => {\n const { bunAdapter } = await import(\"./bun.ts\");\n return bunAdapter;\n });\n\n // Note: Cloudflare requires manual initialization with env context\n // this.loaders.set(\"cloudflare\", ...) - not auto-detectable\n\n this.loaders.set(\"memory\", async () => {\n const { createMockAdapter } = await import(\"./mock.ts\");\n return createMockAdapter();\n });\n }\n\n /**\n * Get the current adapter, auto-detecting if needed\n */\n async get(): Promise<RuntimeAdapter> {\n if (this.instance) {\n return this.instance;\n }\n\n // Auto-detect runtime\n const runtimeId = this.detectRuntime();\n const loader = this.loaders.get(runtimeId);\n\n if (!loader) {\n throw new Error(\n `Unsupported runtime: ${runtimeId}. ` +\n `Supported runtimes: ${[...this.loaders.keys()].join(\", \")}. ` +\n `For Cloudflare Workers, use runtime.set(createCloudflareAdapter(env)).`,\n );\n }\n\n this.instance = await loader();\n await this.initialize();\n return this.instance;\n }\n\n /**\n * Manually set the adapter (for Cloudflare Workers, testing, etc.)\n */\n async set(adapter: RuntimeAdapter): Promise<void> {\n // Shutdown existing adapter if any\n if (this.instance && this.initialized) {\n await this.instance.shutdown?.();\n }\n\n this.instance = adapter;\n this.initialized = false;\n await this.initialize();\n }\n\n /**\n * Get adapter synchronously (throws if not initialized)\n */\n getSync(): RuntimeAdapter {\n if (!this.instance) {\n throw new Error(\n \"RuntimeAdapter not initialized. Call `await runtime.get()` first, \" +\n \"or use `await runtime.set(adapter)` to configure manually.\",\n );\n }\n return this.instance;\n }\n\n /**\n * Check if adapter is initialized\n */\n isInitialized(): boolean {\n return this.instance !== null && this.initialized;\n }\n\n /**\n * Reset the registry (for testing)\n */\n async reset(): Promise<void> {\n if (this.instance && this.initialized) {\n await this.instance.shutdown?.();\n }\n this.instance = null;\n this.initialized = false;\n }\n\n /**\n * Register a custom adapter loader\n */\n registerLoader(id: RuntimeId, loader: AdapterLoader): void {\n this.loaders.set(id, loader);\n }\n\n /**\n * Detect current runtime\n */\n private detectRuntime(): RuntimeId {\n // Deno\n if (typeof Deno !== \"undefined\" && typeof Deno.version === \"object\") {\n return \"deno\";\n }\n\n // Bun\n if (\"Bun\" in globalThis) {\n return \"bun\";\n }\n\n // Node.js\n if (typeof process !== \"undefined\" && process.versions?.node) {\n return \"node\";\n }\n\n // Cloudflare Workers (detected but requires manual init)\n if (\"caches\" in globalThis && \"WebSocketPair\" in globalThis) {\n throw new Error(\n \"Cloudflare Workers detected but requires manual initialization. \" +\n \"Use: await runtime.set(createCloudflareAdapter(env))\",\n );\n }\n\n throw new Error(\n \"Unsupported runtime detected. Supported runtimes: deno, node, bun. \" +\n \"For Cloudflare Workers, call runtime.set(createCloudflareAdapter(env)).\",\n );\n }\n\n /**\n * Initialize the adapter\n */\n private async initialize(): Promise<void> {\n if (!this.instance || this.initialized) {\n return;\n }\n\n await this.instance.initialize?.();\n this.initialized = true;\n }\n}\n\n/**\n * Global runtime adapter registry\n *\n * @example\n * ```ts\n * import { runtime } from \"@veryfront/platform/adapters/registry.ts\";\n *\n * // Get adapter (auto-detects runtime)\n * const adapter = await runtime.get();\n *\n * // Use filesystem\n * const content = await adapter.fs.readFile(\"./config.json\");\n * ```\n */\nexport const runtime = new AdapterRegistry();\n\n// Re-export for convenience\nexport type { RuntimeAdapter, RuntimeId } from \"./base.ts\";\n", "import { logger } from \"@veryfront/utils\";\nimport type { RuntimeAdapter, RuntimeId } from \"./base.ts\";\nimport { createError, toError } from \"../../core/errors/veryfront-error.ts\";\n\n// Re-export the registry for convenient access\nexport { runtime } from \"./registry.ts\";\n\ninterface DenoGlobal {\n Deno: {\n version: { deno: string };\n [key: string]: unknown;\n };\n}\n\ninterface BunGlobal {\n Bun: {\n version: string;\n [key: string]: unknown;\n };\n}\n\ninterface CloudflareGlobal {\n caches: unknown;\n WebSocketPair: unknown;\n}\n\nfunction isDeno(global: typeof globalThis): global is typeof globalThis & DenoGlobal {\n return \"Deno\" in global &&\n typeof (global as DenoGlobal).Deno === \"object\" &&\n typeof (global as DenoGlobal).Deno.version === \"object\";\n}\n\nfunction isBun(global: typeof globalThis): global is typeof globalThis & BunGlobal {\n return \"Bun\" in global && typeof (global as BunGlobal).Bun === \"object\";\n}\n\nfunction isCloudflare(global: typeof globalThis): global is typeof globalThis & CloudflareGlobal {\n return \"caches\" in global && \"WebSocketPair\" in global;\n}\n\n/**\n * Detect the current runtime environment\n * @returns Runtime identifier\n */\nexport function detectRuntime(): RuntimeId | \"unknown\" {\n if (isDeno(globalThis)) {\n return \"deno\";\n }\n\n if (isBun(globalThis)) {\n return \"bun\";\n }\n\n const globalProcess = (globalThis as { process?: { versions?: { node?: string } } }).process;\n if (globalProcess?.versions?.node) {\n return \"node\";\n }\n\n if (isCloudflare(globalThis)) {\n return \"cloudflare\";\n }\n\n return \"unknown\";\n}\n\n/**\n * Get the runtime adapter for the current environment\n *\n * @deprecated Use `runtime.get()` from `./registry.ts` instead for singleton management\n *\n * @example\n * ```ts\n * // Old way (deprecated)\n * const adapter = await getAdapter();\n *\n * // New way (recommended)\n * import { runtime } from \"@veryfront/platform/adapters/registry.ts\";\n * const adapter = await runtime.get();\n * ```\n */\nexport async function getAdapter(): Promise<RuntimeAdapter> {\n const runtimeId = detectRuntime();\n\n switch (runtimeId) {\n case \"deno\": {\n const { denoAdapter } = await import(\"./deno.ts\");\n return denoAdapter;\n }\n\n case \"bun\": {\n const { bunAdapter } = await import(\"./bun.ts\");\n return bunAdapter;\n }\n\n case \"node\": {\n const { nodeAdapter } = await import(\"./node.ts\");\n return nodeAdapter;\n }\n\n case \"cloudflare\": {\n const errorMsg = \"Cloudflare adapter requires manual initialization with environment. \" +\n \"Please use createCloudflareAdapter() with your environment context.\";\n logger.error(\"[Adapter Detection]\", errorMsg);\n throw toError(createError({\n type: \"config\",\n message: errorMsg,\n }));\n }\n\n default: {\n const supportedRuntimes = [\"deno\", \"bun\", \"node\", \"cloudflare\"];\n const errorMsg = `Unsupported runtime: ${runtimeId}. Supported runtimes: ${\n supportedRuntimes.join(\", \")\n }`;\n logger.error(\"[Adapter Detection]\", errorMsg);\n throw toError(createError({\n type: \"config\",\n message: errorMsg,\n }));\n }\n }\n}\n\nexport { denoAdapter } from \"./deno.ts\";\nexport { nodeAdapter } from \"./node.ts\";\nexport { bunAdapter } from \"./bun.ts\";\n\nexport type {\n EnvironmentAdapter,\n FileSystemAdapter,\n RuntimeAdapter,\n RuntimeCapabilities,\n RuntimeFeatures,\n RuntimeId,\n} from \"./base.ts\";\n", "export { AppWrapper } from \"./AppWrapper.tsx\";\nexport type { AppWrapperProps } from \"./AppWrapper.tsx\";\n\nexport { Head } from \"./Head.tsx\";\n\nexport { LayoutComponent } from \"./LayoutComponent.tsx\";\nexport type { LayoutComponentProps } from \"./LayoutComponent.tsx\";\n\nexport { Link } from \"./Link.tsx\";\nexport type { LinkProps } from \"./Link.tsx\";\n\nexport { MDXProvider, useMDXComponents } from \"./MDXProvider.tsx\";\nexport type { MDXProviderProps } from \"./MDXProvider.tsx\";\n\nexport { ProviderComponent } from \"./ProviderComponent.tsx\";\nexport type { ProviderComponentProps } from \"./ProviderComponent.tsx\";\n\nexport * from \"./optimized-image/index.ts\";\n", "import type * as React from \"react\";\nimport type { MDXComponents, PageContext as TypedPageContext } from \"@veryfront/types\";\nimport type { MdxBundle } from \"./LayoutComponent.tsx\";\nimport { LayoutComponent } from \"./LayoutComponent.tsx\";\nimport { ProviderComponent } from \"./ProviderComponent.tsx\";\n\nexport interface AppWrapperProps {\n children: React.ReactNode;\n providers?: MdxBundle[];\n layout?: MdxBundle;\n components?: MDXComponents;\n mode?: string;\n studioEnabled?: boolean;\n pageContext?: TypedPageContext;\n}\n\nexport function AppWrapper({\n children,\n providers = [],\n layout,\n components = {},\n mode: _mode,\n studioEnabled: _studioEnabled,\n pageContext,\n}: AppWrapperProps) {\n let content = children;\n\n if (layout) {\n content = (\n <LayoutComponent mdxBundle={layout} components={components} pageContext={pageContext}>\n {content}\n </LayoutComponent>\n );\n }\n\n for (const provider of [...providers].reverse()) {\n content = (\n <ProviderComponent mdxBundle={provider} components={components}>\n {content}\n </ProviderComponent>\n );\n }\n\n return content;\n}\n", "import type React from \"react\";\nimport { useMemo, useRef } from \"react\";\nimport { mdxRenderer } from \"@veryfront/transforms/mdx/index.ts\";\nimport type { MdxBundle, MDXComponents, PageContext as TypedPageContext } from \"@veryfront/types\";\nimport { rendererLogger as logger } from \"@veryfront/utils\";\n\nexport type { MdxBundle } from \"@veryfront/types\";\n\nexport interface LayoutComponentProps {\n mdxBundle: MdxBundle;\n children: React.ReactNode;\n components?: MDXComponents;\n pageContext?: TypedPageContext;\n}\n\nfunction useStableObject<T>(obj: T): T {\n const ref = useRef(obj);\n const serialized = JSON.stringify(obj);\n const prevSerialized = useRef(serialized);\n\n if (prevSerialized.current !== serialized) {\n ref.current = obj;\n prevSerialized.current = serialized;\n }\n\n return ref.current;\n}\n\nexport function LayoutComponent({\n mdxBundle,\n children,\n components = {},\n pageContext,\n}: LayoutComponentProps) {\n const stableFrontmatter = useStableObject(mdxBundle.frontmatter);\n const stablePageContext = useStableObject(pageContext);\n\n const element = useMemo(() => {\n try {\n return mdxRenderer.render(mdxBundle.compiledCode, {\n components,\n frontmatter: { ...(stableFrontmatter || {}), pageContext: stablePageContext },\n globals: mdxBundle.globals,\n extractLayout: true,\n children,\n });\n } catch (error) {\n logger.error(\"[LayoutComponent] Render failed:\", error);\n return <>{children}</>;\n }\n }, [\n mdxBundle.compiledCode,\n stableFrontmatter,\n components,\n children,\n stablePageContext,\n mdxBundle.globals,\n ]);\n\n if (!element) return <>{children}</>;\n return element as React.ReactElement;\n}\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport { LRUCache } from \"@veryfront/utils/lru-wrapper.ts\";\nimport React from \"react\";\nimport { MDX_RENDERER_MAX_ENTRIES, MDX_RENDERER_TTL_MS } from \"@veryfront/utils/constants/cache.ts\";\nimport { type ESMLoaderContext, loadModuleESM } from \"./esm-module-loader.ts\";\nimport {\n executeModule as _executeModule,\n selectComponent as _selectComponent,\n} from \"./module-executor.ts\";\nimport { type ParsedMDX, parseMDXCode } from \"./parser.ts\";\nimport type { MDXComponents, MDXFrontmatter, MDXGlobals, MDXModule } from \"./types.ts\";\n\nexport interface MDXRenderOptions {\n components?: MDXComponents;\n frontmatter?: MDXFrontmatter;\n globals?: MDXGlobals;\n extractLayout?: boolean;\n children?: React.ReactNode;\n}\n\nexport class MDXRenderer {\n private esmCacheDir?: string;\n private moduleCache: LRUCache<string, MDXModule> = new LRUCache({\n maxEntries: MDX_RENDERER_MAX_ENTRIES,\n ttlMs: MDX_RENDERER_TTL_MS,\n });\n\n constructor() {\n }\n\n async clearCache() {\n this.moduleCache.destroy();\n\n if (this.esmCacheDir) {\n try {\n const { getAdapter } = await import(\"@veryfront/platform/adapters/detect.ts\");\n const adapter = await getAdapter();\n await adapter.fs.remove(this.esmCacheDir, { recursive: true });\n } catch (_error) {\n void _error;\n }\n this.esmCacheDir = undefined;\n }\n }\n\n async loadModuleESM(compiledProgramCode: string): Promise<MDXModule> {\n const context: ESMLoaderContext = {\n esmCacheDir: this.esmCacheDir,\n moduleCache: this.moduleCache,\n };\n const result = await loadModuleESM(compiledProgramCode, context);\n this.esmCacheDir = context.esmCacheDir;\n return result;\n }\n\n render(\n _compiledCode: string,\n _options: MDXRenderOptions = {},\n ): React.ReactElement {\n logger.error(\n \"[MDX] Synchronous render() called but string-based factories are disabled for security. \" +\n \"Please use: await mdxRenderer.loadModuleESM(compiledCode) instead.\",\n );\n\n return React.createElement(\n \"div\",\n {\n style: {\n padding: \"1rem\",\n backgroundColor: \"#fff3cd\",\n border: \"1px solid #ffc107\",\n borderRadius: \"0.375rem\",\n color: \"#856404\",\n },\n },\n React.createElement(\"strong\", {}, \"Migration Required: \"),\n \"Synchronous render() is no longer supported for security reasons. \",\n React.createElement(\"br\"),\n \"Please update to: \",\n React.createElement(\"code\", {}, \"await mdxRenderer.loadModuleESM(compiledCode)\"),\n );\n }\n\n private parseMDXCode(compiledCode: string): ParsedMDX {\n return parseMDXCode(compiledCode);\n }\n}\n\nlet _mdxRendererInstance: MDXRenderer | undefined;\n\nfunction getMDXRendererInstance(): MDXRenderer {\n if (!_mdxRendererInstance) {\n _mdxRendererInstance = new MDXRenderer();\n }\n return _mdxRendererInstance;\n}\n\nexport const mdxRenderer = new Proxy({} as MDXRenderer, {\n get(_target, prop) {\n const instance = getMDXRendererInstance();\n const value = instance[prop as keyof MDXRenderer];\n if (typeof value === \"function\") {\n return value.bind(instance);\n }\n return value;\n },\n set(_target, prop, value) {\n const instance = getMDXRendererInstance();\n (instance as any)[prop] = value;\n return true;\n },\n has(_target, prop) {\n const instance = getMDXRendererInstance();\n return prop in instance;\n },\n ownKeys(_target) {\n const instance = getMDXRendererInstance();\n return Reflect.ownKeys(instance);\n },\n getOwnPropertyDescriptor(_target, prop) {\n const instance = getMDXRendererInstance();\n return Reflect.getOwnPropertyDescriptor(instance, prop);\n },\n});\n\nexport async function clearMDXRendererCache() {\n await getMDXRendererInstance().clearCache();\n}\n\nexport {\n MDXCacheAdapter,\n type MDXCacheAdapterOptions,\n type MDXCompilationResult,\n} from \"./mdx-cache-adapter.ts\";\n", "import { LRUCacheAdapter } from \"./cache/stores/memory/lru-cache-adapter.ts\";\nimport type { LRUCacheOptions } from \"./cache/stores/memory/types.ts\";\nimport { DEFAULT_LRU_MAX_ENTRIES } from \"@veryfront/utils\";\nimport { getEnv } from \"../../platform/compat/process.ts\";\n\nexport interface LRUOptions {\n maxEntries?: number;\n ttlMs?: number;\n cleanupIntervalMs?: number;\n}\n\nexport class LRUCache<K, V> {\n private adapter: LRUCacheAdapter;\n private cleanupTimer?: ReturnType<typeof setInterval>;\n private cleanupIntervalMs: number;\n private ttlMs?: number;\n\n constructor(options: LRUOptions = {}) {\n const adapterOptions: LRUCacheOptions = {\n maxEntries: options.maxEntries ?? DEFAULT_LRU_MAX_ENTRIES,\n ttlMs: options.ttlMs,\n };\n\n this.adapter = new LRUCacheAdapter(adapterOptions);\n this.ttlMs = options.ttlMs;\n this.cleanupIntervalMs = options.cleanupIntervalMs ?? 60000;\n\n if (this.ttlMs && this.ttlMs > 0) {\n this.startPeriodicCleanup();\n }\n }\n\n private startPeriodicCleanup(): void {\n if (shouldDisableInterval()) {\n return;\n }\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n }\n\n const timer = setInterval(() => {\n this.adapter.cleanupExpired();\n }, this.cleanupIntervalMs);\n this.cleanupTimer = timer;\n }\n\n private toStringKey(key: K): string {\n if (typeof key === \"string\") {\n return key;\n }\n return String(key);\n }\n\n get size(): number {\n return this.adapter.getStats().entries;\n }\n\n has(key: K): boolean {\n return this.adapter.get(this.toStringKey(key)) !== undefined;\n }\n\n get(key: K): V | undefined {\n return this.adapter.get<V>(this.toStringKey(key));\n }\n\n set(key: K, value: V): void {\n this.adapter.set(this.toStringKey(key), value);\n }\n\n delete(key: K): boolean {\n const stringKey = this.toStringKey(key);\n const had = this.adapter.get(stringKey) !== undefined;\n this.adapter.delete(stringKey);\n return had;\n }\n\n clear(): void {\n this.adapter.clear();\n }\n\n cleanup(): void {\n this.adapter.cleanupExpired();\n }\n\n destroy(): void {\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = undefined;\n }\n\n this.adapter.clear();\n }\n\n keys(): IterableIterator<K> {\n return this.adapter.keys() as IterableIterator<K>;\n }\n}\n\nfunction shouldDisableInterval(): boolean {\n if ((globalThis as Record<string, unknown>).__vfDisableLruInterval === true) {\n return true;\n }\n try {\n return getEnv(\"VF_DISABLE_LRU_INTERVAL\") === \"1\";\n } catch {\n return false;\n }\n}\n", "import type { CacheAdapter, LRUCacheOptions, LRUCacheStats, LRUEntry } from \"./types.ts\";\nimport { LRUNode } from \"./lru-node.ts\";\nimport { LRUListManager } from \"./lru-list-manager.ts\";\nimport { EvictionManager } from \"../../eviction/eviction-manager.ts\";\nimport { EntryManager } from \"./entry-manager.ts\";\n\nfunction defaultSizeEstimator(value: unknown): number {\n if (value === null || value === undefined) return 0;\n if (typeof value === \"string\") return value.length * 2;\n if (typeof value === \"number\" || typeof value === \"bigint\") return 8;\n if (typeof value === \"boolean\") return 4;\n if (value instanceof Uint8Array || ArrayBuffer.isView(value)) return value.byteLength;\n if (value instanceof ArrayBuffer) return value.byteLength;\n if (typeof Blob !== \"undefined\" && value instanceof Blob) return value.size;\n\n try {\n return JSON.stringify(value).length * 2;\n } catch {\n return 0;\n }\n}\n\nexport class LRUCacheAdapter implements CacheAdapter {\n private readonly store = new Map<string, LRUNode<unknown>>();\n private readonly tagIndex = new Map<string, Set<string>>();\n private readonly listManager = new LRUListManager<unknown>();\n private readonly evictionManager: EvictionManager<LRUEntry<unknown>>;\n private readonly entryManager: EntryManager;\n private currentSize = 0;\n private readonly maxEntries: number;\n private readonly maxSizeBytes: number;\n private readonly defaultTtlMs?: number;\n private readonly onEvict?: (key: string, value: unknown) => void;\n\n constructor(options: LRUCacheOptions = {}) {\n this.maxEntries = options.maxEntries || 1000;\n this.maxSizeBytes = options.maxSizeBytes || 50 * 1024 * 1024; // 50MB default\n this.defaultTtlMs = options.ttlMs;\n this.onEvict = options.onEvict;\n\n const estimateSizeOf = options.estimateSizeOf || defaultSizeEstimator;\n\n this.evictionManager = new EvictionManager({\n onEvict: this.onEvict,\n loggerContext: \"MemoryCache\",\n });\n this.entryManager = new EntryManager(estimateSizeOf);\n }\n\n get<T>(key: string): T | undefined {\n const node = this.store.get(key);\n if (!node) return undefined;\n\n if (this.evictionManager.isExpired(node.entry)) {\n this.delete(key);\n return undefined;\n }\n\n this.listManager.moveToFront(node);\n return node.entry.value as T;\n }\n\n set<T>(key: string, value: T, ttlMs?: number, tags?: string[]): void {\n const existingNode = this.store.get(key);\n\n if (existingNode) {\n const sizeDelta = this.entryManager.updateExistingEntry(\n existingNode,\n value,\n ttlMs,\n tags,\n this.defaultTtlMs,\n this.listManager,\n this.tagIndex,\n key,\n );\n this.currentSize += sizeDelta;\n } else {\n const [_node, size] = this.entryManager.createNewEntry(\n key,\n value,\n ttlMs,\n tags,\n this.defaultTtlMs,\n this.listManager,\n this.store,\n );\n this.currentSize += size;\n }\n\n if (tags && tags.length > 0) {\n this.entryManager.updateTagIndex(tags, key, this.tagIndex);\n }\n\n this.currentSize = this.evictionManager.enforceMemoryLimits(\n this.listManager,\n this.store,\n this.tagIndex,\n this.currentSize,\n this.maxEntries,\n this.maxSizeBytes,\n );\n }\n\n delete(key: string): void {\n const node = this.store.get(key);\n if (!node) return;\n\n this.listManager.removeNode(node);\n this.store.delete(key);\n this.currentSize -= node.entry.size;\n\n if (node.entry.tags) {\n this.entryManager.cleanupTags(node.entry.tags, key, this.tagIndex);\n }\n\n if (this.onEvict) {\n this.onEvict(key, node.entry.value);\n }\n }\n\n invalidateTag(tag: string): number {\n const set = this.tagIndex.get(tag);\n if (!set) return 0;\n\n let count = 0;\n for (const key of set) {\n this.delete(key);\n count++;\n }\n this.tagIndex.delete(tag);\n return count;\n }\n\n clear(): void {\n if (this.onEvict) {\n for (const [key, node] of this.store) {\n this.onEvict(key, node.entry.value);\n }\n }\n\n this.store.clear();\n this.tagIndex.clear();\n this.listManager.clear();\n this.currentSize = 0;\n }\n\n getStats(): LRUCacheStats {\n return {\n entries: this.store.size,\n sizeBytes: this.currentSize,\n maxEntries: this.maxEntries,\n maxSizeBytes: this.maxSizeBytes,\n tags: this.tagIndex.size,\n };\n }\n\n cleanupExpired(): number {\n const now = Date.now();\n let cleaned = 0;\n\n for (const [key, node] of this.store) {\n if (typeof node.entry.expiry === \"number\" && now > node.entry.expiry) {\n this.delete(key);\n cleaned++;\n }\n }\n\n return cleaned;\n }\n\n keys(): IterableIterator<string> {\n return this.store.keys();\n }\n\n has(key: string): boolean {\n return this.get(key) !== undefined;\n }\n}\n", "import type { LRUNode } from \"./lru-node.ts\";\n\nexport class LRUListManager<T> {\n private head: LRUNode<T> | null = null;\n private tail: LRUNode<T> | null = null;\n\n getHead(): LRUNode<T> | null {\n return this.head;\n }\n\n getTail(): LRUNode<T> | null {\n return this.tail;\n }\n\n moveToFront(node: LRUNode<T>): void {\n if (node === this.head) {\n node.entry.lastAccessed = Date.now();\n return;\n }\n\n this.removeNode(node);\n\n this.addToFront(node);\n }\n\n addToFront(node: LRUNode<T>): void {\n node.next = this.head;\n node.prev = null;\n if (this.head) {\n this.head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n node.entry.lastAccessed = Date.now();\n }\n\n removeNode(node: LRUNode<T>): void {\n if (node.prev) {\n node.prev.next = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n }\n if (node === this.head) {\n this.head = node.next;\n }\n if (node === this.tail) {\n this.tail = node.prev;\n }\n }\n\n clear(): void {\n this.head = null;\n this.tail = null;\n }\n}\n", "export interface EvictableEntry {\n size: number;\n timestamp?: number;\n expiry?: number;\n value?: unknown;\n tags?: string[];\n}\n\nexport interface LRUTrackerInterface {\n getLRU(): string | undefined;\n remove(key: string): void;\n}\n\nexport interface LRUNodeInterface<T> {\n key: string;\n entry: T;\n prev: LRUNodeInterface<T> | null;\n next: LRUNodeInterface<T> | null;\n}\n\nexport interface LRUListManagerInterface<T> {\n getTail(): LRUNodeInterface<T> | null;\n removeNode(node: LRUNodeInterface<T>): void;\n}\n\nexport interface EvictionManagerOptions {\n onEvict?: (key: string, value: unknown) => void;\n loggerContext?: string;\n}\n\nexport class EvictionManager<TEntry extends EvictableEntry> {\n private readonly onEvict?: (key: string, value: unknown) => void;\n\n constructor(options: EvictionManagerOptions = {}) {\n this.onEvict = options.onEvict;\n }\n\n evictIfNeeded(\n cache: Map<string, TEntry>,\n lruTracker: LRUTrackerInterface,\n newEntrySize: number,\n maxSize: number,\n maxMemory: number,\n ): void {\n while (cache.size >= maxSize) {\n this.evictLRU(cache, lruTracker);\n }\n\n let memoryUsed = Array.from(cache.values()).reduce((sum, entry) => sum + entry.size, 0);\n\n while (memoryUsed + newEntrySize > maxMemory && cache.size > 0) {\n const evictedSize = this.evictLRU(cache, lruTracker);\n memoryUsed -= evictedSize;\n }\n }\n\n evictLRU(cache: Map<string, TEntry>, lruTracker: LRUTrackerInterface): number {\n const keyToEvict = lruTracker.getLRU();\n\n if (!keyToEvict) {\n return 0;\n }\n\n const entry = cache.get(keyToEvict);\n const size = entry?.size || 0;\n const value = entry?.value;\n\n cache.delete(keyToEvict);\n lruTracker.remove(keyToEvict);\n\n if (this.onEvict && entry) {\n this.onEvict(keyToEvict, value);\n }\n\n return size;\n }\n\n evictLRUFromList<T extends TEntry>(\n listManager: LRUListManagerInterface<T>,\n store: Map<string, LRUNodeInterface<T>>,\n tagIndex: Map<string, Set<string>>,\n currentSize: number,\n ): number {\n const tail = listManager.getTail();\n if (!tail) return currentSize;\n\n const node = tail;\n listManager.removeNode(node);\n store.delete(node.key);\n const newSize = currentSize - node.entry.size;\n\n if (node.entry.tags) {\n this.cleanupTags(node.entry.tags, node.key, tagIndex);\n }\n\n if (this.onEvict) {\n this.onEvict(node.key, node.entry.value);\n }\n\n return newSize;\n }\n\n enforceMemoryLimits<T extends TEntry>(\n listManager: LRUListManagerInterface<T>,\n store: Map<string, LRUNodeInterface<T>>,\n tagIndex: Map<string, Set<string>>,\n currentSize: number,\n maxEntries: number,\n maxSizeBytes: number,\n ): number {\n let size = currentSize;\n while ((store.size > maxEntries || size > maxSizeBytes) && listManager.getTail()) {\n size = this.evictLRUFromList(listManager, store, tagIndex, size);\n }\n return size;\n }\n\n private cleanupTags(tags: string[], key: string, tagIndex: Map<string, Set<string>>): void {\n for (const tag of tags) {\n const set = tagIndex.get(tag);\n if (set) {\n set.delete(key);\n if (set.size === 0) {\n tagIndex.delete(tag);\n }\n }\n }\n }\n\n evictExpired(cache: Map<string, TEntry>, lruTracker: LRUTrackerInterface, ttl: number): number {\n const now = Date.now();\n let evicted = 0;\n\n for (const [key, entry] of cache.entries()) {\n if (this.isExpired(entry, ttl, now)) {\n cache.delete(key);\n lruTracker.remove(key);\n evicted++;\n }\n }\n\n return evicted;\n }\n\n isExpired(entry: TEntry, ttl?: number, now: number = Date.now()): boolean {\n if (typeof entry.expiry === \"number\") {\n return now > entry.expiry;\n }\n\n if (typeof entry.timestamp === \"number\" && typeof ttl === \"number\") {\n const age = now - entry.timestamp;\n return age > ttl;\n }\n\n return false;\n }\n}\n", "import type { LRUEntry } from \"./types.ts\";\nimport { LRUNode } from \"./lru-node.ts\";\nimport type { LRUListManager } from \"./lru-list-manager.ts\";\n\nexport class EntryManager {\n constructor(\n private readonly estimateSizeOf: (value: unknown) => number,\n ) {}\n\n updateExistingEntry<T>(\n node: LRUNode<unknown>,\n value: T,\n ttlMs: number | undefined,\n tags: string[] | undefined,\n defaultTtlMs: number | undefined,\n listManager: LRUListManager<unknown>,\n tagIndex: Map<string, Set<string>>,\n key: string,\n ): number {\n const oldSize = node.entry.size;\n const newSize = this.estimateSizeOf(value);\n const expiry = this.calculateExpiry(ttlMs, defaultTtlMs);\n\n if (node.entry.tags) {\n this.cleanupTags(node.entry.tags, key, tagIndex);\n }\n\n node.entry = {\n value,\n size: newSize,\n expiry,\n tags,\n lastAccessed: Date.now(),\n };\n\n listManager.moveToFront(node);\n\n return newSize - oldSize;\n }\n\n createNewEntry<T>(\n key: string,\n value: T,\n ttlMs: number | undefined,\n tags: string[] | undefined,\n defaultTtlMs: number | undefined,\n listManager: LRUListManager<unknown>,\n store: Map<string, LRUNode<unknown>>,\n ): [LRUNode<unknown>, number] {\n const size = this.estimateSizeOf(value);\n const expiry = this.calculateExpiry(ttlMs, defaultTtlMs);\n\n const entry: LRUEntry<unknown> = {\n value,\n size,\n expiry,\n tags,\n lastAccessed: Date.now(),\n };\n\n const node = new LRUNode(key, entry);\n store.set(key, node);\n listManager.addToFront(node);\n\n return [node, size];\n }\n\n updateTagIndex(\n tags: string[],\n key: string,\n tagIndex: Map<string, Set<string>>,\n ): void {\n for (const tag of tags) {\n if (!tagIndex.has(tag)) {\n tagIndex.set(tag, new Set());\n }\n tagIndex.get(tag)?.add(key);\n }\n }\n\n cleanupTags(\n tags: string[],\n key: string,\n tagIndex: Map<string, Set<string>>,\n ): void {\n for (const tag of tags) {\n const set = tagIndex.get(tag);\n if (set) {\n set.delete(key);\n if (set.size === 0) {\n tagIndex.delete(tag);\n }\n }\n }\n }\n\n private calculateExpiry(\n ttlMs: number | undefined,\n defaultTtlMs: number | undefined,\n ): number | undefined {\n if (typeof ttlMs === \"number\") {\n return Date.now() + ttlMs;\n }\n if (defaultTtlMs) {\n return Date.now() + defaultTtlMs;\n }\n return undefined;\n }\n}\n", "import type { LRUEntry } from \"./types.ts\";\n\nexport class LRUNode<T> {\n constructor(\n public key: string,\n public entry: LRUEntry<T>,\n public prev: LRUNode<T> | null = null,\n public next: LRUNode<T> | null = null,\n ) {}\n}\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport { LRUCache } from \"@veryfront/utils/lru-wrapper.ts\";\nimport React from \"react\";\nimport { getCacheNamespace } from \"@veryfront/utils/cache/keys/namespace.ts\";\nimport {\n getDefaultImportMap,\n transformImportsWithMap,\n} from \"@veryfront/modules/import-map/index.ts\";\nimport type { MDXFrontmatter, MDXModule } from \"./types.ts\";\nimport { join } from \"https://deno.land/std@0.220.0/path/mod.ts\";\nimport { isDeno, isNode } from \"../../../platform/compat/runtime.ts\";\nimport { cwd } from \"../../../platform/compat/process.ts\";\n\n// True Node.js runtime (not Deno with Node.js compat)\nconst IS_TRUE_NODE = isNode && !isDeno;\n\n// Constants\nconst LOG_PREFIX_MDX_LOADER = \"[mdx-loader]\";\nconst LOG_PREFIX_MDX_RENDERER = \"[mdx-renderer]\";\nconst JSX_IMPORT_PATTERN = /import\\s+([^'\"]+)\\s+from\\s+['\"]file:\\/\\/([^'\"]+\\.(jsx|tsx))['\"];?/g;\nconst REACT_IMPORT_PATTERN = /import\\s+.*React.*\\s+from\\s+['\"]react['\"]/;\nconst HTTP_IMPORT_PATTERN = /['\"]https?:\\/\\/[^'\"]+['\"]/;\nconst ESBUILD_JSX_FACTORY = \"React.createElement\";\nconst ESBUILD_JSX_FRAGMENT = \"React.Fragment\";\nconst HTTP_MODULE_FETCH_TIMEOUT_MS = 30000;\n\n// Cache for resolved react package paths (Node.js only)\nconst _resolvedPaths: Record<string, string | null> = {};\n\n/**\n * Resolve a Node.js package path using require.resolve\n * Returns null if resolution fails\n */\nasync function resolveNodePackage(packageSpec: string): Promise<string | null> {\n if (!IS_TRUE_NODE) return null;\n if (packageSpec in _resolvedPaths) return _resolvedPaths[packageSpec]!;\n\n try {\n // Use Node.js createRequire to resolve the package from THIS file's location\n // This ensures react is found from veryfront's node_modules, not the project's\n const { createRequire } = await import(\"node:module\");\n const require = createRequire(import.meta.url);\n const resolved = require.resolve(packageSpec);\n _resolvedPaths[packageSpec] = resolved;\n return resolved;\n } catch {\n _resolvedPaths[packageSpec] = null;\n return null;\n }\n}\n\n/**\n * Transform react imports to absolute file:// paths for Node.js.\n * This is needed because MDX modules are cached in arbitrary directories\n * (like temp dirs) where Node.js cannot resolve bare 'react' imports.\n */\nasync function transformReactImportsToAbsolute(code: string): Promise<string> {\n if (!IS_TRUE_NODE) return code;\n\n // Resolve the actual react package paths\n const reactPath = await resolveNodePackage(\"react\");\n const reactJsxPath = await resolveNodePackage(\"react/jsx-runtime\");\n const reactJsxDevPath = await resolveNodePackage(\"react/jsx-dev-runtime\");\n const reactDomPath = await resolveNodePackage(\"react-dom\");\n\n let result = code;\n\n // Replace bare react imports with absolute file:// paths\n if (reactJsxPath) {\n result = result.replace(\n /from\\s+['\"]react\\/jsx-runtime['\"]/g,\n `from \"file://${reactJsxPath}\"`,\n );\n }\n if (reactJsxDevPath) {\n result = result.replace(\n /from\\s+['\"]react\\/jsx-dev-runtime['\"]/g,\n `from \"file://${reactJsxDevPath}\"`,\n );\n }\n if (reactDomPath) {\n result = result.replace(\n /from\\s+['\"]react-dom['\"]/g,\n `from \"file://${reactDomPath}\"`,\n );\n }\n if (reactPath) {\n result = result.replace(\n /from\\s+['\"]react['\"]/g,\n `from \"file://${reactPath}\"`,\n );\n }\n\n return result;\n}\n\nexport interface ESMLoaderContext {\n esmCacheDir?: string;\n moduleCache: LRUCache<string, MDXModule>;\n}\n\nexport function hashString(input: string): string {\n const HASH_SEED_FNV1A = 2166136261;\n let hash = HASH_SEED_FNV1A >>> 0; // FNV-1a\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i);\n hash = Math.imul(hash, 16777619);\n }\n return (hash >>> 0).toString(16);\n}\n\n/**\n * Creates an esbuild plugin to fetch and bundle HTTP/HTTPS imports.\n * This allows Node.js to use remote imports via esbuild bundling.\n */\nfunction createHTTPPluginForMDX(): import(\"esbuild\").Plugin {\n return {\n name: \"vf-mdx-http-fetch\",\n setup(build) {\n // Intercept HTTP/HTTPS imports\n build.onResolve({ filter: /^(http|https):\\/\\// }, (args) => ({\n path: args.path,\n namespace: \"http-url\",\n }));\n\n // Resolve relative imports within HTTP modules\n build.onResolve({ filter: /.*/, namespace: \"http-url\" }, (args) => {\n if (args.path.startsWith(\"http://\") || args.path.startsWith(\"https://\")) {\n return { path: args.path, namespace: \"http-url\" };\n }\n try {\n const resolved = new URL(args.path, args.importer).toString();\n return { path: resolved, namespace: \"http-url\" };\n } catch {\n return undefined;\n }\n });\n\n // Fetch and return HTTP module contents\n build.onLoad({ filter: /.*/, namespace: \"http-url\" }, async (args) => {\n let requestUrl = args.path;\n try {\n const u = new URL(args.path);\n // Optimize esm.sh URLs\n if (u.hostname === \"esm.sh\") {\n if (u.pathname.includes(\"/denonext/\")) {\n u.pathname = u.pathname.replace(\"/denonext/\", \"/\");\n }\n u.searchParams.set(\"target\", \"es2020\");\n u.searchParams.set(\"bundle\", \"true\");\n requestUrl = u.toString();\n }\n } catch {\n // Use original URL if parsing fails\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), HTTP_MODULE_FETCH_TIMEOUT_MS);\n try {\n const res = await fetch(requestUrl, {\n headers: { \"user-agent\": \"Mozilla/5.0 Veryfront/1.0\" },\n signal: controller.signal,\n });\n clearTimeout(timeout);\n\n if (!res.ok) {\n return {\n errors: [{ text: `Failed to fetch ${args.path}: ${res.status}` }],\n };\n }\n\n const text = await res.text();\n return { contents: text, loader: \"js\" };\n } catch (e) {\n clearTimeout(timeout);\n return {\n errors: [{\n text: `Failed to fetch ${args.path}: ${e instanceof Error ? e.message : String(e)}`,\n }],\n };\n }\n });\n },\n };\n}\n\nexport async function loadModuleESM(\n compiledProgramCode: string,\n context: ESMLoaderContext,\n): Promise<MDXModule> {\n try {\n const { getAdapter } = await import(\"@veryfront/platform/adapters/detect.ts\");\n const adapter = await getAdapter();\n\n if (!context.esmCacheDir) {\n if (IS_TRUE_NODE) {\n // On Node.js, use a cache dir inside the project so module resolution works\n // Node.js resolves bare imports relative to the file location\n const projectCacheDir = join(\n cwd(),\n \"node_modules\",\n \".cache\",\n \"veryfront-mdx\",\n );\n await adapter.fs.mkdir(projectCacheDir, { recursive: true });\n context.esmCacheDir = projectCacheDir;\n } else {\n // On Deno, system temp dir is fine\n context.esmCacheDir = await adapter.fs.makeTempDir(\"veryfront-mdx-esm-\");\n }\n }\n\n // Transform imports with import map\n let rewritten: string;\n if (IS_TRUE_NODE) {\n // On Node.js, transform react imports to absolute file:// paths\n // This is needed because MDX modules are cached in temp directories\n // where Node.js cannot resolve bare imports\n rewritten = await transformReactImportsToAbsolute(compiledProgramCode);\n } else {\n // On Deno/browser, transform to esm.sh URLs\n rewritten = transformImportsWithMap(\n compiledProgramCode,\n getDefaultImportMap(),\n undefined,\n { resolveBare: true },\n );\n }\n\n // Transform JSX/TSX imports using esbuild\n // This handles user components that use JSX syntax\n let jsxMatch;\n const jsxTransforms: Array<{ original: string; transformed: string }> = [];\n\n // Import esbuild once outside the loop for better performance\n const { transform } = await import(\"esbuild/mod.js\");\n\n while ((jsxMatch = JSX_IMPORT_PATTERN.exec(rewritten)) !== null) {\n const [fullMatch, importClause, filePath, ext] = jsxMatch;\n\n if (!filePath) {\n logger.warn(`${LOG_PREFIX_MDX_LOADER} Skipping JSX import with undefined file path`, {\n fullMatch,\n });\n continue;\n }\n\n try {\n // Read the JSX file (filePath already includes full path)\n const jsxCode = await adapter.fs.readFile(filePath);\n\n // Use esbuild to transform JSX to JavaScript\n const result = await transform(jsxCode as string, {\n loader: ext === \"tsx\" ? \"tsx\" : \"jsx\",\n jsx: \"transform\",\n jsxFactory: ESBUILD_JSX_FACTORY,\n jsxFragment: ESBUILD_JSX_FRAGMENT,\n format: \"esm\",\n });\n\n let transformed = result.code;\n\n // Add React import if not present\n if (!REACT_IMPORT_PATTERN.test(transformed)) {\n transformed = `import React from 'react';\\n${transformed}`;\n }\n\n // Write transformed code to temp file\n const transformedFileName = `jsx-${hashString(filePath)}.mjs`;\n const transformedPath = join(context.esmCacheDir!, transformedFileName);\n await adapter.fs.writeFile(transformedPath, transformed);\n\n jsxTransforms.push({\n original: fullMatch,\n transformed: `import ${importClause} from \"file://${transformedPath}\";`,\n });\n\n logger.info(\n `${LOG_PREFIX_MDX_LOADER} Transformed JSX import using esbuild: ${filePath} -> ${transformedPath}`,\n );\n } catch (error) {\n logger.warn(`${LOG_PREFIX_MDX_LOADER} Failed to transform JSX import: ${filePath}`, error);\n // Keep original import if transformation fails\n }\n }\n\n // Apply all JSX transformations\n for (const { original, transformed } of jsxTransforms) {\n rewritten = rewritten.replace(original, transformed);\n }\n\n if (/\\bconst\\s+MDXLayout\\b/.test(rewritten) && !/export\\s+\\{[^}]*MDXLayout/.test(rewritten)) {\n rewritten += \"\\nexport { MDXLayout as __vfLayout };\\n\";\n }\n\n // On Node.js, bundle HTTP imports via esbuild instead of trying to import them directly\n if (IS_TRUE_NODE && HTTP_IMPORT_PATTERN.test(rewritten)) {\n logger.info(`${LOG_PREFIX_MDX_LOADER} Bundling HTTP imports via esbuild for Node.js`);\n const { build } = await import(\"esbuild/mod.js\");\n\n // Write temp source file for esbuild to process\n const tempSourcePath = join(context.esmCacheDir!, `temp-${hashString(rewritten)}.mjs`);\n await adapter.fs.writeFile(tempSourcePath, rewritten);\n\n try {\n const result = await build({\n entryPoints: [tempSourcePath],\n bundle: true,\n format: \"esm\",\n platform: \"neutral\",\n target: \"es2020\",\n write: false,\n plugins: [createHTTPPluginForMDX()],\n // Mark npm packages as external so they're not bundled\n external: [\"react\", \"react-dom\", \"react/jsx-runtime\", \"react/jsx-dev-runtime\"],\n });\n\n const bundledCode = result.outputFiles?.[0]?.text;\n if (bundledCode) {\n rewritten = bundledCode;\n logger.info(`${LOG_PREFIX_MDX_LOADER} Successfully bundled HTTP imports`);\n }\n } catch (bundleError) {\n logger.warn(\n `${LOG_PREFIX_MDX_LOADER} Failed to bundle HTTP imports, falling back to original code`,\n bundleError,\n );\n // Keep original code if bundling fails\n } finally {\n // Clean up temp file (use unlink since rm may not exist on all adapters)\n try {\n // deno-lint-ignore no-explicit-any\n const fsAny = adapter.fs as any;\n if (typeof fsAny.rm === \"function\") {\n await fsAny.rm(tempSourcePath);\n } else if (typeof fsAny.unlink === \"function\") {\n await fsAny.unlink(tempSourcePath);\n }\n // If neither exists, just leave the temp file (it's in a cache dir anyway)\n } catch {\n // Ignore cleanup errors\n }\n }\n }\n\n const codeHash = hashString(rewritten);\n const namespace = getCacheNamespace() || \"default\";\n const compositeKey = `${namespace}:${codeHash}`;\n\n const cached = context.moduleCache.get(compositeKey);\n if (cached) return cached as MDXModule;\n\n const nsDir = join(context.esmCacheDir, namespace);\n try {\n await adapter.fs.mkdir(nsDir, { recursive: true });\n } catch (e) {\n logger.debug(\n `${LOG_PREFIX_MDX_RENDERER} mkdir nsDir failed`,\n e instanceof Error ? e : String(e),\n );\n }\n\n const filePath = join(nsDir, `${codeHash}.mjs`);\n try {\n const stat = await adapter.fs.stat(filePath);\n if (!stat?.isFile) {\n await adapter.fs.writeFile(filePath, rewritten);\n }\n } catch (error) {\n logger.debug(`${LOG_PREFIX_MDX_RENDERER} Writing temporary MDX module file:`, error);\n await adapter.fs.writeFile(filePath, rewritten);\n }\n\n logger.info(`${LOG_PREFIX_MDX_RENDERER} Loading MDX module`, {\n filePath,\n codePreview: rewritten.substring(0, 300),\n });\n const mod = await import(`file://${filePath}?v=${codeHash}`) as Record<string, unknown> & {\n __vfLayout?: React.ComponentType;\n };\n\n const result: MDXModule = {\n ...mod,\n default: mod?.default as React.ComponentType<unknown> | undefined,\n MDXContent: mod?.MDXContent as React.ComponentType<unknown> | undefined,\n frontmatter: mod?.frontmatter as MDXFrontmatter | undefined,\n headings: mod?.headings as Array<{ text: string; level: number }> | undefined,\n title: mod?.title as string | undefined,\n description: mod?.description as string | undefined,\n layout: mod?.layout as string | boolean | React.ComponentType | undefined,\n MDXLayout: (mod?.MDXLayout || mod?.__vfLayout) as React.ComponentType<unknown> | undefined,\n MainLayout: mod?.MainLayout as React.ComponentType<unknown> | undefined,\n };\n context.moduleCache.set(compositeKey, result);\n return result;\n } catch (error) {\n logger.error(`${LOG_PREFIX_MDX_RENDERER} MDX ESM load failed:`, error);\n throw error;\n }\n}\n", "import { serverLogger as logger } from \"../../logger/logger.ts\";\nimport { getEnvironmentVariable } from \"../../logger/env.ts\";\nimport type { GlobalWithVeryFrontCache } from \"@veryfront/types/global-guards.ts\";\n\nlet cacheNamespace: string | undefined =\n (globalThis as GlobalWithVeryFrontCache).__VF_CACHE_NAMESPACE__ ||\n getEnvironmentVariable(\"VF_CACHE_NAMESPACE\");\n\nexport function setCacheNamespace(namespace?: string): void {\n cacheNamespace = namespace || undefined;\n try {\n (globalThis as GlobalWithVeryFrontCache).__VF_CACHE_NAMESPACE__ = cacheNamespace;\n } catch (e) {\n logger.debug(\"[cache] setCacheNamespace failed\", e);\n }\n}\n\nexport function getCacheNamespace(): string | undefined {\n return cacheNamespace;\n}\n", "export { loadImportMap } from \"./loader.ts\";\nexport { getDefaultImportMap } from \"./default-import-map.ts\";\nexport { resolveImport } from \"./resolver.ts\";\nexport { transformImportsWithMap } from \"./transformer.ts\";\nexport { mergeImportMaps } from \"./merger.ts\";\n\nexport type { ImportMapConfig, TransformOptions } from \"./types.ts\";\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport { dirname, join } from \"std/path/mod.ts\";\nimport type { RuntimeAdapter } from \"@veryfront/platform/adapters/base.ts\";\nimport { getConfig } from \"@veryfront/config\";\nimport type { ImportMapConfig } from \"./types.ts\";\nimport { getDefaultImportMap } from \"./default-import-map.ts\";\n\nexport async function loadImportMap(\n startPath: string,\n adapter?: RuntimeAdapter,\n): Promise<ImportMapConfig> {\n let runtimeAdapter = adapter;\n if (!runtimeAdapter) {\n const { getAdapter } = await import(\"@veryfront/platform/adapters/detect.ts\");\n runtimeAdapter = await getAdapter();\n }\n\n try {\n const cfg = await getConfig(startPath, runtimeAdapter!);\n if (cfg?.resolve?.importMap && typeof cfg.resolve.importMap === \"object\") {\n return {\n imports: cfg.resolve.importMap.imports ?? {},\n scopes: cfg.resolve.importMap.scopes ?? {},\n };\n }\n } catch {\n // Config not found or invalid, fall through to file-based discovery\n }\n\n let currentPath = startPath;\n\n while (currentPath !== \"/\" && currentPath !== \"\") {\n const denoJsonPath = join(currentPath, \"deno.json\");\n\n try {\n const content = await runtimeAdapter!.fs.readFile(denoJsonPath);\n const config = JSON.parse(content);\n\n if (config.imports || config.scopes) {\n logger.debug(`Loaded import map from ${denoJsonPath}`);\n return {\n imports: config.imports ?? {},\n scopes: config.scopes ?? {},\n };\n }\n } catch {\n // deno.json not found in this directory, continue searching\n }\n\n const parent = dirname(currentPath);\n if (parent === currentPath) break; // Reached root\n currentPath = parent;\n }\n\n return getDefaultImportMap();\n}\n", "import { getReactImportMap, REACT_DEFAULT_VERSION } from \"@veryfront/utils\";\nimport type { ImportMapConfig } from \"./types.ts\";\n\nexport function getDefaultImportMap(): ImportMapConfig {\n const reactVersion = REACT_DEFAULT_VERSION;\n\n const importMap = getReactImportMap(reactVersion);\n importMap[\"react/\"] = `https://esm.sh/react@${reactVersion}/`;\n\n return { imports: importMap };\n}\n", "import type { ImportMapConfig } from \"./types.ts\";\n\nexport function resolveImport(\n specifier: string,\n importMap: ImportMapConfig,\n scope?: string,\n): string {\n if (scope && importMap.scopes?.[scope]?.[specifier]) {\n return importMap.scopes[scope][specifier];\n }\n\n if (importMap.imports?.[specifier]) {\n return importMap.imports[specifier];\n }\n\n if (\n specifier.endsWith(\".js\") || specifier.endsWith(\".mjs\") ||\n specifier.endsWith(\".cjs\")\n ) {\n const base = specifier.replace(/\\.(m|c)?js$/, \"\");\n if (importMap.imports?.[base]) {\n return importMap.imports[base];\n }\n }\n\n if (importMap.imports) {\n for (const [key, value] of Object.entries(importMap.imports)) {\n if (key.endsWith(\"/\") && specifier.startsWith(key)) {\n return value + specifier.slice(key.length);\n }\n }\n }\n\n return specifier;\n}\n", "import type { ImportMapConfig, TransformOptions } from \"./types.ts\";\nimport { resolveImport } from \"./resolver.ts\";\n\nexport function transformImportsWithMap(\n code: string,\n importMap: ImportMapConfig,\n scope?: string,\n options?: TransformOptions,\n): string {\n let transformedCode = code;\n\n transformedCode = transformedCode.replace(\n /((?:import|export)\\s+(?:[\\w,{}\\s*]+\\s+from\\s+)?|export\\s+(?:\\*|\\{[^}]+\\})\\s+from\\s+)[\"']([^\"']+)[\"']/g,\n (_match, prefix, specifier) => {\n const isBare = !specifier.startsWith(\"http\") &&\n !specifier.startsWith(\"/\") &&\n !specifier.startsWith(\".\");\n if (isBare && !options?.resolveBare) {\n return `${prefix}\"${specifier}\"`;\n }\n const resolved = resolveImport(specifier, importMap, scope);\n return `${prefix}\"${resolved}\"`;\n },\n );\n\n transformedCode = transformedCode.replace(\n /from\\s+[\"']([^\"']+)[\"']/g,\n (match, specifier) => {\n const isBare = !specifier.startsWith(\"http\") &&\n !specifier.startsWith(\"/\") &&\n !specifier.startsWith(\".\");\n if (isBare && !options?.resolveBare) {\n return match;\n }\n const resolved = resolveImport(specifier, importMap, scope);\n return `from \"${resolved}\"`;\n },\n );\n\n transformedCode = transformedCode.replace(\n /import\\s*\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/g,\n (_match, specifier) => {\n const resolved = resolveImport(specifier, importMap, scope);\n return `import(\"${resolved}\")`;\n },\n );\n\n return transformedCode;\n}\n", "import type { ImportMapConfig } from \"./types.ts\";\n\nexport function mergeImportMaps(...maps: ImportMapConfig[]): ImportMapConfig {\n const merged: ImportMapConfig = {\n imports: {},\n scopes: {},\n };\n\n for (const map of maps) {\n if (map.imports) {\n Object.assign(merged.imports!, map.imports);\n }\n\n if (map.scopes) {\n for (const [scope, imports] of Object.entries(map.scopes)) {\n if (!merged.scopes![scope]) {\n merged.scopes![scope] = {};\n }\n Object.assign(merged.scopes![scope], imports);\n }\n }\n }\n\n return merged;\n}\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport type { MDXExports, MDXImportInfo, ParsedMDX } from \"./types.ts\";\nimport { extractFrontmatter, extractMetadata } from \"./module-loader/metadata-extractor.ts\";\n\nexport type { ParsedMDX };\n\nexport function parseMDXCode(compiledCode: string): ParsedMDX {\n logger.debug(\"Parsing MDX code, first 200 chars:\", compiledCode.substring(0, 200));\n const importRegex = /^\\s*import\\s+(?:{([^}]+)}|(\\w+))\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?\\s*$/gm;\n const imports = new Map<string, MDXImportInfo>();\n let match: RegExpExecArray | null;\n\n while ((match = importRegex.exec(compiledCode)) !== null) {\n if (match[1]) {\n const names = match[1].split(\",\").map((n: string) => n.trim());\n names.forEach((name: string) => {\n if (match?.[3]) {\n imports.set(name, { name, path: match[3], isDefault: false });\n }\n });\n } else if (match[2]) {\n if (match[2] && match[3]) {\n imports.set(match[2], {\n name: match[2],\n path: match[3],\n isDefault: true,\n });\n }\n }\n }\n\n const cleanedCode = compiledCode\n .replace(importRegex, \"\") // Remove top-level imports\n .replace(/^\\s*export\\s+\\{[\\s\\S]*?\\};?\\s*$/gm, \"\") // Remove named exports (including multi-line)\n .replace(/^\\s*export\\s+default\\s+function/gm, \"function\") // Convert default export function\n .replace(/^\\s*export\\s+default\\s+/gm, \"\") // Remove other default exports\n .replace(/^\\s*export\\s+const\\s+/gm, \"const \") // Convert export const to const\n .replace(/^\\s*export\\s+function\\s+/gm, \"function \") // Convert export function to function\n .replace(/^\\s*const\\s+React\\s*=.*?;?\\s*$/gm, \"\") // Remove React declarations\n .replace(/^\\s*import\\s+React\\s+from.*?;?\\s*$/gm, \"\") // Remove React imports\n .replace(/^\\s*const\\s+(Fragment|Fragment2)\\s*=.*?;?\\s*$/gm, \"\") // Remove Fragment declarations\n .replace(/^\\s*const\\s+(jsx|jsx2)\\s*=.*?;?\\s*$/gm, \"\") // Remove jsx declarations\n .replace(/^\\s*const\\s+(jsxs|jsxs2)\\s*=.*?;?\\s*$/gm, \"\"); // Remove jsxs declarations\n\n if (cleanedCode.includes(\"import React\")) {\n logger.warn(\"Import React still in cleaned code\");\n }\n if (cleanedCode.includes(\"const React\") || cleanedCode.includes(\"var React\")) {\n logger.warn(\"React declaration found in cleaned code\");\n logger.debug(\"Code snippet:\", cleanedCode.substring(0, 200));\n }\n\n const exports: MDXExports = {};\n\n const frontmatter = extractFrontmatter(cleanedCode);\n if (frontmatter) {\n exports.frontmatter = frontmatter;\n }\n\n const metadata = extractMetadata(cleanedCode);\n for (const [key, value] of Object.entries(metadata)) {\n if (value !== undefined) {\n (exports as Record<string, unknown>)[key] = value;\n }\n }\n\n return { code: cleanedCode, imports, exports };\n}\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport type { FrontmatterMetadata, LogContext, MDXModule } from \"./types.ts\";\nimport { extractBalancedBlock, parseJsonish } from \"./string-parser.ts\";\n\nexport function extractFrontmatter(moduleCode: string): FrontmatterMetadata | undefined {\n try {\n const fmIndex = moduleCode.search(/(?:export\\s+)?const\\s+frontmatter\\s*=\\s*/);\n if (fmIndex < 0) return undefined;\n\n const braceStart = moduleCode.indexOf(\"{\", fmIndex);\n if (braceStart < 0) return undefined;\n\n const raw = extractBalancedBlock(moduleCode, braceStart, \"{\", \"}\");\n if (!raw) return undefined;\n\n const jsonish = raw\n .replace(/([^\\s\"{[:,]+)\\s*:/g, '\"$1\":')\n .replace(/'([^']*)'/g, '\"$1\"');\n\n try {\n return JSON.parse(jsonish) as FrontmatterMetadata;\n } catch (e) {\n logger.debug(\"[mdx] frontmatter JSON parse failed\", e as LogContext);\n return undefined;\n }\n } catch (e) {\n logger.debug(\"[mdx] frontmatter extraction failed\", e as LogContext);\n return undefined;\n }\n}\n\ninterface MetadataPattern {\n regex: RegExp;\n key: string;\n}\n\nconst METADATA_PATTERNS: MetadataPattern[] = [\n { regex: /(?:export\\s+)?const\\s+title\\s*=\\s*[\"']([^\"']+)[\"']/, key: \"title\" },\n { regex: /(?:export\\s+)?const\\s+description\\s*=\\s*[\"']([^\"']+)[\"']/, key: \"description\" },\n { regex: /(?:export\\s+)?const\\s+layout\\s*=\\s*(true|false|[\"'][^\"']+[\"'])/, key: \"layout\" },\n { regex: /(?:export\\s+)?const\\s+headings\\s*=\\s*(\\[[\\s\\S]*?\\])/, key: \"headings\" },\n { regex: /(?:export\\s+)?const\\s+nested\\s*=\\s*({[\\s\\S]*?})/, key: \"nested\" },\n { regex: /(?:export\\s+)?const\\s+tags\\s*=\\s*(\\[[\\s\\S]*?\\])/, key: \"tags\" },\n { regex: /(?:export\\s+)?const\\s+date\\s*=\\s*[\"']([^\"']+)[\"']/, key: \"date\" },\n { regex: /(?:export\\s+)?const\\s+draft\\s*=\\s*(true|false)/, key: \"draft\" },\n];\n\nexport function extractMetadata(moduleCode: string): Partial<MDXModule> {\n const exports: Partial<MDXModule> = {};\n\n METADATA_PATTERNS.forEach(({ regex, key }) => {\n const match = moduleCode.match(regex);\n if (!match) return;\n\n const value = match[1] as string;\n\n switch (key) {\n case \"title\":\n case \"description\":\n case \"date\":\n exports[key] = value;\n break;\n\n case \"layout\":\n exports[key] = value === \"true\"\n ? true\n : value === \"false\"\n ? false\n : String(value).replace(/^\"|\"$/g, \"\");\n break;\n\n case \"headings\":\n case \"tags\":\n case \"nested\":\n try {\n exports[key] = parseJsonish(value) as never;\n } catch (e) {\n logger.warn(`Failed to parse ${key}`, e);\n }\n break;\n\n case \"draft\":\n exports[key] = value === \"true\";\n break;\n }\n });\n\n return exports;\n}\n\nexport function mergeFrontmatter(result: MDXModule): void {\n result.frontmatter = result.frontmatter || {};\n\n const keys = [\"title\", \"description\", \"layout\", \"headings\", \"tags\", \"date\", \"draft\", \"nested\"];\n for (const key of keys) {\n if (result[key] !== undefined && result.frontmatter[key] === undefined) {\n result.frontmatter[key] = result[key];\n }\n }\n}\n", "export function extractBalancedBlock(\n source: string,\n startIndex: number,\n open: \"{\" | \"[\" | \"(\",\n close?: \"}\" | \"]\" | \")\",\n): string {\n const closeCh = close || (open === \"{\" ? \"}\" : open === \"[\" ? \"]\" : \")\");\n let depth = 0;\n let i = startIndex;\n\n while (i < source.length) {\n const ch = source[i] as string;\n\n if (ch === '\"' || ch === \"'\") {\n const quote = ch;\n i++;\n while (i < source.length) {\n const q = source[i] as string;\n if (q === \"\\\\\") {\n i += 2;\n continue;\n }\n if (q === quote) {\n i++;\n break;\n }\n i++;\n }\n continue;\n }\n\n if (ch === open) depth++;\n if (ch === closeCh) {\n depth--;\n if (depth === 0) {\n return source.slice(startIndex, i + 1);\n }\n }\n i++;\n }\n\n return \"\";\n}\n\nexport function cleanModuleCode(moduleCode: string): string {\n return moduleCode\n .replace(/import\\s+.*?from\\s+['\"][^'\"]+['\"];?\\s*/gm, \"\")\n .replace(/export\\s+\\{[\\s\\S]*?\\};?$/gm, \"\")\n .replace(/export\\s+default\\s+/gm, \"\")\n .replace(/export\\s+const\\s+/gm, \"const \")\n .replace(/export\\s+function\\s+/gm, \"function \");\n}\n\nexport function parseJsonish(value: string): unknown {\n const jsonish = value\n .replace(/'([^']*)'/g, '\"$1\"')\n .replace(/([{,]\\s*)([A-Za-z_$][\\w$]*)\\s*:/g, '$1\"$2\":');\n return JSON.parse(jsonish);\n}\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport { wrapError as _wrapError } from \"@veryfront/errors\";\nimport {\n type BundleCode,\n type BundleMetadata,\n computeCodeHash,\n computeContentHash,\n getBundleManifestStore,\n getBundleManifestTTL,\n} from \"@veryfront/utils\";\nimport type { VeryfrontConfig } from \"@veryfront/config\";\nimport type { MdxBundle } from \"@veryfront/types\";\n\nexport interface MDXCompilationResult extends MdxBundle {\n headings?: Array<{ id: string; text: string; level: number }>;\n nodeMap?: Map<number, unknown>;\n}\n\nexport interface MDXCacheAdapterOptions {\n config: VeryfrontConfig;\n mode: \"development\" | \"production\";\n}\n\nexport class MDXCacheAdapter {\n private config: VeryfrontConfig;\n private mode: \"development\" | \"production\";\n private manifestStore = getBundleManifestStore();\n\n constructor(options: MDXCacheAdapterOptions) {\n this.config = options.config;\n this.mode = options.mode;\n }\n\n private getCacheKey(contentHash: string): string {\n return `mdx:${this.mode}:${contentHash}`;\n }\n\n private getTTL(): number | undefined {\n return getBundleManifestTTL(this.config, this.mode);\n }\n\n async computeHash(content: string): Promise<string> {\n return await computeContentHash(content);\n }\n\n async getCachedBundle(\n content: string,\n frontmatter?: Record<string, unknown>,\n filePath?: string,\n ): Promise<MDXCompilationResult | undefined> {\n try {\n const contentHash = await this.computeHash(content);\n const cacheKey = this.getCacheKey(contentHash);\n\n const metadata = await this.manifestStore.getBundleMetadata(cacheKey);\n if (!metadata) {\n return undefined;\n }\n\n const bundleCode = await this.manifestStore.getBundleCode(metadata.codeHash);\n if (!bundleCode) {\n logger.debug(\"[mdx-cache] Metadata found but code missing\", {\n filePath,\n codeHash: metadata.codeHash,\n });\n return undefined;\n }\n\n logger.debug(\"[mdx-cache] Cache hit for MDX compilation\", {\n filePath,\n codeHash: metadata.codeHash,\n size: metadata.size,\n });\n\n return {\n compiledCode: bundleCode.code,\n frontmatter: (frontmatter || {}) as Record<string, string | number | boolean | string[]>,\n headings: [],\n nodeMap: new Map(),\n };\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to retrieve cached bundle\", {\n error,\n filePath,\n });\n return undefined;\n }\n }\n\n async setCachedBundle(\n content: string,\n bundle: MDXCompilationResult,\n filePath?: string,\n ): Promise<void> {\n if (!bundle.compiledCode) {\n logger.debug(\"[mdx-cache] No compiled code to cache\", { filePath });\n return;\n }\n\n try {\n const contentHash = await this.computeHash(content);\n const cacheKey = this.getCacheKey(contentHash);\n\n const bundleCode: BundleCode = {\n code: bundle.compiledCode,\n };\n\n const codeHash = await computeCodeHash(bundleCode);\n\n const encoder = new TextEncoder();\n const size = encoder.encode(bundle.compiledCode).length;\n\n const metadata: BundleMetadata = {\n hash: contentHash,\n codeHash,\n size,\n compiledAt: Date.now(),\n source: filePath || \"unknown\",\n mode: this.mode,\n meta: {\n type: \"mdx\",\n reactVersion: (await import(\"react\")).version,\n },\n };\n\n const ttl = this.getTTL();\n\n await this.manifestStore.setBundleCode(codeHash, bundleCode, ttl);\n await this.manifestStore.setBundleMetadata(cacheKey, metadata, ttl);\n\n logger.debug(\"[mdx-cache] Cached compiled MDX\", {\n filePath,\n cacheKey,\n codeHash,\n size,\n ttl,\n });\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to cache bundle\", {\n error,\n filePath,\n });\n }\n }\n\n async invalidateBundle(content: string): Promise<void> {\n try {\n const contentHash = await this.computeHash(content);\n const cacheKey = this.getCacheKey(contentHash);\n await this.manifestStore.deleteBundle(cacheKey);\n logger.debug(\"[mdx-cache] Invalidated cached bundle\", { cacheKey });\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to invalidate bundle\", { error });\n }\n }\n\n async invalidateSource(source: string): Promise<number> {\n try {\n const count = await this.manifestStore.invalidateSource(source);\n logger.debug(\"[mdx-cache] Invalidated bundles for source\", {\n source,\n count,\n });\n return count;\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to invalidate source\", {\n error,\n source,\n });\n return 0;\n }\n }\n\n async clearAll(): Promise<void> {\n try {\n await this.manifestStore.clear();\n logger.debug(\"[mdx-cache] Cleared all cached bundles\");\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to clear cache\", { error });\n }\n }\n\n async getStats(): Promise<{\n totalBundles: number;\n totalSize: number;\n oldestBundle?: number;\n newestBundle?: number;\n }> {\n try {\n return await this.manifestStore.getStats();\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to get stats\", { error });\n return {\n totalBundles: 0,\n totalSize: 0,\n };\n }\n }\n}\n", "import type * as React from \"react\";\nimport { useMemo, useRef } from \"react\";\nimport { mdxRenderer } from \"@veryfront/transforms/mdx/index.ts\";\nimport type { MDXComponents } from \"@veryfront/types\";\nimport type { MdxBundle } from \"./LayoutComponent.tsx\";\nimport { rendererLogger as logger } from \"@veryfront/utils\";\n\nexport interface ProviderComponentProps {\n mdxBundle: MdxBundle;\n children: React.ReactNode;\n components?: MDXComponents;\n}\n\nfunction useStableFrontmatter(frontmatter: MdxBundle[\"frontmatter\"]): MdxBundle[\"frontmatter\"] {\n const ref = useRef(frontmatter);\n const serialized = JSON.stringify(frontmatter);\n const prevSerialized = useRef(serialized);\n\n if (prevSerialized.current !== serialized) {\n ref.current = frontmatter;\n prevSerialized.current = serialized;\n }\n\n return ref.current;\n}\n\nexport function ProviderComponent({\n mdxBundle,\n children,\n components = {},\n}: ProviderComponentProps) {\n const stableFrontmatter = useStableFrontmatter(mdxBundle.frontmatter);\n\n const element = useMemo(() => {\n try {\n return mdxRenderer.render(mdxBundle.compiledCode, {\n components,\n frontmatter: stableFrontmatter,\n globals: mdxBundle.globals,\n extractLayout: true,\n children,\n });\n } catch (error) {\n logger.error(\"[ProviderComponent] Render failed:\", error);\n return <>{children}</>;\n }\n }, [mdxBundle.compiledCode, stableFrontmatter, components, children, mdxBundle.globals]);\n\n if (!element) return <>{children}</>;\n return element as React.ReactElement;\n}\n", "import React from \"react\";\n\nexport function Head({ children }: { children: React.ReactNode }) {\n return React.createElement(\n \"div\",\n {\n \"data-veryfront-head\": \"1\",\n style: { display: \"none\" },\n },\n children,\n );\n}\n", "import React from \"react\";\n\nexport type LinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n prefetch?: boolean;\n};\n\nexport function Link({ prefetch = true, children, ...rest }: LinkProps) {\n const props: React.AnchorHTMLAttributes<HTMLAnchorElement> = {\n ...rest,\n ...(prefetch ? { \"data-prefetch\": \"true\" } : {}),\n };\n return <a {...props}>{children}</a>;\n}\n", "import type React from \"react\";\nimport { createContext, useContext } from \"react\";\nimport type { MDXComponents } from \"@veryfront/types\";\n\nconst MDXContext = createContext<MDXComponents>({});\n\nexport interface MDXProviderProps {\n components?: MDXComponents;\n children: React.ReactNode;\n}\n\nexport function MDXProvider({\n components = {},\n children,\n}: MDXProviderProps) {\n return <MDXContext.Provider value={components}>{children}</MDXContext.Provider>;\n}\n\nexport function useMDXComponents(components?: MDXComponents): MDXComponents {\n const contextComponents = useContext(MDXContext);\n return { ...contextComponents, ...components };\n}\n", "export { OptimizedImage } from \"./OptimizedImage.tsx\";\nexport type { OptimizedImageProps } from \"./OptimizedImage.tsx\";\nexport { SimpleOptimizedImage } from \"./SimpleOptimizedImage.tsx\";\nexport { OptimizedBackgroundImage } from \"./OptimizedBackgroundImage.tsx\";\nexport { useOptimizedImage } from \"./useOptimizedImage.ts\";\nexport { generateBlurDataURL, getAspectRatioPadding, ResponsiveImageContainer } from \"./utils.tsx\";\n", "import React from \"react\";\nimport { RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS } from \"@veryfront/utils\";\nimport { generateSrcSet, getExtension, getOptimizedPath } from \"./helpers.ts\";\n\nexport interface OptimizedImageProps {\n src: string;\n alt: string;\n width?: number;\n height?: number;\n sizes?: string;\n formats?: (\"avif\" | \"webp\" | \"jpeg\" | \"png\")[];\n quality?: number;\n loading?: \"lazy\" | \"eager\";\n priority?: boolean;\n className?: string;\n style?: React.CSSProperties;\n placeholder?: \"blur\" | \"empty\";\n blurDataURL?: string;\n onClick?: (event: React.MouseEvent<HTMLImageElement>) => void;\n onLoad?: (event: React.SyntheticEvent<HTMLImageElement>) => void;\n onError?: (event: React.SyntheticEvent<HTMLImageElement>) => void;\n}\n\nconst DEFAULT_SIZES = [...RESPONSIVE_IMAGE_WIDTHS];\nconst DEFAULT_FORMATS: (\"avif\" | \"webp\" | \"jpeg\")[] = [\"avif\", \"webp\", \"jpeg\"];\n\nexport function OptimizedImage({\n src,\n alt,\n width,\n height,\n sizes = \"100vw\",\n formats = DEFAULT_FORMATS,\n quality = 80,\n loading,\n priority = false,\n className,\n style,\n placeholder = \"empty\",\n blurDataURL,\n onClick,\n onLoad,\n onError,\n}: OptimizedImageProps) {\n const loadingStrategy = priority ? \"eager\" : loading || \"lazy\";\n\n const originalFormat = getExtension(src);\n\n const imgStyle: React.CSSProperties = {\n ...style,\n ...(placeholder === \"blur\" && blurDataURL\n ? { backgroundImage: `url(${blurDataURL})`, backgroundSize: \"cover\" }\n : {}),\n };\n\n return (\n <picture>\n {formats.map((format) => (\n <source\n key={format}\n type={`image/${format}`}\n srcSet={generateSrcSet(src, format, DEFAULT_SIZES, quality)}\n sizes={sizes}\n />\n ))}\n\n <img\n src={getOptimizedPath(src, originalFormat, width || RESPONSIVE_IMAGE_WIDTH_LG, quality)}\n alt={alt}\n width={width}\n height={height}\n loading={loadingStrategy}\n decoding=\"async\"\n className={className}\n style={imgStyle}\n onClick={onClick}\n onLoad={onLoad}\n onError={onError}\n />\n </picture>\n );\n}\n", "export function getOptimizedPath(\n src: string,\n format: string,\n size: number,\n _quality: number = 80,\n): string {\n const basePath = src.replace(/\\.[^.]+$/, \"\");\n const optimizedDir = \".veryfront/optimized-images\";\n\n return `/${optimizedDir}${basePath}-${size}w.${format}`;\n}\n\nexport function generateSrcSet(\n src: string,\n format: string,\n sizes: number[],\n quality: number,\n): string {\n return sizes\n .map((size) => {\n const path = getOptimizedPath(src, format, size, quality);\n return `${path} ${size}w`;\n })\n .join(\", \");\n}\n\nexport function getExtension(src: string): string {\n const match = src.match(/\\.([^.]+)$/);\n const extension = match?.[1];\n return extension ? extension.toLowerCase() : \"jpeg\";\n}\n", "import React from \"react\";\nimport type { OptimizedImageProps } from \"./OptimizedImage.tsx\";\nimport { RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS } from \"@veryfront/utils\";\nimport { generateSrcSet, getOptimizedPath } from \"./helpers.ts\";\n\nconst DEFAULT_SIZES = [...RESPONSIVE_IMAGE_WIDTHS];\n\nexport function SimpleOptimizedImage({\n src,\n alt,\n width,\n height,\n format = \"webp\",\n quality = 80,\n loading = \"lazy\",\n className,\n style,\n onClick,\n onLoad,\n onError,\n}: Omit<OptimizedImageProps, \"formats\" | \"sizes\" | \"priority\" | \"placeholder\" | \"blurDataURL\"> & {\n format?: \"webp\" | \"avif\" | \"jpeg\" | \"png\";\n}) {\n const srcSet = generateSrcSet(src, format, DEFAULT_SIZES, quality);\n\n return (\n <img\n src={getOptimizedPath(src, format, width || RESPONSIVE_IMAGE_WIDTH_LG, quality)}\n srcSet={srcSet}\n alt={alt}\n width={width}\n height={height}\n loading={loading}\n decoding=\"async\"\n className={className}\n style={style as React.CSSProperties}\n onClick={onClick}\n onLoad={onLoad}\n onError={onError}\n />\n );\n}\n", "import React from \"react\";\nimport { RESPONSIVE_IMAGE_WIDTH_LG } from \"@veryfront/utils/constants/network.ts\";\nimport { getOptimizedPath } from \"./helpers.ts\";\n\nexport function OptimizedBackgroundImage({\n src,\n children,\n format = \"webp\",\n quality = 80,\n size = RESPONSIVE_IMAGE_WIDTH_LG,\n className,\n style,\n}: {\n src: string;\n children?: React.ReactNode;\n format?: \"webp\" | \"avif\" | \"jpeg\" | \"png\";\n quality?: number;\n size?: number;\n className?: string;\n style?: React.CSSProperties;\n}) {\n const optimizedSrc = getOptimizedPath(src, format, size, quality);\n\n const bgStyle: React.CSSProperties = {\n backgroundImage: `url(${optimizedSrc})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n backgroundRepeat: \"no-repeat\",\n ...style,\n };\n\n return (\n <div className={className} style={bgStyle}>\n {children}\n </div>\n );\n}\n", "import { RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS } from \"@veryfront/utils\";\nimport { generateSrcSet, getExtension, getOptimizedPath } from \"./helpers.ts\";\n\nconst DEFAULT_SIZES = [...RESPONSIVE_IMAGE_WIDTHS];\nconst DEFAULT_FORMATS: (\"avif\" | \"webp\" | \"jpeg\")[] = [\"avif\", \"webp\", \"jpeg\"];\n\nexport function useOptimizedImage(\n src: string,\n options: {\n formats?: (\"avif\" | \"webp\" | \"jpeg\" | \"png\")[];\n quality?: number;\n } = {},\n) {\n const formats = options.formats || DEFAULT_FORMATS;\n const quality = options.quality || 80;\n\n const sources = formats.map((format) => ({\n format,\n srcSet: generateSrcSet(src, format, DEFAULT_SIZES, quality),\n type: `image/${format}`,\n }));\n\n const fallback = getOptimizedPath(\n src,\n getExtension(src),\n RESPONSIVE_IMAGE_WIDTH_LG,\n quality,\n );\n\n return {\n sources,\n fallback,\n };\n}\n", "import React from \"react\";\n\nexport function generateBlurDataURL(\n width: number = 10,\n height: number = 10,\n color: string = \"#cccccc\",\n): string {\n const svg = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${width} ${height}\">\n <rect width=\"${width}\" height=\"${height}\" fill=\"${color}\"/>\n </svg>\n `;\n\n return `data:image/svg+xml;base64,${btoa(svg)}`;\n}\n\nexport function getAspectRatioPadding(width: number, height: number): string {\n return `${(height / width) * 100}%`;\n}\n\nexport function ResponsiveImageContainer({\n width,\n height,\n children,\n className,\n style,\n}: {\n width: number;\n height: number;\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}) {\n const containerStyle = {\n position: \"relative\" as const,\n width: \"100%\",\n paddingBottom: getAspectRatioPadding(width, height),\n ...style,\n };\n\n const contentStyle = {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n } as const;\n\n return (\n <div className={className} style={containerStyle}>\n <div style={contentStyle}>{children}</div>\n </div>\n );\n}\n"],
5
- "mappings": "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",
6
- "names": ["logger", "LogLevel", "init_logger", "hasNodeProcess", "init_env", "init_env", "simpleHash", "init_logger", "init_logger", "simpleHash", "init_logger", "init_deno", "serverLogger", "join", "join", "path", "process", "serverLogger", "crypto", "init_node", "ErrorCode", "ErrorCode", "init_build_errors", "ErrorCode", "init_runtime_errors", "ErrorCode", "ErrorCode", "ErrorCode", "ErrorCode", "ErrorCode", "ErrorCode", "ErrorCode", "ErrorCode", "init_build_errors", "init_runtime_errors", "deno_exports", "init_deno", "node_exports", "blue", "bold", "colors", "cyan", "dim", "gray", "green", "italic", "magenta", "red", "reset", "strikethrough", "underline", "white", "yellow", "init_node", "init_filesystem_adapter", "join", "init_environment_adapter", "init_websocket_adapter", "init_http_server", "init_adapter", "init_filesystem_adapter", "init_environment_adapter", "init_websocket_adapter", "init_http_server", "init_adapter", "init_filesystem_adapter", "init_environment_adapter", "init_websocket_adapter", "init_http_server", "init_bun", "denoAdapter", "nodeAdapter", "bunAdapter", "createMockAdapter", "isDeno", "isBun", "isCloudflare", "denoAdapter", "bunAdapter", "nodeAdapter", "init_deno", "init_node", "init_bun", "join", "join", "HTTP_MODULE_FETCH_TIMEOUT_MS", "require", "HASH_SEED_FNV1A", "getAdapter", "filePath", "result", "getAdapter", "useMemo", "useRef", "Fragment", "jsx", "useRef", "useMemo", "jsx", "React", "jsx", "jsx", "getExtension", "jsx", "getExtension", "jsx", "DEFAULT_SIZES", "jsx", "DEFAULT_SIZES", "DEFAULT_FORMATS", "getExtension", "jsx"]
3
+ "sources": ["../../src/_shims/deno-env.ts", "../../src/core/utils/runtime-guards.ts", "../../src/core/utils/logger/env.ts", "../../src/core/utils/logger/logger.ts", "../../src/core/utils/logger/index.ts", "../../src/core/utils/constants/build.ts", "../../src/core/utils/constants/cache.ts", "../../deno.json", "../../src/platform/compat/runtime.ts", "../../src/platform/compat/process.ts", "../../src/core/utils/version.ts", "../../src/core/utils/constants/cdn.ts", "../../src/core/utils/constants/env.ts", "../../src/core/utils/constants/hash.ts", "../../src/core/utils/constants/http.ts", "../../src/core/utils/constants/hmr.ts", "../../src/core/utils/constants/html.ts", "../../src/core/utils/constants/network.ts", "../../src/core/utils/constants/security.ts", "../../src/core/config/defaults.ts", "../../src/core/utils/constants/server.ts", "../../src/core/utils/constants/index.ts", "../../src/core/utils/paths.ts", "../../src/core/utils/hash-utils.ts", "../../src/core/utils/memoize.ts", "../../src/core/utils/path-utils.ts", "../../src/core/utils/format-utils.ts", "../../src/core/utils/bundle-manifest.ts", "../../src/core/utils/bundle-manifest-init.ts", "../../src/core/utils/feature-flags.ts", "../../src/core/utils/platform.ts", "../../src/core/utils/import-lockfile.ts", "../../src/core/utils/perf-timer.ts", "../../src/core/utils/cookie-utils.ts", "../../src/core/utils/base64url.ts", "../../src/core/utils/index.ts", "../../src/core/errors/veryfront-error.ts", "../../src/core/config/schema.ts", "../../src/platform/compat/fs.ts", "../../src/core/config/loader.ts", "../../src/core/config/define-config.ts", "../../src/core/config/network-defaults.ts", "../../src/core/config/index.ts", "../../src/platform/adapters/deno.ts", "../../src/platform/adapters/shared-watcher.ts", "../../src/platform/adapters/node/filesystem-adapter.ts", "../../src/platform/adapters/node/environment-adapter.ts", "../../src/platform/adapters/node/http-server.ts", "../../src/platform/adapters/node/websocket-adapter.ts", "../../src/platform/adapters/node/adapter.ts", "../../src/platform/adapters/node/index.ts", "../../src/platform/adapters/node.ts", "../../src/core/errors/types.ts", "../../src/core/errors/agent-errors.ts", "../../src/core/errors/build-errors.ts", "../../src/core/errors/runtime-errors.ts", "../../src/core/errors/system-errors.ts", "../../src/core/errors/error-handlers.ts", "../../src/core/errors/error-context.ts", "../../src/core/errors/error-codes.ts", "../../src/core/errors/catalog/factory.ts", "../../src/core/errors/catalog/config-errors.ts", "../../src/core/errors/catalog/build-errors.ts", "../../src/core/errors/catalog/runtime-errors.ts", "../../src/core/errors/catalog/route-errors.ts", "../../src/core/errors/catalog/module-errors.ts", "../../src/core/errors/catalog/server-errors.ts", "../../src/core/errors/catalog/rsc-errors.ts", "../../src/core/errors/catalog/dev-errors.ts", "../../src/core/errors/catalog/deployment-errors.ts", "../../src/core/errors/catalog/general-errors.ts", "../../src/core/errors/catalog/index.ts", "../../src/core/errors/user-friendly/error-catalog.ts", "../../src/platform/compat/console/ansi.ts", "../../src/platform/compat/console/deno.ts", "../../src/platform/compat/console/node.ts", "../../src/platform/compat/console/index.ts", "../../src/core/errors/user-friendly/error-identifier.ts", "../../src/core/errors/user-friendly/error-formatter.ts", "../../src/core/errors/user-friendly/error-wrapper.ts", "../../src/core/errors/user-friendly/index.ts", "../../src/core/errors/index.ts", "../../src/platform/adapters/bun/filesystem-adapter.ts", "../../src/platform/adapters/bun/environment-adapter.ts", "../../src/platform/adapters/bun/websocket-adapter.ts", "../../src/platform/adapters/bun/http-server.ts", "../../src/platform/adapters/bun/adapter.ts", "../../src/platform/adapters/bun/index.ts", "../../src/platform/adapters/bun.ts", "../../src/platform/adapters/mock.ts", "../../src/platform/adapters/registry.ts", "../../src/platform/adapters/detect.ts", "../../src/react/components/index.ts", "../../src/react/components/AppWrapper.tsx", "../../src/react/components/LayoutComponent.tsx", "../../src/build/transforms/mdx/index.ts", "../../src/core/utils/lru-wrapper.ts", "../../src/core/utils/cache/stores/memory/lru-cache-adapter.ts", "../../src/core/utils/cache/stores/memory/lru-list-manager.ts", "../../src/core/utils/cache/eviction/eviction-manager.ts", "../../src/core/utils/cache/stores/memory/entry-manager.ts", "../../src/core/utils/cache/stores/memory/lru-node.ts", "../../src/build/transforms/mdx/esm-module-loader.ts", "../../src/core/utils/cache/keys/namespace.ts", "../../src/module-system/import-map/index.ts", "../../src/module-system/import-map/loader.ts", "../../src/module-system/import-map/default-import-map.ts", "../../src/build/transforms/esm/package-registry.ts", "../../src/module-system/import-map/resolver.ts", "../../src/module-system/import-map/transformer.ts", "../../src/module-system/import-map/merger.ts", "../../src/build/transforms/esm-transform.ts", "../../src/build/transforms/esm/index.ts", "../../src/build/transforms/pipeline/index.ts", "../../src/build/transforms/esm/transform-cache.ts", "../../src/core/memory/index.ts", "../../src/core/memory/profiler.ts", "../../src/core/utils/redis-client.ts", "../../src/build/transforms/pipeline/context.ts", "../../src/build/transforms/esm/transform-utils.ts", "../../src/build/transforms/pipeline/stages/index.ts", "../../src/build/transforms/pipeline/stages/parse.ts", "../../src/build/transforms/mdx/compiler/mdx-compiler.ts", "../../src/build/transforms/plugins/plugin-loader.ts", "../../src/build/transforms/plugins/rehype-utils.ts", "../../src/build/transforms/plugins/remark-headings.ts", "../../src/build/transforms/plugins/remark-mdx-utils.ts", "../../src/build/transforms/plugins/rehype-mermaid.ts", "../../src/build/transforms/mdx/compiler/frontmatter-extractor.ts", "../../src/build/transforms/mdx/compiler/import-rewriter.ts", "../../src/build/transforms/pipeline/types.ts", "../../src/build/transforms/pipeline/stages/compile.ts", "../../src/build/transforms/pipeline/stages/resolve-aliases.ts", "../../src/build/transforms/esm/path-resolver.ts", "../../src/build/transforms/esm/lexer.ts", "../../node_modules/.deno/es-module-lexer@1.5.0/node_modules/es-module-lexer/dist/lexer.js", "../../src/build/transforms/pipeline/stages/resolve-react.ts", "../../src/build/transforms/esm/react-imports.ts", "../../src/build/transforms/pipeline/stages/resolve-context.ts", "../../src/build/transforms/pipeline/stages/ssr-http-stub.ts", "../../src/build/transforms/pipeline/stages/resolve-relative.ts", "../../src/build/transforms/pipeline/stages/resolve-bare.ts", "../../src/build/transforms/esm/import-rewriter.ts", "../../src/build/transforms/pipeline/stages/finalize.ts", "../../src/build/transforms/esm/http-bundler.ts", "../../src/rendering/ssr-globals.ts", "../../src/build/transforms/mdx/parser.ts", "../../src/build/transforms/mdx/module-loader/metadata-extractor.ts", "../../src/build/transforms/mdx/module-loader/string-parser.ts", "../../src/build/transforms/mdx/mdx-cache-adapter.ts", "../../src/react/components/ProviderComponent.tsx", "../../src/react/components/Head.tsx", "../../src/react/components/Link.tsx", "../../src/react/components/MDXProvider.tsx", "../../src/react/components/optimized-image/index.ts", "../../src/react/components/optimized-image/OptimizedImage.tsx", "../../src/react/components/optimized-image/helpers.ts", "../../src/react/components/optimized-image/SimpleOptimizedImage.tsx", "../../src/react/components/optimized-image/OptimizedBackgroundImage.tsx", "../../src/react/components/optimized-image/useOptimizedImage.ts", "../../src/react/components/optimized-image/utils.tsx"],
4
+ "sourcesContent": ["/**\n * Shim for Deno.env in Node.js environment\n * This file is injected by esbuild to provide Deno.env compatibility\n */\n\n// @ts-ignore - Global Deno shim for Node.js\nglobalThis.Deno = globalThis.Deno || {\n env: {\n get(key: string): string | undefined {\n return process.env[key];\n },\n set(key: string, value: string): void {\n process.env[key] = value;\n },\n delete(key: string): void {\n delete process.env[key];\n },\n has(key: string): boolean {\n return key in process.env;\n },\n toObject(): Record<string, string> {\n return { ...process.env } as Record<string, string>;\n },\n },\n};\n", "export interface GlobalWithDeno {\n Deno?: {\n env: {\n get(key: string): string | undefined;\n };\n };\n}\n\nexport interface GlobalWithProcess {\n process?: {\n env: Record<string, string | undefined>;\n version?: string;\n versions?: Record<string, string>;\n };\n}\n\nexport interface GlobalWithBun {\n Bun?: {\n version: string;\n };\n}\n\nexport function hasDenoRuntime(global: unknown): global is GlobalWithDeno {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"Deno\" in global &&\n typeof (global as GlobalWithDeno).Deno?.env?.get === \"function\"\n );\n}\n\nexport function hasNodeProcess(global: unknown): global is GlobalWithProcess {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"process\" in global &&\n typeof (global as GlobalWithProcess).process?.env === \"object\"\n );\n}\n\nexport function hasBunRuntime(global: unknown): global is GlobalWithBun {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"Bun\" in global &&\n typeof (global as GlobalWithBun).Bun !== \"undefined\"\n );\n}\n", "import type { GlobalWithDeno, GlobalWithProcess } from \"../runtime-guards.ts\";\nimport { hasDenoRuntime, hasNodeProcess } from \"../runtime-guards.ts\";\n\nexport function getEnvironmentVariable(name: string): string | undefined {\n try {\n if (typeof Deno !== \"undefined\" && hasDenoRuntime(globalThis)) {\n const value = (globalThis as GlobalWithDeno).Deno?.env.get(name);\n return value === \"\" ? undefined : value;\n }\n if (hasNodeProcess(globalThis)) {\n const value = (globalThis as GlobalWithProcess).process?.env[name];\n return value === \"\" ? undefined : value;\n }\n } catch {\n return undefined;\n }\n return undefined;\n}\n\nexport function isTestEnvironment(): boolean {\n return getEnvironmentVariable(\"NODE_ENV\") === \"test\";\n}\n\nexport function isProductionEnvironment(): boolean {\n return getEnvironmentVariable(\"NODE_ENV\") === \"production\";\n}\n\nexport function isDevelopmentEnvironment(): boolean {\n const env = getEnvironmentVariable(\"NODE_ENV\");\n return env === \"development\" || env === undefined;\n}\n", "import { getEnvironmentVariable, isProductionEnvironment } from \"./env.ts\";\n\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n}\n\nexport type LogFormat = \"text\" | \"json\";\n\n/**\n * Structured log entry for JSON output.\n * Fields are designed for easy Grafana/Loki filtering.\n */\nexport interface LogEntry {\n timestamp: string;\n level: \"debug\" | \"info\" | \"warn\" | \"error\";\n service: string;\n message: string;\n // Optional structured context\n context?: Record<string, unknown>;\n // Error details if applicable\n error?: {\n name: string;\n message: string;\n stack?: string;\n };\n // Request context (when available)\n requestId?: string;\n traceId?: string;\n projectSlug?: string;\n // Duration for timed operations\n durationMs?: number;\n}\n\nexport interface Logger {\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n time<T>(label: string, fn: () => Promise<T>): Promise<T>;\n /**\n * Create a child logger with additional context bound to all log entries.\n */\n child(context: Record<string, unknown>): Logger;\n}\n\nconst originalConsole = {\n debug: console.debug,\n log: console.log,\n warn: console.warn,\n error: console.error,\n};\n\nlet cachedLogLevel: LogLevel | undefined;\nlet cachedLogFormat: LogFormat | undefined;\n\nfunction resolveLogLevel(force = false): LogLevel {\n if (force || cachedLogLevel === undefined) {\n cachedLogLevel = getDefaultLevel();\n }\n return cachedLogLevel;\n}\n\nfunction resolveLogFormat(force = false): LogFormat {\n if (force || cachedLogFormat === undefined) {\n cachedLogFormat = getDefaultFormat();\n }\n return cachedLogFormat;\n}\n\n/**\n * Determine log format from environment.\n * Defaults to JSON in production for Grafana compatibility.\n */\nfunction getDefaultFormat(): LogFormat {\n const envFormat = getEnvironmentVariable(\"LOG_FORMAT\");\n if (envFormat === \"json\" || envFormat === \"text\") {\n return envFormat;\n }\n // Default to JSON in production for structured logging\n return isProductionEnvironment() ? \"json\" : \"text\";\n}\n\n/**\n * Serialize error object for structured logging.\n */\nfunction serializeError(err: unknown): LogEntry[\"error\"] | undefined {\n if (err instanceof Error) {\n return {\n name: err.name,\n message: err.message,\n stack: err.stack,\n };\n }\n if (err !== undefined && err !== null) {\n return {\n name: \"UnknownError\",\n message: String(err),\n };\n }\n return undefined;\n}\n\n/**\n * Extract context from variadic args.\n * First object argument becomes context, errors are handled specially.\n */\nfunction extractContext(\n args: unknown[],\n): { context?: Record<string, unknown>; error?: LogEntry[\"error\"] } {\n let context: Record<string, unknown> | undefined;\n let error: LogEntry[\"error\"] | undefined;\n\n for (const arg of args) {\n if (arg instanceof Error) {\n error = serializeError(arg);\n } else if (typeof arg === \"object\" && arg !== null && !Array.isArray(arg)) {\n context = { ...context, ...(arg as Record<string, unknown>) };\n }\n }\n\n return { context, error };\n}\n\nclass ConsoleLogger implements Logger {\n private boundContext: Record<string, unknown> = {};\n\n constructor(\n private prefix: string,\n private level: LogLevel = resolveLogLevel(),\n private format: LogFormat = resolveLogFormat(),\n boundContext?: Record<string, unknown>,\n ) {\n if (boundContext) {\n this.boundContext = boundContext;\n }\n }\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n getLevel(): LogLevel {\n return this.level;\n }\n\n setFormat(format: LogFormat): void {\n this.format = format;\n }\n\n getFormat(): LogFormat {\n return this.format;\n }\n\n /**\n * Create a child logger with additional bound context.\n */\n child(context: Record<string, unknown>): Logger {\n return new ConsoleLogger(this.prefix, this.level, this.format, {\n ...this.boundContext,\n ...context,\n });\n }\n\n private formatJson(\n level: LogEntry[\"level\"],\n message: string,\n args: unknown[],\n ): string {\n const { context, error } = extractContext(args);\n\n const entry: LogEntry = {\n timestamp: new Date().toISOString(),\n level,\n service: this.prefix.toLowerCase(),\n message,\n };\n\n // Merge bound context with call-time context\n const mergedContext = { ...this.boundContext, ...context };\n if (Object.keys(mergedContext).length > 0) {\n // Extract known fields to top level for easier Grafana filtering\n if (\"requestId\" in mergedContext) {\n entry.requestId = String(mergedContext.requestId);\n delete mergedContext.requestId;\n }\n if (\"traceId\" in mergedContext) {\n entry.traceId = String(mergedContext.traceId);\n delete mergedContext.traceId;\n }\n if (\"projectSlug\" in mergedContext) {\n entry.projectSlug = String(mergedContext.projectSlug);\n delete mergedContext.projectSlug;\n }\n if (\"durationMs\" in mergedContext) {\n entry.durationMs = Number(mergedContext.durationMs);\n delete mergedContext.durationMs;\n }\n\n if (Object.keys(mergedContext).length > 0) {\n entry.context = mergedContext;\n }\n }\n\n if (error) {\n entry.error = error;\n }\n\n return JSON.stringify(entry);\n }\n\n private log(\n level: LogEntry[\"level\"],\n logLevel: LogLevel,\n consoleFn: (...args: unknown[]) => void,\n message: string,\n args: unknown[],\n ): void {\n if (this.level > logLevel) return;\n\n if (this.format === \"json\") {\n consoleFn(this.formatJson(level, message, args));\n } else {\n const prefix = level === \"info\" ? \"\" : ` ${level.toUpperCase()}:`;\n consoleFn(`[${this.prefix}]${prefix} ${message}`, ...args);\n }\n }\n\n debug(message: string, ...args: unknown[]): void {\n this.log(\"debug\", LogLevel.DEBUG, console.debug, message, args);\n }\n\n info(message: string, ...args: unknown[]): void {\n this.log(\"info\", LogLevel.INFO, console.log, message, args);\n }\n\n warn(message: string, ...args: unknown[]): void {\n this.log(\"warn\", LogLevel.WARN, console.warn, message, args);\n }\n\n error(message: string, ...args: unknown[]): void {\n this.log(\"error\", LogLevel.ERROR, console.error, message, args);\n }\n\n async time<T>(label: string, fn: () => Promise<T>): Promise<T> {\n const start = performance.now();\n try {\n const result = await fn();\n const durationMs = performance.now() - start;\n this.debug(`${label} completed`, { durationMs: Math.round(durationMs) });\n return result;\n } catch (error) {\n const durationMs = performance.now() - start;\n this.error(`${label} failed`, { durationMs: Math.round(durationMs) }, error);\n throw error;\n }\n }\n}\n\nfunction parseLogLevel(levelString: string | undefined): LogLevel | undefined {\n if (!levelString) return undefined;\n const upper = levelString.toUpperCase();\n switch (upper) {\n case \"DEBUG\":\n return LogLevel.DEBUG;\n case \"WARN\":\n return LogLevel.WARN;\n case \"ERROR\":\n return LogLevel.ERROR;\n case \"INFO\":\n return LogLevel.INFO;\n default:\n return undefined;\n }\n}\n\nconst getDefaultLevel = (): LogLevel => {\n const envLevel = getEnvironmentVariable(\"LOG_LEVEL\");\n const parsedLevel = parseLogLevel(envLevel);\n if (parsedLevel !== undefined) return parsedLevel;\n\n const debugFlag = getEnvironmentVariable(\"VERYFRONT_DEBUG\");\n if (debugFlag === \"1\" || debugFlag === \"true\") return LogLevel.DEBUG;\n\n return LogLevel.INFO;\n};\n\nconst trackedLoggers = new Set<ConsoleLogger>();\n\nfunction createLogger(prefix: string): ConsoleLogger {\n const logger = new ConsoleLogger(prefix);\n trackedLoggers.add(logger);\n return logger;\n}\n\nexport const cliLogger = createLogger(\"CLI\");\nexport const serverLogger = createLogger(\"SERVER\");\nexport const rendererLogger = createLogger(\"RENDERER\");\nexport const bundlerLogger = createLogger(\"BUNDLER\");\nexport const agentLogger = createLogger(\"AGENT\");\nexport const proxyLogger = createLogger(\"PROXY\");\n\nexport const logger = createLogger(\"VERYFRONT\");\n\ntype LoggerResetOptions = {\n restoreConsole?: boolean;\n};\n\nexport function __loggerResetForTests(options: LoggerResetOptions = {}): void {\n const updatedLevel = resolveLogLevel(true);\n const updatedFormat = resolveLogFormat(true);\n for (const instance of trackedLoggers) {\n instance.setLevel(updatedLevel);\n instance.setFormat(updatedFormat);\n }\n\n if (options.restoreConsole) {\n console.debug = originalConsole.debug;\n console.log = originalConsole.log;\n console.warn = originalConsole.warn;\n console.error = originalConsole.error;\n }\n}\n\n/**\n * Create a logger for a specific request context.\n * Useful for binding request-specific metadata to all logs.\n */\nexport function createRequestLogger(\n baseLogger: Logger,\n requestContext: {\n requestId?: string;\n traceId?: string;\n projectSlug?: string;\n },\n): Logger {\n return baseLogger.child(requestContext);\n}\n", "export * from \"./logger.ts\";\nexport * from \"./env.ts\";\n", "export const DEFAULT_BUILD_CONCURRENCY = 4;\n\nexport const IMAGE_OPTIMIZATION = {\n DEFAULT_SIZES: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],\n DEFAULT_QUALITY: 80,\n} as const;\n", "export const SECONDS_PER_MINUTE = 60;\n\nexport const MINUTES_PER_HOUR = 60;\n\nexport const HOURS_PER_DAY = 24;\n\nexport const MS_PER_SECOND = 1000;\n\nexport const DEFAULT_LRU_MAX_ENTRIES = 100;\n\nexport const COMPONENT_LOADER_MAX_ENTRIES = 100;\nexport const COMPONENT_LOADER_TTL_MS = 10 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const MDX_RENDERER_MAX_ENTRIES = 200;\nexport const MDX_RENDERER_TTL_MS = 10 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const RENDERER_CORE_MAX_ENTRIES = 100;\nexport const RENDERER_CORE_TTL_MS = 5 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const TSX_LAYOUT_MAX_ENTRIES = 50;\nexport const TSX_LAYOUT_TTL_MS = 10 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const DATA_FETCHING_MAX_ENTRIES = 200;\nexport const DATA_FETCHING_TTL_MS = 10 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const MDX_CACHE_TTL_PRODUCTION_MS = HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE *\n MS_PER_SECOND;\nexport const MDX_CACHE_TTL_DEVELOPMENT_MS = 5 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const BUNDLE_CACHE_TTL_PRODUCTION_MS = HOURS_PER_DAY * MINUTES_PER_HOUR *\n SECONDS_PER_MINUTE * MS_PER_SECOND;\nexport const BUNDLE_CACHE_TTL_DEVELOPMENT_MS = 5 * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const BUNDLE_MANIFEST_PROD_TTL_MS = 7 * HOURS_PER_DAY * MINUTES_PER_HOUR *\n SECONDS_PER_MINUTE * MS_PER_SECOND;\nexport const BUNDLE_MANIFEST_DEV_TTL_MS = MINUTES_PER_HOUR * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const RSC_MANIFEST_CACHE_TTL_MS = 5000;\n\nexport const SERVER_ACTION_DEFAULT_TTL_SEC = MINUTES_PER_HOUR * SECONDS_PER_MINUTE;\n\nexport const DENO_KV_SAFE_SIZE_LIMIT_BYTES = 64_000;\n\nexport const HTTP_CACHE_SHORT_MAX_AGE_SEC = 60;\nexport const HTTP_CACHE_MEDIUM_MAX_AGE_SEC = 3600;\nexport const HTTP_CACHE_LONG_MAX_AGE_SEC = 31536000;\n\nexport const ONE_DAY_MS = HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE * MS_PER_SECOND;\n\nexport const CACHE_CLEANUP_INTERVAL_MS = 60000;\n\nexport const LRU_DEFAULT_MAX_ENTRIES = 1000;\n\nexport const LRU_DEFAULT_MAX_SIZE_BYTES = 50 * 1024 * 1024;\n\nexport const CLEANUP_INTERVAL_MULTIPLIER = 2;\n", "{\n \"name\": \"veryfront\",\n \"version\": \"0.0.75\",\n \"nodeModulesDir\": \"auto\",\n \"exclude\": [\n \"npm/\",\n \"dist/\",\n \"coverage/\",\n \"scripts/\",\n \"examples/\",\n \"src/cli/templates/files/\",\n \"src/cli/templates/integrations/\"\n ],\n \"exports\": {\n \".\": \"./src/index.ts\",\n \"./cli\": \"./src/cli/main.ts\",\n \"./server\": \"./src/server/index.ts\",\n \"./middleware\": \"./src/middleware/index.ts\",\n \"./components\": \"./src/react/components/index.ts\",\n \"./data\": \"./src/data/index.ts\",\n \"./config\": \"./src/core/config/index.ts\",\n \"./platform\": \"./src/platform/index.ts\",\n \"./ai\": \"./src/ai/index.ts\",\n \"./ai/client\": \"./src/ai/client.ts\",\n \"./ai/react\": \"./src/ai/react/index.ts\",\n \"./ai/primitives\": \"./src/ai/react/primitives/index.ts\",\n \"./ai/components\": \"./src/ai/react/components/index.ts\",\n \"./ai/production\": \"./src/ai/production/index.ts\",\n \"./ai/dev\": \"./src/ai/dev/index.ts\",\n \"./ai/workflow\": \"./src/ai/workflow/index.ts\",\n \"./ai/workflow/react\": \"./src/ai/workflow/react/index.ts\",\n \"./oauth\": \"./src/core/oauth/index.ts\",\n \"./oauth/providers\": \"./src/core/oauth/providers/index.ts\",\n \"./oauth/handlers\": \"./src/core/oauth/handlers/index.ts\",\n \"./oauth/token-store\": \"./src/core/oauth/token-store/index.ts\",\n \"./head\": \"./src/exports/head.ts\",\n \"./router\": \"./src/exports/router.ts\",\n \"./context\": \"./src/exports/context.ts\",\n \"./fonts\": \"./src/exports/fonts.ts\"\n },\n \"imports\": {\n \"@veryfront\": \"./src/index.ts\",\n \"@veryfront/\": \"./src/\",\n \"@veryfront/ai\": \"./src/ai/index.ts\",\n \"@veryfront/ai/\": \"./src/ai/\",\n \"@veryfront/platform\": \"./src/platform/index.ts\",\n \"@veryfront/platform/\": \"./src/platform/\",\n \"@veryfront/types\": \"./src/core/types/index.ts\",\n \"@veryfront/types/\": \"./src/core/types/\",\n \"@veryfront/utils\": \"./src/core/utils/index.ts\",\n \"@veryfront/utils/\": \"./src/core/utils/\",\n \"@veryfront/middleware\": \"./src/middleware/index.ts\",\n \"@veryfront/middleware/\": \"./src/middleware/\",\n \"@veryfront/errors\": \"./src/core/errors/index.ts\",\n \"@veryfront/errors/\": \"./src/core/errors/\",\n \"@veryfront/config\": \"./src/core/config/index.ts\",\n \"@veryfront/config/\": \"./src/core/config/\",\n \"@veryfront/observability\": \"./src/observability/index.ts\",\n \"@veryfront/observability/\": \"./src/observability/\",\n \"@veryfront/routing\": \"./src/routing/index.ts\",\n \"@veryfront/routing/\": \"./src/routing/\",\n \"@veryfront/transforms\": \"./src/build/transforms/index.ts\",\n \"@veryfront/transforms/\": \"./src/build/transforms/\",\n \"@veryfront/data\": \"./src/data/index.ts\",\n \"@veryfront/data/\": \"./src/data/\",\n \"@veryfront/security\": \"./src/security/index.ts\",\n \"@veryfront/security/\": \"./src/security/\",\n \"@veryfront/components\": \"./src/react/components/index.ts\",\n \"@veryfront/react\": \"./src/react/index.ts\",\n \"@veryfront/react/\": \"./src/react/\",\n \"@veryfront/html\": \"./src/html/index.ts\",\n \"@veryfront/html/\": \"./src/html/\",\n \"@veryfront/rendering\": \"./src/rendering/index.ts\",\n \"@veryfront/rendering/\": \"./src/rendering/\",\n \"@veryfront/build\": \"./src/build/index.ts\",\n \"@veryfront/build/\": \"./src/build/\",\n \"@veryfront/server\": \"./src/server/index.ts\",\n \"@veryfront/server/\": \"./src/server/\",\n \"@veryfront/modules\": \"./src/module-system/index.ts\",\n \"@veryfront/modules/\": \"./src/module-system/\",\n \"@veryfront/compat/console\": \"./src/platform/compat/console/index.ts\",\n \"@veryfront/compat/\": \"./src/platform/compat/\",\n \"@veryfront/oauth\": \"./src/core/oauth/index.ts\",\n \"@veryfront/oauth/\": \"./src/core/oauth/\",\n \"std/\": \"https://deno.land/std@0.220.0/\",\n \"@std/path\": \"https://deno.land/std@0.220.0/path/mod.ts\",\n \"@std/testing/bdd.ts\": \"https://deno.land/std@0.220.0/testing/bdd.ts\",\n \"@std/expect\": \"https://deno.land/std@0.220.0/expect/mod.ts\",\n \"csstype\": \"https://esm.sh/csstype@3.2.3\",\n \"@types/react\": \"https://esm.sh/@types/react@18.3.27?deps=csstype@3.2.3\",\n \"@types/react-dom\": \"https://esm.sh/@types/react-dom@18.3.7?deps=csstype@3.2.3\",\n \"react\": \"npm:react@18.3.1\",\n \"react-dom\": \"npm:react-dom@18.3.1\",\n \"react-dom/server\": \"npm:react-dom@18.3.1/server\",\n \"react-dom/client\": \"npm:react-dom@18.3.1/client\",\n \"react/jsx-runtime\": \"npm:react@18.3.1/jsx-runtime\",\n \"react/jsx-dev-runtime\": \"npm:react@18.3.1/jsx-dev-runtime\",\n \"@mdx-js/mdx\": \"npm:@mdx-js/mdx@3.0.0\",\n \"@mdx-js/react\": \"npm:@mdx-js/react@3.0.0\",\n \"unist-util-visit\": \"npm:unist-util-visit@5.0.0\",\n \"mdast-util-to-string\": \"npm:mdast-util-to-string@4.0.0\",\n \"github-slugger\": \"npm:github-slugger@2.0.0\",\n \"remark-gfm\": \"npm:remark-gfm@4.0.1\",\n \"remark-frontmatter\": \"npm:remark-frontmatter@5.0.0\",\n \"rehype-highlight\": \"npm:rehype-highlight@7.0.2\",\n \"rehype-slug\": \"npm:rehype-slug@6.0.0\",\n \"esbuild\": \"npm:esbuild@0.20.2\",\n \"esbuild/mod.js\": \"npm:esbuild@0.20.2\",\n \"es-module-lexer\": \"npm:es-module-lexer@1.5.0\",\n \"zod\": \"npm:zod@3.25.76\",\n \"mime-types\": \"npm:mime-types@2.1.35\",\n \"mdast\": \"npm:@types/mdast@4.0.3\",\n \"hast\": \"npm:@types/hast@3.0.3\",\n \"unist\": \"npm:@types/unist@3.0.2\",\n \"unified\": \"npm:unified@11.0.5\",\n \"ai\": \"npm:ai@5.0.76\",\n \"ai/react\": \"npm:@ai-sdk/react@2.0.1\",\n \"@ai-sdk/react\": \"npm:@ai-sdk/react@2.0.1\",\n \"@ai-sdk/openai\": \"https://esm.sh/@ai-sdk/openai@2.0.1\",\n \"@ai-sdk/anthropic\": \"https://esm.sh/@ai-sdk/anthropic@2.0.1\",\n \"unocss\": \"https://esm.sh/unocss@0.59.0\",\n \"@unocss/core\": \"https://esm.sh/@unocss/core@0.59.0\",\n \"@unocss/preset-wind\": \"https://esm.sh/@unocss/preset-wind@0.59.0\",\n \"next-themes\": \"npm:next-themes@0.4\",\n \"redis\": \"npm:redis\",\n \"pg\": \"npm:pg\",\n \"@opentelemetry/api\": \"npm:@opentelemetry/api@1\",\n \"@opentelemetry/core\": \"npm:@opentelemetry/core@1\",\n \"@opentelemetry/sdk-trace-base\": \"npm:@opentelemetry/sdk-trace-base@1\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"npm:@opentelemetry/exporter-trace-otlp-http@0.57\",\n \"@opentelemetry/resources\": \"npm:@opentelemetry/resources@1\",\n \"@opentelemetry/semantic-conventions\": \"npm:@opentelemetry/semantic-conventions@1\",\n \"@babel/parser\": \"npm:@babel/parser@7.26.3\",\n \"@babel/traverse\": \"npm:@babel/traverse@7.26.3\",\n \"@babel/generator\": \"npm:@babel/generator@7.26.3\",\n \"@babel/types\": \"npm:@babel/types@7.26.3\"\n },\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"jsxImportSource\": \"react\",\n \"strict\": true,\n \"noImplicitAny\": true,\n \"noUncheckedIndexedAccess\": true,\n \"types\": [\"npm:@types/react@18\"],\n \"lib\": [\n \"deno.window\",\n \"dom\",\n \"dom.iterable\",\n \"dom.asynciterable\",\n \"deno.ns\"\n ]\n },\n \"tasks\": {\n \"setup\": \"deno run --allow-all scripts/setup.ts\",\n \"dev\": \"deno run --allow-all --no-lock --unstable-net --unstable-worker-options src/cli/main.ts dev\",\n \"build\": \"deno compile --allow-all --output ../../bin/veryfront src/cli/main.ts\",\n \"build:npm\": \"deno run -A scripts/build-npm.ts\",\n \"release\": \"deno run -A scripts/release.ts\",\n \"test\": \"VF_DISABLE_LRU_INTERVAL=1 DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --unstable-worker-options --unstable-net\",\n \"test:unit\": \"VF_DISABLE_LRU_INTERVAL=1 DENO_JOBS=1 deno test --parallel --allow-all --v8-flags=--max-old-space-size=8192 --ignore=tests,src/ai/workflow/__tests__ --unstable-worker-options --unstable-net\",\n \"test:integration\": \"VF_DISABLE_LRU_INTERVAL=1 DENO_JOBS=1 deno test --parallel --fail-fast --allow-all tests --unstable-worker-options --unstable-net\",\n \"test:coverage\": \"rm -rf coverage && DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --coverage=coverage --unstable-worker-options --unstable-net || exit 1\",\n \"test:coverage:unit\": \"rm -rf coverage && DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --coverage=coverage --ignore=tests --unstable-worker-options --unstable-net || exit 1\",\n \"test:coverage:integration\": \"rm -rf coverage && DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --coverage=coverage tests --unstable-worker-options --unstable-net || exit 1\",\n \"coverage:report\": \"deno coverage coverage --include=src/ --exclude=tests --exclude=src/**/*_test.ts --exclude=src/**/*_test.tsx --exclude=src/**/*.test.ts --exclude=src/**/*.test.tsx --lcov > coverage/lcov.info && deno run --allow-read scripts/check-coverage.ts 80\",\n \"coverage:html\": \"deno coverage coverage --include=src/ --exclude=tests --exclude=src/**/*_test.ts --exclude=src/**/*_test.tsx --exclude=src/**/*.test.ts --exclude=src/**/*.test.tsx --html\",\n \"lint\": \"DENO_NO_PACKAGE_JSON=1 deno lint src/\",\n \"fmt\": \"deno fmt src/\",\n \"typecheck\": \"deno check src/index.ts src/cli/main.ts src/server/index.ts src/routing/api/index.ts src/rendering/index.ts src/platform/index.ts src/platform/adapters/index.ts src/build/index.ts src/build/production-build/index.ts src/build/transforms/index.ts src/core/config/index.ts src/core/utils/index.ts src/data/index.ts src/security/index.ts src/middleware/index.ts src/server/handlers/dev/index.ts src/server/handlers/request/api/index.ts src/rendering/cache/index.ts src/rendering/cache/stores/index.ts src/rendering/rsc/actions/index.ts src/html/index.ts src/module-system/index.ts\",\n \"docs:check-links\": \"deno run -A scripts/check-doc-links.ts\",\n \"lint:ban-console\": \"deno run --allow-read scripts/ban-console.ts\",\n \"lint:ban-deep-imports\": \"deno run --allow-read scripts/ban-deep-imports.ts\",\n \"lint:ban-internal-root-imports\": \"deno run --allow-read scripts/ban-internal-root-imports.ts\",\n \"lint:check-awaits\": \"deno run --allow-read scripts/check-unawaited-promises.ts\",\n \"lint:platform\": \"deno run --allow-read scripts/lint-platform-agnostic.ts\",\n \"check:circular\": \"deno run -A jsr:@cunarist/deno-circular-deps src/index.ts\"\n },\n \"lint\": {\n \"include\": [\n \"src/**/*.ts\",\n \"src/**/*.tsx\"\n ],\n \"exclude\": [\n \"dist/\",\n \"coverage/\"\n ],\n \"rules\": {\n \"tags\": [\n \"recommended\"\n ],\n \"include\": [\n \"ban-untagged-todo\"\n ],\n \"exclude\": [\n \"no-explicit-any\",\n \"no-process-global\",\n \"no-console\"\n ]\n }\n },\n \"fmt\": {\n \"include\": [\n \"src/**/*.ts\",\n \"src/**/*.tsx\"\n ],\n \"exclude\": [\n \"dist/\",\n \"coverage/\"\n ],\n \"options\": {\n \"useTabs\": false,\n \"lineWidth\": 100,\n \"indentWidth\": 2,\n \"semiColons\": true,\n \"singleQuote\": false,\n \"proseWrap\": \"preserve\"\n }\n }\n}\n", "export const isDeno = typeof Deno !== \"undefined\" && typeof Deno.version === \"object\";\nexport const isNode =\n typeof (globalThis as { process?: { versions?: { node?: string } } }).process !== \"undefined\" &&\n (globalThis as { process?: { versions?: { node?: string } } }).process?.versions?.node !==\n undefined;\nexport const isBun = typeof (globalThis as { Bun?: unknown }).Bun !== \"undefined\";\nexport const isCloudflare = typeof globalThis !== \"undefined\" && \"caches\" in globalThis &&\n \"WebSocketPair\" in globalThis;\n\n/**\n * Detect if running in Node.js (vs Deno)\n * Use this function instead of the constant when runtime detection needs to happen\n * at call time (e.g., when bundled with esbuild's __esm lazy initialization pattern)\n */\nexport function isNodeRuntime(): boolean {\n // deno-lint-ignore no-explicit-any\n const _global = globalThis as any;\n // Check Deno.version to distinguish real Deno from the npm build shim\n const isRealDeno = typeof Deno !== \"undefined\" && typeof Deno.version === \"object\";\n return !isRealDeno && typeof _global.process !== \"undefined\" &&\n !!_global.process?.versions?.node;\n}\n", "import { isDeno as IS_DENO } from \"./runtime.ts\";\n\nconst nodeProcess = (globalThis as { process?: typeof import(\"node:process\") }).process;\nconst hasNodeProcess = !!nodeProcess?.versions?.node;\n\nexport function getArgs(): string[] {\n if (IS_DENO) {\n return Deno.args;\n }\n if (hasNodeProcess) {\n return nodeProcess!.argv.slice(2);\n }\n return [];\n}\n\nexport function exit(code?: number): never {\n if (IS_DENO) {\n Deno.exit(code);\n }\n if (hasNodeProcess) {\n nodeProcess!.exit(code);\n }\n throw new Error(\"exit() is not supported in this runtime\");\n}\n\nexport function cwd(): string {\n if (IS_DENO) {\n return Deno.cwd();\n }\n if (hasNodeProcess) {\n return nodeProcess!.cwd();\n }\n throw new Error(\"cwd() is not supported in this runtime\");\n}\n\nexport function chdir(directory: string): void {\n if (IS_DENO) {\n Deno.chdir(directory);\n } else {\n if (hasNodeProcess) {\n nodeProcess!.chdir(directory);\n return;\n }\n throw new Error(\"chdir() is not supported in this runtime\");\n }\n}\n\nexport function env(): Record<string, string> {\n if (IS_DENO) {\n return Deno.env.toObject();\n }\n if (hasNodeProcess) {\n return nodeProcess!.env as Record<string, string>;\n }\n return {};\n}\n\nexport function getEnv(key: string): string | undefined {\n if (IS_DENO) {\n return Deno.env.get(key);\n }\n if (hasNodeProcess) {\n return nodeProcess!.env[key];\n }\n return undefined;\n}\n\n/**\n * Get an environment variable or throw if not set\n * @throws Error if the environment variable is not set\n */\nexport function requireEnv(key: string): string {\n const value = getEnv(key);\n if (value === undefined) {\n throw new Error(`Required environment variable \"${key}\" is not set`);\n }\n return value;\n}\n\nexport function setEnv(key: string, value: string): void {\n if (IS_DENO) {\n Deno.env.set(key, value);\n } else {\n if (hasNodeProcess) {\n nodeProcess!.env[key] = value;\n return;\n }\n throw new Error(\"setEnv() is not supported in this runtime\");\n }\n}\n\nexport function deleteEnv(key: string): void {\n if (IS_DENO) {\n Deno.env.delete(key);\n } else {\n if (hasNodeProcess) {\n delete nodeProcess!.env[key];\n return;\n }\n throw new Error(\"deleteEnv() is not supported in this runtime\");\n }\n}\n\nexport function pid(): number {\n if (IS_DENO) {\n return Deno.pid;\n }\n if (hasNodeProcess) {\n return nodeProcess!.pid;\n }\n return 0;\n}\n\nexport function ppid(): number {\n if (IS_DENO && \"ppid\" in Deno) {\n return Deno.ppid || 0;\n }\n if (hasNodeProcess) {\n return nodeProcess!.ppid || 0;\n }\n return 0;\n}\n\nexport function memoryUsage(): {\n rss: number;\n heapTotal: number;\n heapUsed: number;\n external: number;\n} {\n if (IS_DENO) {\n const usage = Deno.memoryUsage();\n return {\n rss: usage.rss,\n heapTotal: usage.heapTotal,\n heapUsed: usage.heapUsed,\n external: usage.external,\n };\n }\n\n if (!hasNodeProcess) {\n throw new Error(\"memoryUsage() is not supported in this runtime\");\n }\n\n const usage = nodeProcess!.memoryUsage();\n return {\n rss: usage.rss,\n heapTotal: usage.heapTotal,\n heapUsed: usage.heapUsed,\n external: usage.external || 0,\n };\n}\n\n/**\n * Check if stdin is a TTY (terminal)\n */\nexport function isInteractive(): boolean {\n if (IS_DENO) {\n return Deno.stdin.isTerminal();\n }\n if (hasNodeProcess) {\n return nodeProcess!.stdin.isTTY ?? false;\n }\n return false;\n}\n\n/**\n * Get network interfaces\n */\nexport async function getNetworkInterfaces(): Promise<\n Array<{ name: string; address: string; family: \"IPv4\" | \"IPv6\" }>\n> {\n if (IS_DENO) {\n const interfaces = Deno.networkInterfaces();\n return interfaces.map((iface) => ({\n name: iface.name,\n address: iface.address,\n family: iface.family as \"IPv4\" | \"IPv6\",\n }));\n }\n\n if (!hasNodeProcess) {\n throw new Error(\"networkInterfaces() is not supported in this runtime\");\n }\n\n const os = await import(\"node:os\");\n const interfaces = os.networkInterfaces();\n const result: Array<{ name: string; address: string; family: \"IPv4\" | \"IPv6\" }> = [];\n\n for (const [name, addrs] of Object.entries(interfaces)) {\n if (!addrs) continue;\n for (const addr of addrs) {\n result.push({\n name,\n address: addr.address,\n family: addr.family as \"IPv4\" | \"IPv6\",\n });\n }\n }\n\n return result;\n}\n\n/**\n * Get runtime version string\n */\nexport function getRuntimeVersion(): string {\n if (IS_DENO) {\n return `Deno ${Deno.version.deno}`;\n }\n if (\"Bun\" in globalThis) {\n return `Bun ${(globalThis as unknown as { Bun: { version: string } }).Bun.version}`;\n }\n if (hasNodeProcess) {\n return `Node.js ${nodeProcess!.version}`;\n }\n return \"unknown\";\n}\n\n/**\n * Register a signal handler (SIGINT, SIGTERM) for graceful shutdown\n */\nexport function onSignal(signal: \"SIGINT\" | \"SIGTERM\", handler: () => void): void {\n if (IS_DENO) {\n Deno.addSignalListener(signal, handler);\n } else if (hasNodeProcess) {\n nodeProcess!.on(signal, handler);\n }\n}\n\n/**\n * Register global error handlers for uncaught exceptions and unhandled promise rejections.\n * These handlers prevent the process from crashing due to application code errors.\n *\n * IMPORTANT: These handlers should be registered early in the application lifecycle\n * to catch errors that escape try/catch blocks.\n *\n * @param onError - Callback invoked with the error. Return true to prevent process exit.\n */\nexport function onGlobalError(\n onError: (error: Error, type: \"uncaughtException\" | \"unhandledRejection\") => boolean | void,\n): void {\n if (IS_DENO) {\n // Deno uses global event listeners\n globalThis.addEventListener(\"error\", (event) => {\n const error = event.error instanceof Error ? event.error : new Error(String(event.error));\n const shouldPreventExit = onError(error, \"uncaughtException\");\n if (shouldPreventExit) {\n event.preventDefault();\n }\n });\n\n globalThis.addEventListener(\"unhandledrejection\", (event) => {\n const error = event.reason instanceof Error ? event.reason : new Error(String(event.reason));\n const shouldPreventExit = onError(error, \"unhandledRejection\");\n if (shouldPreventExit) {\n event.preventDefault();\n }\n });\n } else if (hasNodeProcess) {\n // Node.js uses process event handlers\n nodeProcess!.on(\"uncaughtException\", (error: Error) => {\n onError(error, \"uncaughtException\");\n // Note: In Node.js, uncaughtException doesn't exit by default if handler is registered\n });\n\n nodeProcess!.on(\"unhandledRejection\", (reason: unknown) => {\n const error = reason instanceof Error ? reason : new Error(String(reason));\n onError(error, \"unhandledRejection\");\n });\n }\n}\n\n/**\n * Unreference a timer to prevent it from keeping the process alive\n */\nexport function unrefTimer(timerId: ReturnType<typeof setInterval>): void {\n if (IS_DENO) {\n Deno.unrefTimer(timerId as number);\n } else if (timerId && typeof timerId === \"object\" && \"unref\" in timerId) {\n (timerId as { unref: () => void }).unref();\n }\n}\n\n/**\n * Get the executable path of the current runtime\n */\nexport function execPath(): string {\n if (IS_DENO) {\n return Deno.execPath();\n }\n if (hasNodeProcess) {\n return nodeProcess!.execPath;\n }\n return \"\";\n}\n\n/**\n * Get process uptime in seconds\n * Returns OS uptime on Deno, process uptime on Node.js\n */\nexport function uptime(): number {\n if (IS_DENO) {\n // Deno.osUptime() returns system uptime in seconds\n return Deno.osUptime?.() ?? 0;\n }\n if (hasNodeProcess) {\n // process.uptime() returns process uptime in seconds\n return nodeProcess!.uptime?.() ?? 0;\n }\n return 0;\n}\n\n/**\n * Get stdout stream for writing\n * Returns null if not available (e.g., in browser/workers)\n */\nexport function getStdout(): { write: (data: string) => void } | null {\n if (IS_DENO) {\n const encoder = new TextEncoder();\n return {\n write: (data: string) => {\n Deno.stdout.writeSync(encoder.encode(data));\n },\n };\n }\n if (hasNodeProcess && nodeProcess!.stdout) {\n return {\n write: (data: string) => {\n nodeProcess!.stdout.write(data);\n },\n };\n }\n return null;\n}\n\n// Cached Node.js modules for synchronous prompt\nlet cachedNodeFs: typeof import(\"node:fs\") | null = null;\n\n/**\n * Synchronous prompt function that works across Deno and Node.js\n * Displays a message and reads user input from stdin\n */\nexport function promptSync(message?: string): string | null {\n if (IS_DENO) {\n // Deno has a built-in prompt() function\n return prompt(message);\n }\n\n if (hasNodeProcess) {\n // Print the message\n if (message) {\n nodeProcess!.stdout.write(message + \" \");\n }\n\n // Lazy load fs module\n if (!cachedNodeFs) {\n // Dynamic import converted to sync require for bundling\n // @ts-ignore - dynamic require for Node.js\n cachedNodeFs = globalThis.require?.(\"node:fs\") || null;\n if (!cachedNodeFs) {\n // Try alternative approach\n try {\n // @ts-ignore: __require is injected by bundlers for Node.js require\n cachedNodeFs = __require(\"node:fs\");\n } catch {\n return null;\n }\n }\n }\n\n if (!cachedNodeFs) {\n return null;\n }\n\n // Read synchronously using fs\n // This works by reading from file descriptor 0 (stdin)\n // Use Uint8Array for cross-platform compatibility\n const bufferSize = 1024;\n const uint8Array = new Uint8Array(bufferSize);\n let input = \"\";\n\n try {\n // Read from stdin (fd 0) synchronously\n const bytesRead = cachedNodeFs.readSync(0, uint8Array, 0, bufferSize, null);\n if (bytesRead > 0) {\n const decoder = new TextDecoder(\"utf-8\");\n input = decoder.decode(uint8Array.subarray(0, bytesRead)).trim();\n }\n } catch {\n // If stdin is not available or EOF, return null\n return null;\n }\n\n return input || null;\n }\n\n return null;\n}\n", "import denoConfig from \"../../../deno.json\" with { type: \"json\" };\nimport { getEnv } from \"../../platform/compat/process.ts\";\n\nexport const VERSION: string = getEnv(\"VERYFRONT_VERSION\") ||\n (typeof denoConfig.version === \"string\" ? denoConfig.version : \"0.0.0\");\n\nexport const SERVER_START_TIME: number = Date.now();\n\nexport interface BuildVersion {\n framework: string;\n serverStart: number;\n projectUpdated?: string;\n}\n\nexport function createBuildVersion(projectUpdatedAt?: string): BuildVersion {\n return {\n framework: VERSION,\n serverStart: SERVER_START_TIME,\n projectUpdated: projectUpdatedAt,\n };\n}\n", "export const ESM_CDN_BASE = \"https://esm.sh\";\n\nexport const JSDELIVR_CDN_BASE = \"https://cdn.jsdelivr.net\";\n\nexport const DENO_STD_BASE = \"https://deno.land\";\n\nexport const REACT_VERSION_17 = \"17.0.2\";\nexport const REACT_VERSION_18_2 = \"18.2.0\";\nexport const REACT_VERSION_18_3 = \"18.3.1\";\nexport const REACT_VERSION_19_RC = \"19.0.0-rc.0\";\nexport const REACT_VERSION_19 = \"19.1.1\";\n\nexport const REACT_DEFAULT_VERSION = REACT_VERSION_18_3;\n\nexport function getReactCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react@${version}`;\n}\n\nexport function getReactDOMCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react-dom@${version}`;\n}\n\nexport function getReactDOMClientCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react-dom@${version}/client`;\n}\n\nexport function getReactDOMServerCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react-dom@${version}/server`;\n}\n\nexport function getReactJSXRuntimeCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react@${version}/jsx-runtime`;\n}\n\nexport function getReactJSXDevRuntimeCDNUrl(version: string = REACT_DEFAULT_VERSION): string {\n return `${ESM_CDN_BASE}/react@${version}/jsx-dev-runtime`;\n}\n\nexport function getReactImportMap(version: string = REACT_DEFAULT_VERSION): Record<string, string> {\n return {\n react: getReactCDNUrl(version),\n \"react-dom\": getReactDOMCDNUrl(version),\n \"react-dom/client\": getReactDOMClientCDNUrl(version),\n \"react-dom/server\": getReactDOMServerCDNUrl(version),\n \"react/jsx-runtime\": getReactJSXRuntimeCDNUrl(version),\n \"react/jsx-dev-runtime\": getReactJSXDevRuntimeCDNUrl(version),\n };\n}\n\nexport const DEFAULT_ALLOWED_CDN_HOSTS = [ESM_CDN_BASE, DENO_STD_BASE];\n\nexport const DENO_STD_VERSION = \"0.220.0\";\n\nexport function getDenoStdNodeBase(): string {\n return `${DENO_STD_BASE}/std@${DENO_STD_VERSION}/node`;\n}\n\n// Tailwind CSS constants - unified version for all imports\nexport const TAILWIND_VERSION = \"4.1.8\";\n\n// UnoCSS constants\nexport const UNOCSS_VERSION = \"0.59.0\";\n\nexport function getUnoCSSTailwindResetUrl(): string {\n return `${ESM_CDN_BASE}/@unocss/reset@${UNOCSS_VERSION}/tailwind.css`;\n}\n\n// Veryfront package version - derived from deno.json (single source of truth)\nexport { VERSION as VERYFRONT_VERSION } from \"../version.ts\";\n", "/**\n * Environment variable utilities\n *\n * Centralized utilities for checking environment flags.\n * This ensures consistent behavior across the entire codebase.\n */\n\n/**\n * Environment variable names used by Veryfront\n */\nexport const ENV_VARS = {\n DEBUG: \"VERYFRONT_DEBUG\",\n DEEP_INSPECT: \"VERYFRONT_DEEP_INSPECT\",\n CACHE_DIR: \"VERYFRONT_CACHE_DIR\",\n PORT: \"VERYFRONT_PORT\",\n VERSION: \"VERYFRONT_VERSION\",\n} as const;\n\n/**\n * Check if a debug environment variable value is truthy.\n * Accepts: \"1\", \"true\", \"yes\" (case-insensitive)\n *\n * @param value - The environment variable value to check\n * @returns true if the value indicates debug mode should be enabled\n */\nexport function isTruthyEnvValue(value: string | undefined): boolean {\n if (!value) return false;\n const normalized = value.toLowerCase().trim();\n return normalized === \"1\" || normalized === \"true\" || normalized === \"yes\";\n}\n\n/**\n * Check if debug mode is enabled via environment variable.\n * Works with RuntimeAdapter's env interface.\n *\n * @param env - Environment accessor object with get() method\n * @returns true if VERYFRONT_DEBUG is set to a truthy value\n */\nexport function isDebugEnabled(env: { get(key: string): string | undefined }): boolean {\n return isTruthyEnvValue(env.get(ENV_VARS.DEBUG));\n}\n\n/**\n * Check if deep inspect mode is enabled via environment variable.\n *\n * @param env - Environment accessor object with get() method\n * @returns true if VERYFRONT_DEEP_INSPECT is set to a truthy value\n */\nexport function isDeepInspectEnabled(env: { get(key: string): string | undefined }): boolean {\n return isTruthyEnvValue(env.get(ENV_VARS.DEEP_INSPECT));\n}\n\n/**\n * Check if either debug or deep inspect mode is enabled.\n *\n * @param env - Environment accessor object with get() method\n * @returns true if either debug flag is enabled\n */\nexport function isAnyDebugEnabled(env: { get(key: string): string | undefined }): boolean {\n return isDebugEnabled(env) || isDeepInspectEnabled(env);\n}\n", "export const HASH_SEED_DJB2 = 5381;\n\nexport const HASH_SEED_FNV1A = 2166136261;\n", "export const KB_IN_BYTES = 1024;\n\nexport const HTTP_MODULE_FETCH_TIMEOUT_MS = 2500;\n\nexport const HMR_RECONNECT_DELAY_MS = 1000;\n\nexport const HMR_RELOAD_DELAY_MS = 1000;\n\nexport const HMR_FILE_WATCHER_DEBOUNCE_MS = 100;\n\nexport const HMR_KEEP_ALIVE_INTERVAL_MS = 30000;\n\nexport const DASHBOARD_RECONNECT_DELAY_MS = 3000;\n\nexport const SERVER_FUNCTION_DEFAULT_TIMEOUT_MS = 30000;\n\nexport const PREFETCH_MAX_SIZE_BYTES = 200 * KB_IN_BYTES;\n\nexport const PREFETCH_DEFAULT_TIMEOUT_MS = 10000;\n\nexport const PREFETCH_DEFAULT_DELAY_MS = 200;\n\nexport const HTTP_OK = 200;\n\nexport const HTTP_NO_CONTENT = 204;\n\nexport const HTTP_CREATED = 201;\n\nexport const HTTP_REDIRECT_FOUND = 302;\n\nexport const HTTP_NOT_MODIFIED = 304;\n\nexport const HTTP_BAD_REQUEST = 400;\n\nexport const HTTP_UNAUTHORIZED = 401;\n\nexport const HTTP_FORBIDDEN = 403;\n\nexport const HTTP_NOT_FOUND = 404;\n\nexport const HTTP_METHOD_NOT_ALLOWED = 405;\n\nexport const HTTP_GONE = 410;\n\nexport const HTTP_PAYLOAD_TOO_LARGE = 413;\n\nexport const HTTP_URI_TOO_LONG = 414;\n\nexport const HTTP_TOO_MANY_REQUESTS = 429;\n\nexport const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;\n\nexport const HTTP_SERVER_ERROR = 500;\n\nexport const HTTP_INTERNAL_SERVER_ERROR = 500;\n\nexport const HTTP_BAD_GATEWAY = 502;\n\nexport const HTTP_NOT_IMPLEMENTED = 501;\n\nexport const HTTP_UNAVAILABLE = 503;\n\nexport const HTTP_NETWORK_CONNECT_TIMEOUT = 599;\n\nexport const HTTP_STATUS_SUCCESS_MIN = 200;\n\nexport const HTTP_STATUS_REDIRECT_MIN = 300;\n\nexport const HTTP_STATUS_CLIENT_ERROR_MIN = 400;\n\nexport const HTTP_STATUS_SERVER_ERROR_MIN = 500;\n\nexport const HTTP_CONTENT_TYPES = {\n JS: \"application/javascript; charset=utf-8\",\n JSON: \"application/json; charset=utf-8\",\n HTML: \"text/html; charset=utf-8\",\n CSS: \"text/css; charset=utf-8\",\n TEXT: \"text/plain; charset=utf-8\",\n} as const;\n\nimport { MS_PER_SECOND, SECONDS_PER_MINUTE } from \"./cache.ts\";\n\nexport const MS_PER_MINUTE = 60000;\n\nexport { MS_PER_SECOND, SECONDS_PER_MINUTE };\n\nexport const HTTP_CONTENT_TYPE_IMAGE_PNG = \"image/png\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_JPEG = \"image/jpeg\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_WEBP = \"image/webp\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_AVIF = \"image/avif\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_SVG = \"image/svg+xml\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_GIF = \"image/gif\";\n\nexport const HTTP_CONTENT_TYPE_IMAGE_ICO = \"image/x-icon\";\n", "import { KB_IN_BYTES } from \"./http.ts\";\n\nexport const HMR_MAX_MESSAGE_SIZE_BYTES = 1024 * KB_IN_BYTES;\n\nexport const HMR_MAX_MESSAGES_PER_MINUTE = 100;\n\nexport const HMR_CLIENT_RELOAD_DELAY_MS = 3000;\n\nexport const HMR_PORT_OFFSET = 1;\n\nexport const HMR_RATE_LIMIT_WINDOW_MS = 60000;\n\nexport const HMR_CLOSE_NORMAL = 1000;\n\nexport const HMR_CLOSE_RATE_LIMIT = 1008;\n\nexport const HMR_CLOSE_MESSAGE_TOO_LARGE = 1009;\n\nexport const HMR_MESSAGE_TYPES = {\n CONNECTED: \"connected\",\n UPDATE: \"update\",\n RELOAD: \"reload\",\n PING: \"ping\",\n PONG: \"pong\",\n} as const;\n\nexport function isValidHMRMessageType(type: string): type is keyof typeof HMR_MESSAGE_TYPES {\n return Object.values(HMR_MESSAGE_TYPES).includes(\n type as typeof HMR_MESSAGE_TYPES[keyof typeof HMR_MESSAGE_TYPES],\n );\n}\n", "export const Z_INDEX_DEV_INDICATOR = 9998;\nexport const Z_INDEX_ERROR_OVERLAY = 9999;\n\nexport const BREAKPOINT_SM = 640;\nexport const BREAKPOINT_MD = 768;\nexport const BREAKPOINT_LG = 1024;\nexport const BREAKPOINT_XL = 1280;\n\nexport const PROSE_MAX_WIDTH = \"65ch\";\n", "export const DEFAULT_DEV_SERVER_PORT = 3000;\nexport const DEFAULT_REDIS_PORT = 6379;\nexport const DEFAULT_API_SERVER_PORT = 8080;\nexport const DEFAULT_PREVIEW_SERVER_PORT = 5000;\nexport const DEFAULT_METRICS_PORT = 9000;\n\nexport const BYTES_PER_KB = 1024;\nexport const BYTES_PER_MB = 1024 * 1024;\n\nexport const DEFAULT_IMAGE_THUMBNAIL_SIZE = 256;\nexport const DEFAULT_IMAGE_SMALL_SIZE = 512;\nexport const DEFAULT_IMAGE_LARGE_SIZE = 2048;\n\nexport const RESPONSIVE_IMAGE_WIDTH_XS = 320;\nexport const RESPONSIVE_IMAGE_WIDTH_SM = 640;\nexport const RESPONSIVE_IMAGE_WIDTH_MD = 1024;\nexport const RESPONSIVE_IMAGE_WIDTH_LG = 1920;\n\nexport const RESPONSIVE_IMAGE_WIDTHS = [\n RESPONSIVE_IMAGE_WIDTH_XS,\n RESPONSIVE_IMAGE_WIDTH_SM,\n RESPONSIVE_IMAGE_WIDTH_MD,\n RESPONSIVE_IMAGE_WIDTH_LG,\n] as const;\n\nexport const MAX_CHUNK_SIZE_KB = 4096;\n\nexport const MIN_PORT = 1;\n\nexport const MAX_PORT = 65535;\n\nexport const DEFAULT_SERVER_PORT = 8000;\n", "export const MAX_PATH_TRAVERSAL_DEPTH = 10;\n\nexport const FORBIDDEN_PATH_PATTERNS = [\n /\\0/, // Null bytes\n];\n\nexport const DIRECTORY_TRAVERSAL_PATTERN = /\\.\\.[\\/\\\\]/;\n\nexport const ABSOLUTE_PATH_PATTERN = /^[\\/\\\\]/;\n\nexport const MAX_PATH_LENGTH = 4096;\n\nexport const DEFAULT_MAX_STRING_LENGTH = 1000;\n", "/**\n * Default port for veryfront dev server.\n * This is the single source of truth for the default port.\n */\nexport const DEFAULT_PORT = 3000;\n\nexport const DEFAULT_TIMEOUT_MS = 5000;\n\nexport const SSR_TIMEOUT_MS = 10000;\n\nexport const SANDBOX_TIMEOUT_MS = 5000;\n\nexport const DEFAULT_CACHE_MAX_SIZE = 100;\n\nexport const defaultConfig = {\n server: {\n port: DEFAULT_PORT,\n hostname: \"0.0.0.0\",\n },\n\n timeouts: {\n default: DEFAULT_TIMEOUT_MS,\n api: 30000,\n ssr: SSR_TIMEOUT_MS,\n hmr: 30000,\n sandbox: SANDBOX_TIMEOUT_MS,\n },\n\n cache: {\n jit: {\n maxSize: DEFAULT_CACHE_MAX_SIZE,\n tempDirPrefix: \"vf-bundle-\",\n },\n },\n\n metrics: {\n ssrBoundaries: [5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000],\n },\n} as const;\n\nexport const DEFAULT_PREFETCH_DELAY_MS = 100;\n\nexport const DEFAULT_METRICS_COLLECT_INTERVAL_MS = 60000;\n\nexport const DURATION_HISTOGRAM_BOUNDARIES_MS = [\n 5,\n 10,\n 25,\n 50,\n 75,\n 100,\n 250,\n 500,\n 750,\n 1000,\n 2500,\n 5000,\n 7500,\n 10000,\n];\n\nexport const SIZE_HISTOGRAM_BOUNDARIES_KB = [\n 1,\n 5,\n 10,\n 25,\n 50,\n 100,\n 250,\n 500,\n 1000,\n 2500,\n 5000,\n 10000,\n];\n\nexport const DEFAULT_REDIS_SCAN_COUNT = 100;\n\nexport const DEFAULT_REDIS_BATCH_DELETE_SIZE = 1000;\n\nexport const PAGE_TRANSITION_DELAY_MS = 150;\n\nexport type DefaultConfig = typeof defaultConfig;\n", "/**\n * Centralized server endpoints and paths registry\n *\n * All internal veryfront URLs should be defined here as the single source of truth.\n * This prevents hardcoding URLs across the codebase and makes refactoring easier.\n */\n\n// Re-export DEFAULT_PORT from config/defaults.ts (the single source of truth)\nexport { DEFAULT_PORT } from \"@veryfront/config/defaults.ts\";\n\n/** Default port for development dashboard */\nexport const DEFAULT_DASHBOARD_PORT = 3002;\n\n/** Internal URL prefix for all veryfront endpoints */\nexport const INTERNAL_PREFIX = \"/_veryfront\" as const;\n\n/**\n * All internal veryfront URL path prefixes (directories)\n */\nexport const INTERNAL_PATH_PREFIXES = {\n /** React Server Components endpoints */\n RSC: `${INTERNAL_PREFIX}/rsc/`,\n /** File system access endpoints (base64 encoded paths) */\n FS: `${INTERNAL_PREFIX}/fs/`,\n /** Virtual module system */\n MODULES: `${INTERNAL_PREFIX}/modules/`,\n /** Generated page modules */\n PAGES: `${INTERNAL_PREFIX}/pages/`,\n /** Data JSON endpoints */\n DATA: `${INTERNAL_PREFIX}/data/`,\n /** Library modules (AI SDK, etc.) */\n LIB: `${INTERNAL_PREFIX}/lib/`,\n /** Chunk assets */\n CHUNKS: `${INTERNAL_PREFIX}/chunks/`,\n /** Client component modules */\n CLIENT: `${INTERNAL_PREFIX}/client/`,\n} as const;\n\n/**\n * Specific internal endpoint URLs\n */\nexport const INTERNAL_ENDPOINTS = {\n // Development endpoints\n HMR_RUNTIME: `${INTERNAL_PREFIX}/hmr-runtime.js`,\n HMR: `${INTERNAL_PREFIX}/hmr.js`,\n HYDRATE: `${INTERNAL_PREFIX}/hydrate.js`,\n ERROR_OVERLAY: `${INTERNAL_PREFIX}/error-overlay.js`,\n DEV_LOADER: `${INTERNAL_PREFIX}/dev-loader.js`,\n CLIENT_LOG: `${INTERNAL_PREFIX}/log`,\n\n // Production endpoints\n CLIENT_JS: `${INTERNAL_PREFIX}/client.js`,\n ROUTER_JS: `${INTERNAL_PREFIX}/router.js`,\n PREFETCH_JS: `${INTERNAL_PREFIX}/prefetch.js`,\n MANIFEST_JSON: `${INTERNAL_PREFIX}/manifest.json`,\n APP_JS: `${INTERNAL_PREFIX}/app.js`,\n\n // RSC endpoints\n RSC_CLIENT: `${INTERNAL_PREFIX}/rsc/client.js`,\n RSC_MANIFEST: `${INTERNAL_PREFIX}/rsc/manifest`,\n RSC_STREAM: `${INTERNAL_PREFIX}/rsc/stream`,\n RSC_PAYLOAD: `${INTERNAL_PREFIX}/rsc/payload`,\n RSC_RENDER: `${INTERNAL_PREFIX}/rsc/render`,\n RSC_PAGE: `${INTERNAL_PREFIX}/rsc/page`,\n RSC_MODULE: `${INTERNAL_PREFIX}/rsc/module`,\n RSC_DOM: `${INTERNAL_PREFIX}/rsc/dom.js`,\n RSC_HYDRATOR: `${INTERNAL_PREFIX}/rsc/hydrator.js`,\n RSC_HYDRATE_CLIENT: `${INTERNAL_PREFIX}/rsc/hydrate-client.js`,\n\n // Library module endpoints\n LIB_AI_REACT: `${INTERNAL_PREFIX}/lib/ai/react.js`,\n LIB_AI_COMPONENTS: `${INTERNAL_PREFIX}/lib/ai/components.js`,\n LIB_AI_PRIMITIVES: `${INTERNAL_PREFIX}/lib/ai/primitives.js`,\n} as const;\n\n/**\n * Build output directory paths (relative)\n */\nexport const BUILD_DIRS = {\n /** Main build output directory */\n ROOT: \"_veryfront\",\n /** Chunks directory */\n CHUNKS: \"_veryfront/chunks\",\n /** Data directory */\n DATA: \"_veryfront/data\",\n /** Assets directory */\n ASSETS: \"_veryfront/assets\",\n} as const;\n\n/**\n * Local project directory paths (relative to project root)\n * These are .gitignore'd directories for caching and temporary files\n */\nexport const PROJECT_DIRS = {\n /** Base veryfront internal directory */\n ROOT: \".veryfront\",\n /** Cache directory for build artifacts, transforms, etc. */\n CACHE: \".veryfront/cache\",\n /** KV store directory */\n KV: \".veryfront/kv\",\n /** Log files directory */\n LOGS: \".veryfront/logs\",\n /** Temporary files directory */\n TMP: \".veryfront/tmp\",\n} as const;\n\n/** Default cache directory path */\nexport const DEFAULT_CACHE_DIR = PROJECT_DIRS.CACHE;\n\n/**\n * Helper to check if a pathname is an internal veryfront endpoint\n */\nexport function isInternalEndpoint(pathname: string): boolean {\n return pathname.startsWith(INTERNAL_PREFIX + \"/\");\n}\n\n/**\n * Helper to check if a pathname is a static asset (has extension or is internal)\n */\nexport function isStaticAsset(pathname: string): boolean {\n return pathname.includes(\".\") || isInternalEndpoint(pathname);\n}\n\n/**\n * Normalize a chunk path to include the base prefix\n */\nexport function normalizeChunkPath(\n filename: string,\n basePath: string = INTERNAL_PATH_PREFIXES.CHUNKS,\n): string {\n if (filename.startsWith(\"/\")) {\n return filename;\n }\n return `${basePath.replace(/\\/$/, \"\")}/${filename}`;\n}\n\n// Re-export for backward compatibility\nexport const DEV_SERVER_ENDPOINTS = {\n HMR_RUNTIME: INTERNAL_ENDPOINTS.HMR_RUNTIME,\n ERROR_OVERLAY: INTERNAL_ENDPOINTS.ERROR_OVERLAY,\n} as const;\n", "export * from \"./build.ts\";\nexport * from \"./cache.ts\";\nexport * from \"./cdn.ts\";\nexport * from \"./env.ts\";\nexport * from \"./hash.ts\";\nexport * from \"./hmr.ts\";\nexport * from \"./html.ts\";\nexport * from \"./http.ts\";\nexport * from \"./network.ts\";\nexport * from \"./security.ts\";\nexport * from \"./server.ts\";\n", "/**\n * Project directory paths and file extensions\n *\n * For internal veryfront URL endpoints, see ./constants/server.ts\n */\n\nimport {\n BUILD_DIRS,\n INTERNAL_ENDPOINTS,\n INTERNAL_PATH_PREFIXES,\n INTERNAL_PREFIX,\n} from \"./constants/server.ts\";\n\nexport const PATHS = {\n PAGES_DIR: \"pages\",\n COMPONENTS_DIR: \"components\",\n PUBLIC_DIR: \"public\",\n STYLES_DIR: \"styles\",\n DIST_DIR: \"dist\",\n CONFIG_FILE: \"veryfront.config.js\",\n} as const;\n\n/**\n * @deprecated Use INTERNAL_PREFIX, INTERNAL_ENDPOINTS, INTERNAL_PATH_PREFIXES from ./constants/server.ts\n */\nexport const VERYFRONT_PATHS = {\n INTERNAL_PREFIX: INTERNAL_PREFIX,\n BUILD_DIR: BUILD_DIRS.ROOT,\n CHUNKS_DIR: BUILD_DIRS.CHUNKS,\n DATA_DIR: BUILD_DIRS.DATA,\n ASSETS_DIR: BUILD_DIRS.ASSETS,\n HMR_RUNTIME: INTERNAL_ENDPOINTS.HMR_RUNTIME,\n CLIENT_JS: INTERNAL_ENDPOINTS.CLIENT_JS,\n ROUTER_JS: INTERNAL_ENDPOINTS.ROUTER_JS,\n ERROR_OVERLAY: INTERNAL_ENDPOINTS.ERROR_OVERLAY,\n} as const;\n\nexport const FILE_EXTENSIONS = {\n MDX: [\".mdx\", \".md\"],\n SCRIPT: [\".tsx\", \".ts\", \".jsx\", \".js\"],\n STYLE: [\".css\", \".scss\", \".sass\"],\n ALL: [\".mdx\", \".md\", \".tsx\", \".ts\", \".jsx\", \".js\", \".css\"],\n} as const;\n\n// Re-export for convenience\nexport { BUILD_DIRS, INTERNAL_ENDPOINTS, INTERNAL_PATH_PREFIXES, INTERNAL_PREFIX };\n", "export async function computeHash(content: string): Promise<string> {\n const encoder = new TextEncoder();\n const data = encoder.encode(content);\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\nexport function getContentHash(content: string): Promise<string> {\n return computeHash(content);\n}\n\nexport function computeContentHash(content: string): Promise<string> {\n return computeHash(content);\n}\n\nexport interface BundleCode {\n code: string;\n css?: string;\n sourceMap?: string;\n}\n\nexport function computeCodeHash(code: BundleCode): Promise<string> {\n const combined = code.code + (code.css || \"\") + (code.sourceMap || \"\");\n return computeHash(combined);\n}\n\nexport function simpleHash(str: string): number {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return Math.abs(hash);\n}\n\nexport async function shortHash(content: string): Promise<string> {\n const fullHash = await computeHash(content);\n return fullHash.slice(0, 8);\n}\n", "export class MemoCache<V> {\n private cache = new Map<string, V>();\n\n get(key: string): V | undefined {\n return this.cache.get(key);\n }\n\n set(key: string, value: V): void {\n this.cache.set(key, value);\n }\n\n has(key: string): boolean {\n return this.cache.has(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n size(): number {\n return this.cache.size;\n }\n}\n\nexport function memoizeAsync<Args extends unknown[], Result>(\n fn: (...args: Args) => Promise<Result>,\n keyHasher: (...args: Args) => string,\n): (...args: Args) => Promise<Result> {\n const cache = new MemoCache<Result>();\n\n return async (...args: Args): Promise<Result> => {\n const key = keyHasher(...args);\n if (cache.has(key)) {\n return cache.get(key)!;\n }\n\n const result = await fn(...args);\n cache.set(key, result);\n return result;\n };\n}\n\nexport function memoize<Args extends unknown[], Result>(\n fn: (...args: Args) => Result,\n keyHasher: (...args: Args) => string,\n): (...args: Args) => Result {\n const cache = new MemoCache<Result>();\n\n return (...args: Args): Result => {\n const key = keyHasher(...args);\n if (cache.has(key)) {\n return cache.get(key)!;\n }\n\n const result = fn(...args);\n cache.set(key, result);\n return result;\n };\n}\n\n/**\n * FNV-1a hash algorithm for fast cache key generation.\n * 10-15x faster than JSON.stringify() and uses 70-80% less memory.\n *\n * @param values - Values to hash\n * @returns Hash string\n */\nexport function simpleHash(...values: unknown[]): string {\n const FNV_OFFSET_BASIS = 2166136261;\n const FNV_PRIME = 16777619;\n\n let hash = FNV_OFFSET_BASIS;\n\n for (const value of values) {\n const str = typeof value === \"string\" ? value : String(value);\n\n for (let i = 0; i < str.length; i++) {\n hash ^= str.charCodeAt(i);\n hash = Math.imul(hash, FNV_PRIME);\n }\n }\n\n // Convert to unsigned 32-bit and then to base-36 string\n return (hash >>> 0).toString(36);\n}\n", "import { logger } from \"./logger/logger.ts\";\n\nexport function normalizePath(pathname: string): string {\n pathname = pathname.replace(/\\\\+/g, \"/\").replace(/\\/\\.+\\//g, \"/\");\n\n if (pathname !== \"/\" && pathname.endsWith(\"/\")) {\n pathname = pathname.slice(0, -1);\n }\n\n return pathname;\n}\n\nexport function joinPath(a: string, b: string): string {\n return `${a.replace(/\\/$/, \"\")}/${b.replace(/^\\//, \"\")}`;\n}\n\nexport function isWithinDirectory(root: string, target: string): boolean {\n const normalizedRoot = normalizePath(root);\n const normalizedTarget = normalizePath(target);\n return normalizedTarget.startsWith(`${normalizedRoot}/`) || normalizedTarget === normalizedRoot;\n}\n\nexport function getExtension(path: string): string {\n const lastDot = path.lastIndexOf(\".\");\n if (lastDot === -1 || lastDot === path.length - 1) {\n return \"\";\n }\n return path.slice(lastDot);\n}\n\nexport function getDirectory(path: string): string {\n const normalized = normalizePath(path);\n const lastSlash = normalized.lastIndexOf(\"/\");\n return lastSlash <= 0 ? \"/\" : normalized.slice(0, lastSlash);\n}\n\nexport function hasHashedFilename(path: string): boolean {\n return /\\.[a-f0-9]{8,}\\./.test(path);\n}\n\nexport function isAbsolutePath(path: string): boolean {\n return path.startsWith(\"/\") || /^[A-Za-z]:[\\\\/]/.test(path);\n}\n\nexport function toBase64Url(s: string): string {\n const b64 = btoa(s);\n return b64.replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replaceAll(\"=\", \"\");\n}\n\nexport function fromBase64Url(encoded: string): string {\n const b64 = encoded.replaceAll(\"-\", \"+\").replaceAll(\"_\", \"/\");\n const pad = b64.length % 4 === 2 ? \"==\" : b64.length % 4 === 3 ? \"=\" : \"\";\n try {\n return atob(b64 + pad);\n } catch (error) {\n logger.debug(`Failed to decode base64url string \"${encoded}\":`, error);\n return \"\";\n }\n}\n", "import { logger } from \"./logger/logger.ts\";\n\nexport function formatBytes(bytes: number): string {\n if (bytes === 0) return \"0 Bytes\";\n\n const absBytes = Math.abs(bytes);\n\n if (absBytes < 1) {\n return `${absBytes} Bytes`;\n }\n\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\n const i = Math.floor(Math.log(absBytes) / Math.log(k));\n\n const index = Math.max(0, Math.min(i, sizes.length - 1));\n\n return `${parseFloat((absBytes / Math.pow(k, index)).toFixed(2))} ${sizes[index]}`;\n}\n\nexport function estimateSize(value: unknown): number {\n if (value === null || value === undefined) return 8;\n\n switch (typeof value) {\n case \"boolean\":\n return 4;\n case \"number\":\n return 8;\n case \"string\":\n return value.length * 2; // UTF-16\n case \"function\":\n return 0; // Functions not cached\n case \"object\":\n return estimateObjectSize(value);\n default:\n return 32;\n }\n}\n\nexport function estimateSizeWithCircularHandling(value: unknown): number {\n const seen = new WeakSet();\n const encoder = new TextEncoder();\n\n const json = JSON.stringify(value, (_key, val) => {\n if (typeof val === \"object\" && val !== null) {\n if (seen.has(val as object)) return undefined;\n seen.add(val as object);\n\n if (val instanceof Map) {\n return { __type: \"Map\", entries: Array.from(val.entries()) };\n }\n if (val instanceof Set) {\n return { __type: \"Set\", values: Array.from(val.values()) };\n }\n }\n\n if (typeof val === \"function\") return undefined;\n\n if (val instanceof Uint8Array) {\n return { __type: \"Uint8Array\", length: val.length };\n }\n\n return val;\n });\n\n return encoder.encode(json ?? \"\").length;\n}\n\nfunction estimateObjectSize(value: object): number {\n if (value instanceof ArrayBuffer) return value.byteLength;\n\n if (\n value instanceof Uint8Array || value instanceof Uint16Array ||\n value instanceof Uint32Array || value instanceof Int8Array ||\n value instanceof Int16Array || value instanceof Int32Array\n ) {\n return value.byteLength;\n }\n\n try {\n return JSON.stringify(value).length * 2;\n } catch (error) {\n logger.debug(\"Failed to estimate size of non-serializable object:\", error);\n return 1024; // Default estimate for non-serializable\n }\n}\n\nexport function formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`;\n if (ms < 3600000) return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`;\n return `${Math.floor(ms / 3600000)}h ${Math.floor((ms % 3600000) / 60000)}m`;\n}\n\nexport function formatNumber(num: number): string {\n return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n}\n\nexport function truncateString(str: string, maxLength: number): string {\n if (str.length <= maxLength) return str;\n return str.slice(0, maxLength - 3) + \"...\";\n}\n", "import { serverLogger as logger } from \"./logger/index.ts\";\n\nexport interface BundleMetadata {\n hash: string;\n codeHash: string;\n size: number;\n compiledAt: number;\n source: string;\n mode: \"development\" | \"production\";\n meta?: {\n type?: \"mdx\" | \"component\" | \"layout\" | \"provider\";\n depsHash?: string;\n reactVersion?: string;\n };\n}\n\nexport interface BundleCode {\n code: string;\n sourceMap?: string;\n css?: string;\n}\n\nexport interface BundleManifestStore {\n getBundleMetadata(key: string): Promise<BundleMetadata | undefined>;\n\n setBundleMetadata(key: string, metadata: BundleMetadata, ttlMs?: number): Promise<void>;\n\n getBundleCode(hash: string): Promise<BundleCode | undefined>;\n\n setBundleCode(hash: string, code: BundleCode, ttlMs?: number): Promise<void>;\n\n deleteBundle(key: string): Promise<void>;\n\n invalidateSource(source: string): Promise<number>;\n\n clear(): Promise<void>;\n\n isAvailable(): Promise<boolean>;\n\n getStats(): Promise<{\n totalBundles: number;\n totalSize: number;\n oldestBundle?: number;\n newestBundle?: number;\n }>;\n}\n\nexport class InMemoryBundleManifestStore implements BundleManifestStore {\n private metadata = new Map<string, { value: BundleMetadata; expiry?: number }>();\n private code = new Map<string, { value: BundleCode; expiry?: number }>();\n private sourceIndex = new Map<string, Set<string>>();\n\n getBundleMetadata(key: string): Promise<BundleMetadata | undefined> {\n const entry = this.metadata.get(key);\n if (!entry) return Promise.resolve(undefined);\n if (entry.expiry && Date.now() > entry.expiry) {\n this.metadata.delete(key);\n return Promise.resolve(undefined);\n }\n return Promise.resolve(entry.value);\n }\n\n setBundleMetadata(key: string, metadata: BundleMetadata, ttlMs?: number): Promise<void> {\n const expiry = ttlMs ? Date.now() + ttlMs : undefined;\n this.metadata.set(key, { value: metadata, expiry });\n\n if (!this.sourceIndex.has(metadata.source)) {\n this.sourceIndex.set(metadata.source, new Set());\n }\n this.sourceIndex.get(metadata.source)!.add(key);\n return Promise.resolve();\n }\n\n getBundleCode(hash: string): Promise<BundleCode | undefined> {\n const entry = this.code.get(hash);\n if (!entry) return Promise.resolve(undefined);\n if (entry.expiry && Date.now() > entry.expiry) {\n this.code.delete(hash);\n return Promise.resolve(undefined);\n }\n return Promise.resolve(entry.value);\n }\n\n setBundleCode(hash: string, code: BundleCode, ttlMs?: number): Promise<void> {\n const expiry = ttlMs ? Date.now() + ttlMs : undefined;\n this.code.set(hash, { value: code, expiry });\n return Promise.resolve();\n }\n\n async deleteBundle(key: string): Promise<void> {\n const metadata = await this.getBundleMetadata(key);\n this.metadata.delete(key);\n if (metadata) {\n this.code.delete(metadata.codeHash);\n const sourceKeys = this.sourceIndex.get(metadata.source);\n if (sourceKeys) {\n sourceKeys.delete(key);\n if (sourceKeys.size === 0) {\n this.sourceIndex.delete(metadata.source);\n }\n }\n }\n }\n\n async invalidateSource(source: string): Promise<number> {\n const keys = this.sourceIndex.get(source);\n if (!keys) return 0;\n\n let count = 0;\n for (const key of Array.from(keys)) {\n await this.deleteBundle(key);\n count++;\n }\n this.sourceIndex.delete(source);\n return count;\n }\n\n clear(): Promise<void> {\n this.metadata.clear();\n this.code.clear();\n this.sourceIndex.clear();\n return Promise.resolve();\n }\n\n isAvailable(): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n getStats(): Promise<{\n totalBundles: number;\n totalSize: number;\n oldestBundle?: number;\n newestBundle?: number;\n }> {\n let totalSize = 0;\n let oldest: number | undefined;\n let newest: number | undefined;\n\n for (const { value } of this.metadata.values()) {\n totalSize += value.size;\n if (!oldest || value.compiledAt < oldest) oldest = value.compiledAt;\n if (!newest || value.compiledAt > newest) newest = value.compiledAt;\n }\n\n return Promise.resolve({\n totalBundles: this.metadata.size,\n totalSize,\n oldestBundle: oldest,\n newestBundle: newest,\n });\n }\n}\n\nlet manifestStore: BundleManifestStore = new InMemoryBundleManifestStore();\n\nexport function setBundleManifestStore(store: BundleManifestStore): void {\n manifestStore = store;\n logger.info(\"[bundle-manifest] Bundle manifest store configured\", {\n type: store.constructor.name,\n });\n}\n\nexport function getBundleManifestStore(): BundleManifestStore {\n return manifestStore;\n}\n\nexport { computeCodeHash, computeContentHash } from \"./hash-utils.ts\";\n", "import type { RuntimeAdapter } from \"@veryfront/platform/adapters/base.ts\";\nimport type { VeryfrontConfig } from \"@veryfront/config\";\nimport { serverLogger as logger } from \"./logger/index.ts\";\nimport {\n type BundleManifestStore,\n InMemoryBundleManifestStore,\n setBundleManifestStore,\n} from \"./bundle-manifest.ts\";\nimport { BUNDLE_MANIFEST_DEV_TTL_MS, BUNDLE_MANIFEST_PROD_TTL_MS } from \"./constants/cache.ts\";\n\nexport async function initializeBundleManifest(\n config: VeryfrontConfig,\n mode: \"development\" | \"production\",\n adapter?: RuntimeAdapter,\n): Promise<void> {\n const manifestConfig = config.cache?.bundleManifest;\n const enabled = manifestConfig?.enabled ?? mode === \"production\";\n\n if (!enabled) {\n logger.info(\"[bundle-manifest] Bundle manifest disabled\");\n setBundleManifestStore(new InMemoryBundleManifestStore());\n return;\n }\n\n const envType = adapter?.env.get(\"VERYFRONT_BUNDLE_MANIFEST_TYPE\");\n const storeType = manifestConfig?.type || envType || \"memory\";\n\n logger.info(\"[bundle-manifest] Initializing bundle manifest\", {\n type: storeType,\n mode,\n });\n\n try {\n let store: BundleManifestStore;\n\n switch (storeType) {\n case \"redis\": {\n const { RedisBundleManifestStore } = await import(\"./bundle-manifest-redis.ts\");\n const redisUrl = manifestConfig?.redisUrl ||\n adapter?.env.get(\"VERYFRONT_BUNDLE_MANIFEST_REDIS_URL\");\n store = new RedisBundleManifestStore(\n {\n url: redisUrl,\n keyPrefix: manifestConfig?.keyPrefix,\n },\n adapter,\n );\n\n const available = await store.isAvailable();\n if (!available) {\n logger.warn(\"[bundle-manifest] Redis not available, falling back to in-memory\");\n store = new InMemoryBundleManifestStore();\n } else {\n logger.info(\"[bundle-manifest] Redis store initialized\");\n }\n break;\n }\n\n case \"kv\": {\n const { KVBundleManifestStore } = await import(\"./bundle-manifest-kv.ts\");\n store = new KVBundleManifestStore({\n keyPrefix: manifestConfig?.keyPrefix,\n });\n\n const available = await store.isAvailable();\n if (!available) {\n logger.warn(\"[bundle-manifest] KV not available, falling back to in-memory\");\n store = new InMemoryBundleManifestStore();\n } else {\n logger.info(\"[bundle-manifest] KV store initialized\");\n }\n break;\n }\n\n case \"memory\":\n default: {\n store = new InMemoryBundleManifestStore();\n logger.info(\"[bundle-manifest] In-memory store initialized\");\n break;\n }\n }\n\n setBundleManifestStore(store);\n\n try {\n const stats = await store.getStats();\n logger.info(\"[bundle-manifest] Store statistics\", stats);\n } catch (error) {\n logger.debug(\"[bundle-manifest] Failed to get stats\", { error });\n }\n } catch (error) {\n logger.error(\"[bundle-manifest] Failed to initialize store, using in-memory fallback\", {\n error,\n });\n setBundleManifestStore(new InMemoryBundleManifestStore());\n }\n}\n\nexport function getBundleManifestTTL(\n config: VeryfrontConfig,\n mode: \"development\" | \"production\",\n): number | undefined {\n const manifestConfig = config.cache?.bundleManifest;\n if (manifestConfig?.ttl) {\n return manifestConfig.ttl;\n }\n\n if (mode === \"production\") {\n return BUNDLE_MANIFEST_PROD_TTL_MS;\n } else {\n return BUNDLE_MANIFEST_DEV_TTL_MS;\n }\n}\n\nexport async function warmupBundleManifest(\n store: BundleManifestStore,\n keys: string[],\n): Promise<void> {\n logger.info(\"[bundle-manifest] Warming up cache\", { keys: keys.length });\n\n let loaded = 0;\n let failed = 0;\n\n for (const key of keys) {\n try {\n const metadata = await store.getBundleMetadata(key);\n if (metadata) {\n await store.getBundleCode(metadata.codeHash);\n loaded++;\n }\n } catch (error) {\n logger.debug(\"[bundle-manifest] Failed to warm up key\", { key, error });\n failed++;\n }\n }\n\n logger.info(\"[bundle-manifest] Cache warmup complete\", { loaded, failed });\n}\n", "declare const process: { env: Record<string, string | undefined> } | undefined;\nimport { getEnv } from \"../../platform/compat/process.ts\";\n\n/**\n * Checks if React Server Components (RSC) are enabled.\n *\n * Priority order:\n * 1. Config file (config.experimental.rsc)\n * 2. Environment variables (VERYFRONT_EXPERIMENTAL_RSC=1)\n * 3. Default (false)\n *\n * @param config - Optional config object to check first\n * @returns true if RSC is enabled, false otherwise\n */\nexport function isRSCEnabled(config?: { experimental?: { rsc?: boolean } }): boolean {\n // 1. Check config first (highest priority)\n if (config?.experimental?.rsc !== undefined) {\n return config.experimental.rsc;\n }\n\n // 2. Fallback to environment variables (backward compatibility)\n return getEnv(\"VERYFRONT_EXPERIMENTAL_RSC\") === \"1\";\n}\n", "/**\n * Platform detection utilities\n */\n\nimport { isDeno } from \"../../platform/compat/runtime.ts\";\nimport { execPath } from \"../../platform/compat/process.ts\";\n\n/**\n * Detect if the code is running in a compiled Deno binary\n * @returns true if running in a compiled binary, false otherwise\n */\nexport function isCompiledBinary(): boolean {\n if (!isDeno) return false;\n\n try {\n const path = execPath();\n return path.includes(\"veryfront\");\n } catch {\n return false;\n }\n}\n", "/**\n * Import Lockfile\n *\n * Manages lockfile for remote HTTP imports, ensuring reproducible builds\n * by pinning resolved URLs and verifying content integrity.\n *\n * Lockfile format (veryfront.lock):\n * ```json\n * {\n * \"version\": 1,\n * \"imports\": {\n * \"https://esm.sh/lodash@4.17.21\": {\n * \"resolved\": \"https://esm.sh/v135/lodash@4.17.21/es2020/lodash.mjs\",\n * \"integrity\": \"sha256-abc123...\",\n * \"dependencies\": [\"https://esm.sh/...\"]\n * }\n * }\n * }\n * ```\n */\n\nimport { computeHash } from \"./hash-utils.ts\";\nimport { serverLogger as logger } from \"./logger/index.ts\";\n\nexport interface LockfileEntry {\n resolved: string;\n integrity: string;\n dependencies?: string[];\n fetchedAt?: string;\n}\n\nexport interface LockfileData {\n version: 1;\n imports: Record<string, LockfileEntry>;\n}\n\nconst LOCKFILE_NAME = \"veryfront.lock\";\nconst LOCKFILE_VERSION = 1;\n\nexport function createEmptyLockfile(): LockfileData {\n return {\n version: LOCKFILE_VERSION,\n imports: {},\n };\n}\n\nexport async function computeIntegrity(content: string): Promise<string> {\n const hash = await computeHash(content);\n return `sha256-${hash}`;\n}\n\nexport function verifyIntegrity(content: string, integrity: string): Promise<boolean> {\n return computeIntegrity(content).then((computed) => computed === integrity);\n}\n\nexport interface LockfileManager {\n read(): Promise<LockfileData | null>;\n write(data: LockfileData): Promise<void>;\n get(url: string): Promise<LockfileEntry | null>;\n set(url: string, entry: LockfileEntry): Promise<void>;\n has(url: string): Promise<boolean>;\n clear(): Promise<void>;\n flush(): Promise<void>;\n}\n\nexport type FSAdapter = {\n readFile(path: string): Promise<string>;\n writeFile(path: string, content: string): Promise<void>;\n exists(path: string): Promise<boolean>;\n remove?(path: string): Promise<void>;\n};\n\nfunction createNodeFSAdapter(): FSAdapter {\n const fs = globalThis.Deno ? null : require(\"fs/promises\");\n return {\n readFile(path: string): Promise<string> {\n if (globalThis.Deno) {\n return Deno.readTextFile(path);\n }\n return fs.readFile(path, \"utf-8\");\n },\n async writeFile(path: string, content: string): Promise<void> {\n if (globalThis.Deno) {\n await Deno.writeTextFile(path, content);\n return;\n }\n await fs.writeFile(path, content, \"utf-8\");\n },\n async exists(path: string): Promise<boolean> {\n try {\n if (globalThis.Deno) {\n await Deno.stat(path);\n return true;\n }\n await fs.access(path);\n return true;\n } catch {\n return false;\n }\n },\n async remove(path: string): Promise<void> {\n if (globalThis.Deno) {\n await Deno.remove(path);\n return;\n }\n await fs.unlink(path);\n },\n };\n}\n\nexport function createLockfileManager(projectDir: string, fsAdapter?: FSAdapter): LockfileManager {\n const fs = fsAdapter || createNodeFSAdapter();\n const lockfilePath = `${projectDir}/${LOCKFILE_NAME}`;\n let cache: LockfileData | null = null;\n let dirty = false;\n\n const read = async (): Promise<LockfileData | null> => {\n if (cache) return cache;\n try {\n if (await fs.exists(lockfilePath)) {\n const content = await fs.readFile(lockfilePath);\n cache = JSON.parse(content) as LockfileData;\n if (cache.version !== LOCKFILE_VERSION) {\n logger.warn(\n `[lockfile] Version mismatch, expected ${LOCKFILE_VERSION}, got ${cache.version}`,\n );\n cache = createEmptyLockfile();\n }\n return cache;\n }\n } catch (e) {\n logger.debug(`[lockfile] Could not read lockfile: ${e}`);\n }\n return null;\n };\n\n const write = async (data: LockfileData): Promise<void> => {\n cache = data;\n const sorted = {\n version: data.version,\n imports: Object.fromEntries(\n Object.entries(data.imports).sort(([a], [b]) => a.localeCompare(b)),\n ),\n };\n await fs.writeFile(lockfilePath, JSON.stringify(sorted, null, 2) + \"\\n\");\n dirty = false;\n logger.debug(`[lockfile] Written ${Object.keys(data.imports).length} entries`);\n };\n\n const get = async (url: string): Promise<LockfileEntry | null> => {\n const data = await read();\n return data?.imports[url] ?? null;\n };\n\n const set = async (url: string, entry: LockfileEntry): Promise<void> => {\n let data = await read();\n if (!data) {\n data = createEmptyLockfile();\n }\n data.imports[url] = entry;\n cache = data;\n dirty = true;\n };\n\n const has = async (url: string): Promise<boolean> => {\n const data = await read();\n return url in (data?.imports ?? {});\n };\n\n const clear = async (): Promise<void> => {\n cache = createEmptyLockfile();\n if (fs.remove && await fs.exists(lockfilePath)) {\n await fs.remove(lockfilePath);\n }\n };\n\n const flush = async (): Promise<void> => {\n if (dirty && cache) {\n await write(cache);\n }\n };\n\n return {\n read,\n write,\n get,\n set,\n has,\n clear,\n flush,\n };\n}\n\nexport interface FetchWithLockOptions {\n lockfile: LockfileManager;\n url: string;\n fetchFn?: typeof fetch;\n strict?: boolean;\n}\n\nexport interface FetchWithLockResult {\n content: string;\n resolvedUrl: string;\n fromCache: boolean;\n integrity: string;\n}\n\nexport async function fetchWithLock(options: FetchWithLockOptions): Promise<FetchWithLockResult> {\n const { lockfile, url, fetchFn = fetch, strict = false } = options;\n\n const entry = await lockfile.get(url);\n\n if (entry) {\n logger.debug(`[lockfile] Cache hit for ${url}`);\n const res = await fetchFn(entry.resolved, {\n headers: { \"user-agent\": \"Mozilla/5.0 Veryfront/1.0\" },\n });\n\n if (!res.ok) {\n if (strict) {\n throw new Error(\n `Lockfile entry stale: ${url} resolved to ${entry.resolved} returned ${res.status}`,\n );\n }\n logger.warn(`[lockfile] Cached URL ${entry.resolved} returned ${res.status}, refetching`);\n } else {\n const content = await res.text();\n const currentIntegrity = await computeIntegrity(content);\n\n if (currentIntegrity !== entry.integrity) {\n if (strict) {\n throw new Error(\n `Integrity mismatch for ${url}: expected ${entry.integrity}, got ${currentIntegrity}`,\n );\n }\n logger.warn(`[lockfile] Integrity mismatch for ${url}, updating lockfile`);\n } else {\n return {\n content,\n resolvedUrl: entry.resolved,\n fromCache: true,\n integrity: entry.integrity,\n };\n }\n }\n }\n\n logger.debug(`[lockfile] Fetching fresh: ${url}`);\n const res = await fetchFn(url, {\n headers: { \"user-agent\": \"Mozilla/5.0 Veryfront/1.0\" },\n redirect: \"follow\",\n });\n\n if (!res.ok) {\n throw new Error(`Failed to fetch ${url}: ${res.status}`);\n }\n\n const content = await res.text();\n const resolvedUrl = res.url || url;\n const integrity = await computeIntegrity(content);\n\n await lockfile.set(url, {\n resolved: resolvedUrl,\n integrity,\n fetchedAt: new Date().toISOString(),\n });\n\n await lockfile.flush();\n\n return {\n content,\n resolvedUrl,\n fromCache: false,\n integrity,\n };\n}\n\nexport interface ParsedImport {\n specifier: string;\n type: \"static\" | \"dynamic\";\n}\n\nconst IMPORT_REGEX = /import\\s+(?:(?:[\\w*\\s{},]*)\\s+from\\s+)?['\"]([^'\"]+)['\"]/g;\nconst DYNAMIC_IMPORT_REGEX = /import\\s*\\(\\s*['\"]([^'\"]+)['\"]\\s*\\)/g;\nconst EXPORT_FROM_REGEX = /export\\s+(?:[\\w*\\s{},]*)\\s+from\\s+['\"]([^'\"]+)['\"]/g;\n\nexport function extractImports(content: string): ParsedImport[] {\n const imports: ParsedImport[] = [];\n const seen = new Set<string>();\n\n for (const match of content.matchAll(IMPORT_REGEX)) {\n const specifier = match[1];\n if (specifier && !seen.has(specifier)) {\n seen.add(specifier);\n imports.push({ specifier, type: \"static\" });\n }\n }\n\n for (const match of content.matchAll(EXPORT_FROM_REGEX)) {\n const specifier = match[1];\n if (specifier && !seen.has(specifier)) {\n seen.add(specifier);\n imports.push({ specifier, type: \"static\" });\n }\n }\n\n for (const match of content.matchAll(DYNAMIC_IMPORT_REGEX)) {\n const specifier = match[1];\n if (specifier && !seen.has(specifier)) {\n seen.add(specifier);\n imports.push({ specifier, type: \"dynamic\" });\n }\n }\n\n return imports;\n}\n\nexport function resolveImportUrl(specifier: string, baseUrl: string): string | null {\n if (specifier.startsWith(\"http://\") || specifier.startsWith(\"https://\")) {\n return specifier;\n }\n if (specifier.startsWith(\"./\") || specifier.startsWith(\"../\")) {\n try {\n return new URL(specifier, baseUrl).toString();\n } catch {\n return null;\n }\n }\n return null;\n}\n", "/**\n * Performance Timer Utility\n *\n * Collects timing data for performance analysis.\n * Enable with VERYFRONT_PERF=1 environment variable.\n */\n\nconst enabled = typeof process !== \"undefined\"\n ? process.env?.VERYFRONT_PERF === \"1\"\n : typeof Deno !== \"undefined\"\n ? Deno.env.get(\"VERYFRONT_PERF\") === \"1\"\n : false;\n\ninterface TimingEntry {\n label: string;\n startMs: number;\n endMs?: number;\n durationMs?: number;\n parent?: string;\n}\n\nconst timings = new Map<string, TimingEntry[]>();\nlet currentRequestId: string | null = null;\n\nexport function startRequest(requestId: string): void {\n if (!enabled) return;\n currentRequestId = requestId;\n timings.set(requestId, []);\n}\n\nexport function startTimer(label: string, parent?: string): () => void {\n if (!enabled || !currentRequestId) return () => {};\n\n const entry: TimingEntry = {\n label,\n startMs: performance.now(),\n parent,\n };\n\n const entries = timings.get(currentRequestId);\n if (entries) {\n entries.push(entry);\n }\n\n return () => {\n entry.endMs = performance.now();\n entry.durationMs = entry.endMs - entry.startMs;\n };\n}\n\nexport async function timeAsync<T>(\n label: string,\n fn: () => Promise<T>,\n parent?: string,\n): Promise<T> {\n if (!enabled) return fn();\n\n const stop = startTimer(label, parent);\n try {\n return await fn();\n } finally {\n stop();\n }\n}\n\nexport function endRequest(requestId: string): void {\n if (!enabled) return;\n\n const entries = timings.get(requestId);\n if (!entries || entries.length === 0) {\n currentRequestId = null;\n return;\n }\n\n // Calculate total and sort by duration\n const sorted = entries\n .filter((e) => e.durationMs !== undefined)\n .sort((a, b) => (b.durationMs || 0) - (a.durationMs || 0));\n\n const total = entries.find((e) => e.label === \"total\")?.durationMs ||\n sorted.reduce((sum, e) => sum + (e.durationMs || 0), 0);\n\n console.log(`\\n[PERF] Request ${requestId} - Total: ${total.toFixed(1)}ms`);\n console.log(\"\u2500\".repeat(60));\n\n // Group by parent\n const roots = sorted.filter((e) => !e.parent);\n const children = new Map<string, TimingEntry[]>();\n\n for (const entry of sorted) {\n if (entry.parent) {\n const list = children.get(entry.parent) || [];\n list.push(entry);\n children.set(entry.parent, list);\n }\n }\n\n for (const entry of roots) {\n const pct = ((entry.durationMs || 0) / total * 100).toFixed(1);\n console.log(` ${entry.label}: ${entry.durationMs?.toFixed(1)}ms (${pct}%)`);\n\n const childList = children.get(entry.label);\n if (childList) {\n for (const child of childList.slice(0, 5)) {\n const childPct = ((child.durationMs || 0) / total * 100).toFixed(1);\n console.log(` \u2514\u2500 ${child.label}: ${child.durationMs?.toFixed(1)}ms (${childPct}%)`);\n }\n if (childList.length > 5) {\n console.log(` \u2514\u2500 ... and ${childList.length - 5} more`);\n }\n }\n }\n\n console.log(\"\u2500\".repeat(60));\n\n timings.delete(requestId);\n currentRequestId = null;\n}\n\nexport function isEnabled(): boolean {\n return enabled;\n}\n", "/**\n * Cookie parsing utilities\n */\n\n/**\n * Parse a cookie header string into key-value pairs\n * @param cookieHeader - The raw Cookie header string\n * @returns Record of cookie names to decoded values\n */\nexport function parseCookies(cookieHeader: string): Record<string, string> {\n const cookies: Record<string, string> = {};\n\n if (!cookieHeader) return cookies;\n\n cookieHeader.split(\";\").forEach((cookie) => {\n const trimmed = cookie.trim();\n if (!trimmed) return;\n const separatorIndex = trimmed.indexOf(\"=\");\n if (separatorIndex <= 0) return;\n const name = trimmed.slice(0, separatorIndex).trim();\n const value = trimmed.slice(separatorIndex + 1);\n if (!name) return;\n cookies[name] = decodeURIComponent(value);\n });\n\n return cookies;\n}\n\n/**\n * Parse cookies from request headers\n * @param headers - Request headers\n * @returns Record of cookie names to decoded values\n */\nexport function parseCookiesFromHeaders(headers: Headers): Record<string, string> {\n return parseCookies(headers.get(\"cookie\") || \"\");\n}\n", "/**\n * Base64url encoding utilities\n */\n\n/**\n * Encode a string to base64url format\n * @param input - Plain string to encode\n * @returns Base64url encoded string\n */\nexport function base64urlEncode(input: string): string {\n const b64 = btoa(input);\n return b64.replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replaceAll(\"=\", \"\");\n}\n\n/**\n * Encode bytes to base64url format\n * @param bytes - Uint8Array to encode\n * @returns Base64url encoded string\n */\nexport function base64urlEncodeBytes(bytes: Uint8Array): string {\n const b64 = btoa(String.fromCharCode(...bytes));\n return b64.replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replaceAll(\"=\", \"\");\n}\n", "export * from \"./runtime-guards.ts\";\n\nexport * from \"./logger/index.ts\";\n\nexport * from \"./constants/index.ts\";\nexport { VERSION } from \"./version.ts\";\n\nexport * from \"./paths.ts\";\n\nexport {\n type BundleCode as HashBundleCode, // Alias to avoid conflict with bundle-manifest\n computeCodeHash,\n computeContentHash,\n computeHash,\n getContentHash,\n shortHash,\n simpleHash,\n simpleHash as numericHash, // Alias to avoid conflict with memoize\n} from \"./hash-utils.ts\";\n\nexport {\n MemoCache,\n memoize,\n memoizeAsync,\n simpleHash as memoizeHash, // Alias to distinguish from hash-utils version\n} from \"./memoize.ts\";\n\nexport * from \"./path-utils.ts\";\n\nexport * from \"./format-utils.ts\";\n\nexport * from \"./bundle-manifest.ts\";\nexport * from \"./bundle-manifest-init.ts\";\n\nexport * from \"./feature-flags.ts\";\n\nexport { isCompiledBinary } from \"./platform.ts\";\n\nexport * from \"./import-lockfile.ts\";\n\nexport * from \"./perf-timer.ts\";\n\n// Note: chunk-utils.ts exported separately due to naming conflict with constants/server.ts\n// Use direct import: import { normalizeChunkPath } from \"@veryfront/utils/chunk-utils.ts\"\n\nexport * from \"./cookie-utils.ts\";\n\nexport * from \"./base64url.ts\";\n", "export interface BuildContext {\n file?: string;\n line?: number;\n column?: number;\n moduleId?: string;\n phase?:\n | \"parse\"\n | \"transform\"\n | \"bundle\"\n | \"optimize\"\n | \"dependency-resolution\"\n | \"circuit-breaker\";\n /** Number of failures (for circuit breaker) */\n failures?: number;\n /** Missing dependencies list */\n missing?: Array<{ specifier: string; fromFile: string; reason: string }>;\n}\n\nexport interface APIContext {\n endpoint?: string;\n method?: string;\n statusCode?: number;\n headers?: Record<string, string>;\n}\n\nexport interface RenderContext {\n component?: string;\n route?: string;\n phase?: \"server\" | \"client\" | \"hydration\";\n props?: unknown;\n}\n\nexport interface ConfigContext {\n configFile?: string;\n field?: string;\n value?: unknown;\n expected?: string;\n}\n\nexport interface AgentContext {\n agentId?: string;\n intent?: string;\n timeout?: number;\n}\n\nexport interface FileContext {\n path?: string;\n operation?: \"read\" | \"write\" | \"delete\" | \"mkdir\";\n permissions?: string;\n}\n\nexport interface NetworkContext {\n url?: string;\n timeout?: number;\n retryCount?: number;\n}\n\nexport type VeryfrontError =\n | { type: \"build\"; message: string; context?: BuildContext }\n | { type: \"api\"; message: string; context?: APIContext }\n | { type: \"render\"; message: string; context?: RenderContext }\n | { type: \"config\"; message: string; context?: ConfigContext }\n | { type: \"agent\"; message: string; context?: AgentContext }\n | { type: \"file\"; message: string; context?: FileContext }\n | { type: \"network\"; message: string; context?: NetworkContext }\n | { type: \"permission\"; message: string; context?: FileContext }\n | { type: \"not_supported\"; message: string; feature?: string };\n\nexport function createError(error: VeryfrontError): VeryfrontError {\n return error;\n}\n\nexport function isBuildError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"build\" }> {\n return error.type === \"build\";\n}\n\nexport function isAPIError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"api\" }> {\n return error.type === \"api\";\n}\n\nexport function isRenderError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"render\" }> {\n return error.type === \"render\";\n}\n\nexport function isConfigError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"config\" }> {\n return error.type === \"config\";\n}\n\nexport function isAgentError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"agent\" }> {\n return error.type === \"agent\";\n}\n\nexport function isFileError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"file\" }> {\n return error.type === \"file\";\n}\n\nexport function isNetworkError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"network\" }> {\n return error.type === \"network\";\n}\n\nexport function toError(veryfrontError: VeryfrontError): Error {\n const error = new Error(veryfrontError.message);\n error.name = `VeryfrontError[${veryfrontError.type}]`;\n Object.defineProperty(error, \"context\", {\n value: veryfrontError,\n enumerable: false,\n configurable: true,\n });\n return error;\n}\n\nexport function fromError(error: unknown): VeryfrontError | null {\n if (error && typeof error === \"object\" && \"context\" in error) {\n // Safe access after 'in' check\n const context = (error as Record<string, unknown>).context;\n if (\n context &&\n typeof context === \"object\" &&\n \"type\" in context &&\n \"message\" in context\n ) {\n return context as VeryfrontError;\n }\n }\n return null;\n}\n\nexport function logError(\n error: VeryfrontError,\n logger?: { error: (msg: string, ...args: unknown[]) => void },\n): void {\n const log = logger || console;\n const context = \"context\" in error ? error.context || {} : {};\n log.error(`[${error.type}] ${error.message}`, context);\n}\n", "import { z } from \"zod\";\nimport type { VeryfrontConfig } from \"./types.ts\";\nimport { type ConfigContext, createError, toError } from \"../errors/veryfront-error.ts\";\n\nconst corsSchema = z.union([z.boolean(), z.object({ origin: z.string().optional() }).strict()]);\n\nexport const veryfrontConfigSchema = z\n .object({\n title: z.string().optional(),\n description: z.string().optional(),\n experimental: z.object({\n esmLayouts: z.boolean().optional(),\n precompileMDX: z.boolean().optional(),\n }).partial().optional(),\n router: z.enum([\"app\", \"pages\"]).optional(),\n defaultLayout: z.string().optional(),\n layout: z.string().optional(),\n provider: z.string().optional(),\n app: z.string().optional(),\n theme: z\n .object({ colors: z.record(z.string()).optional() })\n .partial()\n .optional(),\n build: z\n .object({\n outDir: z.string().optional(),\n trailingSlash: z.boolean().optional(),\n esbuild: z\n .object({\n wasmURL: z.string().url().optional(),\n worker: z.boolean().optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n cache: z\n .object({\n dir: z.string().optional(),\n bundleManifest: z\n .object({\n type: z.enum([\"redis\", \"kv\", \"memory\"]).optional(),\n redisUrl: z.string().optional(),\n keyPrefix: z.string().optional(),\n ttl: z.number().int().positive().optional(),\n enabled: z.boolean().optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n dev: z\n .object({\n port: z.number().int().positive().optional(),\n host: z.string().optional(),\n open: z.boolean().optional(),\n hmr: z.boolean().optional(),\n components: z.array(z.string()).optional(),\n })\n .partial()\n .optional(),\n resolve: z\n .object({\n importMap: z\n .object({\n imports: z.record(z.string()).optional(),\n scopes: z.record(z.record(z.string())).optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n security: z\n .object({\n csp: z.record(z.array(z.string())).optional(),\n remoteHosts: z.array(z.string().url()).optional(),\n cors: corsSchema.optional(),\n coop: z.enum([\"same-origin\", \"same-origin-allow-popups\", \"unsafe-none\"]).optional(),\n corp: z.enum([\"same-origin\", \"same-site\", \"cross-origin\"]).optional(),\n coep: z.enum([\"require-corp\", \"unsafe-none\"]).optional(),\n })\n .partial()\n .optional(),\n middleware: z\n .object({\n custom: z.array(z.function()).optional(),\n })\n .partial()\n .optional(),\n theming: z\n .object({\n brandName: z.string().optional(),\n logoHtml: z.string().optional(),\n })\n .partial()\n .optional(),\n assetPipeline: z\n .object({\n images: z\n .object({\n enabled: z.boolean().optional(),\n formats: z.array(z.enum([\"webp\", \"avif\", \"jpeg\", \"png\"])).optional(),\n sizes: z.array(z.number().int().positive()).optional(),\n quality: z.number().int().min(1).max(100).optional(),\n inputDir: z.string().optional(),\n outputDir: z.string().optional(),\n preserveOriginal: z.boolean().optional(),\n })\n .partial()\n .optional(),\n css: z\n .object({\n enabled: z.boolean().optional(),\n minify: z.boolean().optional(),\n autoprefixer: z.boolean().optional(),\n purge: z.boolean().optional(),\n criticalCSS: z.boolean().optional(),\n inputDir: z.string().optional(),\n outputDir: z.string().optional(),\n browsers: z.array(z.string()).optional(),\n purgeContent: z.array(z.string()).optional(),\n sourceMap: z.boolean().optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n observability: z\n .object({\n tracing: z\n .object({\n enabled: z.boolean().optional(),\n exporter: z.enum([\"jaeger\", \"zipkin\", \"otlp\", \"console\"]).optional(),\n endpoint: z.string().optional(),\n serviceName: z.string().optional(),\n sampleRate: z.number().min(0).max(1).optional(),\n })\n .partial()\n .optional(),\n metrics: z\n .object({\n enabled: z.boolean().optional(),\n exporter: z.enum([\"prometheus\", \"otlp\", \"console\"]).optional(),\n endpoint: z.string().optional(),\n prefix: z.string().optional(),\n collectInterval: z.number().int().positive().optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n fs: z\n .object({\n type: z.enum([\"local\", \"veryfront-api\", \"memory\"]).optional(),\n local: z\n .object({\n baseDir: z.string().optional(),\n })\n .partial()\n .optional(),\n veryfront: z\n .object({\n apiBaseUrl: z.string().url(),\n apiToken: z.string(),\n projectSlug: z.string(),\n proxyMode: z.boolean().optional(),\n productionMode: z.boolean().optional(),\n cache: z\n .object({\n enabled: z.boolean().optional(),\n ttl: z.number().int().positive().optional(),\n maxSize: z.number().int().positive().optional(),\n })\n .partial()\n .optional(),\n retry: z\n .object({\n maxRetries: z.number().int().min(0).optional(),\n initialDelay: z.number().int().positive().optional(),\n maxDelay: z.number().int().positive().optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n memory: z\n .object({\n files: z.record(z.union([z.string(), z.instanceof(Uint8Array)])).optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n client: z\n .object({\n moduleResolution: z.enum([\"cdn\", \"self-hosted\", \"bundled\"]).optional(),\n cdn: z\n .object({\n provider: z.enum([\"esm.sh\", \"unpkg\", \"jsdelivr\"]).optional(),\n versions: z\n .union([\n z.literal(\"auto\"),\n z.object({\n react: z.string().optional(),\n veryfront: z.string().optional(),\n }),\n ])\n .optional(),\n })\n .partial()\n .optional(),\n })\n .partial()\n .optional(),\n })\n .partial();\n\nexport type VeryfrontConfigInput = z.input<typeof veryfrontConfigSchema>;\n\nexport function validateVeryfrontConfig(input: unknown): VeryfrontConfig {\n const parsed = veryfrontConfigSchema.safeParse(input);\n if (!parsed.success) {\n const first = parsed.error.issues[0];\n const path = first?.path?.length ? first.path.join(\".\") : \"<root>\";\n const expected = first?.message || String(first);\n let hint = \"\";\n if (String(path).includes(\"security.cors\")) {\n hint = \" Expected boolean or { origin?: string }.\";\n }\n\n const context: ConfigContext = {\n field: path,\n expected: expected + hint,\n value: input,\n };\n\n throw toError(\n createError({\n type: \"config\",\n message: `Invalid veryfront.config at ${path}: ${expected}.${hint}`,\n context,\n }),\n );\n }\n return parsed.data as VeryfrontConfig;\n}\n\nexport function findUnknownTopLevelKeys(input: Record<string, unknown>): string[] {\n const known = new Set([\n \"title\",\n \"description\",\n \"experimental\",\n \"router\",\n \"defaultLayout\",\n \"layout\",\n \"provider\",\n \"app\",\n \"theme\",\n \"build\",\n \"cache\",\n \"dev\",\n \"resolve\",\n \"security\",\n \"middleware\",\n \"theming\",\n \"assetPipeline\",\n \"observability\",\n \"fs\",\n \"client\",\n ]);\n return Object.keys(input).filter((k) => !known.has(k));\n}\n", "/**\n * Cross-platform filesystem abstraction for CLI commands and standalone utilities.\n *\n * This module provides a synchronous-style API for filesystem operations that works\n * across Deno, Node.js, and Bun runtimes. It's designed for CLI commands and scripts\n * where you don't have access to a RuntimeAdapter context.\n *\n * For server/rendering contexts where you have an adapter, prefer using adapter.fs directly:\n * ```ts\n * const adapter = await getAdapter();\n * const content = await adapter.fs.readFile(path);\n * ```\n *\n * For CLI commands and standalone utilities, use createFileSystem():\n * ```ts\n * import { createFileSystem } from \"@veryfront/platform/compat/fs.ts\";\n * const fs = createFileSystem();\n * const content = await fs.readTextFile(path);\n * ```\n *\n * @module\n */\n\nimport type { FileInfo } from \"@veryfront/platform/adapters/base.ts\";\nimport { createError, toError } from \"../../core/errors/veryfront-error.ts\";\nimport { isDeno, isNode } from \"./runtime.ts\";\n\n/**\n * Cross-platform filesystem interface for CLI commands and standalone utilities.\n * Compatible with RuntimeAdapter.fs (FileSystemAdapter) for easy interoperability.\n */\nexport interface FileSystem {\n readTextFile(path: string): Promise<string>;\n readFile(path: string): Promise<Uint8Array>; // Changed to Uint8Array for binary\n writeTextFile(path: string, data: string): Promise<void>;\n writeFile(path: string, data: Uint8Array): Promise<void>; // Changed to Uint8Array for binary\n exists(path: string): Promise<boolean>;\n stat(path: string): Promise<FileInfo>;\n mkdir(path: string, options?: { recursive?: boolean }): Promise<void>;\n readDir(path: string): AsyncIterable<{ name: string; isFile: boolean; isDirectory: boolean }>;\n remove(path: string, options?: { recursive?: boolean }): Promise<void>;\n makeTempDir(options?: { prefix?: string }): Promise<string>; // New for temp dirs\n}\n\n// ============================================================================\n// Node.js Implementation\n// ============================================================================\n\ninterface NodeFsPromises {\n readFile(\n path: string,\n options?: { encoding?: string; flag?: string } | string,\n ): Promise<string | Uint8Array>;\n writeFile(\n path: string,\n data: string | Uint8Array,\n options?: { encoding?: string; flag?: string } | string,\n ): Promise<void>;\n access(path: string, mode?: number): Promise<void>;\n stat(path: string): Promise<{\n isFile(): boolean;\n isDirectory(): boolean;\n isSymbolicLink(): boolean;\n size: number;\n mtime: Date;\n }>;\n mkdir(path: string, options?: { recursive?: boolean }): Promise<void>;\n readdir(path: string, options: { withFileTypes: true }): Promise<\n Array<{\n name: string;\n isFile(): boolean;\n isDirectory(): boolean;\n isSymbolicLink(): boolean;\n }>\n >;\n rm(path: string, options?: { recursive?: boolean; force?: boolean }): Promise<void>;\n}\n\nclass NodeFileSystem implements FileSystem {\n private fs: NodeFsPromises | null = null;\n private os: typeof import(\"node:os\") | null = null;\n private path: typeof import(\"node:path\") | null = null;\n private initialized = false;\n\n private async ensureInitialized(): Promise<void> {\n if (this.initialized) return;\n\n if (!isNode) {\n throw toError(createError({\n type: \"not_supported\",\n message: \"Node.js fs modules not available\",\n feature: \"Node.js\",\n }));\n }\n\n // Use dynamic ESM imports for Node.js modules\n const [fsModule, osModule, pathModule] = await Promise.all([\n import(\"node:fs/promises\"),\n import(\"node:os\"),\n import(\"node:path\"),\n ]);\n\n this.fs = fsModule as unknown as NodeFsPromises;\n this.os = osModule;\n this.path = pathModule;\n this.initialized = true;\n }\n\n async readTextFile(path: string): Promise<string> {\n await this.ensureInitialized();\n return await (this.fs!.readFile(path, { encoding: \"utf8\" }) as Promise<string>);\n }\n\n async readFile(path: string): Promise<Uint8Array> {\n await this.ensureInitialized();\n return await (this.fs!.readFile(path) as Promise<Uint8Array>);\n }\n\n async writeTextFile(path: string, data: string): Promise<void> {\n await this.ensureInitialized();\n await this.fs!.writeFile(path, data, { encoding: \"utf8\" });\n }\n\n async writeFile(path: string, data: Uint8Array): Promise<void> {\n await this.ensureInitialized();\n await this.fs!.writeFile(path, data);\n }\n\n async exists(path: string): Promise<boolean> {\n await this.ensureInitialized();\n try {\n await this.fs!.access(path);\n return true;\n } catch (error: any) {\n if (error.code === \"ENOENT\") {\n return false;\n }\n throw error;\n }\n }\n\n async stat(path: string): Promise<FileInfo> {\n await this.ensureInitialized();\n const stat = await this.fs!.stat(path);\n return {\n isFile: stat.isFile(),\n isDirectory: stat.isDirectory(),\n isSymlink: stat.isSymbolicLink(),\n size: stat.size,\n mtime: stat.mtime,\n };\n }\n\n async mkdir(path: string, options?: { recursive?: boolean }): Promise<void> {\n await this.ensureInitialized();\n await this.fs!.mkdir(path, { recursive: options?.recursive ?? false });\n }\n\n async *readDir(\n path: string,\n ): AsyncIterable<{ name: string; isFile: boolean; isDirectory: boolean }> {\n await this.ensureInitialized();\n const entries = await this.fs!.readdir(path, { withFileTypes: true });\n for (const entry of entries) {\n yield {\n name: entry.name,\n isFile: entry.isFile(),\n isDirectory: entry.isDirectory(),\n };\n }\n }\n\n async remove(path: string, options?: { recursive?: boolean }): Promise<void> {\n await this.ensureInitialized();\n // Node.js fs.rm requires force for recursive deletion of non-empty directories\n await this.fs!.rm(path, {\n recursive: options?.recursive ?? false,\n force: options?.recursive ?? false,\n });\n }\n\n async makeTempDir(options?: { prefix?: string }): Promise<string> {\n await this.ensureInitialized();\n const tempDir = this.path!.join(\n this.os!.tmpdir(),\n `${options?.prefix ?? \"tmp-\"}${Math.random().toString(36).substring(2, 8)}`,\n );\n await this.fs!.mkdir(tempDir, { recursive: true });\n return tempDir;\n }\n}\n\n// ============================================================================\n// Deno Implementation\n// ============================================================================\n\nclass DenoFileSystem implements FileSystem {\n async readTextFile(path: string): Promise<string> {\n // @ts-ignore - Deno global\n return await Deno.readTextFile(path);\n }\n\n async readFile(path: string): Promise<Uint8Array> {\n // @ts-ignore - Deno global\n return await Deno.readFile(path);\n }\n\n async writeTextFile(path: string, data: string): Promise<void> {\n // @ts-ignore - Deno global\n await Deno.writeTextFile(path, data);\n }\n\n async writeFile(path: string, data: Uint8Array): Promise<void> {\n // @ts-ignore - Deno global\n await Deno.writeFile(path, data);\n }\n\n async exists(path: string): Promise<boolean> {\n try {\n // @ts-ignore - Deno global\n await Deno.stat(path);\n return true;\n } catch (error: any) {\n // @ts-ignore - Deno global\n if (error instanceof Deno.errors.NotFound) {\n return false;\n }\n throw error;\n }\n }\n\n async stat(path: string): Promise<FileInfo> {\n // @ts-ignore - Deno global\n const stat = await Deno.stat(path);\n return {\n isFile: stat.isFile,\n isDirectory: stat.isDirectory,\n isSymlink: stat.isSymlink,\n size: stat.size,\n mtime: stat.mtime,\n };\n }\n\n async mkdir(path: string, options?: { recursive?: boolean }): Promise<void> {\n // @ts-ignore - Deno global\n await Deno.mkdir(path, { recursive: options?.recursive ?? false });\n }\n\n async *readDir(\n path: string,\n ): AsyncIterable<{ name: string; isFile: boolean; isDirectory: boolean }> {\n // @ts-ignore - Deno global\n for await (const entry of Deno.readDir(path)) {\n yield {\n name: entry.name,\n isFile: entry.isFile,\n isDirectory: entry.isDirectory,\n };\n }\n }\n\n async remove(path: string, options?: { recursive?: boolean }): Promise<void> {\n // @ts-ignore - Deno global\n await Deno.remove(path, { recursive: options?.recursive ?? false });\n }\n\n async makeTempDir(options?: { prefix?: string }): Promise<string> {\n // @ts-ignore - Deno global\n return await Deno.makeTempDir({ prefix: options?.prefix });\n }\n}\n\n/**\n * Create a cross-platform filesystem instance for CLI commands and standalone utilities.\n *\n * Use this for CLI commands that don't have access to a RuntimeAdapter context:\n * ```ts\n * const fs = createFileSystem();\n * const content = await fs.readTextFile(path);\n * await fs.writeTextFile(outputPath, result);\n * ```\n *\n * For server/rendering contexts, prefer using adapter.fs directly.\n *\n * Note: For npm package, always uses Node.js fs APIs for cross-platform compatibility.\n */\nexport function createFileSystem(): FileSystem {\n if (isDeno) {\n return new DenoFileSystem();\n } else {\n // Node.js or Bun\n return new NodeFileSystem();\n }\n}\n", "import type { VeryfrontConfig } from \"./types.ts\";\nimport { findUnknownTopLevelKeys, validateVeryfrontConfig } from \"./schema.ts\";\nimport { dirname, join } from \"std/path/mod.ts\";\nimport type { RuntimeAdapter } from \"@veryfront/platform/adapters/base.ts\";\nimport { serverLogger } from \"@veryfront/utils/logger/logger.ts\";\nimport { getReactImportMap, REACT_DEFAULT_VERSION } from \"@veryfront/utils/constants/cdn.ts\";\nimport { DEFAULT_CACHE_DIR } from \"@veryfront/utils/constants/server.ts\";\nimport { DEFAULT_PORT } from \"./defaults.ts\";\nimport { createFileSystem } from \"../../platform/compat/fs.ts\";\n\nexport type { VeryfrontConfig } from \"./types.ts\";\n\nfunction getDefaultImportMapForConfig() {\n return { imports: getReactImportMap(REACT_DEFAULT_VERSION) };\n}\n\nconst DEFAULT_CONFIG: Partial<VeryfrontConfig> = {\n title: \"Veryfront App\",\n description: \"Built with Veryfront\",\n experimental: {\n esmLayouts: true,\n },\n router: undefined,\n defaultLayout: undefined,\n theme: {\n colors: {\n primary: \"#3B82F6\",\n },\n },\n build: {\n outDir: \"dist\",\n trailingSlash: false,\n esbuild: {\n wasmURL: \"https://deno.land/x/esbuild@v0.20.1/esbuild.wasm\",\n worker: false,\n },\n },\n cache: {\n dir: DEFAULT_CACHE_DIR,\n render: {\n type: \"memory\",\n ttl: undefined,\n maxEntries: 500,\n kvPath: undefined,\n redisUrl: undefined,\n redisKeyPrefix: undefined,\n },\n },\n dev: {\n port: DEFAULT_PORT,\n host: \"localhost\",\n open: false,\n },\n resolve: {\n importMap: getDefaultImportMapForConfig(),\n },\n client: {\n moduleResolution: \"cdn\",\n cdn: {\n provider: \"esm.sh\",\n versions: \"auto\",\n },\n },\n};\n\nconst configCacheByProject = new Map<string, { revision: number; config: VeryfrontConfig }>();\nlet cacheRevision = 0;\n\nfunction validateCorsConfig(userConfig: unknown): void {\n if (!userConfig || typeof userConfig !== \"object\") {\n return;\n }\n const config = userConfig as Record<string, unknown>;\n const security = config.security as Record<string, unknown> | undefined;\n const cors = security?.cors;\n if (!cors || typeof cors !== \"object\" || Array.isArray(cors)) {\n return;\n }\n\n const corsObj = cors as Record<string, unknown>;\n const origin = corsObj.origin;\n if (origin !== undefined && typeof origin !== \"string\") {\n throw new ConfigValidationError(\n \"security.cors.origin must be a string. Expected boolean or { origin?: string }\",\n );\n }\n}\n\nfunction validateConfigShape(userConfig: unknown): void {\n validateVeryfrontConfig(userConfig);\n const unknown = typeof userConfig === \"object\" && userConfig\n ? findUnknownTopLevelKeys(userConfig as Record<string, unknown>)\n : [];\n if (unknown.length > 0) {\n serverLogger.warn(`Unknown config keys: ${unknown.join(\", \")}. These will be ignored.`);\n }\n}\n\nfunction mergeConfigs(userConfig: Partial<VeryfrontConfig>): VeryfrontConfig {\n const merged: VeryfrontConfig = {\n ...DEFAULT_CONFIG,\n ...userConfig,\n dev: {\n ...DEFAULT_CONFIG.dev,\n ...userConfig.dev,\n },\n theme: {\n ...DEFAULT_CONFIG.theme,\n ...userConfig.theme,\n },\n build: {\n ...DEFAULT_CONFIG.build,\n ...userConfig.build,\n },\n cache: {\n ...DEFAULT_CONFIG.cache,\n ...userConfig.cache,\n },\n resolve: {\n ...DEFAULT_CONFIG.resolve,\n ...userConfig.resolve,\n },\n client: {\n ...DEFAULT_CONFIG.client,\n ...userConfig.client,\n cdn: {\n ...DEFAULT_CONFIG.client?.cdn,\n ...userConfig.client?.cdn,\n },\n },\n } as VeryfrontConfig;\n\n if (merged.resolve) {\n const defaultMap = DEFAULT_CONFIG.resolve?.importMap;\n const userMap = userConfig.resolve?.importMap;\n\n if (defaultMap || userMap) {\n merged.resolve.importMap = {\n imports: {\n ...(defaultMap?.imports ?? {}),\n ...(userMap?.imports ?? {}),\n },\n scopes: {\n ...(defaultMap?.scopes ?? {}),\n ...(userMap?.scopes ?? {}),\n },\n };\n }\n }\n\n return merged;\n}\n\nclass ConfigValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ConfigValidationError\";\n }\n}\n\n/**\n * Check if the adapter is using a virtual filesystem (e.g., Veryfront API)\n * Supports both single-project (VeryfrontFSAdapter) and multi-project (MultiProjectFSAdapter) modes\n */\nfunction isVirtualFilesystem(adapter: RuntimeAdapter): boolean {\n const wrappedAdapter = (adapter?.fs as { fsAdapter?: unknown })?.fsAdapter;\n const adapterName = (wrappedAdapter as { constructor?: { name?: string } })?.constructor?.name;\n return adapterName === \"VeryfrontFSAdapter\" || adapterName === \"MultiProjectFSAdapter\";\n}\n\n/**\n * Load config from virtual filesystem by transpiling TypeScript content\n */\nasync function loadConfigFromVirtualFS(\n configPath: string,\n projectDir: string,\n adapter: RuntimeAdapter,\n): Promise<VeryfrontConfig | null> {\n const fs = createFileSystem();\n\n // Read config content via adapter\n const content = await adapter.fs.readFile(configPath);\n const source = typeof content === \"string\" ? content : new TextDecoder().decode(content);\n\n serverLogger.debug(`[CONFIG] Loading config from virtual FS: ${configPath}`);\n\n // Determine loader based on extension\n const isTsx = configPath.endsWith(\".tsx\");\n const loader = isTsx ? \"tsx\" : configPath.endsWith(\".ts\") ? \"ts\" : \"js\";\n\n // Transpile TypeScript to JavaScript using esbuild\n const { build } = await import(\"esbuild\");\n\n const result = await build({\n bundle: false, // Config files shouldn't need bundling\n write: false,\n format: \"esm\",\n platform: \"neutral\",\n target: \"es2022\",\n stdin: {\n contents: source,\n loader,\n resolveDir: dirname(configPath),\n sourcefile: configPath,\n },\n });\n\n if (result.errors && result.errors.length > 0) {\n const first = result.errors[0]?.text || \"unknown error\";\n throw new ConfigValidationError(`Failed to transpile config: ${first}`);\n }\n\n const js = result.outputFiles?.[0]?.text ?? \"export default {}\";\n\n // Write to temp file and import\n const tempDir = await fs.makeTempDir({ prefix: \"vf-config-\" });\n const tempFile = join(tempDir, \"config.mjs\");\n\n try {\n await fs.writeTextFile(tempFile, js);\n const configModule = await import(`file://${tempFile}?v=${Date.now()}`);\n const userConfig = configModule.default || configModule;\n\n if (userConfig === null || typeof userConfig !== \"object\" || Array.isArray(userConfig)) {\n throw new ConfigValidationError(\n `Expected object, received ${userConfig === null ? \"null\" : typeof userConfig}`,\n );\n }\n\n validateCorsConfig(userConfig);\n validateConfigShape(userConfig);\n\n const merged = mergeConfigs(userConfig);\n configCacheByProject.set(projectDir, { revision: cacheRevision, config: merged });\n return merged;\n } finally {\n await fs.remove(tempDir, { recursive: true });\n }\n}\n\nasync function loadAndMergeConfig(\n configPath: string,\n projectDir: string,\n adapter: RuntimeAdapter,\n): Promise<VeryfrontConfig | null> {\n // Check if using virtual filesystem\n if (isVirtualFilesystem(adapter)) {\n return loadConfigFromVirtualFS(configPath, projectDir, adapter);\n }\n\n // Local filesystem - use direct import\n try {\n const configUrl = `file://${configPath}?t=${Date.now()}-${crypto.randomUUID()}`;\n const configModule = await import(configUrl);\n const userConfig = configModule.default || configModule;\n\n if (userConfig === null || typeof userConfig !== \"object\" || Array.isArray(userConfig)) {\n throw new ConfigValidationError(\n `Expected object, received ${userConfig === null ? \"null\" : typeof userConfig}`,\n );\n }\n\n validateCorsConfig(userConfig);\n validateConfigShape(userConfig);\n\n const merged = mergeConfigs(userConfig);\n configCacheByProject.set(projectDir, { revision: cacheRevision, config: merged });\n return merged;\n } catch (error) {\n if (error instanceof ConfigValidationError) {\n throw error;\n }\n\n if (error instanceof Error && error.message.startsWith(\"Invalid veryfront.config\")) {\n throw error;\n }\n\n throw error;\n }\n}\n\nexport async function getConfig(\n projectDir: string,\n adapter: RuntimeAdapter,\n): Promise<VeryfrontConfig> {\n const cached = configCacheByProject.get(projectDir);\n if (cached && cached.revision === cacheRevision) return cached.config;\n\n const configFiles = [\"veryfront.config.js\", \"veryfront.config.ts\", \"veryfront.config.mjs\"];\n\n for (const configFile of configFiles) {\n const configPath = join(projectDir, configFile);\n\n const exists = await adapter.fs.exists(configPath);\n if (!exists) continue;\n\n try {\n const merged = await loadAndMergeConfig(configPath, projectDir, adapter);\n if (merged) return merged;\n } catch (error) {\n if (error instanceof ConfigValidationError) {\n throw error;\n }\n\n if (error instanceof Error && error.message.startsWith(\"Invalid veryfront.config\")) {\n throw error;\n }\n\n // Only log at debug level - this is expected when .ts exists but .js is tried first\n const errorMessage = error instanceof Error ? error.message : String(error);\n serverLogger.debug(`[CONFIG] Failed to load ${configFile}, trying next config file:`, {\n error: errorMessage,\n });\n\n continue;\n }\n }\n\n const defaultConfig = DEFAULT_CONFIG as VeryfrontConfig;\n configCacheByProject.set(projectDir, { revision: cacheRevision, config: defaultConfig });\n return defaultConfig;\n}\n\nexport function clearConfigCache() {\n configCacheByProject.clear();\n cacheRevision++;\n}\n", "import type { VeryfrontConfig } from \"./types.ts\";\nimport { createError, toError } from \"../../core/errors/veryfront-error.ts\";\nimport { getEnv } from \"../../platform/compat/process.ts\";\n\nexport function defineConfig(config: VeryfrontConfig): VeryfrontConfig {\n return config;\n}\n\nexport function defineConfigWithEnv(\n factory: (env: string) => VeryfrontConfig,\n): VeryfrontConfig {\n const env = getEnv(\"NODE_ENV\") || \"development\";\n return factory(env);\n}\n\nexport function mergeConfigs(\n ...configs: Partial<VeryfrontConfig>[]\n): VeryfrontConfig {\n const merged: Partial<VeryfrontConfig> = {};\n\n for (const config of configs) {\n Object.assign(merged, config);\n }\n\n return merged as VeryfrontConfig;\n}\n\nexport async function validateConfig(config: unknown): Promise<void> {\n if (!config || typeof config !== \"object\") {\n throw toError(createError({\n type: \"config\",\n message: \"Configuration must be an object\",\n }));\n }\n\n const cfg = config as Record<string, unknown>;\n\n if (cfg.dev && typeof cfg.dev === \"object\") {\n const dev = cfg.dev as Record<string, unknown>;\n if (dev.port !== undefined) {\n const { MIN_PORT, MAX_PORT } = await import(\"../utils/constants/network.ts\");\n if (typeof dev.port !== \"number\" || dev.port < MIN_PORT || dev.port > MAX_PORT) {\n throw toError(createError({\n type: \"config\",\n message: `dev.port must be a number between ${MIN_PORT} and ${MAX_PORT}`,\n context: {\n field: \"dev.port\",\n value: dev.port,\n expected: `number between ${MIN_PORT} and ${MAX_PORT}`,\n },\n }));\n }\n }\n }\n\n if (cfg.build && typeof cfg.build === \"object\") {\n const build = cfg.build as Record<string, unknown>;\n if (build.outDir !== undefined && typeof build.outDir !== \"string\") {\n throw toError(createError({\n type: \"config\",\n message: \"build.outDir must be a string\",\n context: { field: \"build.outDir\", value: build.outDir, expected: \"string\" },\n }));\n }\n }\n}\n", "export const LOCALHOST = {\n IPV4: \"127.0.0.1\",\n IPV6: \"::1\",\n HOSTNAME: \"localhost\",\n} as const;\n\nexport const HTTP_DEFAULTS = {\n PORT: 3000,\n HOST: \"localhost\",\n PROD_HOST: \"0.0.0.0\",\n} as const;\n\nexport const REDIS_DEFAULTS = {\n URL: \"redis://127.0.0.1:6379\",\n PORT: 6379,\n HOST: \"127.0.0.1\",\n} as const;\n\nexport const DEV_LOCALHOST_ORIGINS = [\n \"http://localhost\",\n \"http://127.0.0.1\",\n \"https://localhost\",\n \"https://127.0.0.1\",\n] as const;\n\nexport const DEV_LOCALHOST_CSP = {\n WS: \"ws://localhost:* wss://localhost:*\",\n HTTP: \"http://localhost\",\n} as const;\n\nexport const LOCALHOST_URLS = {\n HTTP: \"http://localhost\",\n HTTPS: \"https://localhost\",\n HTTP_IPV4: \"http://127.0.0.1\",\n HTTPS_IPV4: \"https://127.0.0.1\",\n} as const;\n\nexport function buildLocalhostUrl(\n port: number,\n protocol: \"http\" | \"https\" = \"http\",\n): string {\n return `${protocol}://${LOCALHOST.HOSTNAME}:${port}`;\n}\n\nexport function buildIpv4Url(\n port: number,\n protocol: \"http\" | \"https\" = \"http\",\n): string {\n return `${protocol}://${LOCALHOST.IPV4}:${port}`;\n}\n", "export { clearConfigCache, getConfig } from \"./loader.ts\";\n\nexport { defineConfig } from \"./define-config.ts\";\n\nexport type { VeryfrontConfig } from \"./types.ts\";\n\nexport {\n findUnknownTopLevelKeys,\n validateVeryfrontConfig,\n veryfrontConfigSchema,\n} from \"./schema.ts\";\n\nexport {\n DEFAULT_CACHE_MAX_SIZE,\n DEFAULT_METRICS_COLLECT_INTERVAL_MS,\n DEFAULT_PORT,\n DEFAULT_PREFETCH_DELAY_MS,\n DEFAULT_REDIS_BATCH_DELETE_SIZE,\n DEFAULT_REDIS_SCAN_COUNT,\n DEFAULT_TIMEOUT_MS,\n type DefaultConfig,\n defaultConfig,\n DURATION_HISTOGRAM_BOUNDARIES_MS,\n PAGE_TRANSITION_DELAY_MS,\n SANDBOX_TIMEOUT_MS,\n SIZE_HISTOGRAM_BOUNDARIES_KB,\n SSR_TIMEOUT_MS,\n} from \"./defaults.ts\";\n\nexport {\n buildIpv4Url,\n buildLocalhostUrl,\n DEV_LOCALHOST_CSP,\n DEV_LOCALHOST_ORIGINS,\n HTTP_DEFAULTS,\n LOCALHOST,\n LOCALHOST_URLS,\n REDIS_DEFAULTS,\n} from \"./network-defaults.ts\";\n", "import { createError, toError } from \"../../core/errors/veryfront-error.ts\";\nimport type {\n DirEntry,\n EnvironmentAdapter,\n FileChangeEvent,\n FileChangeKind,\n FileInfo,\n FileSystemAdapter,\n FileWatcher,\n RuntimeAdapter,\n RuntimeFeatures,\n ServeOptions,\n Server,\n ServerAdapter,\n ShellAdapter,\n WatchOptions,\n WebSocketUpgrade,\n} from \"./base.ts\";\nimport { DEFAULT_PORT } from \"@veryfront/config\";\nimport { serverLogger } from \"@veryfront/utils\";\n\nclass DenoFileSystemAdapter implements FileSystemAdapter {\n async readFile(path: string): Promise<string> {\n return await Deno.readTextFile(path);\n }\n\n async readFileBytes(path: string): Promise<Uint8Array> {\n return await Deno.readFile(path);\n }\n\n async writeFile(path: string, content: string): Promise<void> {\n await Deno.writeTextFile(path, content);\n }\n\n async exists(path: string): Promise<boolean> {\n try {\n await Deno.stat(path);\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n async *readDir(path: string): AsyncIterable<DirEntry> {\n for await (const entry of Deno.readDir(path)) {\n yield {\n name: entry.name,\n isFile: entry.isFile,\n isDirectory: entry.isDirectory,\n isSymlink: entry.isSymlink,\n };\n }\n }\n\n async stat(path: string): Promise<FileInfo> {\n const stat = await Deno.stat(path);\n return {\n size: stat.size,\n isFile: stat.isFile,\n isDirectory: stat.isDirectory,\n isSymlink: stat.isSymlink,\n mtime: stat.mtime,\n };\n }\n\n async mkdir(path: string, options?: { recursive?: boolean }): Promise<void> {\n await Deno.mkdir(path, options);\n }\n\n async remove(path: string, options?: { recursive?: boolean }): Promise<void> {\n await Deno.remove(path, options);\n }\n\n async makeTempDir(prefix: string): Promise<string> {\n return await Deno.makeTempDir({ prefix });\n }\n\n watch(paths: string | string[], options?: WatchOptions): FileWatcher {\n const pathArray = Array.isArray(paths) ? paths : [paths];\n const recursive = options?.recursive ?? true;\n const signal = options?.signal;\n\n const watcher = Deno.watchFs(pathArray, { recursive });\n let closed = false;\n\n const denoIterator = watcher[Symbol.asyncIterator]();\n\n const mapEventKind = (kind: string): FileChangeKind => {\n switch (kind) {\n case \"create\":\n return \"create\";\n case \"modify\":\n return \"modify\";\n case \"remove\":\n return \"delete\";\n default:\n return \"any\";\n }\n };\n\n const iterator: AsyncIterator<FileChangeEvent> = {\n async next(): Promise<IteratorResult<FileChangeEvent>> {\n if (closed || signal?.aborted) {\n return { done: true, value: undefined };\n }\n\n try {\n const result = await denoIterator.next();\n if (result.done) {\n return { done: true, value: undefined };\n }\n\n return {\n done: false,\n value: {\n kind: mapEventKind(result.value.kind),\n paths: result.value.paths,\n },\n };\n } catch (error) {\n if (closed || signal?.aborted) {\n return { done: true, value: undefined };\n }\n throw error;\n }\n },\n\n async return(): Promise<IteratorResult<FileChangeEvent>> {\n closed = true;\n if (denoIterator.return) {\n await denoIterator.return();\n }\n return { done: true, value: undefined };\n },\n };\n\n const cleanup = () => {\n if (closed) return;\n closed = true;\n try {\n if (\"close\" in watcher && typeof watcher.close === \"function\") {\n watcher.close();\n }\n } catch (error) {\n serverLogger.debug(\"[Deno] Filesystem watcher cleanup failed\", { error });\n }\n };\n\n if (signal) {\n signal.addEventListener(\"abort\", cleanup);\n }\n\n return {\n [Symbol.asyncIterator]() {\n return iterator;\n },\n close: cleanup,\n };\n }\n}\n\nclass DenoEnvironmentAdapter implements EnvironmentAdapter {\n get(key: string): string | undefined {\n return Deno.env.get(key);\n }\n\n set(key: string, value: string): void {\n Deno.env.set(key, value);\n }\n\n toObject(): Record<string, string> {\n return Deno.env.toObject();\n }\n}\n\nclass DenoServerAdapter implements ServerAdapter {\n upgradeWebSocket(request: Request): WebSocketUpgrade {\n const { socket, response } = Deno.upgradeWebSocket(request);\n return { socket, response };\n }\n}\n\nclass DenoShellAdapter implements ShellAdapter {\n statSync(path: string): { isFile: boolean; isDirectory: boolean } {\n try {\n const stat = Deno.statSync(path);\n return {\n isFile: stat.isFile,\n isDirectory: stat.isDirectory,\n };\n } catch (error) {\n throw toError(createError({\n type: \"file\",\n message: `Failed to stat file: ${error}`,\n }));\n }\n }\n\n readFileSync(path: string): string {\n try {\n return Deno.readTextFileSync(path);\n } catch (error) {\n throw toError(createError({\n type: \"file\",\n message: `Failed to read file: ${error}`,\n }));\n }\n }\n}\n\nclass DenoServer implements Server {\n constructor(\n private server: Deno.HttpServer,\n private hostname: string,\n private port: number,\n private abortController?: AbortController,\n ) {}\n\n async stop(): Promise<void> {\n try {\n if (this.abortController) {\n this.abortController.abort();\n }\n\n await this.server.shutdown();\n } catch (error) {\n serverLogger.debug(\"[Deno] Server shutdown failed\", { error });\n }\n }\n\n get addr() {\n return { hostname: this.hostname, port: this.port };\n }\n}\n\nexport class DenoAdapter implements RuntimeAdapter {\n readonly id = \"deno\" as const;\n readonly name = \"deno\";\n /** @deprecated Use `id` instead */\n readonly platform = \"deno\" as const;\n\n fs = new DenoFileSystemAdapter();\n env = new DenoEnvironmentAdapter();\n server = new DenoServerAdapter();\n shell = new DenoShellAdapter();\n\n readonly capabilities = {\n typescript: true,\n jsx: true,\n http2: true,\n websocket: true,\n workers: true,\n fileWatching: true,\n shell: true,\n kvStore: true, // Deno KV available\n writableFs: true,\n };\n\n /** @deprecated Use `capabilities` instead */\n readonly features: RuntimeFeatures = {\n websocket: true,\n http2: true,\n workers: true,\n jsx: true,\n typescript: true,\n };\n\n serve(\n handler: (request: Request) => Promise<Response> | Response,\n options: ServeOptions = {},\n ): Promise<Server> {\n const { port = DEFAULT_PORT, hostname = \"localhost\", onListen } = options;\n\n const controller = new AbortController();\n const signal = options.signal || controller.signal;\n\n const server = Deno.serve({\n port,\n hostname,\n signal,\n handler: async (request, _info) => {\n try {\n return await handler(request);\n } catch (error) {\n const { serverLogger } = await import(\"@veryfront/utils\");\n serverLogger.error(\"Request handler error:\", error);\n return new Response(\"Internal Server Error\", { status: 500 });\n }\n },\n onListen: (params) => {\n onListen?.({ hostname: params.hostname, port: params.port });\n },\n });\n\n const controllerToPass = options.signal ? undefined : controller;\n return Promise.resolve(new DenoServer(server, hostname, port, controllerToPass));\n }\n}\n\nexport const denoAdapter = new DenoAdapter();\n", "import type { FileChangeEvent, FileChangeKind, FileWatcher } from \"./base.ts\";\nimport { join } from \"node:path\";\n\nexport async function setupNodeFsWatcher(\n path: string,\n options: {\n recursive: boolean;\n closed: () => boolean;\n signal: AbortSignal | undefined;\n eventQueue: FileChangeEvent[];\n getResolver: () => ((value: IteratorResult<FileChangeEvent>) => void) | null;\n setResolver: (resolver: ((value: IteratorResult<FileChangeEvent>) => void) | null) => void;\n watchers: Array<import(\"node:fs\").FSWatcher>;\n onError: (error: Error, path: string) => void;\n },\n): Promise<void> {\n try {\n const fs = await import(\"node:fs\");\n const fsPromises = await import(\"node:fs/promises\");\n\n const exists = await fsPromises.access(path).then(() => true).catch(() => false);\n if (!exists) return;\n\n const watcher = fs.watch(path, { recursive: options.recursive }, (eventType, filename) => {\n if (options.closed() || options.signal?.aborted) return;\n\n const kind: FileChangeKind = eventType === \"change\" ? \"modify\" : \"any\";\n const fullPath = filename ? join(path, filename) : path;\n\n enqueueWatchEvent(\n { kind, paths: [fullPath] },\n options.eventQueue,\n options.getResolver,\n options.setResolver,\n );\n });\n\n watcher.on(\"error\", (error: Error) => {\n if (!options.closed() && !options.signal?.aborted) {\n options.onError(error, path);\n }\n });\n\n options.watchers.push(watcher);\n } catch (error) {\n options.onError(error as Error, path);\n }\n}\n\nexport function createWatcherIterator(\n eventQueue: FileChangeEvent[],\n _getResolver: () => ((value: IteratorResult<FileChangeEvent>) => void) | null,\n setResolver: (r: ((value: IteratorResult<FileChangeEvent>) => void) | null) => void,\n isClosed: () => boolean,\n isAborted: () => boolean,\n): AsyncIterator<FileChangeEvent> {\n return {\n next(): Promise<IteratorResult<FileChangeEvent>> {\n if (isClosed() || isAborted()) {\n return Promise.resolve({ done: true, value: undefined });\n }\n\n if (eventQueue.length > 0) {\n const event = eventQueue.shift()!;\n return Promise.resolve({ done: false, value: event });\n }\n\n return new Promise((resolve) => {\n if (isClosed() || isAborted()) {\n resolve({ done: true, value: undefined });\n return;\n }\n setResolver(resolve);\n });\n },\n\n return(): Promise<IteratorResult<FileChangeEvent>> {\n return Promise.resolve({ done: true, value: undefined });\n },\n };\n}\n\nexport function enqueueWatchEvent(\n event: FileChangeEvent,\n eventQueue: FileChangeEvent[],\n getResolver: () => ((value: IteratorResult<FileChangeEvent>) => void) | null,\n setResolver: (resolver: ((value: IteratorResult<FileChangeEvent>) => void) | null) => void,\n): void {\n const resolver = getResolver();\n if (resolver) {\n resolver({ done: false, value: event });\n setResolver(null);\n } else {\n eventQueue.push(event);\n }\n}\n\nexport function createFileWatcher(\n iterator: AsyncIterator<FileChangeEvent>,\n cleanup: () => void,\n): FileWatcher {\n return {\n [Symbol.asyncIterator]() {\n return iterator;\n },\n close: cleanup,\n };\n}\n", "import type { DirEntry, FileInfo, FileSystemAdapter, FileWatcher, WatchOptions } from \"../base.ts\";\nimport { createFileWatcher, createWatcherIterator, setupNodeFsWatcher } from \"../shared-watcher.ts\";\nimport { serverLogger } from \"@veryfront/utils\";\nimport type { FileChangeEvent } from \"../base.ts\";\n\nexport class NodeFileSystemAdapter implements FileSystemAdapter {\n async readFile(path: string): Promise<string> {\n const fs = await import(\"node:fs/promises\");\n return await fs.readFile(path, \"utf-8\");\n }\n\n async readFileBytes(path: string): Promise<Uint8Array> {\n const fs = await import(\"node:fs/promises\");\n const buffer = await fs.readFile(path);\n return buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);\n }\n\n async writeFile(path: string, content: string): Promise<void> {\n const fs = await import(\"node:fs/promises\");\n await fs.writeFile(path, content, \"utf-8\");\n }\n\n async exists(path: string): Promise<boolean> {\n const fs = await import(\"node:fs/promises\");\n try {\n await fs.access(path);\n return true;\n } catch (error) {\n serverLogger.debug(`File access check failed for ${path}:`, error);\n return false;\n }\n }\n\n async *readDir(path: string): AsyncIterable<DirEntry> {\n const fs = await import(\"node:fs/promises\");\n const entries = await fs.readdir(path, { withFileTypes: true });\n\n for (const entry of entries) {\n yield {\n name: entry.name,\n isFile: entry.isFile(),\n isDirectory: entry.isDirectory(),\n isSymlink: entry.isSymbolicLink(),\n };\n }\n }\n\n async stat(path: string): Promise<FileInfo> {\n const fs = await import(\"node:fs/promises\");\n const stats = await fs.stat(path);\n\n return {\n size: stats.size,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n isSymlink: stats.isSymbolicLink(),\n mtime: stats.mtime,\n };\n }\n\n async mkdir(path: string, options?: { recursive?: boolean }): Promise<void> {\n const fs = await import(\"node:fs/promises\");\n await fs.mkdir(path, options);\n }\n\n async remove(path: string, options?: { recursive?: boolean }): Promise<void> {\n const fs = await import(\"node:fs/promises\");\n await fs.rm(path, { recursive: options?.recursive, force: true });\n }\n\n async makeTempDir(prefix: string): Promise<string> {\n const { mkdtemp } = await import(\"node:fs/promises\");\n const { join } = await import(\"node:path\");\n const { tmpdir } = await import(\"node:os\");\n return await mkdtemp(join(tmpdir(), prefix));\n }\n\n watch(paths: string | string[], options?: WatchOptions): FileWatcher {\n const pathArray = Array.isArray(paths) ? paths : [paths];\n const recursive = options?.recursive ?? true;\n const signal = options?.signal;\n\n let closed = false;\n const watchers: Array<import(\"node:fs\").FSWatcher> = [];\n const eventQueue: FileChangeEvent[] = [];\n let resolver: ((value: IteratorResult<FileChangeEvent>) => void) | null = null;\n\n Promise.all(\n pathArray.map((path) =>\n setupNodeFsWatcher(path, {\n recursive,\n closed: () => closed,\n signal,\n eventQueue,\n getResolver: () => resolver,\n setResolver: (r) => {\n resolver = r;\n },\n watchers,\n onError: (error, path) => serverLogger.error(`File watcher error for ${path}:`, error),\n })\n ),\n ).catch((error) => {\n serverLogger.error(\"Failed to setup file watchers:\", error);\n });\n\n const iterator = createWatcherIterator(\n eventQueue,\n () => resolver,\n (r) => {\n resolver = r;\n },\n () => closed,\n () => signal?.aborted ?? false,\n );\n\n const cleanup = () => {\n closed = true;\n watchers.forEach((watcher) => {\n try {\n watcher.close();\n } catch (error) {\n serverLogger.debug(\"Error closing file watcher during cleanup:\", error);\n }\n });\n if (resolver) {\n resolver({ done: true, value: undefined });\n resolver = null;\n }\n };\n\n if (signal) {\n signal.addEventListener(\"abort\", cleanup);\n }\n\n return createFileWatcher(iterator, cleanup);\n }\n}\n", "import process from \"node:process\";\nimport type { EnvironmentAdapter } from \"../base.ts\";\n\nexport class NodeEnvironmentAdapter implements EnvironmentAdapter {\n get(key: string): string | undefined {\n return process.env[key];\n }\n\n set(key: string, value: string): void {\n process.env[key] = value;\n }\n\n toObject(): Record<string, string> {\n return { ...process.env } as Record<string, string>;\n }\n}\n", "import type { ServeOptions, Server } from \"../base.ts\";\nimport type { NodeHttpServer, WSWebSocket, WSWebSocketServer } from \"./types.ts\";\nimport { DEFAULT_PORT } from \"@veryfront/config\";\n\n// Track pending WebSocket upgrades by request ID\nconst pendingWebSocketUpgrades = new Map<string, {\n resolve: (ws: WSWebSocket) => void;\n reject: (error: Error) => void;\n}>();\n\n// Singleton WebSocket server instance (one per HTTP server)\nlet wsServer: WSWebSocketServer | null = null;\n\nexport class NodeServer implements Server {\n constructor(\n private server: NodeHttpServer,\n private hostname: string,\n private port: number,\n ) {}\n\n stop(): Promise<void> {\n return new Promise((resolve) => {\n // Close WebSocket server first\n if (wsServer) {\n wsServer.close();\n wsServer = null;\n }\n this.server.close(() => resolve());\n });\n }\n\n get addr() {\n return { hostname: this.hostname, port: this.port };\n }\n}\n\n/**\n * Create a request ID for matching WebSocket upgrades\n */\nfunction createRequestId(req: { headers: Record<string, string | string[] | undefined> }): string {\n const key = req.headers[\"sec-websocket-key\"];\n return typeof key === \"string\" ? key : (Array.isArray(key) ? key[0] : \"\") || crypto.randomUUID();\n}\n\n/**\n * Register a pending WebSocket upgrade\n * Called by NodeServerAdapter.upgradeWebSocket\n */\nexport function registerWebSocketUpgrade(requestId: string): Promise<WSWebSocket> {\n return new Promise((resolve, reject) => {\n pendingWebSocketUpgrades.set(requestId, { resolve, reject });\n // Cleanup after timeout (30 seconds)\n setTimeout(() => {\n if (pendingWebSocketUpgrades.has(requestId)) {\n pendingWebSocketUpgrades.delete(requestId);\n reject(new Error(\"WebSocket upgrade timed out\"));\n }\n }, 30000);\n });\n}\n\nexport async function createNodeServer(\n handler: (request: Request) => Promise<Response> | Response,\n options: ServeOptions = {},\n): Promise<Server> {\n const { port = DEFAULT_PORT, hostname = \"localhost\", onListen } = options;\n const { createServer } = await import(\"node:http\");\n\n const server = createServer(async (_req, _res) => {\n try {\n const url = new URL(_req.url || \"/\", `http://${_req.headers.host || hostname}`);\n const body = _req.method === \"GET\" || _req.method === \"HEAD\" ? null : _req;\n\n const headersRecord: Record<string, string> = {};\n for (const [key, value] of Object.entries(_req.headers)) {\n if (typeof value === \"string\") {\n headersRecord[key] = value;\n } else if (Array.isArray(value)) {\n headersRecord[key] = value[0] || \"\";\n }\n }\n\n // Node.js 18+ requires duplex: \"half\" when creating a Request with a streaming body\n const requestInit: RequestInit & { duplex?: string } = {\n method: _req.method,\n headers: headersRecord,\n body: body as BodyInit | null,\n };\n // Only add duplex for requests with a body (POST, PUT, PATCH, etc.)\n if (body !== null) {\n requestInit.duplex = \"half\";\n }\n const request = new Request(url.toString(), requestInit);\n\n const response = await handler(request);\n\n // Check if this is a WebSocket upgrade response (status 101)\n // The actual WebSocket handling is done in the 'upgrade' event\n if (response.status === 101) {\n // Don't end the response - the upgrade handler will take over\n return;\n }\n\n _res.statusCode = response.status;\n _res.statusMessage = response.statusText;\n\n response.headers.forEach((value, key) => {\n _res.setHeader(key, value);\n });\n\n if (response.body) {\n const reader = response.body.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n _res.write(value);\n }\n }\n\n _res.end();\n } catch (_error) {\n const { serverLogger } = await import(\"@veryfront/utils\");\n serverLogger.error(\"Request handler error:\", _error);\n _res.statusCode = 500;\n _res.end(\"Internal Server Error\");\n }\n });\n\n // Handle WebSocket upgrades\n server.on(\"upgrade\", async (request, socket, head) => {\n try {\n // Lazy load ws package\n const { WebSocketServer } = await import(\"ws\");\n\n // Create WebSocket server if not exists\n if (!wsServer) {\n wsServer = new WebSocketServer({ noServer: true }) as unknown as WSWebSocketServer;\n }\n\n // Get request ID to match with pending upgrade\n const requestId = createRequestId(request);\n\n // Handle the upgrade\n (wsServer as unknown as {\n handleUpgrade: (\n req: unknown,\n socket: unknown,\n head: unknown,\n callback: (ws: WSWebSocket) => void,\n ) => void;\n })\n .handleUpgrade(request, socket, head, (ws: WSWebSocket) => {\n const pending = pendingWebSocketUpgrades.get(requestId);\n if (pending) {\n pendingWebSocketUpgrades.delete(requestId);\n pending.resolve(ws);\n }\n // Emit connection event\n (wsServer as unknown as { emit: (event: string, ws: WSWebSocket, req: unknown) => void })\n .emit(\"connection\", ws, request);\n });\n } catch (error) {\n const { serverLogger } = await import(\"@veryfront/utils\");\n serverLogger.error(\"WebSocket upgrade error:\", error);\n socket.destroy();\n }\n });\n\n if (options.signal) {\n options.signal.addEventListener(\"abort\", () => {\n if (wsServer) {\n wsServer.close();\n wsServer = null;\n }\n server.close();\n });\n }\n\n return new Promise((resolve) => {\n server.listen(port, hostname, () => {\n onListen?.({ hostname, port });\n resolve(new NodeServer(server as unknown as NodeHttpServer, hostname, port));\n });\n });\n}\n", "import type { ServerAdapter, WebSocketUpgrade } from \"../base.ts\";\nimport type { WSMessageData, WSWebSocket } from \"./types.ts\";\nimport { createError, toError } from \"../../../core/errors/veryfront-error.ts\";\nimport { serverLogger } from \"@veryfront/utils\";\nimport { registerWebSocketUpgrade } from \"./http-server.ts\";\nimport * as crypto from \"node:crypto\";\n\nexport class NodeServerAdapter implements ServerAdapter {\n upgradeWebSocket(request: Request): WebSocketUpgrade {\n const key = request.headers.get(\"sec-websocket-key\");\n const protocol = request.headers.get(\"sec-websocket-protocol\");\n\n if (!key) {\n throw toError(createError({\n type: \"network\",\n message: \"Missing Sec-WebSocket-Key header\",\n }));\n }\n\n // Create a proxy WebSocket that will be connected when the upgrade completes\n const socket = new NodeWebSocket();\n\n // Register the upgrade and connect when complete\n registerWebSocketUpgrade(key).then((ws) => {\n socket._attachRealSocket(ws);\n }).catch((error) => {\n serverLogger.error(\"WebSocket upgrade failed:\", error);\n socket._emitError(error);\n });\n\n // Return 101 response - the http-server upgrade handler will complete the handshake\n const response = new Response(null, {\n status: 101,\n statusText: \"Switching Protocols\",\n headers: {\n \"Upgrade\": \"websocket\",\n \"Connection\": \"Upgrade\",\n \"Sec-WebSocket-Accept\": this.generateAcceptKey(key),\n ...(protocol ? { \"Sec-WebSocket-Protocol\": protocol } : {}),\n },\n });\n\n return { socket: socket as unknown as WebSocket, response };\n }\n\n private generateAcceptKey(key: string): string {\n const GUID = \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\";\n return crypto.createHash(\"sha1\").update(key + GUID).digest(\"base64\");\n }\n}\n\n/**\n * NodeWebSocket - A WebSocket wrapper that works with Node.js\n * Proxies to the real ws WebSocket once the upgrade completes\n */\nexport class NodeWebSocket {\n private ws: WSWebSocket | null = null;\n public readyState = 0; // CONNECTING\n\n public onopen: ((event: Event) => void) | null = null;\n public onclose: ((event: CloseEvent) => void) | null = null;\n public onerror: ((event: Event) => void) | null = null;\n public onmessage: ((event: MessageEvent) => void) | null = null;\n\n static readonly CONNECTING = 0;\n static readonly OPEN = 1;\n static readonly CLOSING = 2;\n static readonly CLOSED = 3;\n\n // Queue messages sent before the socket is ready\n private pendingMessages: Array<string | ArrayBuffer> = [];\n\n /**\n * Attach the real WebSocket after upgrade completes\n * Called by NodeServerAdapter\n */\n _attachRealSocket(ws: WSWebSocket) {\n this.ws = ws;\n this.readyState = 1; // OPEN\n\n // Set up event handlers\n ws.on(\"open\", () => {\n this.readyState = 1;\n this.onopen?.(new Event(\"open\"));\n });\n\n ws.on(\"message\", (data: WSMessageData) => {\n this.onmessage?.(new MessageEvent(\"message\", { data: data.toString() }));\n });\n\n ws.on(\"close\", () => {\n this.readyState = 3;\n this.onclose?.(new CloseEvent(\"close\"));\n });\n\n ws.on(\"error\", (error: Error) => {\n this.onerror?.(new ErrorEvent(\"error\", { error }));\n });\n\n // Send any pending messages\n for (const msg of this.pendingMessages) {\n ws.send(msg);\n }\n this.pendingMessages = [];\n\n // The socket is already open when we get it from handleUpgrade\n this.onopen?.(new Event(\"open\"));\n }\n\n /**\n * Emit an error when upgrade fails\n * Called by NodeServerAdapter\n */\n _emitError(error: Error) {\n this.readyState = 3; // CLOSED\n this.onerror?.(new ErrorEvent(\"error\", { error }));\n }\n\n send(data: string | ArrayBuffer) {\n if (this.ws && this.readyState === 1) {\n this.ws.send(data);\n } else if (this.readyState === 0) {\n // Queue the message until the socket is ready\n this.pendingMessages.push(data);\n } else {\n throw toError(createError({\n type: \"network\",\n message: \"WebSocket is not open\",\n }));\n }\n }\n\n close(code?: number, reason?: string) {\n if (this.ws) {\n this.ws.close(code, reason);\n }\n this.readyState = 2; // CLOSING\n }\n\n // WebSocket standard interface\n addEventListener(type: string, listener: EventListener) {\n switch (type) {\n case \"open\":\n this.onopen = listener as (event: Event) => void;\n break;\n case \"close\":\n this.onclose = listener as (event: CloseEvent) => void;\n break;\n case \"error\":\n this.onerror = listener as (event: Event) => void;\n break;\n case \"message\":\n this.onmessage = listener as (event: MessageEvent) => void;\n break;\n }\n }\n\n removeEventListener(_type: string, _listener: EventListener) {\n // Simplified - just null out the handler\n switch (_type) {\n case \"open\":\n this.onopen = null;\n break;\n case \"close\":\n this.onclose = null;\n break;\n case \"error\":\n this.onerror = null;\n break;\n case \"message\":\n this.onmessage = null;\n break;\n }\n }\n}\n", "import type {\n RuntimeAdapter,\n RuntimeCapabilities,\n RuntimeFeatures,\n ServeOptions,\n Server,\n} from \"../base.ts\";\nimport { NodeFileSystemAdapter } from \"./filesystem-adapter.ts\";\nimport { NodeEnvironmentAdapter } from \"./environment-adapter.ts\";\nimport { NodeServerAdapter } from \"./websocket-adapter.ts\";\nimport { createNodeServer } from \"./http-server.ts\";\n\nexport class NodeAdapter implements RuntimeAdapter {\n readonly id = \"node\" as const;\n readonly name = \"node\";\n /** @deprecated Use `id` instead */\n readonly platform = \"node\" as const;\n\n fs = new NodeFileSystemAdapter();\n env = new NodeEnvironmentAdapter();\n server = new NodeServerAdapter();\n\n readonly capabilities: RuntimeCapabilities = {\n typescript: false, // Requires compilation\n jsx: false, // Requires compilation\n http2: true,\n websocket: true,\n workers: true,\n fileWatching: true,\n shell: true,\n kvStore: false,\n writableFs: true,\n };\n\n /** @deprecated Use `capabilities` instead */\n readonly features: RuntimeFeatures = {\n websocket: true,\n http2: true,\n workers: true,\n jsx: false,\n typescript: false,\n };\n\n serve(\n handler: (request: Request) => Promise<Response> | Response,\n options: ServeOptions = {},\n ): Promise<Server> {\n return createNodeServer(handler, options);\n }\n}\n\nexport const nodeAdapter = new NodeAdapter();\n", "export { NodeAdapter, nodeAdapter } from \"./adapter.ts\";\nexport { NodeFileSystemAdapter } from \"./filesystem-adapter.ts\";\nexport { NodeEnvironmentAdapter } from \"./environment-adapter.ts\";\nexport { NodeServerAdapter, NodeWebSocket } from \"./websocket-adapter.ts\";\nexport { createNodeServer, NodeServer } from \"./http-server.ts\";\nexport type {\n NodeHttpServer,\n NodeIncomingMessage,\n NodeServerResponse,\n WSMessageData,\n WSWebSocket,\n} from \"./types.ts\";\n", "export {\n createNodeServer,\n NodeAdapter,\n nodeAdapter,\n NodeEnvironmentAdapter,\n NodeFileSystemAdapter,\n NodeServer,\n NodeServerAdapter,\n NodeWebSocket,\n} from \"./node/index.ts\";\n\nexport type {\n NodeHttpServer,\n NodeIncomingMessage,\n NodeServerResponse,\n WSMessageData,\n WSWebSocket,\n} from \"./node/index.ts\";\n", "export enum ErrorCode {\n FILE_NOT_FOUND = \"FILE_NOT_FOUND\",\n BUILD_ERROR = \"BUILD_ERROR\",\n CONFIG_ERROR = \"CONFIG_ERROR\",\n COMPILATION_ERROR = \"COMPILATION_ERROR\",\n NETWORK_ERROR = \"NETWORK_ERROR\",\n PERMISSION_ERROR = \"PERMISSION_ERROR\",\n RENDER_ERROR = \"RENDER_ERROR\",\n INITIALIZATION_ERROR = \"INITIALIZATION_ERROR\",\n AGENT_ERROR = \"AGENT_ERROR\",\n AGENT_NOT_FOUND = \"AGENT_NOT_FOUND\",\n AGENT_TIMEOUT = \"AGENT_TIMEOUT\",\n AGENT_INTENT_ERROR = \"AGENT_INTENT_ERROR\",\n ORCHESTRATION_ERROR = \"ORCHESTRATION_ERROR\",\n NOT_SUPPORTED = \"NOT_SUPPORTED\",\n}\n\nexport class VeryfrontError extends Error {\n public code: ErrorCode;\n public context?: unknown;\n\n constructor(message: string, code: ErrorCode, context?: unknown) {\n super(message);\n this.name = \"VeryfrontError\";\n this.code = code;\n this.context = context;\n }\n}\n", "import { ErrorCode, VeryfrontError } from \"./types.ts\";\n\nexport class AgentError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.AGENT_ERROR, context);\n this.name = \"AgentError\";\n }\n}\n\nexport class AgentNotFoundError extends VeryfrontError {\n constructor(agentId: string, context?: unknown) {\n super(`Agent with ID '${agentId}' not found`, ErrorCode.AGENT_NOT_FOUND, {\n agentId,\n ...(context as Record<string, unknown> | undefined),\n });\n this.name = \"AgentNotFoundError\";\n }\n}\n\nexport class AgentTimeoutError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.AGENT_TIMEOUT, context);\n this.name = \"AgentTimeoutError\";\n }\n}\n\nexport class AgentIntentError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.AGENT_INTENT_ERROR, context);\n this.name = \"AgentIntentError\";\n }\n}\n\nexport class OrchestrationError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.ORCHESTRATION_ERROR, context);\n this.name = \"OrchestrationError\";\n }\n}\n", "import { ErrorCode, VeryfrontError } from \"./types.ts\";\n\nexport class BuildError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.BUILD_ERROR, context);\n this.name = \"BuildError\";\n }\n}\n\nexport class CompilationError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.COMPILATION_ERROR, context);\n this.name = \"CompilationError\";\n }\n}\n", "import { ErrorCode, VeryfrontError } from \"./types.ts\";\n\nexport class RuntimeError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.RENDER_ERROR, context);\n this.name = \"RuntimeError\";\n }\n}\n\nexport class RenderError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.RENDER_ERROR, context);\n this.name = \"RenderError\";\n }\n}\n", "import { ErrorCode, VeryfrontError } from \"./types.ts\";\n\nexport class FileSystemError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.FILE_NOT_FOUND, context);\n this.name = \"FileSystemError\";\n }\n}\n\nexport class ConfigError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.CONFIG_ERROR, context);\n this.name = \"ConfigError\";\n }\n}\n\nexport class NetworkError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.NETWORK_ERROR, context);\n this.name = \"NetworkError\";\n }\n}\n\nexport class PermissionError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.PERMISSION_ERROR, context);\n this.name = \"PermissionError\";\n }\n}\n\nexport class NotSupportedError extends VeryfrontError {\n constructor(message: string, context?: unknown) {\n super(message, ErrorCode.NOT_SUPPORTED, context);\n this.name = \"NotSupportedError\";\n }\n}\n", "import { serverLogger } from \"@veryfront/utils/logger/logger.ts\";\nimport { ErrorCode, VeryfrontError } from \"./types.ts\";\n\n/** Default max retries for retry operations */\nconst DEFAULT_MAX_RETRIES = 3;\n\n/** Default initial delay for exponential backoff (100ms) */\nconst DEFAULT_INITIAL_DELAY_MS = 100;\n\n/** Default max delay cap for exponential backoff (5 seconds) */\nconst DEFAULT_MAX_DELAY_MS = 5000;\n\nfunction safeLog(logFn: () => void): void {\n try {\n logFn();\n } catch (error) {\n try {\n serverLogger.warn(\"[errors] Logging failed:\", error);\n } catch {\n // Silently ignore if even warning fails\n }\n }\n}\n\nexport function handleError(error: Error): void {\n safeLog(() => serverLogger.error(`Error: ${error.message}`));\n\n if (error instanceof VeryfrontError && error.context) {\n safeLog(() => serverLogger.error(\"Context:\", error.context));\n }\n\n if (error.stack) {\n safeLog(() => serverLogger.error(error.stack as string));\n }\n}\n\nexport function wrapError(\n error: unknown,\n message: string,\n context?: unknown,\n): VeryfrontError {\n const originalError = error instanceof Error ? error : new Error(String(error));\n const errorMessage = `${message}: ${originalError.message}`;\n\n const wrappedContext = {\n originalError: {\n name: originalError.name,\n message: originalError.message,\n stack: originalError.stack,\n },\n ...(context as Record<string, unknown> | undefined),\n };\n\n const errorCode = error instanceof VeryfrontError ? error.code : ErrorCode.RENDER_ERROR;\n\n return new VeryfrontError(errorMessage, errorCode, wrappedContext);\n}\n\nexport function logAndThrow(\n error: unknown,\n message?: string,\n logger: typeof serverLogger = serverLogger,\n): never {\n const errorObj = error instanceof Error ? error : new Error(String(error));\n const logMessage = message ? `${message}: ${errorObj.message}` : errorObj.message;\n\n safeLog(() => logger.error(logMessage, error));\n\n if (error instanceof Error) {\n throw error;\n }\n throw errorObj;\n}\n\nexport async function handleErrorWithFallback<T>(\n fn: () => T | Promise<T>,\n fallback: T,\n logger: typeof serverLogger = serverLogger,\n): Promise<T> {\n try {\n return await fn();\n } catch (error) {\n safeLog(() => logger.warn(\"Operation failed, using fallback\", error));\n return fallback;\n }\n}\n\nexport function handleErrorWithFallbackSync<T>(\n fn: () => T,\n fallback: T,\n logger: typeof serverLogger = serverLogger,\n): T {\n try {\n return fn();\n } catch (error) {\n safeLog(() => logger.warn(\"Operation failed, using fallback\", error));\n return fallback;\n }\n}\n\nexport async function retryWithBackoff<T>(\n fn: () => Promise<T>,\n options: {\n maxRetries?: number;\n initialDelay?: number;\n maxDelay?: number;\n logger?: typeof serverLogger;\n } = {},\n): Promise<T> {\n const {\n maxRetries = DEFAULT_MAX_RETRIES,\n initialDelay = DEFAULT_INITIAL_DELAY_MS,\n maxDelay = DEFAULT_MAX_DELAY_MS,\n logger: log = serverLogger,\n } = options;\n\n let lastError: unknown;\n let delay = initialDelay;\n\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error;\n safeLog(() => log.warn(`Attempt ${attempt + 1} failed, retrying...`, error));\n\n if (attempt < maxRetries - 1) {\n await new Promise((resolve) => setTimeout(resolve, delay));\n delay = Math.min(delay * 2, maxDelay);\n }\n }\n }\n\n throw lastError;\n}\n", "/**\n * Error Context Utilities\n *\n * Provides structured error handling with logging for operations that\n * may fail silently. Helps debug production issues by logging context\n * even when errors are caught and handled.\n */\n\nimport { serverLogger } from \"@veryfront/utils/logger/logger.ts\";\n\n/**\n * Context information for error logging\n */\nexport interface ErrorContext {\n operation: string;\n path?: string;\n slug?: string;\n details?: Record<string, unknown>;\n}\n\n/**\n * Log level for error context logging\n */\nexport type LogLevel = \"debug\" | \"warn\" | \"error\";\n\n/**\n * Options for error handling behavior\n */\nexport interface ErrorHandlingOptions<T> {\n /** Default value to return on error */\n fallback: T;\n /** Log level for error messages */\n logLevel?: LogLevel;\n /** Whether to include stack trace in logs */\n includeStack?: boolean;\n}\n\n/**\n * Extract error message from unknown error\n */\nfunction getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n return String(error);\n}\n\n/**\n * Extract stack trace from error if available\n */\nfunction getErrorStack(error: unknown): string | undefined {\n if (error instanceof Error) {\n return error.stack;\n }\n return undefined;\n}\n\n/**\n * Log an error with context information\n */\nfunction logError(\n error: unknown,\n context: ErrorContext,\n logLevel: LogLevel = \"debug\",\n includeStack = false,\n): void {\n const message = getErrorMessage(error);\n const logData: Record<string, unknown> = {\n ...context.details,\n path: context.path,\n slug: context.slug,\n errorMessage: message,\n };\n\n if (includeStack) {\n const stack = getErrorStack(error);\n if (stack) {\n logData.stack = stack;\n }\n }\n\n const logMessage = `[${context.operation}] Silent failure: ${message}`;\n\n switch (logLevel) {\n case \"error\":\n serverLogger.error(logMessage, logData);\n break;\n case \"warn\":\n serverLogger.warn(logMessage, logData);\n break;\n case \"debug\":\n default:\n serverLogger.debug(logMessage, logData);\n break;\n }\n}\n\n/**\n * Execute an async operation with error logging and fallback.\n * Use this to wrap operations that may fail but shouldn't throw.\n *\n * @example\n * ```ts\n * const stat = await withErrorContext(\n * () => adapter.fs.stat(path),\n * { operation: \"stat-file\", path },\n * { fallback: null }\n * );\n * ```\n */\nexport async function withErrorContext<T>(\n operation: () => Promise<T>,\n context: ErrorContext,\n options: ErrorHandlingOptions<T>,\n): Promise<T> {\n try {\n return await operation();\n } catch (error) {\n logError(error, context, options.logLevel, options.includeStack);\n return options.fallback;\n }\n}\n\n/**\n * Execute a sync operation with error logging and fallback.\n */\nexport function withErrorContextSync<T>(\n operation: () => T,\n context: ErrorContext,\n options: ErrorHandlingOptions<T>,\n): T {\n try {\n return operation();\n } catch (error) {\n logError(error, context, options.logLevel, options.includeStack);\n return options.fallback;\n }\n}\n\n/**\n * Type-safe wrapper for file stat operations with logging\n */\nexport function safeFileStat(\n adapter: { fs: { stat: (path: string) => Promise<{ isFile: boolean; isDirectory: boolean }> } },\n path: string,\n operation: string,\n): Promise<{ isFile: boolean; isDirectory: boolean } | null> {\n return withErrorContext(\n () => adapter.fs.stat(path),\n { operation, path },\n { fallback: null, logLevel: \"debug\" },\n );\n}\n\n/**\n * Type-safe wrapper for file read operations with logging\n */\nexport function safeFileRead(\n adapter: { fs: { readFile: (path: string) => Promise<string> } },\n path: string,\n operation: string,\n): Promise<string | null> {\n return withErrorContext(\n () => adapter.fs.readFile(path),\n { operation, path },\n { fallback: null, logLevel: \"debug\" },\n );\n}\n\n/**\n * Type-safe wrapper for directory read operations with logging\n */\nexport async function safeReadDir<T>(\n adapter: { fs: { readDir: (path: string) => AsyncIterable<T> } },\n path: string,\n operation: string,\n): Promise<T[]> {\n try {\n const results: T[] = [];\n for await (const entry of adapter.fs.readDir(path)) {\n results.push(entry);\n }\n return results;\n } catch (error) {\n logError(error, { operation, path }, \"debug\");\n return [];\n }\n}\n\n/**\n * Create a scoped error context helper for a specific operation.\n * Useful when performing multiple related operations.\n *\n * @example\n * ```ts\n * const ctx = createErrorScope(\"resolve-page\");\n * const stat = await ctx.run(() => adapter.fs.stat(path), { path }, null);\n * ```\n */\nexport function createErrorScope(operationPrefix: string) {\n return {\n run<T>(\n operation: () => Promise<T>,\n details: Omit<ErrorContext, \"operation\">,\n fallback: T,\n logLevel: LogLevel = \"debug\",\n ): Promise<T> {\n return withErrorContext(\n operation,\n { operation: operationPrefix, ...details },\n { fallback, logLevel },\n );\n },\n\n runSync<T>(\n operation: () => T,\n details: Omit<ErrorContext, \"operation\">,\n fallback: T,\n logLevel: LogLevel = \"debug\",\n ): T {\n return withErrorContextSync(\n operation,\n { operation: operationPrefix, ...details },\n { fallback, logLevel },\n );\n },\n };\n}\n", "export const ErrorCode = {\n CONFIG_NOT_FOUND: \"VF001\",\n CONFIG_INVALID: \"VF002\",\n CONFIG_PARSE_ERROR: \"VF003\",\n CONFIG_VALIDATION_ERROR: \"VF004\",\n CONFIG_TYPE_ERROR: \"VF005\",\n IMPORT_MAP_INVALID: \"VF006\",\n CORS_CONFIG_INVALID: \"VF007\",\n\n BUILD_FAILED: \"VF100\",\n BUNDLE_ERROR: \"VF101\",\n TYPESCRIPT_ERROR: \"VF102\",\n MDX_COMPILE_ERROR: \"VF103\",\n ASSET_OPTIMIZATION_ERROR: \"VF104\",\n SSG_GENERATION_ERROR: \"VF105\",\n SOURCEMAP_ERROR: \"VF106\",\n\n HYDRATION_MISMATCH: \"VF200\",\n RENDER_ERROR: \"VF201\",\n COMPONENT_ERROR: \"VF202\",\n LAYOUT_NOT_FOUND: \"VF203\",\n PAGE_NOT_FOUND: \"VF204\",\n API_ERROR: \"VF205\",\n MIDDLEWARE_ERROR: \"VF206\",\n\n ROUTE_CONFLICT: \"VF300\",\n INVALID_ROUTE_FILE: \"VF301\",\n ROUTE_HANDLER_INVALID: \"VF302\",\n DYNAMIC_ROUTE_ERROR: \"VF303\",\n ROUTE_PARAMS_ERROR: \"VF304\",\n API_ROUTE_ERROR: \"VF305\",\n\n MODULE_NOT_FOUND: \"VF400\",\n IMPORT_RESOLUTION_ERROR: \"VF401\",\n CIRCULAR_DEPENDENCY: \"VF402\",\n INVALID_IMPORT: \"VF403\",\n DEPENDENCY_MISSING: \"VF404\",\n VERSION_MISMATCH: \"VF405\",\n\n PORT_IN_USE: \"VF500\",\n SERVER_START_ERROR: \"VF501\",\n HMR_ERROR: \"VF502\",\n CACHE_ERROR: \"VF503\",\n FILE_WATCH_ERROR: \"VF504\",\n REQUEST_ERROR: \"VF505\",\n\n CLIENT_BOUNDARY_VIOLATION: \"VF600\",\n SERVER_ONLY_IN_CLIENT: \"VF601\",\n CLIENT_ONLY_IN_SERVER: \"VF602\",\n INVALID_USE_CLIENT: \"VF603\",\n INVALID_USE_SERVER: \"VF604\",\n RSC_PAYLOAD_ERROR: \"VF605\",\n\n DEV_SERVER_ERROR: \"VF700\",\n FAST_REFRESH_ERROR: \"VF701\",\n ERROR_OVERLAY_ERROR: \"VF702\",\n SOURCE_MAP_ERROR: \"VF703\",\n\n DEPLOYMENT_ERROR: \"VF800\",\n PLATFORM_ERROR: \"VF801\",\n ENV_VAR_MISSING: \"VF802\",\n PRODUCTION_BUILD_REQUIRED: \"VF803\",\n\n UNKNOWN_ERROR: \"VF900\",\n PERMISSION_DENIED: \"VF901\",\n FILE_NOT_FOUND: \"VF902\",\n INVALID_ARGUMENT: \"VF903\",\n TIMEOUT_ERROR: \"VF904\",\n} as const;\n\nexport type ErrorCodeType = typeof ErrorCode[keyof typeof ErrorCode];\n\nexport function getErrorDocsUrl(code: ErrorCodeType): string {\n return `https://veryfront.com/docs/errors/${code}`;\n}\n\nexport function inferErrorCode(error: Error): ErrorCodeType | null {\n const message = error.message.toLowerCase();\n\n if (message.includes(\"config\") && message.includes(\"not found\")) {\n return ErrorCode.CONFIG_NOT_FOUND;\n }\n if (message.includes(\"config\") && message.includes(\"invalid\")) return ErrorCode.CONFIG_INVALID;\n if (message.includes(\"cors\")) return ErrorCode.CORS_CONFIG_INVALID;\n\n if (message.includes(\"route\") && message.includes(\"conflict\")) return ErrorCode.ROUTE_CONFLICT;\n if (message.includes(\"route\") && message.includes(\"invalid\")) return ErrorCode.INVALID_ROUTE_FILE;\n\n if (message.includes(\"client\") && message.includes(\"boundary\")) {\n return ErrorCode.CLIENT_BOUNDARY_VIOLATION;\n }\n if (message.includes(\"server-only\") && message.includes(\"client\")) {\n return ErrorCode.SERVER_ONLY_IN_CLIENT;\n }\n\n if (message.includes(\"module not found\") || message.includes(\"cannot find module\")) {\n return ErrorCode.MODULE_NOT_FOUND;\n }\n if (message.includes(\"import\") || message.includes(\"resolve\")) {\n return ErrorCode.IMPORT_RESOLUTION_ERROR;\n }\n if (message.includes(\"react\") && message.includes(\"not found\")) {\n return ErrorCode.DEPENDENCY_MISSING;\n }\n\n if (message.includes(\"port\") && (message.includes(\"in use\") || message.includes(\"eaddrinuse\"))) {\n return ErrorCode.PORT_IN_USE;\n }\n if (message.includes(\"hydration\")) return ErrorCode.HYDRATION_MISMATCH;\n\n if (message.includes(\"build\") && message.includes(\"fail\")) return ErrorCode.BUILD_FAILED;\n if (message.includes(\"mdx\")) return ErrorCode.MDX_COMPILE_ERROR;\n if (message.includes(\"typescript\")) return ErrorCode.TYPESCRIPT_ERROR;\n\n return null;\n}\n", "import type { ErrorCodeType } from \"../error-codes.ts\";\nimport { getErrorDocsUrl } from \"../error-codes.ts\";\nimport type { ErrorSolution } from \"./types.ts\";\n\nexport function createErrorSolution(\n code: ErrorCodeType,\n config: Omit<ErrorSolution, \"code\" | \"docs\"> & { docs?: string },\n): ErrorSolution {\n return {\n code,\n ...config,\n docs: config.docs ?? getErrorDocsUrl(code),\n };\n}\n\nexport function createSimpleError(\n code: ErrorCodeType,\n title: string,\n message: string,\n steps: string[],\n): ErrorSolution {\n return createErrorSolution(code, { title, message, steps });\n}\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const CONFIG_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.CONFIG_NOT_FOUND]: createErrorSolution(ErrorCode.CONFIG_NOT_FOUND, {\n title: \"Configuration file not found\",\n message: \"Veryfront could not find veryfront.config.js in your project root.\",\n steps: [\n \"Create veryfront.config.js in your project root directory\",\n \"Run 'veryfront init' to generate a default configuration\",\n \"Or copy from an example project\",\n ],\n example: `// veryfront.config.js\nexport default {\n title: \"My App\",\n dev: { port: 3002 }\n}`,\n tips: [\"You can use .ts or .mjs extensions too\", \"Config is optional for simple projects\"],\n }),\n\n [ErrorCode.CONFIG_INVALID]: createErrorSolution(ErrorCode.CONFIG_INVALID, {\n title: \"Invalid configuration\",\n message: \"Your configuration file has invalid values or structure.\",\n steps: [\n \"Check that the config exports a default object\",\n \"Ensure all values are valid JavaScript types\",\n \"Remove any trailing commas\",\n \"Verify property names match the schema\",\n ],\n example: `// \u2713 Valid config\nexport default {\n title: \"My App\",\n dev: {\n port: 3002,\n open: true\n }\n}`,\n }),\n\n [ErrorCode.CONFIG_PARSE_ERROR]: createSimpleError(\n ErrorCode.CONFIG_PARSE_ERROR,\n \"Configuration parse error\",\n \"Failed to parse your configuration file.\",\n [\n \"Check for syntax errors (missing brackets, quotes, etc.)\",\n \"Ensure the file has valid JavaScript/TypeScript syntax\",\n \"Look for the specific parse error in the output above\",\n ],\n ),\n\n [ErrorCode.CONFIG_VALIDATION_ERROR]: createSimpleError(\n ErrorCode.CONFIG_VALIDATION_ERROR,\n \"Configuration validation failed\",\n \"Configuration values do not pass validation.\",\n [\n \"Check that port numbers are between 1-65535\",\n \"Ensure boolean flags are true/false (not strings)\",\n \"Verify URLs are properly formatted\",\n \"Check array/object structures match expected format\",\n ],\n ),\n\n [ErrorCode.CONFIG_TYPE_ERROR]: createSimpleError(\n ErrorCode.CONFIG_TYPE_ERROR,\n \"Configuration type error\",\n \"A configuration value has the wrong type.\",\n [\n \"Check that numbers are not in quotes\",\n 'Ensure booleans are true/false, not \"true\"/\"false\"',\n \"Verify arrays use [] brackets\",\n \"Check objects use {} braces\",\n ],\n ),\n\n [ErrorCode.IMPORT_MAP_INVALID]: createErrorSolution(ErrorCode.IMPORT_MAP_INVALID, {\n title: \"Invalid import map\",\n message: \"The import map in your configuration is invalid.\",\n steps: [\n \"Check import map structure: { imports: {}, scopes: {} }\",\n \"Ensure URLs are valid and accessible\",\n \"Verify package names are correct\",\n ],\n example: `resolve: {\n importMap: {\n imports: {\n \"react\": \"https://esm.sh/react@19\",\n \"@/utils\": \"./src/utils/index.ts\"\n }\n }\n}`,\n }),\n\n [ErrorCode.CORS_CONFIG_INVALID]: createErrorSolution(ErrorCode.CORS_CONFIG_INVALID, {\n title: \"Invalid CORS configuration\",\n message: \"The CORS configuration is invalid.\",\n steps: [\n \"Use true for default CORS settings\",\n \"Or provide an object with origin, methods, headers\",\n \"Ensure origin is a string, not an array\",\n ],\n example: `security: {\n cors: true // or { origin: \"https://example.com\" }\n}`,\n }),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const BUILD_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.BUILD_FAILED]: createErrorSolution(ErrorCode.BUILD_FAILED, {\n title: \"Build failed\",\n message: \"The build process encountered errors.\",\n steps: [\n \"Check the error messages above for specific issues\",\n \"Fix any TypeScript or syntax errors\",\n \"Ensure all imports can be resolved\",\n \"Run 'veryfront doctor' to check your environment\",\n ],\n tips: [\"Try running with --verbose for more details\", \"Check build logs for warnings\"],\n }),\n\n [ErrorCode.BUNDLE_ERROR]: createSimpleError(\n ErrorCode.BUNDLE_ERROR,\n \"Bundle generation failed\",\n \"Failed to generate JavaScript bundles.\",\n [\n \"Check for circular dependencies\",\n \"Ensure all imports are valid\",\n \"Try clearing cache: veryfront clean\",\n ],\n ),\n\n [ErrorCode.TYPESCRIPT_ERROR]: createSimpleError(\n ErrorCode.TYPESCRIPT_ERROR,\n \"TypeScript compilation error\",\n \"TypeScript found errors in your code.\",\n [\n \"Fix the TypeScript errors shown above\",\n \"Check your tsconfig.json configuration\",\n \"Ensure all types are properly imported\",\n ],\n ),\n\n [ErrorCode.MDX_COMPILE_ERROR]: createErrorSolution(ErrorCode.MDX_COMPILE_ERROR, {\n title: \"MDX compilation failed\",\n message: \"Failed to compile MDX file.\",\n steps: [\n \"Check for syntax errors in your MDX file\",\n \"Ensure frontmatter YAML is valid\",\n \"Verify JSX components are properly imported\",\n \"Check for unclosed tags or brackets\",\n ],\n example: `---\ntitle: My Post\n---\n\nimport Button from './components/Button.jsx'\n\n# Hello World\n\n<Button>Click me</Button>`,\n }),\n\n [ErrorCode.ASSET_OPTIMIZATION_ERROR]: createSimpleError(\n ErrorCode.ASSET_OPTIMIZATION_ERROR,\n \"Asset optimization failed\",\n \"Failed to optimize assets (images, CSS, etc.).\",\n [\n \"Check that asset files are valid\",\n \"Ensure file paths are correct\",\n \"Try disabling optimization temporarily\",\n ],\n ),\n\n [ErrorCode.SSG_GENERATION_ERROR]: createSimpleError(\n ErrorCode.SSG_GENERATION_ERROR,\n \"Static site generation failed\",\n \"Failed to generate static pages.\",\n [\n \"Check that all routes are valid\",\n \"Ensure getStaticData functions return correctly\",\n \"Verify no dynamic content requires runtime\",\n ],\n ),\n\n [ErrorCode.SOURCEMAP_ERROR]: createSimpleError(\n ErrorCode.SOURCEMAP_ERROR,\n \"Source map generation failed\",\n \"Failed to generate source maps.\",\n [\n \"Try disabling source maps temporarily\",\n \"Check for very large files that might cause issues\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const RUNTIME_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.HYDRATION_MISMATCH]: createErrorSolution(ErrorCode.HYDRATION_MISMATCH, {\n title: \"Hydration mismatch\",\n message: \"Client-side HTML does not match server-rendered HTML.\",\n steps: [\n \"Check for random values or timestamps in render\",\n \"Ensure Date() calls are consistent\",\n \"Avoid using browser-only APIs during SSR\",\n \"Check for white space or formatting differences\",\n ],\n example: `// \u274C Wrong - random on each render\n<div>{Math.random()}</div>\n\nconst [random, setRandom] = useState(0)\nuseEffect(() => setRandom(Math.random()), [])\n<div>{random}</div>`,\n relatedErrors: [ErrorCode.RENDER_ERROR],\n }),\n\n [ErrorCode.RENDER_ERROR]: createSimpleError(\n ErrorCode.RENDER_ERROR,\n \"Render error\",\n \"Failed to render component.\",\n [\n \"Check the component for errors\",\n \"Ensure all props are valid\",\n \"Look for null/undefined access\",\n \"Check error boundaries\",\n ],\n ),\n\n [ErrorCode.COMPONENT_ERROR]: createSimpleError(\n ErrorCode.COMPONENT_ERROR,\n \"Component error\",\n \"Error in component lifecycle or render.\",\n [\n \"Check component code for errors\",\n \"Ensure hooks follow Rules of Hooks\",\n \"Verify props are passed correctly\",\n ],\n ),\n\n [ErrorCode.LAYOUT_NOT_FOUND]: createErrorSolution(ErrorCode.LAYOUT_NOT_FOUND, {\n title: \"Layout file not found\",\n message: \"Required layout file is missing.\",\n steps: [\n \"Create app/layout.tsx in App Router\",\n \"Or create layouts/default.mdx for Pages Router\",\n \"Check file path and name are correct\",\n ],\n example: `// app/layout.tsx\nexport default function RootLayout({ children }) {\n return (\n <html lang=\"en\">\n <body>{children}</body>\n </html>\n )\n}`,\n }),\n\n [ErrorCode.PAGE_NOT_FOUND]: createSimpleError(\n ErrorCode.PAGE_NOT_FOUND,\n \"Page not found\",\n \"The requested page does not exist.\",\n [\n \"Check that the page file exists\",\n \"Verify file name matches route\",\n \"Ensure file extension is correct (.tsx, .jsx, .mdx)\",\n ],\n ),\n\n [ErrorCode.API_ERROR]: createSimpleError(\n ErrorCode.API_ERROR,\n \"API handler error\",\n \"Error in API route handler.\",\n [\n \"Check API handler code for errors\",\n \"Ensure proper error handling\",\n \"Verify request/response format\",\n ],\n ),\n\n [ErrorCode.MIDDLEWARE_ERROR]: createSimpleError(\n ErrorCode.MIDDLEWARE_ERROR,\n \"Middleware error\",\n \"Error in middleware execution.\",\n [\n \"Check middleware code for errors\",\n \"Ensure middleware returns Response\",\n \"Verify middleware is properly exported\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const ROUTE_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.ROUTE_CONFLICT]: createSimpleError(\n ErrorCode.ROUTE_CONFLICT,\n \"Route conflict\",\n \"Multiple files are trying to handle the same route.\",\n [\n \"Check for duplicate route files\",\n \"Remove conflicting routes\",\n \"Use dynamic routes [id] carefully\",\n ],\n ),\n\n [ErrorCode.INVALID_ROUTE_FILE]: createErrorSolution(ErrorCode.INVALID_ROUTE_FILE, {\n title: \"Invalid route file\",\n message: \"Route file has invalid structure or exports.\",\n steps: [\n \"API routes must export GET, POST, etc. functions\",\n \"Page routes must export default component\",\n \"Check for syntax errors\",\n ],\n example: `// app/api/users/route.ts\nexport async function GET() {\n return Response.json({ users: [] })\n}`,\n }),\n\n [ErrorCode.ROUTE_HANDLER_INVALID]: createSimpleError(\n ErrorCode.ROUTE_HANDLER_INVALID,\n \"Invalid route handler\",\n \"Route handler does not return Response.\",\n [\n \"Ensure handler returns Response object\",\n \"Use Response.json() for JSON responses\",\n \"Check for missing return statement\",\n ],\n ),\n\n [ErrorCode.DYNAMIC_ROUTE_ERROR]: createSimpleError(\n ErrorCode.DYNAMIC_ROUTE_ERROR,\n \"Dynamic route error\",\n \"Error in dynamic route handling.\",\n [\n \"Check [param] syntax is correct\",\n \"Ensure params are accessed properly\",\n \"Verify dynamic segment names\",\n ],\n ),\n\n [ErrorCode.ROUTE_PARAMS_ERROR]: createSimpleError(\n ErrorCode.ROUTE_PARAMS_ERROR,\n \"Route parameters error\",\n \"Error accessing route parameters.\",\n [\n \"Check params object structure\",\n \"Ensure parameter names match route\",\n \"Verify params are strings\",\n ],\n ),\n\n [ErrorCode.API_ROUTE_ERROR]: createSimpleError(\n ErrorCode.API_ROUTE_ERROR,\n \"API route error\",\n \"Error in API route execution.\",\n [\n \"Check API handler code\",\n \"Ensure proper error handling\",\n \"Verify request parsing\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const MODULE_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.MODULE_NOT_FOUND]: createErrorSolution(ErrorCode.MODULE_NOT_FOUND, {\n title: \"Module not found\",\n message: \"Cannot find the imported module.\",\n steps: [\n \"Check that the file path is correct\",\n \"Ensure the module is installed or exists\",\n \"Add missing module to import map\",\n \"Check for typos in import statement\",\n ],\n example: `// Add to veryfront.config.js\nresolve: {\n importMap: {\n imports: {\n \"missing-lib\": \"https://esm.sh/missing-lib@1.0.0\"\n }\n }\n}`,\n }),\n\n [ErrorCode.IMPORT_RESOLUTION_ERROR]: createSimpleError(\n ErrorCode.IMPORT_RESOLUTION_ERROR,\n \"Import resolution failed\",\n \"Failed to resolve import specifier.\",\n [\n \"Check import paths are correct\",\n \"Ensure modules are in import map\",\n \"Verify network connectivity for remote imports\",\n ],\n ),\n\n [ErrorCode.CIRCULAR_DEPENDENCY]: createSimpleError(\n ErrorCode.CIRCULAR_DEPENDENCY,\n \"Circular dependency detected\",\n \"Files are importing each other in a circle.\",\n [\n \"Identify the circular import chain\",\n \"Extract shared code to separate file\",\n \"Use dependency injection or lazy imports\",\n ],\n ),\n\n [ErrorCode.INVALID_IMPORT]: createSimpleError(\n ErrorCode.INVALID_IMPORT,\n \"Invalid import statement\",\n \"Import statement has invalid syntax.\",\n [\n 'Check import syntax: import X from \"y\"',\n \"Ensure quotes are properly closed\",\n \"Verify export exists in target module\",\n ],\n ),\n\n [ErrorCode.DEPENDENCY_MISSING]: createErrorSolution(ErrorCode.DEPENDENCY_MISSING, {\n title: \"Required dependency not found\",\n message: \"A required dependency is missing.\",\n steps: [\n \"Add React to your import map\",\n \"Ensure all peer dependencies are included\",\n \"Run 'veryfront doctor' to verify setup\",\n ],\n example: `// Minimum required imports\nresolve: {\n importMap: {\n imports: {\n \"react\": \"https://esm.sh/react@19\",\n \"react-dom\": \"https://esm.sh/react-dom@19\"\n }\n }\n}`,\n }),\n\n [ErrorCode.VERSION_MISMATCH]: createSimpleError(\n ErrorCode.VERSION_MISMATCH,\n \"Dependency version mismatch\",\n \"Incompatible versions of dependencies detected.\",\n [\n \"Ensure React and React-DOM versions match\",\n \"Check for multiple React instances\",\n \"Update dependencies to compatible versions\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const SERVER_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.PORT_IN_USE]: createErrorSolution(ErrorCode.PORT_IN_USE, {\n title: \"Port already in use\",\n message: \"Another process is using the specified port.\",\n steps: [\n \"Stop the other process: lsof -i :PORT\",\n \"Use a different port: veryfront dev --port 3003\",\n \"Add port to config file\",\n ],\n example: `// veryfront.config.js\ndev: {\n port: 3003\n}`,\n }),\n\n [ErrorCode.SERVER_START_ERROR]: createSimpleError(\n ErrorCode.SERVER_START_ERROR,\n \"Server failed to start\",\n \"Development server could not start.\",\n [\n \"Check for port conflicts\",\n \"Ensure file permissions are correct\",\n \"Verify configuration is valid\",\n ],\n ),\n\n [ErrorCode.HMR_ERROR]: createSimpleError(\n ErrorCode.HMR_ERROR,\n \"Hot Module Replacement error\",\n \"HMR failed to update module.\",\n [\n \"Try refreshing the page\",\n \"Check for syntax errors\",\n \"Restart dev server if persistent\",\n ],\n ),\n\n [ErrorCode.CACHE_ERROR]: createSimpleError(\n ErrorCode.CACHE_ERROR,\n \"Cache operation failed\",\n \"Error reading or writing cache.\",\n [\n \"Clear cache: veryfront clean --cache\",\n \"Check disk space\",\n \"Verify file permissions\",\n ],\n ),\n\n [ErrorCode.FILE_WATCH_ERROR]: createSimpleError(\n ErrorCode.FILE_WATCH_ERROR,\n \"File watching failed\",\n \"Could not watch files for changes.\",\n [\n \"Check system file watch limits\",\n \"Reduce number of watched files\",\n \"Try restarting dev server\",\n ],\n ),\n\n [ErrorCode.REQUEST_ERROR]: createSimpleError(\n ErrorCode.REQUEST_ERROR,\n \"Request handling error\",\n \"Error processing HTTP request.\",\n [\n \"Check request format and headers\",\n \"Verify route handler code\",\n \"Check for middleware errors\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport const RSC_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.CLIENT_BOUNDARY_VIOLATION]: createErrorSolution(\n ErrorCode.CLIENT_BOUNDARY_VIOLATION,\n {\n title: \"Client/Server boundary violation\",\n message: \"Server-only code used in Client Component.\",\n steps: [\n \"Move server-only imports to Server Components\",\n \"Use 'use server' for server actions\",\n \"Split component into server and client parts\",\n ],\n example: `// \u2713 Correct pattern\nimport { db } from './database'\nexport default async function ServerComponent() {\n const data = await db.query('...')\n return <ClientComponent data={data} />\n}\n\n'use client'\nexport default function ClientComponent({ data }) {\n return <div>{data}</div>\n}`,\n },\n ),\n\n [ErrorCode.SERVER_ONLY_IN_CLIENT]: createSimpleError(\n ErrorCode.SERVER_ONLY_IN_CLIENT,\n \"Server-only module in Client Component\",\n \"Cannot use server-only module in client code.\",\n [\n \"Move server logic to Server Component\",\n \"Use API routes for client data fetching\",\n \"Pass data as props from server\",\n ],\n ),\n\n [ErrorCode.CLIENT_ONLY_IN_SERVER]: createSimpleError(\n ErrorCode.CLIENT_ONLY_IN_SERVER,\n \"Client-only code in Server Component\",\n \"Cannot use browser APIs in Server Component.\",\n [\n \"Add 'use client' directive\",\n \"Move client-only code to Client Component\",\n \"Use useEffect for client-side logic\",\n ],\n ),\n\n [ErrorCode.INVALID_USE_CLIENT]: createErrorSolution(ErrorCode.INVALID_USE_CLIENT, {\n title: \"Invalid 'use client' directive\",\n message: \"'use client' directive is not properly placed.\",\n steps: [\n \"Place 'use client' at the very top of file\",\n \"Must be before any imports\",\n 'Use exact string: \"use client\"',\n ],\n example: `'use client' // Must be first line\n\nimport React from 'react'`,\n }),\n\n [ErrorCode.INVALID_USE_SERVER]: createSimpleError(\n ErrorCode.INVALID_USE_SERVER,\n \"Invalid 'use server' directive\",\n \"'use server' directive is not properly placed.\",\n [\n \"Place 'use server' at top of function\",\n \"Or at top of file for all functions\",\n 'Use exact string: \"use server\"',\n ],\n ),\n\n [ErrorCode.RSC_PAYLOAD_ERROR]: createSimpleError(\n ErrorCode.RSC_PAYLOAD_ERROR,\n \"RSC payload error\",\n \"Error serializing Server Component payload.\",\n [\n \"Ensure props are JSON-serializable\",\n \"Avoid passing functions as props\",\n \"Check for circular references\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createSimpleError } from \"./factory.ts\";\n\nexport const DEV_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.DEV_SERVER_ERROR]: createSimpleError(\n ErrorCode.DEV_SERVER_ERROR,\n \"Development server error\",\n \"Error in development server.\",\n [\n \"Check server logs for details\",\n \"Try restarting dev server\",\n \"Clear cache and restart\",\n ],\n ),\n\n [ErrorCode.FAST_REFRESH_ERROR]: createSimpleError(\n ErrorCode.FAST_REFRESH_ERROR,\n \"Fast Refresh error\",\n \"React Fast Refresh failed.\",\n [\n \"Check for syntax errors\",\n \"Ensure components follow Fast Refresh rules\",\n \"Try full page refresh\",\n ],\n ),\n\n [ErrorCode.ERROR_OVERLAY_ERROR]: createSimpleError(\n ErrorCode.ERROR_OVERLAY_ERROR,\n \"Error overlay failed\",\n \"Could not display error overlay.\",\n [\n \"Check browser console for details\",\n \"Try disabling browser extensions\",\n \"Refresh the page\",\n ],\n ),\n\n [ErrorCode.SOURCE_MAP_ERROR]: createSimpleError(\n ErrorCode.SOURCE_MAP_ERROR,\n \"Source map error\",\n \"Error loading or parsing source map.\",\n [\n \"Check that source maps are enabled\",\n \"Try rebuilding the project\",\n \"Check for corrupted build files\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createSimpleError } from \"./factory.ts\";\n\nexport const DEPLOYMENT_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.DEPLOYMENT_ERROR]: createSimpleError(\n ErrorCode.DEPLOYMENT_ERROR,\n \"Deployment failed\",\n \"Failed to deploy application.\",\n [\n \"Check deployment logs for details\",\n \"Verify platform credentials\",\n \"Ensure build succeeded first\",\n ],\n ),\n\n [ErrorCode.PLATFORM_ERROR]: createSimpleError(\n ErrorCode.PLATFORM_ERROR,\n \"Platform error\",\n \"Deployment platform returned an error.\",\n [\n \"Check platform status page\",\n \"Verify API keys and credentials\",\n \"Try deploying again\",\n ],\n ),\n\n [ErrorCode.ENV_VAR_MISSING]: createSimpleError(\n ErrorCode.ENV_VAR_MISSING,\n \"Environment variable missing\",\n \"Required environment variable is not set.\",\n [\n \"Add variable to .env file\",\n \"Set variable in deployment platform\",\n \"Check variable name is correct\",\n ],\n ),\n\n [ErrorCode.PRODUCTION_BUILD_REQUIRED]: createSimpleError(\n ErrorCode.PRODUCTION_BUILD_REQUIRED,\n \"Production build required\",\n \"Must build project before deploying.\",\n [\n \"Run 'veryfront build' first\",\n \"Check that dist/ directory exists\",\n \"Verify build completed successfully\",\n ],\n ),\n};\n", "import { ErrorCode } from \"../error-codes.ts\";\nimport type { PartialErrorCatalog } from \"./types.ts\";\nimport { createSimpleError } from \"./factory.ts\";\n\nexport const GENERAL_ERROR_CATALOG: PartialErrorCatalog = {\n [ErrorCode.UNKNOWN_ERROR]: createSimpleError(\n ErrorCode.UNKNOWN_ERROR,\n \"Unknown error\",\n \"An unexpected error occurred.\",\n [\n \"Check error details above\",\n \"Run 'veryfront doctor' to diagnose\",\n \"Try restarting the operation\",\n \"Check GitHub issues for similar problems\",\n ],\n ),\n\n [ErrorCode.PERMISSION_DENIED]: createSimpleError(\n ErrorCode.PERMISSION_DENIED,\n \"Permission denied\",\n \"Insufficient permissions to perform operation.\",\n [\n \"Check file/directory permissions\",\n \"Run with appropriate permissions\",\n \"Verify user has write access\",\n ],\n ),\n\n [ErrorCode.FILE_NOT_FOUND]: createSimpleError(\n ErrorCode.FILE_NOT_FOUND,\n \"File not found\",\n \"Required file does not exist.\",\n [\n \"Check that file path is correct\",\n \"Verify file exists in project\",\n \"Check for typos in file name\",\n ],\n ),\n\n [ErrorCode.INVALID_ARGUMENT]: createSimpleError(\n ErrorCode.INVALID_ARGUMENT,\n \"Invalid argument\",\n \"Command received invalid argument.\",\n [\n \"Check command syntax\",\n \"Verify argument values\",\n \"Run 'veryfront help <command>' for usage\",\n ],\n ),\n\n [ErrorCode.TIMEOUT_ERROR]: createSimpleError(\n ErrorCode.TIMEOUT_ERROR,\n \"Operation timed out\",\n \"Operation took too long to complete.\",\n [\n \"Check network connectivity\",\n \"Try increasing timeout if available\",\n \"Check for very large files\",\n ],\n ),\n};\n", "import type { ErrorCodeType } from \"../error-codes.ts\";\nimport type { ErrorCatalog, ErrorSolution } from \"./types.ts\";\n\nimport { CONFIG_ERROR_CATALOG } from \"./config-errors.ts\";\nimport { BUILD_ERROR_CATALOG } from \"./build-errors.ts\";\nimport { RUNTIME_ERROR_CATALOG } from \"./runtime-errors.ts\";\nimport { ROUTE_ERROR_CATALOG } from \"./route-errors.ts\";\nimport { MODULE_ERROR_CATALOG } from \"./module-errors.ts\";\nimport { SERVER_ERROR_CATALOG } from \"./server-errors.ts\";\nimport { RSC_ERROR_CATALOG } from \"./rsc-errors.ts\";\nimport { DEV_ERROR_CATALOG } from \"./dev-errors.ts\";\nimport { DEPLOYMENT_ERROR_CATALOG } from \"./deployment-errors.ts\";\nimport { GENERAL_ERROR_CATALOG } from \"./general-errors.ts\";\n\nexport const ERROR_CATALOG = {\n ...CONFIG_ERROR_CATALOG,\n ...BUILD_ERROR_CATALOG,\n ...RUNTIME_ERROR_CATALOG,\n ...ROUTE_ERROR_CATALOG,\n ...MODULE_ERROR_CATALOG,\n ...SERVER_ERROR_CATALOG,\n ...RSC_ERROR_CATALOG,\n ...DEV_ERROR_CATALOG,\n ...DEPLOYMENT_ERROR_CATALOG,\n ...GENERAL_ERROR_CATALOG,\n} as ErrorCatalog;\n\nexport function getErrorSolution(code: ErrorCodeType): ErrorSolution | null {\n return ERROR_CATALOG[code] || null;\n}\n\nexport function searchErrors(query: string): ErrorSolution[] {\n const lowerQuery = query.toLowerCase();\n return Object.values(ERROR_CATALOG).filter(\n (error) =>\n error.title.toLowerCase().includes(lowerQuery) ||\n error.message.toLowerCase().includes(lowerQuery) ||\n error.steps?.some((step) => step.toLowerCase().includes(lowerQuery)),\n );\n}\n\nexport type { ErrorCatalog, ErrorSolution, PartialErrorCatalog } from \"./types.ts\";\n\nexport { createErrorSolution, createSimpleError } from \"./factory.ts\";\n\nexport {\n BUILD_ERROR_CATALOG,\n CONFIG_ERROR_CATALOG,\n DEPLOYMENT_ERROR_CATALOG,\n DEV_ERROR_CATALOG,\n GENERAL_ERROR_CATALOG,\n MODULE_ERROR_CATALOG,\n ROUTE_ERROR_CATALOG,\n RSC_ERROR_CATALOG,\n RUNTIME_ERROR_CATALOG,\n SERVER_ERROR_CATALOG,\n};\n", "export interface ErrorSolution {\n message: string;\n steps?: string[];\n example?: string;\n docs?: string;\n}\n\nexport const ERROR_SOLUTIONS: Record<string, ErrorSolution> = {\n \"missing-config\": {\n message: \"No veryfront.config.js found in project directory\",\n steps: [\n \"Create a veryfront.config.js file in your project root\",\n \"Run 'veryfront init' to generate a default config\",\n \"Or create one manually with minimal configuration\",\n ],\n example: `export default {\n title: \"My App\",\n dev: { port: 3002 }\n};`,\n },\n\n \"invalid-config\": {\n message: \"Invalid configuration in veryfront.config.js\",\n steps: [\n \"Check that your config exports a default object\",\n \"Ensure all values are valid JavaScript\",\n \"Remove any trailing commas in objects\",\n ],\n example: `export default {\n title: \"My App\", // \u2713 Valid string\n dev: {\n port: 3002, // \u2713 Valid number\n open: true // \u2713 No trailing comma\n }\n};`,\n },\n\n \"invalid-route\": {\n message: \"Invalid route file format\",\n steps: [\n \"Route files must export handler functions (GET, POST, etc.)\",\n \"Each handler must return a Response object\",\n \"Check for syntax errors in your route file\",\n ],\n example: `// app/api/users/route.ts\nexport async function GET() {\n return Response.json({ users: [] });\n}\n\nexport async function POST(request: Request) {\n const body = await request.json();\n return Response.json({ created: true });\n}`,\n },\n\n \"client-boundary\": {\n message: \"Server-only code used in Client Component\",\n steps: [\n \"Move server-only imports to Server Components\",\n \"Use 'use server' directive for server actions\",\n \"Split component into server and client parts\",\n ],\n example: `// \u274C Wrong - database import in client component\n'use client';\nimport { db } from './database'; // Error!\n\nimport { db } from './database';\nexport default async function ServerComponent() {\n const data = await db.query('...');\n return <ClientComponent data={data} />;\n}\n\n'use client';\nexport default function ClientComponent({ data }) {\n}`,\n docs: \"https://github.com/veryfront/veryfront/docs/rsc-boundaries\",\n },\n\n \"import-not-found\": {\n message: \"Failed to resolve import\",\n steps: [\n \"Check that the file path is correct\",\n \"Ensure the module is installed or available\",\n \"For remote imports, check network connectivity\",\n \"Add missing imports to veryfront.config.js importMap\",\n ],\n example: `// veryfront.config.js\nresolve: {\n importMap: {\n imports: {\n \"my-lib\": \"https://esm.sh/my-lib@1.0.0\",\n \"@/utils\": \"./src/utils/index.ts\"\n }\n }\n}`,\n },\n\n \"port-in-use\": {\n message: \"Port is already in use\",\n steps: [\n \"Stop any other servers running on this port\",\n \"Use a different port with --port flag\",\n \"Check for zombie processes: lsof -i :PORT\",\n ],\n example: `veryfront dev --port 3003`,\n },\n\n \"build-failed\": {\n message: \"Build failed with errors\",\n steps: [\n \"Check the error messages above for details\",\n \"Fix any TypeScript or syntax errors\",\n \"Ensure all imports can be resolved\",\n \"Run 'veryfront doctor' to check system\",\n ],\n },\n\n \"missing-deps\": {\n message: \"Required dependencies not found\",\n steps: [\n \"Check that React is in your import map\",\n \"Ensure all peer dependencies are included\",\n \"Run 'veryfront doctor' to verify setup\",\n ],\n example: `// Minimum required imports\n\"react\": \"https://esm.sh/react@19.1.1\",\n\"react-dom\": \"https://esm.sh/react-dom@19.1.1\"`,\n },\n};\n", "/**\n * Pure ANSI escape code colors for npm/Node.js builds\n *\n * This file provides a zero-dependency color implementation using ANSI codes.\n * It's used in npm builds where std/fmt/colors.ts isn't available.\n */\n\nimport type { ColorFunction, ConsoleStyler } from \"./types.ts\";\n\nconst ansi = (open: number, close: number): ColorFunction => (text: string) =>\n `\\x1b[${open}m${text}\\x1b[${close}m`;\n\nexport const red: ColorFunction = ansi(31, 39);\nexport const green: ColorFunction = ansi(32, 39);\nexport const yellow: ColorFunction = ansi(33, 39);\nexport const blue: ColorFunction = ansi(34, 39);\nexport const magenta: ColorFunction = ansi(35, 39);\nexport const cyan: ColorFunction = ansi(36, 39);\nexport const white: ColorFunction = ansi(37, 39);\nexport const gray: ColorFunction = ansi(90, 39);\nexport const bold: ColorFunction = ansi(1, 22);\nexport const dim: ColorFunction = ansi(2, 22);\nexport const italic: ColorFunction = ansi(3, 23);\nexport const underline: ColorFunction = ansi(4, 24);\nexport const strikethrough: ColorFunction = ansi(9, 29);\nexport const reset: ColorFunction = (text: string) => `\\x1b[0m${text}`;\n\nexport const colors: ConsoleStyler = {\n red,\n green,\n yellow,\n blue,\n cyan,\n magenta,\n white,\n gray,\n bold,\n dim,\n italic,\n underline,\n strikethrough,\n reset,\n};\n", "/**\n * Deno console styling implementation using std/fmt/colors.ts\n */\n\nimport {\n blue,\n bold,\n cyan,\n dim,\n gray,\n green,\n italic,\n magenta,\n red,\n reset,\n strikethrough,\n underline,\n white,\n yellow,\n} from \"std/fmt/colors.ts\";\n\nimport type { ConsoleStyler } from \"./types.ts\";\n\nexport const colors: ConsoleStyler = {\n red,\n green,\n yellow,\n blue,\n cyan,\n magenta,\n white,\n gray,\n bold,\n dim,\n italic,\n underline,\n strikethrough,\n reset,\n};\n\nexport {\n blue,\n bold,\n cyan,\n dim,\n gray,\n green,\n italic,\n magenta,\n red,\n reset,\n strikethrough,\n underline,\n white,\n yellow,\n};\n", "/**\n * Node.js console styling implementation using picocolors\n */\n\nimport type { ConsoleStyler } from \"./types.ts\";\n\n// Lazy-loaded picocolors instance\ntype PicoColors = {\n red: (s: string) => string;\n green: (s: string) => string;\n yellow: (s: string) => string;\n blue: (s: string) => string;\n cyan: (s: string) => string;\n magenta: (s: string) => string;\n white: (s: string) => string;\n gray: (s: string) => string;\n bold: (s: string) => string;\n dim: (s: string) => string;\n italic: (s: string) => string;\n underline: (s: string) => string;\n strikethrough: (s: string) => string;\n reset: (s: string) => string;\n};\n\nlet pc: PicoColors | null = null;\n\nasync function ensurePc(): Promise<PicoColors> {\n if (pc) return pc;\n // Construct module name dynamically to prevent Deno static analyzer\n // from trying to resolve this npm package during lint/check\n const picocolorsModule = [\"npm:\", \"picocolors\"].join(\"\");\n const mod = await import(picocolorsModule);\n pc = mod.default as PicoColors;\n return pc;\n}\n\n// Lazy wrapper that falls back to identity if not loaded\nconst lazyColor = (fn: keyof PicoColors) => (s: string) => pc?.[fn]?.(s) ?? s;\n\nexport const colors: ConsoleStyler = {\n red: lazyColor(\"red\"),\n green: lazyColor(\"green\"),\n yellow: lazyColor(\"yellow\"),\n blue: lazyColor(\"blue\"),\n cyan: lazyColor(\"cyan\"),\n magenta: lazyColor(\"magenta\"),\n white: lazyColor(\"white\"),\n gray: lazyColor(\"gray\"),\n bold: lazyColor(\"bold\"),\n dim: lazyColor(\"dim\"),\n italic: lazyColor(\"italic\"),\n underline: lazyColor(\"underline\"),\n strikethrough: lazyColor(\"strikethrough\"),\n reset: lazyColor(\"reset\"),\n};\n\nexport const red = lazyColor(\"red\");\nexport const green = lazyColor(\"green\");\nexport const yellow = lazyColor(\"yellow\");\nexport const blue = lazyColor(\"blue\");\nexport const cyan = lazyColor(\"cyan\");\nexport const magenta = lazyColor(\"magenta\");\nexport const white = lazyColor(\"white\");\nexport const gray = lazyColor(\"gray\");\nexport const bold = lazyColor(\"bold\");\nexport const dim = lazyColor(\"dim\");\nexport const italic = lazyColor(\"italic\");\nexport const underline = lazyColor(\"underline\");\nexport const strikethrough = lazyColor(\"strikethrough\");\nexport const reset = lazyColor(\"reset\");\n\n// Initialize picocolors on first use\nexport async function initColors(): Promise<void> {\n await ensurePc();\n}\n", "/**\n * Cross-runtime console styling\n *\n * Provides terminal colors that work in Deno, Node.js, and Bun.\n * Falls back to no-op functions in environments without terminal support.\n */\n\nimport { isDeno } from \"../runtime.ts\";\nimport type { ColorFunction, ConsoleStyler } from \"./types.ts\";\n\nexport type { ColorFunction, ConsoleStyler } from \"./types.ts\";\n\nconst noOp: ColorFunction = (text: string) => text;\n\nconst fallbackColors: ConsoleStyler = {\n red: noOp,\n green: noOp,\n yellow: noOp,\n blue: noOp,\n cyan: noOp,\n magenta: noOp,\n white: noOp,\n gray: noOp,\n bold: noOp,\n dim: noOp,\n italic: noOp,\n underline: noOp,\n strikethrough: noOp,\n reset: noOp,\n};\n\nlet _colors: ConsoleStyler | null = null;\n\nasync function loadColors(): Promise<ConsoleStyler> {\n if (_colors) return _colors;\n\n try {\n if (isDeno) {\n const mod = await import(\"./deno.ts\");\n _colors = mod.colors;\n } else {\n const mod = await import(\"./node.ts\");\n _colors = mod.colors;\n }\n } catch {\n _colors = fallbackColors;\n }\n\n return _colors;\n}\n\nconst colorsPromise = loadColors();\n\nfunction getColors(): ConsoleStyler {\n return _colors ?? fallbackColors;\n}\n\nexport const red: ColorFunction = (text) => getColors().red(text);\nexport const green: ColorFunction = (text) => getColors().green(text);\nexport const yellow: ColorFunction = (text) => getColors().yellow(text);\nexport const blue: ColorFunction = (text) => getColors().blue(text);\nexport const cyan: ColorFunction = (text) => getColors().cyan(text);\nexport const magenta: ColorFunction = (text) => getColors().magenta(text);\nexport const white: ColorFunction = (text) => getColors().white(text);\nexport const gray: ColorFunction = (text) => getColors().gray(text);\nexport const bold: ColorFunction = (text) => getColors().bold(text);\nexport const dim: ColorFunction = (text) => getColors().dim(text);\nexport const italic: ColorFunction = (text) => getColors().italic(text);\nexport const underline: ColorFunction = (text) => getColors().underline(text);\nexport const strikethrough: ColorFunction = (text) => getColors().strikethrough(text);\nexport const reset: ColorFunction = (text) => getColors().reset(text);\n\nexport const colors = {\n red,\n green,\n yellow,\n blue,\n cyan,\n magenta,\n white,\n gray,\n bold,\n dim,\n italic,\n underline,\n strikethrough,\n reset,\n} satisfies ConsoleStyler;\n\nexport { colorsPromise };\n", "export function identifyError(error: Error): string {\n const message = error.message.toLowerCase();\n\n if (message.includes(\"veryfront.config\") && message.includes(\"not found\")) {\n return \"missing-config\";\n }\n if (message.includes(\"config\") && (message.includes(\"invalid\") || message.includes(\"parse\"))) {\n return \"invalid-config\";\n }\n\n if (message.includes(\"route\") && (message.includes(\"invalid\") || message.includes(\"export\"))) {\n return \"invalid-route\";\n }\n\n if (message.includes(\"client\") && (message.includes(\"boundary\") || message.includes(\"server\"))) {\n return \"client-boundary\";\n }\n\n if (\n message.includes(\"import\") ||\n message.includes(\"module not found\") ||\n message.includes(\"resolve\")\n ) {\n return \"import-not-found\";\n }\n\n if (message.includes(\"port\") && (message.includes(\"in use\") || message.includes(\"eaddrinuse\"))) {\n return \"port-in-use\";\n }\n\n if (message.includes(\"build\") && message.includes(\"fail\")) {\n return \"build-failed\";\n }\n\n if (message.includes(\"react\") && message.includes(\"not found\")) {\n return \"missing-deps\";\n }\n\n return \"unknown\";\n}\n", "import { bold, cyan, dim, red, yellow } from \"@veryfront/compat/console\";\nimport { ERROR_SOLUTIONS } from \"./error-catalog.ts\";\nimport { identifyError } from \"./error-identifier.ts\";\n\nexport function formatUserError(error: Error): string {\n const output: string[] = [];\n\n output.push(\"\");\n output.push(red(bold(\"\u2716 Error: \")) + bold(error.message));\n output.push(\"\");\n\n const errorKey = identifyError(error);\n const solution = ERROR_SOLUTIONS[errorKey];\n\n if (solution) {\n if (solution.message) {\n output.push(yellow(\"Problem: \") + solution.message);\n output.push(\"\");\n }\n\n if (solution.steps && solution.steps.length > 0) {\n output.push(cyan(\"How to fix:\"));\n solution.steps.forEach((step, i) => {\n output.push(` ${dim(`${i + 1}.`)} ${step}`);\n });\n output.push(\"\");\n }\n\n if (solution.example) {\n output.push(cyan(\"Example:\"));\n output.push(\"\");\n solution.example.split(\"\\n\").forEach((line) => {\n output.push(` ${dim(line)}`);\n });\n output.push(\"\");\n }\n\n if (solution.docs) {\n output.push(dim(\"Learn more: \") + cyan(solution.docs));\n output.push(\"\");\n }\n } else {\n if (error.stack) {\n output.push(yellow(\"Stack trace:\"));\n const stackLines = error.stack.split(\"\\n\").slice(1, 4);\n stackLines.forEach((line) => {\n output.push(dim(` ${line.trim()}`));\n });\n output.push(\"\");\n }\n\n output.push(dim(\"For help, run: \") + cyan(\"veryfront doctor\"));\n output.push(\"\");\n }\n\n return output.join(\"\\n\");\n}\n", "import { red } from \"@veryfront/compat/console\";\nimport { exit } from \"@veryfront/platform/compat/process.ts\";\nimport { cliLogger } from \"@veryfront/utils/logger/logger.ts\";\nimport { formatUserError } from \"./error-formatter.ts\";\n\nexport function wrapErrorHandler<TArgs extends unknown[], TReturn>(\n fn: (...args: TArgs) => Promise<TReturn>,\n): (...args: TArgs) => Promise<TReturn> {\n return async (...args: TArgs): Promise<TReturn> => {\n try {\n return await fn(...args);\n } catch (error) {\n if (error instanceof Error) {\n cliLogger.error(formatUserError(error));\n } else {\n cliLogger.error(red(\"\u2716 Unknown error:\"), error);\n }\n if (import.meta.main) {\n exit(1);\n }\n throw error;\n }\n };\n}\n", "export { ERROR_SOLUTIONS, type ErrorSolution } from \"./error-catalog.ts\";\nexport { formatUserError } from \"./error-formatter.ts\";\nexport { identifyError } from \"./error-identifier.ts\";\nexport { wrapErrorHandler } from \"./error-wrapper.ts\";\n", "export { ErrorCode, VeryfrontError } from \"./types.ts\";\n\nexport {\n AgentError,\n AgentIntentError,\n AgentNotFoundError,\n AgentTimeoutError,\n OrchestrationError,\n} from \"./agent-errors.ts\";\n\nexport { BuildError, CompilationError } from \"./build-errors.ts\";\n\nexport { RenderError, RuntimeError } from \"./runtime-errors.ts\";\n\nexport {\n ConfigError,\n FileSystemError,\n NetworkError,\n NotSupportedError,\n PermissionError,\n} from \"./system-errors.ts\";\n\nexport {\n handleError,\n handleErrorWithFallback,\n handleErrorWithFallbackSync,\n logAndThrow,\n retryWithBackoff,\n wrapError,\n} from \"./error-handlers.ts\";\n\nexport {\n createErrorScope,\n safeFileRead,\n safeFileStat,\n safeReadDir,\n withErrorContext,\n withErrorContextSync,\n} from \"./error-context.ts\";\n\nexport type { ErrorContext, ErrorHandlingOptions, LogLevel } from \"./error-context.ts\";\n\nexport {\n BUILD_ERROR_CATALOG,\n CONFIG_ERROR_CATALOG,\n createErrorSolution,\n createSimpleError,\n DEPLOYMENT_ERROR_CATALOG,\n DEV_ERROR_CATALOG,\n ERROR_CATALOG,\n GENERAL_ERROR_CATALOG,\n getErrorSolution,\n MODULE_ERROR_CATALOG,\n ROUTE_ERROR_CATALOG,\n RSC_ERROR_CATALOG,\n RUNTIME_ERROR_CATALOG,\n searchErrors,\n SERVER_ERROR_CATALOG,\n} from \"./catalog/index.ts\";\n\nexport type { ErrorCatalog, ErrorSolution, PartialErrorCatalog } from \"./catalog/index.ts\";\n\nexport {\n ERROR_SOLUTIONS,\n formatUserError,\n identifyError,\n wrapErrorHandler,\n} from \"./user-friendly/index.ts\";\n\nexport type { ErrorSolution as UserFriendlyErrorSolution } from \"./user-friendly/index.ts\";\n\nexport type { ErrorCodeType } from \"./error-codes.ts\";\n", "import { FileSystemError } from \"@veryfront/errors\";\nimport { createError, toError } from \"../../../core/errors/veryfront-error.ts\";\nimport type {\n DirEntry,\n FileChangeEvent,\n FileChangeKind,\n FileInfo,\n FileSystemAdapter,\n FileWatcher,\n WatchOptions,\n} from \"../base.ts\";\n\nimport { createFileWatcher, createWatcherIterator, enqueueWatchEvent } from \"../shared-watcher.ts\";\nimport type { BunFSWatcher, BunWatchEvent } from \"./types.ts\";\nimport { serverLogger } from \"@veryfront/utils\";\n\nexport class BunFileSystemAdapter implements FileSystemAdapter {\n async readFile(path: string): Promise<string> {\n const file = Bun.file(path);\n return await file.text();\n }\n\n async readFileBytes(path: string): Promise<Uint8Array> {\n const file = Bun.file(path);\n // deno-lint-ignore no-explicit-any\n const buffer = await (file as any).arrayBuffer();\n return new Uint8Array(buffer);\n }\n\n async writeFile(path: string, content: string): Promise<void> {\n await Bun.write(path, content);\n }\n\n async exists(path: string): Promise<boolean> {\n const file = Bun.file(path);\n return await file.exists();\n }\n\n async *readDir(path: string): AsyncIterable<DirEntry> {\n const { readdir } = await import(\"node:fs/promises\");\n const entries = await readdir(path, { withFileTypes: true });\n\n for (const entry of entries) {\n yield {\n name: entry.name,\n isFile: entry.isFile(),\n isDirectory: entry.isDirectory(),\n isSymlink: entry.isSymbolicLink(),\n };\n }\n }\n\n async stat(path: string): Promise<FileInfo> {\n const file = Bun.file(path);\n const exists = await file.exists();\n if (!exists) {\n throw new FileSystemError(`File not found: ${path}`, { path });\n }\n\n const { stat } = await import(\"node:fs/promises\");\n const stats = await stat(path);\n\n return {\n size: file.size,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n isSymlink: stats.isSymbolicLink(),\n mtime: stats.mtime,\n };\n }\n\n async mkdir(path: string, options?: { recursive?: boolean }): Promise<void> {\n const { mkdir } = await import(\"node:fs/promises\");\n await mkdir(path, options);\n }\n\n async remove(path: string, options?: { recursive?: boolean }): Promise<void> {\n const { rm } = await import(\"node:fs/promises\");\n await rm(path, { recursive: options?.recursive, force: true });\n }\n\n async makeTempDir(prefix: string): Promise<string> {\n const { mkdtemp } = await import(\"node:fs/promises\");\n const { join } = await import(\"node:path\");\n const { tmpdir } = await import(\"node:os\");\n return await mkdtemp(join(tmpdir(), prefix));\n }\n\n watch(paths: string | string[], options?: WatchOptions): FileWatcher {\n const pathArray = Array.isArray(paths) ? paths : [paths];\n const recursive = options?.recursive ?? true;\n const signal = options?.signal;\n\n let closed = false;\n const watchers: Array<BunFSWatcher | import(\"node:fs\").FSWatcher> = [];\n const eventQueue: FileChangeEvent[] = [];\n let resolver: ((value: IteratorResult<FileChangeEvent>) => void) | null = null;\n\n const mapBunEventKind = (type: string): FileChangeKind => {\n switch (type) {\n case \"create\":\n return \"create\";\n case \"change\":\n return \"modify\";\n case \"delete\":\n return \"delete\";\n default:\n return \"any\";\n }\n };\n\n const setupWatcher = (path: string) => {\n try {\n if (typeof Bun !== \"undefined\" && Bun.watch) {\n const watcher = Bun.watch(path, {\n recursive,\n onChange: (event: BunWatchEvent) => {\n if (closed || signal?.aborted) return;\n\n enqueueWatchEvent(\n { kind: mapBunEventKind(event.type), paths: [event.path] },\n eventQueue,\n () => resolver,\n (r) => {\n resolver = r;\n },\n );\n },\n });\n watchers.push(watcher);\n } else {\n throw toError(createError({\n type: \"not_supported\",\n message: \"Bun.watch is not available in this environment\",\n feature: \"Bun.watch\",\n }));\n }\n } catch (error) {\n serverLogger.error(`Failed to watch ${path}:`, error);\n }\n };\n\n Promise.all(pathArray.map(setupWatcher)).catch((error) => {\n serverLogger.error(\"Failed to setup Bun file watchers:\", error);\n });\n\n const iterator = createWatcherIterator(\n eventQueue,\n () => resolver,\n (r) => {\n resolver = r;\n },\n () => closed,\n () => signal?.aborted ?? false,\n );\n\n const cleanup = () => {\n closed = true;\n watchers.forEach((watcher) => {\n try {\n if (\"stop\" in watcher && typeof watcher.stop === \"function\") {\n watcher.stop();\n } else if (\"close\" in watcher && typeof watcher.close === \"function\") {\n watcher.close();\n }\n } catch (error) {\n serverLogger.debug(\"Error closing Bun file watcher during cleanup:\", error);\n }\n });\n if (resolver) {\n resolver({ done: true, value: undefined });\n resolver = null;\n }\n };\n\n if (signal) {\n signal.addEventListener(\"abort\", cleanup);\n }\n\n return createFileWatcher(iterator, cleanup);\n }\n}\n", "import type { EnvironmentAdapter } from \"../base.ts\";\n\nexport class BunEnvironmentAdapter implements EnvironmentAdapter {\n get(key: string): string | undefined {\n return Bun.env[key];\n }\n\n set(key: string, value: string): void {\n Bun.env[key] = value;\n }\n\n toObject(): Record<string, string> {\n return { ...Bun.env };\n }\n}\n", "import type { ServerAdapter, WebSocketUpgrade } from \"../base.ts\";\nimport { createError, toError } from \"../../../core/errors/veryfront-error.ts\";\n\nexport class BunServerAdapter implements ServerAdapter {\n upgradeWebSocket(request: Request): WebSocketUpgrade {\n const success = Bun.upgrade(request);\n\n if (!success) {\n throw toError(createError({\n type: \"network\",\n message: \"Failed to upgrade WebSocket connection\",\n }));\n }\n\n const socket = new BunWebSocket();\n const response = new Response(null, {\n status: 101,\n statusText: \"Switching Protocols\",\n });\n\n return { socket: socket as unknown as WebSocket, response };\n }\n}\n\nexport class BunWebSocket {\n public readyState = 1;\n\n public onopen: ((event: Event) => void) | null = null;\n public onclose: ((event: Event) => void) | null = null;\n public onerror: ((event: Event) => void) | null = null;\n public onmessage: ((event: MessageEvent) => void) | null = null;\n\n static readonly CONNECTING = 0;\n static readonly OPEN = 1;\n static readonly CLOSING = 2;\n static readonly CLOSED = 3;\n\n send(_data: string | ArrayBuffer) {\n throw toError(createError({\n type: \"network\",\n message: \"WebSocket send called on placeholder - use Bun.serve websocket handlers\",\n }));\n }\n\n close(_code?: number, _reason?: string) {\n this.readyState = 3;\n }\n}\n", "import type { ServeOptions, Server } from \"../base.ts\";\nimport type { BunServer as BunServerType } from \"./types.ts\";\nimport { DEFAULT_PORT } from \"@veryfront/config\";\nimport { serverLogger } from \"@veryfront/utils\";\n\nexport class BunServer implements Server {\n constructor(\n private server: BunServerType,\n private hostname: string,\n private port: number,\n ) {}\n\n stop(): Promise<void> {\n this.server.stop();\n return Promise.resolve();\n }\n\n get addr() {\n return { hostname: this.hostname, port: this.port };\n }\n}\n\nexport function createBunServer(\n handler: (request: Request) => Promise<Response> | Response,\n options: ServeOptions = {},\n): Promise<Server> {\n const { port = DEFAULT_PORT, hostname = \"localhost\", onListen } = options;\n\n const server = Bun.serve({\n port,\n hostname,\n async fetch(request: Request) {\n try {\n return await handler(request);\n } catch (error) {\n serverLogger.error(\"Request handler error:\", error);\n return new Response(\"Internal Server Error\", { status: 500 });\n }\n },\n });\n\n onListen?.({ hostname, port });\n\n return Promise.resolve(new BunServer(server, hostname, port));\n}\n", "import type {\n RuntimeAdapter,\n RuntimeCapabilities,\n RuntimeFeatures,\n ServeOptions,\n Server,\n} from \"../base.ts\";\nimport { BunFileSystemAdapter } from \"./filesystem-adapter.ts\";\nimport { BunEnvironmentAdapter } from \"./environment-adapter.ts\";\nimport { BunServerAdapter } from \"./websocket-adapter.ts\";\nimport { createBunServer } from \"./http-server.ts\";\n\nexport class BunAdapter implements RuntimeAdapter {\n readonly id = \"bun\" as const;\n readonly name = \"bun\";\n /** @deprecated Use `id` instead */\n readonly platform = \"bun\" as const;\n\n fs = new BunFileSystemAdapter();\n env = new BunEnvironmentAdapter();\n server = new BunServerAdapter();\n\n readonly capabilities: RuntimeCapabilities = {\n typescript: true,\n jsx: true,\n http2: false, // Bun's HTTP/2 support is experimental\n websocket: true,\n workers: true,\n fileWatching: true,\n shell: true,\n kvStore: false,\n writableFs: true,\n };\n\n /** @deprecated Use `capabilities` instead */\n readonly features: RuntimeFeatures = {\n websocket: true,\n http2: false,\n workers: true,\n jsx: true,\n typescript: true,\n };\n\n serve(\n handler: (request: Request) => Promise<Response> | Response,\n options: ServeOptions = {},\n ): Promise<Server> {\n return createBunServer(handler, options);\n }\n}\n\nexport const bunAdapter = new BunAdapter();\n", "export { BunAdapter, bunAdapter } from \"./adapter.ts\";\nexport { BunFileSystemAdapter } from \"./filesystem-adapter.ts\";\nexport { BunEnvironmentAdapter } from \"./environment-adapter.ts\";\nexport { BunServerAdapter, BunWebSocket } from \"./websocket-adapter.ts\";\nexport { BunServer, createBunServer } from \"./http-server.ts\";\nexport type {\n BunFile,\n BunFSWatcher,\n BunNamespace,\n BunServeOptions,\n BunServer as BunServerType,\n BunWatchEvent,\n BunWatchOptions,\n} from \"./types.ts\";\n", "export {\n BunAdapter,\n bunAdapter,\n BunEnvironmentAdapter,\n BunFileSystemAdapter,\n BunServer,\n BunServerAdapter,\n BunWebSocket,\n createBunServer,\n} from \"./bun/index.ts\";\n\nexport type {\n BunFile,\n BunFSWatcher,\n BunNamespace,\n BunServeOptions,\n BunServerType,\n BunWatchEvent,\n BunWatchOptions,\n} from \"./bun/index.ts\";\n", "import { createError, toError } from \"../../core/errors/veryfront-error.ts\";\nimport type { RuntimeAdapter } from \"./base.ts\";\n\nexport interface MockRuntimeAdapter extends RuntimeAdapter {\n fs: RuntimeAdapter[\"fs\"] & {\n files: Map<string, string>;\n directories: Set<string>;\n };\n}\n\n/**\n * Mock RuntimeAdapter for testing\n *\n * Provides an in-memory filesystem and environment for unit testing.\n * This adapter is useful for testing code that depends on the filesystem\n * without requiring actual file I/O.\n *\n * @example\n * ```typescript\n * const adapter = createMockAdapter();\n * adapter.fs.files.set(\"/project/pages/index.tsx\", \"export default () => <div>Home</div>\");\n * const content = await adapter.fs.readFile(\"/project/pages/index.tsx\");\n * ```\n */\n\n/**\n * Creates a mock RuntimeAdapter for testing\n *\n * The mock adapter uses in-memory Map and Set for file storage:\n * - `files`: Map<string, string> for file contents\n * - `directories`: Set<string> for tracking directories\n * - `envVars`: Map<string, string> for environment variables\n */\nexport function createMockAdapter(): MockRuntimeAdapter {\n const files = new Map<string, string>();\n const directories = new Set<string>();\n const envVars = new Map<string, string>();\n\n return {\n id: \"memory\" as const,\n name: \"mock\",\n /** @deprecated Use `id` instead */\n platform: \"memory\" as const,\n capabilities: {\n typescript: false,\n jsx: false,\n http2: false,\n websocket: false,\n workers: false,\n fileWatching: false,\n shell: false,\n kvStore: false,\n writableFs: true, // In-memory writes work\n },\n serve: (_handler, _options) => {\n return Promise.resolve({\n stop: () => Promise.resolve(),\n addr: { hostname: \"localhost\", port: 8000 },\n });\n },\n fs: {\n files,\n directories,\n readFile: (path: string) => {\n const content = files.get(path);\n if (!content) {\n throw toError(createError({\n type: \"file\",\n message: `File not found: ${path}`,\n }));\n }\n return Promise.resolve(content);\n },\n readFileBytes: (path: string) => {\n const content = files.get(path);\n if (!content) {\n throw toError(createError({\n type: \"file\",\n message: `File not found: ${path}`,\n }));\n }\n return Promise.resolve(new TextEncoder().encode(content));\n },\n writeFile: (path: string, content: string) => {\n files.set(path, content);\n return Promise.resolve();\n },\n exists: (path: string) => {\n if (files.has(path)) return Promise.resolve(true);\n if (directories.has(path)) return Promise.resolve(true);\n for (const filePath of files.keys()) {\n if (filePath.startsWith(path + \"/\")) return Promise.resolve(true);\n }\n return Promise.resolve(false);\n },\n readDir: async function* (path: string) {\n const entries = new Map<string, { isFile: boolean; isDirectory: boolean }>();\n\n for (const filePath of files.keys()) {\n if (filePath.startsWith(path + \"/\")) {\n const relativePath = filePath.slice(path.length + 1);\n const parts = relativePath.split(\"/\");\n const name = parts[0]!;\n\n if (!entries.has(name)) {\n entries.set(name, {\n isFile: parts.length === 1,\n isDirectory: parts.length > 1,\n });\n }\n }\n }\n\n for (const [name, meta] of entries.entries()) {\n yield { name, ...meta, isSymlink: false };\n }\n },\n stat: (path: string) => {\n if (files.has(path)) {\n const content = files.get(path)!;\n return Promise.resolve({\n size: content.length,\n isFile: true,\n isDirectory: false,\n isSymlink: false,\n mtime: new Date(),\n });\n }\n\n if (directories.has(path)) {\n return Promise.resolve({\n size: 0,\n isFile: false,\n isDirectory: true,\n isSymlink: false,\n mtime: new Date(),\n });\n }\n\n for (const filePath of files.keys()) {\n if (filePath.startsWith(path + \"/\")) {\n return Promise.resolve({\n size: 0,\n isFile: false,\n isDirectory: true,\n isSymlink: false,\n mtime: new Date(),\n });\n }\n }\n\n return Promise.reject(new Error(`Path not found: ${path}`));\n },\n mkdir: (_path: string) => Promise.resolve(),\n remove: (_path: string) => Promise.resolve(),\n makeTempDir: (prefix: string) =>\n Promise.resolve(`/tmp/${prefix}-${Math.random().toString(36).slice(2)}`),\n watch: () => ({\n async *[Symbol.asyncIterator]() {\n yield { kind: \"any\", paths: [] };\n },\n close: () => {},\n }),\n },\n env: {\n get: (key: string) => envVars.get(key),\n set: (key: string, value: string) => envVars.set(key, value),\n toObject: () => Object.fromEntries(envVars),\n },\n server: {\n upgradeWebSocket: (_request) => {\n throw new Error(\n \"WebSocket upgrade not available in mock adapter. \" +\n \"The mock adapter is designed for unit testing filesystem and environment operations. \" +\n \"For WebSocket testing, use integration tests with the actual Deno/Node/Bun adapter, \" +\n \"or mock the WebSocket behavior at a higher level in your tests.\",\n );\n },\n },\n features: {\n websocket: false,\n http2: false,\n workers: false,\n jsx: false,\n typescript: false,\n },\n };\n}\n", "/**\n * Adapter Registry - Singleton management for RuntimeAdapter\n *\n * Provides a centralized way to access and configure the runtime adapter.\n * Supports auto-detection, manual configuration, and testing overrides.\n *\n * @example\n * ```ts\n * // Auto-detect and get adapter\n * const adapter = await runtime.get();\n *\n * // Manual configuration (e.g., Cloudflare Workers)\n * await runtime.set(createCloudflareAdapter(env));\n *\n * // Testing override\n * await runtime.set(createMockAdapter());\n * ```\n */\n\nimport type { RuntimeAdapter, RuntimeId } from \"./base.ts\";\n\ntype AdapterLoader = () => Promise<RuntimeAdapter>;\n\n/**\n * Registry for managing RuntimeAdapter singleton\n */\nclass AdapterRegistry {\n private instance: RuntimeAdapter | null = null;\n private initialized = false;\n private loaders: Map<RuntimeId, AdapterLoader> = new Map();\n\n constructor() {\n // Register default loaders (lazy imports to avoid bundling unused adapters)\n this.loaders.set(\"deno\", async () => {\n const { denoAdapter } = await import(\"./deno.ts\");\n return denoAdapter;\n });\n\n this.loaders.set(\"node\", async () => {\n const { nodeAdapter } = await import(\"./node.ts\");\n return nodeAdapter;\n });\n\n this.loaders.set(\"bun\", async () => {\n const { bunAdapter } = await import(\"./bun.ts\");\n return bunAdapter;\n });\n\n // Note: Cloudflare requires manual initialization with env context\n // this.loaders.set(\"cloudflare\", ...) - not auto-detectable\n\n this.loaders.set(\"memory\", async () => {\n const { createMockAdapter } = await import(\"./mock.ts\");\n return createMockAdapter();\n });\n }\n\n /**\n * Get the current adapter, auto-detecting if needed\n */\n async get(): Promise<RuntimeAdapter> {\n if (this.instance) {\n return this.instance;\n }\n\n // Auto-detect runtime\n const runtimeId = this.detectRuntime();\n const loader = this.loaders.get(runtimeId);\n\n if (!loader) {\n throw new Error(\n `Unsupported runtime: ${runtimeId}. ` +\n `Supported runtimes: ${[...this.loaders.keys()].join(\", \")}. ` +\n `For Cloudflare Workers, use runtime.set(createCloudflareAdapter(env)).`,\n );\n }\n\n this.instance = await loader();\n await this.initialize();\n return this.instance;\n }\n\n /**\n * Manually set the adapter (for Cloudflare Workers, testing, etc.)\n */\n async set(adapter: RuntimeAdapter): Promise<void> {\n // Shutdown existing adapter if any\n if (this.instance && this.initialized) {\n await this.instance.shutdown?.();\n }\n\n this.instance = adapter;\n this.initialized = false;\n await this.initialize();\n }\n\n /**\n * Get adapter synchronously (throws if not initialized)\n */\n getSync(): RuntimeAdapter {\n if (!this.instance) {\n throw new Error(\n \"RuntimeAdapter not initialized. Call `await runtime.get()` first, \" +\n \"or use `await runtime.set(adapter)` to configure manually.\",\n );\n }\n return this.instance;\n }\n\n /**\n * Check if adapter is initialized\n */\n isInitialized(): boolean {\n return this.instance !== null && this.initialized;\n }\n\n /**\n * Reset the registry (for testing)\n */\n async reset(): Promise<void> {\n if (this.instance && this.initialized) {\n await this.instance.shutdown?.();\n }\n this.instance = null;\n this.initialized = false;\n }\n\n /**\n * Register a custom adapter loader\n */\n registerLoader(id: RuntimeId, loader: AdapterLoader): void {\n this.loaders.set(id, loader);\n }\n\n /**\n * Detect current runtime\n */\n private detectRuntime(): RuntimeId {\n // Deno\n if (typeof Deno !== \"undefined\" && typeof Deno.version === \"object\") {\n return \"deno\";\n }\n\n // Bun\n if (\"Bun\" in globalThis) {\n return \"bun\";\n }\n\n // Node.js\n if (typeof process !== \"undefined\" && process.versions?.node) {\n return \"node\";\n }\n\n // Cloudflare Workers (detected but requires manual init)\n if (\"caches\" in globalThis && \"WebSocketPair\" in globalThis) {\n throw new Error(\n \"Cloudflare Workers detected but requires manual initialization. \" +\n \"Use: await runtime.set(createCloudflareAdapter(env))\",\n );\n }\n\n throw new Error(\n \"Unsupported runtime detected. Supported runtimes: deno, node, bun. \" +\n \"For Cloudflare Workers, call runtime.set(createCloudflareAdapter(env)).\",\n );\n }\n\n /**\n * Initialize the adapter\n */\n private async initialize(): Promise<void> {\n if (!this.instance || this.initialized) {\n return;\n }\n\n await this.instance.initialize?.();\n this.initialized = true;\n }\n}\n\n/**\n * Global runtime adapter registry\n *\n * @example\n * ```ts\n * import { runtime } from \"@veryfront/platform/adapters/registry.ts\";\n *\n * // Get adapter (auto-detects runtime)\n * const adapter = await runtime.get();\n *\n * // Use filesystem\n * const content = await adapter.fs.readFile(\"./config.json\");\n * ```\n */\nexport const runtime = new AdapterRegistry();\n\n/**\n * Get the local runtime adapter (deno, node, bun).\n * Unlike runtime.get(), this always returns the base adapter without FSAdapter enhancement.\n * Use this for local-only operations like writing temp files or caching.\n */\nexport async function getLocalAdapter(): Promise<RuntimeAdapter> {\n // Create a fresh registry instance to avoid getting the enhanced adapter\n const localRegistry = new AdapterRegistry();\n return await localRegistry.get();\n}\n\n// Re-export for convenience\nexport type { RuntimeAdapter, RuntimeId } from \"./base.ts\";\n", "import { logger } from \"@veryfront/utils\";\nimport type { RuntimeAdapter, RuntimeId } from \"./base.ts\";\nimport { createError, toError } from \"../../core/errors/veryfront-error.ts\";\n\n// Re-export the registry for convenient access\nexport { runtime } from \"./registry.ts\";\n\ninterface DenoGlobal {\n Deno: {\n version: { deno: string };\n [key: string]: unknown;\n };\n}\n\ninterface BunGlobal {\n Bun: {\n version: string;\n [key: string]: unknown;\n };\n}\n\ninterface CloudflareGlobal {\n caches: unknown;\n WebSocketPair: unknown;\n}\n\nfunction isDeno(global: typeof globalThis): global is typeof globalThis & DenoGlobal {\n return \"Deno\" in global &&\n typeof (global as DenoGlobal).Deno === \"object\" &&\n typeof (global as DenoGlobal).Deno.version === \"object\";\n}\n\nfunction isBun(global: typeof globalThis): global is typeof globalThis & BunGlobal {\n return \"Bun\" in global && typeof (global as BunGlobal).Bun === \"object\";\n}\n\nfunction isCloudflare(global: typeof globalThis): global is typeof globalThis & CloudflareGlobal {\n return \"caches\" in global && \"WebSocketPair\" in global;\n}\n\n/**\n * Detect the current runtime environment\n * @returns Runtime identifier\n */\nexport function detectRuntime(): RuntimeId | \"unknown\" {\n if (isDeno(globalThis)) {\n return \"deno\";\n }\n\n if (isBun(globalThis)) {\n return \"bun\";\n }\n\n const globalProcess = (globalThis as { process?: { versions?: { node?: string } } }).process;\n if (globalProcess?.versions?.node) {\n return \"node\";\n }\n\n if (isCloudflare(globalThis)) {\n return \"cloudflare\";\n }\n\n return \"unknown\";\n}\n\n/**\n * Get the runtime adapter for the current environment\n *\n * @deprecated Use `runtime.get()` from `./registry.ts` instead for singleton management\n *\n * @example\n * ```ts\n * // Old way (deprecated)\n * const adapter = await getAdapter();\n *\n * // New way (recommended)\n * import { runtime } from \"@veryfront/platform/adapters/registry.ts\";\n * const adapter = await runtime.get();\n * ```\n */\nexport async function getAdapter(): Promise<RuntimeAdapter> {\n const runtimeId = detectRuntime();\n\n switch (runtimeId) {\n case \"deno\": {\n const { denoAdapter } = await import(\"./deno.ts\");\n return denoAdapter;\n }\n\n case \"bun\": {\n const { bunAdapter } = await import(\"./bun.ts\");\n return bunAdapter;\n }\n\n case \"node\": {\n const { nodeAdapter } = await import(\"./node.ts\");\n return nodeAdapter;\n }\n\n case \"cloudflare\": {\n const errorMsg = \"Cloudflare adapter requires manual initialization with environment. \" +\n \"Please use createCloudflareAdapter() with your environment context.\";\n logger.error(\"[Adapter Detection]\", errorMsg);\n throw toError(createError({\n type: \"config\",\n message: errorMsg,\n }));\n }\n\n default: {\n const supportedRuntimes = [\"deno\", \"bun\", \"node\", \"cloudflare\"];\n const errorMsg = `Unsupported runtime: ${runtimeId}. Supported runtimes: ${\n supportedRuntimes.join(\", \")\n }`;\n logger.error(\"[Adapter Detection]\", errorMsg);\n throw toError(createError({\n type: \"config\",\n message: errorMsg,\n }));\n }\n }\n}\n\nexport { denoAdapter } from \"./deno.ts\";\nexport { nodeAdapter } from \"./node.ts\";\nexport { bunAdapter } from \"./bun.ts\";\n\nexport type {\n EnvironmentAdapter,\n FileSystemAdapter,\n RuntimeAdapter,\n RuntimeCapabilities,\n RuntimeFeatures,\n RuntimeId,\n} from \"./base.ts\";\n", "export { AppWrapper } from \"./AppWrapper.tsx\";\nexport type { AppWrapperProps } from \"./AppWrapper.tsx\";\n\nexport { Head } from \"./Head.tsx\";\n\nexport { LayoutComponent } from \"./LayoutComponent.tsx\";\nexport type { LayoutComponentProps } from \"./LayoutComponent.tsx\";\n\nexport { Link } from \"./Link.tsx\";\nexport type { LinkProps } from \"./Link.tsx\";\n\nexport { MDXProvider, useMDXComponents } from \"./MDXProvider.tsx\";\nexport type { MDXProviderProps } from \"./MDXProvider.tsx\";\n\nexport { ProviderComponent } from \"./ProviderComponent.tsx\";\nexport type { ProviderComponentProps } from \"./ProviderComponent.tsx\";\n\nexport * from \"./optimized-image/index.ts\";\n", "import type * as React from \"react\";\nimport type { MDXComponents, PageContext as TypedPageContext } from \"@veryfront/types\";\nimport type { MdxBundle } from \"./LayoutComponent.tsx\";\nimport { LayoutComponent } from \"./LayoutComponent.tsx\";\nimport { ProviderComponent } from \"./ProviderComponent.tsx\";\n\nexport interface AppWrapperProps {\n children: React.ReactNode;\n providers?: MdxBundle[];\n layout?: MdxBundle;\n components?: MDXComponents;\n mode?: string;\n studioEnabled?: boolean;\n pageContext?: TypedPageContext;\n}\n\nexport function AppWrapper({\n children,\n providers = [],\n layout,\n components = {},\n mode: _mode,\n studioEnabled: _studioEnabled,\n pageContext,\n}: AppWrapperProps) {\n let content = children;\n\n if (layout) {\n content = (\n <LayoutComponent mdxBundle={layout} components={components} pageContext={pageContext}>\n {content}\n </LayoutComponent>\n );\n }\n\n for (const provider of [...providers].reverse()) {\n content = (\n <ProviderComponent mdxBundle={provider} components={components}>\n {content}\n </ProviderComponent>\n );\n }\n\n return content;\n}\n", "import type React from \"react\";\nimport { useMemo, useRef } from \"react\";\nimport { mdxRenderer } from \"@veryfront/transforms/mdx/index.ts\";\nimport type { MdxBundle, MDXComponents, PageContext as TypedPageContext } from \"@veryfront/types\";\nimport { rendererLogger as logger } from \"@veryfront/utils\";\n\nexport type { MdxBundle } from \"@veryfront/types\";\n\nexport interface LayoutComponentProps {\n mdxBundle: MdxBundle;\n children: React.ReactNode;\n components?: MDXComponents;\n pageContext?: TypedPageContext;\n}\n\nfunction useStableObject<T>(obj: T): T {\n const ref = useRef(obj);\n const serialized = JSON.stringify(obj);\n const prevSerialized = useRef(serialized);\n\n if (prevSerialized.current !== serialized) {\n ref.current = obj;\n prevSerialized.current = serialized;\n }\n\n return ref.current;\n}\n\nexport function LayoutComponent({\n mdxBundle,\n children,\n components = {},\n pageContext,\n}: LayoutComponentProps) {\n const stableFrontmatter = useStableObject(mdxBundle.frontmatter);\n const stablePageContext = useStableObject(pageContext);\n\n const element = useMemo(() => {\n try {\n return mdxRenderer.render(mdxBundle.compiledCode, {\n components,\n frontmatter: { ...(stableFrontmatter || {}), pageContext: stablePageContext },\n globals: mdxBundle.globals,\n extractLayout: true,\n children,\n });\n } catch (error) {\n logger.error(\"[LayoutComponent] Render failed:\", error);\n return <>{children}</>;\n }\n }, [\n mdxBundle.compiledCode,\n stableFrontmatter,\n components,\n children,\n stablePageContext,\n mdxBundle.globals,\n ]);\n\n if (!element) return <>{children}</>;\n return element as React.ReactElement;\n}\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport { LRUCache } from \"@veryfront/utils/lru-wrapper.ts\";\nimport React from \"react\";\nimport { MDX_RENDERER_MAX_ENTRIES, MDX_RENDERER_TTL_MS } from \"@veryfront/utils/constants/cache.ts\";\nimport { type ESMLoaderContext, loadModuleESM } from \"./esm-module-loader.ts\";\nimport {\n executeModule as _executeModule,\n selectComponent as _selectComponent,\n} from \"./module-executor.ts\";\nimport { type ParsedMDX, parseMDXCode } from \"./parser.ts\";\nimport type { MDXComponents, MDXFrontmatter, MDXGlobals, MDXModule } from \"./types.ts\";\n\nexport interface MDXRenderOptions {\n components?: MDXComponents;\n frontmatter?: MDXFrontmatter;\n globals?: MDXGlobals;\n extractLayout?: boolean;\n children?: React.ReactNode;\n}\n\nexport class MDXRenderer {\n private esmCacheDir?: string;\n private moduleCache: LRUCache<string, MDXModule> = new LRUCache({\n maxEntries: MDX_RENDERER_MAX_ENTRIES,\n ttlMs: MDX_RENDERER_TTL_MS,\n });\n\n constructor() {\n }\n\n async clearCache() {\n this.moduleCache.destroy();\n\n if (this.esmCacheDir) {\n try {\n const { getAdapter } = await import(\"@veryfront/platform/adapters/detect.ts\");\n const adapter = await getAdapter();\n await adapter.fs.remove(this.esmCacheDir, { recursive: true });\n } catch (_error) {\n void _error;\n }\n this.esmCacheDir = undefined;\n }\n }\n\n async loadModuleESM(\n compiledProgramCode: string,\n adapter?: import(\"@veryfront/platform/adapters/base.ts\").RuntimeAdapter,\n ): Promise<MDXModule> {\n const context: ESMLoaderContext = {\n esmCacheDir: this.esmCacheDir,\n moduleCache: this.moduleCache,\n adapter,\n };\n const result = await loadModuleESM(compiledProgramCode, context);\n this.esmCacheDir = context.esmCacheDir;\n return result;\n }\n\n render(\n _compiledCode: string,\n _options: MDXRenderOptions = {},\n ): React.ReactElement {\n logger.error(\n \"[MDX] Synchronous render() called but string-based factories are disabled for security. \" +\n \"Please use: await mdxRenderer.loadModuleESM(compiledCode) instead.\",\n );\n\n return React.createElement(\n \"div\",\n {\n style: {\n padding: \"1rem\",\n backgroundColor: \"#fff3cd\",\n border: \"1px solid #ffc107\",\n borderRadius: \"0.375rem\",\n color: \"#856404\",\n },\n },\n React.createElement(\"strong\", {}, \"Migration Required: \"),\n \"Synchronous render() is no longer supported for security reasons. \",\n React.createElement(\"br\"),\n \"Please update to: \",\n React.createElement(\"code\", {}, \"await mdxRenderer.loadModuleESM(compiledCode)\"),\n );\n }\n\n private parseMDXCode(compiledCode: string): ParsedMDX {\n return parseMDXCode(compiledCode);\n }\n}\n\nlet _mdxRendererInstance: MDXRenderer | undefined;\n\nfunction getMDXRendererInstance(): MDXRenderer {\n if (!_mdxRendererInstance) {\n _mdxRendererInstance = new MDXRenderer();\n }\n return _mdxRendererInstance;\n}\n\nexport const mdxRenderer = new Proxy({} as MDXRenderer, {\n get(_target, prop) {\n const instance = getMDXRendererInstance();\n const value = instance[prop as keyof MDXRenderer];\n if (typeof value === \"function\") {\n return value.bind(instance);\n }\n return value;\n },\n set(_target, prop, value) {\n const instance = getMDXRendererInstance();\n (instance as any)[prop] = value;\n return true;\n },\n has(_target, prop) {\n const instance = getMDXRendererInstance();\n return prop in instance;\n },\n ownKeys(_target) {\n const instance = getMDXRendererInstance();\n return Reflect.ownKeys(instance);\n },\n getOwnPropertyDescriptor(_target, prop) {\n const instance = getMDXRendererInstance();\n return Reflect.getOwnPropertyDescriptor(instance, prop);\n },\n});\n\nexport async function clearMDXRendererCache() {\n await getMDXRendererInstance().clearCache();\n}\n\nexport {\n MDXCacheAdapter,\n type MDXCacheAdapterOptions,\n type MDXCompilationResult,\n} from \"./mdx-cache-adapter.ts\";\n", "import { LRUCacheAdapter } from \"./cache/stores/memory/lru-cache-adapter.ts\";\nimport type { LRUCacheOptions } from \"./cache/stores/memory/types.ts\";\nimport { DEFAULT_LRU_MAX_ENTRIES } from \"@veryfront/utils\";\nimport { getEnv } from \"../../platform/compat/process.ts\";\n\nexport interface LRUOptions {\n maxEntries?: number;\n ttlMs?: number;\n cleanupIntervalMs?: number;\n}\n\nexport class LRUCache<K, V> {\n private adapter: LRUCacheAdapter;\n private cleanupTimer?: ReturnType<typeof setInterval>;\n private cleanupIntervalMs: number;\n private ttlMs?: number;\n\n constructor(options: LRUOptions = {}) {\n const adapterOptions: LRUCacheOptions = {\n maxEntries: options.maxEntries ?? DEFAULT_LRU_MAX_ENTRIES,\n ttlMs: options.ttlMs,\n };\n\n this.adapter = new LRUCacheAdapter(adapterOptions);\n this.ttlMs = options.ttlMs;\n this.cleanupIntervalMs = options.cleanupIntervalMs ?? 60000;\n\n if (this.ttlMs && this.ttlMs > 0) {\n this.startPeriodicCleanup();\n }\n }\n\n private startPeriodicCleanup(): void {\n if (shouldDisableInterval()) {\n return;\n }\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n }\n\n const timer = setInterval(() => {\n this.adapter.cleanupExpired();\n }, this.cleanupIntervalMs);\n this.cleanupTimer = timer;\n\n // Unref the timer so it doesn't prevent process exit or cause test leaks\n if (typeof Deno !== \"undefined\" && \"unrefTimer\" in Deno) {\n Deno.unrefTimer(timer);\n }\n }\n\n private toStringKey(key: K): string {\n if (typeof key === \"string\") {\n return key;\n }\n return String(key);\n }\n\n get size(): number {\n return this.adapter.getStats().entries;\n }\n\n has(key: K): boolean {\n return this.adapter.get(this.toStringKey(key)) !== undefined;\n }\n\n get(key: K): V | undefined {\n return this.adapter.get<V>(this.toStringKey(key));\n }\n\n set(key: K, value: V): void {\n this.adapter.set(this.toStringKey(key), value);\n }\n\n delete(key: K): boolean {\n const stringKey = this.toStringKey(key);\n const had = this.adapter.get(stringKey) !== undefined;\n this.adapter.delete(stringKey);\n return had;\n }\n\n clear(): void {\n this.adapter.clear();\n }\n\n cleanup(): void {\n this.adapter.cleanupExpired();\n }\n\n destroy(): void {\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = undefined;\n }\n\n this.adapter.clear();\n }\n\n keys(): IterableIterator<K> {\n return this.adapter.keys() as IterableIterator<K>;\n }\n}\n\nfunction shouldDisableInterval(): boolean {\n if ((globalThis as Record<string, unknown>).__vfDisableLruInterval === true) {\n return true;\n }\n try {\n return getEnv(\"VF_DISABLE_LRU_INTERVAL\") === \"1\";\n } catch {\n return false;\n }\n}\n", "import type { CacheAdapter, LRUCacheOptions, LRUCacheStats, LRUEntry } from \"./types.ts\";\nimport { LRUNode } from \"./lru-node.ts\";\nimport { LRUListManager } from \"./lru-list-manager.ts\";\nimport { EvictionManager } from \"../../eviction/eviction-manager.ts\";\nimport { EntryManager } from \"./entry-manager.ts\";\n\nfunction defaultSizeEstimator(value: unknown): number {\n if (value === null || value === undefined) return 0;\n if (typeof value === \"string\") return value.length * 2;\n if (typeof value === \"number\" || typeof value === \"bigint\") return 8;\n if (typeof value === \"boolean\") return 4;\n if (value instanceof Uint8Array || ArrayBuffer.isView(value)) return value.byteLength;\n if (value instanceof ArrayBuffer) return value.byteLength;\n if (typeof Blob !== \"undefined\" && value instanceof Blob) return value.size;\n\n try {\n return JSON.stringify(value).length * 2;\n } catch {\n return 0;\n }\n}\n\nexport class LRUCacheAdapter implements CacheAdapter {\n private readonly store = new Map<string, LRUNode<unknown>>();\n private readonly tagIndex = new Map<string, Set<string>>();\n private readonly listManager = new LRUListManager<unknown>();\n private readonly evictionManager: EvictionManager<LRUEntry<unknown>>;\n private readonly entryManager: EntryManager;\n private currentSize = 0;\n private readonly maxEntries: number;\n private readonly maxSizeBytes: number;\n private readonly defaultTtlMs?: number;\n private readonly onEvict?: (key: string, value: unknown) => void;\n\n constructor(options: LRUCacheOptions = {}) {\n this.maxEntries = options.maxEntries || 1000;\n this.maxSizeBytes = options.maxSizeBytes || 50 * 1024 * 1024; // 50MB default\n this.defaultTtlMs = options.ttlMs;\n this.onEvict = options.onEvict;\n\n const estimateSizeOf = options.estimateSizeOf || defaultSizeEstimator;\n\n this.evictionManager = new EvictionManager({\n onEvict: this.onEvict,\n loggerContext: \"MemoryCache\",\n });\n this.entryManager = new EntryManager(estimateSizeOf);\n }\n\n get<T>(key: string): T | undefined {\n const node = this.store.get(key);\n if (!node) return undefined;\n\n if (this.evictionManager.isExpired(node.entry)) {\n this.delete(key);\n return undefined;\n }\n\n this.listManager.moveToFront(node);\n return node.entry.value as T;\n }\n\n set<T>(key: string, value: T, ttlMs?: number, tags?: string[]): void {\n const existingNode = this.store.get(key);\n\n if (existingNode) {\n const sizeDelta = this.entryManager.updateExistingEntry(\n existingNode,\n value,\n ttlMs,\n tags,\n this.defaultTtlMs,\n this.listManager,\n this.tagIndex,\n key,\n );\n this.currentSize += sizeDelta;\n } else {\n const [_node, size] = this.entryManager.createNewEntry(\n key,\n value,\n ttlMs,\n tags,\n this.defaultTtlMs,\n this.listManager,\n this.store,\n );\n this.currentSize += size;\n }\n\n if (tags && tags.length > 0) {\n this.entryManager.updateTagIndex(tags, key, this.tagIndex);\n }\n\n this.currentSize = this.evictionManager.enforceMemoryLimits(\n this.listManager,\n this.store,\n this.tagIndex,\n this.currentSize,\n this.maxEntries,\n this.maxSizeBytes,\n );\n }\n\n delete(key: string): void {\n const node = this.store.get(key);\n if (!node) return;\n\n this.listManager.removeNode(node);\n this.store.delete(key);\n this.currentSize -= node.entry.size;\n\n if (node.entry.tags) {\n this.entryManager.cleanupTags(node.entry.tags, key, this.tagIndex);\n }\n\n if (this.onEvict) {\n this.onEvict(key, node.entry.value);\n }\n }\n\n invalidateTag(tag: string): number {\n const set = this.tagIndex.get(tag);\n if (!set) return 0;\n\n let count = 0;\n for (const key of set) {\n this.delete(key);\n count++;\n }\n this.tagIndex.delete(tag);\n return count;\n }\n\n clear(): void {\n if (this.onEvict) {\n for (const [key, node] of this.store) {\n this.onEvict(key, node.entry.value);\n }\n }\n\n this.store.clear();\n this.tagIndex.clear();\n this.listManager.clear();\n this.currentSize = 0;\n }\n\n getStats(): LRUCacheStats {\n return {\n entries: this.store.size,\n sizeBytes: this.currentSize,\n maxEntries: this.maxEntries,\n maxSizeBytes: this.maxSizeBytes,\n tags: this.tagIndex.size,\n };\n }\n\n cleanupExpired(): number {\n const now = Date.now();\n let cleaned = 0;\n\n for (const [key, node] of this.store) {\n if (typeof node.entry.expiry === \"number\" && now > node.entry.expiry) {\n this.delete(key);\n cleaned++;\n }\n }\n\n return cleaned;\n }\n\n keys(): IterableIterator<string> {\n return this.store.keys();\n }\n\n has(key: string): boolean {\n return this.get(key) !== undefined;\n }\n}\n", "import type { LRUNode } from \"./lru-node.ts\";\n\nexport class LRUListManager<T> {\n private head: LRUNode<T> | null = null;\n private tail: LRUNode<T> | null = null;\n\n getHead(): LRUNode<T> | null {\n return this.head;\n }\n\n getTail(): LRUNode<T> | null {\n return this.tail;\n }\n\n moveToFront(node: LRUNode<T>): void {\n if (node === this.head) {\n node.entry.lastAccessed = Date.now();\n return;\n }\n\n this.removeNode(node);\n\n this.addToFront(node);\n }\n\n addToFront(node: LRUNode<T>): void {\n node.next = this.head;\n node.prev = null;\n if (this.head) {\n this.head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n node.entry.lastAccessed = Date.now();\n }\n\n removeNode(node: LRUNode<T>): void {\n if (node.prev) {\n node.prev.next = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n }\n if (node === this.head) {\n this.head = node.next;\n }\n if (node === this.tail) {\n this.tail = node.prev;\n }\n }\n\n clear(): void {\n this.head = null;\n this.tail = null;\n }\n}\n", "export interface EvictableEntry {\n size: number;\n timestamp?: number;\n expiry?: number;\n value?: unknown;\n tags?: string[];\n}\n\nexport interface LRUTrackerInterface {\n getLRU(): string | undefined;\n remove(key: string): void;\n}\n\nexport interface LRUNodeInterface<T> {\n key: string;\n entry: T;\n prev: LRUNodeInterface<T> | null;\n next: LRUNodeInterface<T> | null;\n}\n\nexport interface LRUListManagerInterface<T> {\n getTail(): LRUNodeInterface<T> | null;\n removeNode(node: LRUNodeInterface<T>): void;\n}\n\nexport interface EvictionManagerOptions {\n onEvict?: (key: string, value: unknown) => void;\n loggerContext?: string;\n}\n\nexport class EvictionManager<TEntry extends EvictableEntry> {\n private readonly onEvict?: (key: string, value: unknown) => void;\n\n constructor(options: EvictionManagerOptions = {}) {\n this.onEvict = options.onEvict;\n }\n\n evictIfNeeded(\n cache: Map<string, TEntry>,\n lruTracker: LRUTrackerInterface,\n newEntrySize: number,\n maxSize: number,\n maxMemory: number,\n ): void {\n while (cache.size >= maxSize) {\n this.evictLRU(cache, lruTracker);\n }\n\n let memoryUsed = Array.from(cache.values()).reduce((sum, entry) => sum + entry.size, 0);\n\n while (memoryUsed + newEntrySize > maxMemory && cache.size > 0) {\n const evictedSize = this.evictLRU(cache, lruTracker);\n memoryUsed -= evictedSize;\n }\n }\n\n evictLRU(cache: Map<string, TEntry>, lruTracker: LRUTrackerInterface): number {\n const keyToEvict = lruTracker.getLRU();\n\n if (!keyToEvict) {\n return 0;\n }\n\n const entry = cache.get(keyToEvict);\n const size = entry?.size || 0;\n const value = entry?.value;\n\n cache.delete(keyToEvict);\n lruTracker.remove(keyToEvict);\n\n if (this.onEvict && entry) {\n this.onEvict(keyToEvict, value);\n }\n\n return size;\n }\n\n evictLRUFromList<T extends TEntry>(\n listManager: LRUListManagerInterface<T>,\n store: Map<string, LRUNodeInterface<T>>,\n tagIndex: Map<string, Set<string>>,\n currentSize: number,\n ): number {\n const tail = listManager.getTail();\n if (!tail) return currentSize;\n\n const node = tail;\n listManager.removeNode(node);\n store.delete(node.key);\n const newSize = currentSize - node.entry.size;\n\n if (node.entry.tags) {\n this.cleanupTags(node.entry.tags, node.key, tagIndex);\n }\n\n if (this.onEvict) {\n this.onEvict(node.key, node.entry.value);\n }\n\n return newSize;\n }\n\n enforceMemoryLimits<T extends TEntry>(\n listManager: LRUListManagerInterface<T>,\n store: Map<string, LRUNodeInterface<T>>,\n tagIndex: Map<string, Set<string>>,\n currentSize: number,\n maxEntries: number,\n maxSizeBytes: number,\n ): number {\n let size = currentSize;\n while ((store.size > maxEntries || size > maxSizeBytes) && listManager.getTail()) {\n size = this.evictLRUFromList(listManager, store, tagIndex, size);\n }\n return size;\n }\n\n private cleanupTags(tags: string[], key: string, tagIndex: Map<string, Set<string>>): void {\n for (const tag of tags) {\n const set = tagIndex.get(tag);\n if (set) {\n set.delete(key);\n if (set.size === 0) {\n tagIndex.delete(tag);\n }\n }\n }\n }\n\n evictExpired(cache: Map<string, TEntry>, lruTracker: LRUTrackerInterface, ttl: number): number {\n const now = Date.now();\n let evicted = 0;\n\n for (const [key, entry] of cache.entries()) {\n if (this.isExpired(entry, ttl, now)) {\n cache.delete(key);\n lruTracker.remove(key);\n evicted++;\n }\n }\n\n return evicted;\n }\n\n isExpired(entry: TEntry, ttl?: number, now: number = Date.now()): boolean {\n if (typeof entry.expiry === \"number\") {\n return now > entry.expiry;\n }\n\n if (typeof entry.timestamp === \"number\" && typeof ttl === \"number\") {\n const age = now - entry.timestamp;\n return age > ttl;\n }\n\n return false;\n }\n}\n", "import type { LRUEntry } from \"./types.ts\";\nimport { LRUNode } from \"./lru-node.ts\";\nimport type { LRUListManager } from \"./lru-list-manager.ts\";\n\nexport class EntryManager {\n constructor(\n private readonly estimateSizeOf: (value: unknown) => number,\n ) {}\n\n updateExistingEntry<T>(\n node: LRUNode<unknown>,\n value: T,\n ttlMs: number | undefined,\n tags: string[] | undefined,\n defaultTtlMs: number | undefined,\n listManager: LRUListManager<unknown>,\n tagIndex: Map<string, Set<string>>,\n key: string,\n ): number {\n const oldSize = node.entry.size;\n const newSize = this.estimateSizeOf(value);\n const expiry = this.calculateExpiry(ttlMs, defaultTtlMs);\n\n if (node.entry.tags) {\n this.cleanupTags(node.entry.tags, key, tagIndex);\n }\n\n node.entry = {\n value,\n size: newSize,\n expiry,\n tags,\n lastAccessed: Date.now(),\n };\n\n listManager.moveToFront(node);\n\n return newSize - oldSize;\n }\n\n createNewEntry<T>(\n key: string,\n value: T,\n ttlMs: number | undefined,\n tags: string[] | undefined,\n defaultTtlMs: number | undefined,\n listManager: LRUListManager<unknown>,\n store: Map<string, LRUNode<unknown>>,\n ): [LRUNode<unknown>, number] {\n const size = this.estimateSizeOf(value);\n const expiry = this.calculateExpiry(ttlMs, defaultTtlMs);\n\n const entry: LRUEntry<unknown> = {\n value,\n size,\n expiry,\n tags,\n lastAccessed: Date.now(),\n };\n\n const node = new LRUNode(key, entry);\n store.set(key, node);\n listManager.addToFront(node);\n\n return [node, size];\n }\n\n updateTagIndex(\n tags: string[],\n key: string,\n tagIndex: Map<string, Set<string>>,\n ): void {\n for (const tag of tags) {\n if (!tagIndex.has(tag)) {\n tagIndex.set(tag, new Set());\n }\n tagIndex.get(tag)?.add(key);\n }\n }\n\n cleanupTags(\n tags: string[],\n key: string,\n tagIndex: Map<string, Set<string>>,\n ): void {\n for (const tag of tags) {\n const set = tagIndex.get(tag);\n if (set) {\n set.delete(key);\n if (set.size === 0) {\n tagIndex.delete(tag);\n }\n }\n }\n }\n\n private calculateExpiry(\n ttlMs: number | undefined,\n defaultTtlMs: number | undefined,\n ): number | undefined {\n if (typeof ttlMs === \"number\") {\n return Date.now() + ttlMs;\n }\n if (defaultTtlMs) {\n return Date.now() + defaultTtlMs;\n }\n return undefined;\n }\n}\n", "import type { LRUEntry } from \"./types.ts\";\n\nexport class LRUNode<T> {\n constructor(\n public key: string,\n public entry: LRUEntry<T>,\n public prev: LRUNode<T> | null = null,\n public next: LRUNode<T> | null = null,\n ) {}\n}\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport { LRUCache } from \"@veryfront/utils/lru-wrapper.ts\";\nimport React from \"react\";\nimport { getCacheNamespace } from \"@veryfront/utils/cache/keys/namespace.ts\";\nimport {\n getDefaultImportMap,\n transformImportsWithMap,\n} from \"@veryfront/modules/import-map/index.ts\";\nimport type { MDXFrontmatter, MDXModule } from \"./types.ts\";\nimport { join, posix } from \"https://deno.land/std@0.220.0/path/mod.ts\";\nimport { isDeno, isNode } from \"../../../platform/compat/runtime.ts\";\nimport { cwd } from \"../../../platform/compat/process.ts\";\nimport { createFileSystem, type FileSystem } from \"../../../platform/compat/fs.ts\";\nimport { transformToESM } from \"../esm-transform.ts\";\nimport type { RuntimeAdapter } from \"../../../platform/adapters/base.ts\";\nimport {\n createHTTPPlugin,\n getReactAliases,\n hasHttpImports,\n stripDenoShim,\n} from \"../esm/http-bundler.ts\";\nimport { setupSSRGlobals } from \"../../../rendering/ssr-globals.ts\";\n\n// True Node.js runtime (not Deno with Node.js compat)\nconst IS_TRUE_NODE = isNode && !isDeno;\n\n// Framework root directory (veryfront-renderer/) - computed from this file's location\n// From src/build/transforms/mdx/esm-module-loader.ts, go up 4 levels\nconst FRAMEWORK_ROOT = new URL(\"../../../..\", import.meta.url).pathname;\n\n// Constants\nconst LOG_PREFIX_MDX_LOADER = \"[mdx-loader]\";\nconst LOG_PREFIX_MDX_RENDERER = \"[mdx-renderer]\";\nconst JSX_IMPORT_PATTERN = /import\\s+([^'\"]+)\\s+from\\s+['\"]file:\\/\\/([^'\"]+\\.(jsx|tsx))['\"];?/g;\nconst REACT_IMPORT_PATTERN = /import\\s+.*React.*\\s+from\\s+['\"]react['\"]/;\n// Pattern for @/ aliased imports (project-relative paths)\nconst PROJECT_ALIAS_IMPORT_PATTERN = /import\\s+([^'\"]+)\\s+from\\s+['\"]@\\/([^'\"]+)['\"];?/g;\n// Pattern for /_vf_modules/ imports (browser-style module URLs)\nconst MODULE_SERVER_IMPORT_PATTERN = /from\\s+[\"']\\/?_vf_modules\\/([^\"']+)[\"']/g;\nconst ESBUILD_JSX_FACTORY = \"React.createElement\";\nconst ESBUILD_JSX_FRAGMENT = \"React.Fragment\";\n\n// Cache for resolved react package paths (Node.js only)\nconst _resolvedPaths: Record<string, string | null> = {};\n\n// Local filesystem for cache operations (not project's FSAdapter which may be remote/read-only)\n// This uses the platform's native fs (Deno, Node, Bun) for local cache writes\nlet _localFs: FileSystem | null = null;\nfunction getLocalFs(): FileSystem {\n if (!_localFs) {\n _localFs = createFileSystem();\n }\n return _localFs;\n}\n\n// Persistent module path cache - survives across requests\n// Maps normalized module paths to their disk cache file paths\nlet _modulePathCache: Map<string, string> | null = null;\nlet _modulePathCacheLoaded = false;\n\nasync function getModulePathCache(cacheDir: string): Promise<Map<string, string>> {\n if (_modulePathCache && _modulePathCacheLoaded) {\n return _modulePathCache;\n }\n\n _modulePathCache = new Map();\n const indexPath = join(cacheDir, \"_index.json\");\n\n try {\n const content = await getLocalFs().readTextFile(indexPath);\n const index = JSON.parse(content) as Record<string, string>;\n for (const [path, cachePath] of Object.entries(index)) {\n _modulePathCache.set(path, cachePath);\n }\n logger.debug(`${LOG_PREFIX_MDX_LOADER} Loaded module index: ${_modulePathCache.size} entries`);\n } catch {\n // Index doesn't exist yet\n }\n\n _modulePathCacheLoaded = true;\n return _modulePathCache;\n}\n\nasync function saveModulePathCache(cacheDir: string): Promise<void> {\n if (!_modulePathCache) return;\n\n const indexPath = join(cacheDir, \"_index.json\");\n const index: Record<string, string> = {};\n for (const [path, cachePath] of _modulePathCache.entries()) {\n index[path] = cachePath;\n }\n\n try {\n await getLocalFs().writeTextFile(indexPath, JSON.stringify(index));\n } catch (error) {\n logger.warn(`${LOG_PREFIX_MDX_LOADER} Failed to save module index`, error);\n }\n}\n\n/**\n * Clear the in-memory module path cache.\n * Called on invalidation to force re-checking disk cache.\n */\nexport function clearModulePathCache(): void {\n _modulePathCache = null;\n _modulePathCacheLoaded = false;\n logger.info(`${LOG_PREFIX_MDX_LOADER} Cleared module path cache`);\n}\n\n/**\n * Invalidate specific module paths from the cache.\n * Called on selective invalidation when specific files are edited.\n * This is much faster than clearing the entire cache.\n */\nexport function invalidateModulePaths(changedPaths: string[]): void {\n if (!_modulePathCache) return;\n\n let invalidatedCount = 0;\n\n for (const changedPath of changedPaths) {\n // Normalize the path for matching\n const normalizedChanged = changedPath.replace(/^\\/+/, \"\").replace(/\\.(tsx?|jsx?|mdx)$/, \"\");\n\n // Find and remove all cache entries that match or depend on this file\n for (const [cachedPath, _cachePath] of _modulePathCache.entries()) {\n const normalizedCached = cachedPath\n .replace(/^_vf_modules\\//, \"\")\n .replace(/\\.js$/, \"\");\n\n // Check if the cached module matches the changed file\n if (\n normalizedCached === normalizedChanged ||\n normalizedCached.endsWith(`/${normalizedChanged}`) ||\n normalizedChanged.endsWith(`/${normalizedCached}`)\n ) {\n _modulePathCache.delete(cachedPath);\n invalidatedCount++;\n logger.debug(`${LOG_PREFIX_MDX_LOADER} Invalidated module: ${cachedPath}`);\n }\n }\n }\n\n logger.info(\n `${LOG_PREFIX_MDX_LOADER} Selective invalidation: ${invalidatedCount} modules for ${changedPaths.length} files`,\n );\n}\n\n/**\n * Resolve a Node.js package path using require.resolve\n * Returns null if resolution fails\n */\nasync function resolveNodePackage(packageSpec: string): Promise<string | null> {\n if (!IS_TRUE_NODE) return null;\n if (packageSpec in _resolvedPaths) return _resolvedPaths[packageSpec]!;\n\n try {\n // Use Node.js createRequire to resolve the package from THIS file's location\n // This ensures react is found from veryfront's node_modules, not the project's\n const { createRequire } = await import(\"node:module\");\n const require = createRequire(import.meta.url);\n const resolved = require.resolve(packageSpec);\n _resolvedPaths[packageSpec] = resolved;\n return resolved;\n } catch {\n _resolvedPaths[packageSpec] = null;\n return null;\n }\n}\n\n/**\n * Transform react imports to absolute file:// paths for Node.js.\n * This is needed because MDX modules are cached in arbitrary directories\n * (like temp dirs) where Node.js cannot resolve bare 'react' imports.\n */\nasync function transformReactImportsToAbsolute(code: string): Promise<string> {\n if (!IS_TRUE_NODE) return code;\n\n // Resolve the actual react package paths\n const reactPath = await resolveNodePackage(\"react\");\n const reactJsxPath = await resolveNodePackage(\"react/jsx-runtime\");\n const reactJsxDevPath = await resolveNodePackage(\"react/jsx-dev-runtime\");\n const reactDomPath = await resolveNodePackage(\"react-dom\");\n\n let result = code;\n\n // Replace bare react imports with absolute file:// paths\n if (reactJsxPath) {\n result = result.replace(\n /from\\s+['\"]react\\/jsx-runtime['\"]/g,\n `from \"file://${reactJsxPath}\"`,\n );\n }\n if (reactJsxDevPath) {\n result = result.replace(\n /from\\s+['\"]react\\/jsx-dev-runtime['\"]/g,\n `from \"file://${reactJsxDevPath}\"`,\n );\n }\n if (reactDomPath) {\n result = result.replace(\n /from\\s+['\"]react-dom['\"]/g,\n `from \"file://${reactDomPath}\"`,\n );\n }\n if (reactPath) {\n result = result.replace(\n /from\\s+['\"]react['\"]/g,\n `from \"file://${reactPath}\"`,\n );\n }\n\n return result;\n}\n\nexport interface ESMLoaderContext {\n esmCacheDir?: string;\n moduleCache: LRUCache<string, MDXModule>;\n /** Optional adapter to use for file operations. If not provided, uses getAdapter() */\n adapter?: import(\"../../../platform/adapters/base.ts\").RuntimeAdapter;\n}\n\nexport function hashString(input: string): string {\n const HASH_SEED_FNV1A = 2166136261;\n let hash = HASH_SEED_FNV1A >>> 0; // FNV-1a\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i);\n hash = Math.imul(hash, 16777619);\n }\n return (hash >>> 0).toString(16);\n}\n\n/**\n * Clear the persistent ESM disk cache.\n * Called when files are updated via Studio to ensure fresh content is served.\n */\nexport async function clearESMDiskCache(): Promise<void> {\n const cacheDir = join(cwd(), \".cache\", \"veryfront-mdx-esm\");\n try {\n // Remove all cached module files\n for await (const entry of Deno.readDir(cacheDir)) {\n if (entry.isFile && entry.name.endsWith(\".mjs\")) {\n await Deno.remove(join(cacheDir, entry.name));\n }\n }\n logger.info(`${LOG_PREFIX_MDX_LOADER} Cleared ESM disk cache`);\n } catch (error) {\n // Cache dir might not exist yet\n if (!(error instanceof Deno.errors.NotFound)) {\n logger.warn(`${LOG_PREFIX_MDX_LOADER} Failed to clear ESM disk cache`, error);\n }\n }\n}\n\ninterface FSAdapter {\n readFile(path: string): Promise<string | Uint8Array>;\n mkdir(path: string, options?: { recursive?: boolean }): Promise<void>;\n writeFile(path: string, content: string | Uint8Array): Promise<void>;\n stat(path: string): Promise<{ isFile?: boolean } | null>;\n makeTempDir(prefix: string): Promise<string>;\n}\n\n/**\n * Transform @/ aliased imports to file:// paths\n * @/ is a project-relative alias that maps to the project root\n */\nasync function _transformProjectAliasImports(\n code: string,\n fs: FSAdapter,\n esmCacheDir: string,\n): Promise<string> {\n const imports: Array<{\n original: string;\n importClause: string;\n relativePath: string;\n }> = [];\n\n // Find all @/ imports\n let match;\n const pattern = new RegExp(PROJECT_ALIAS_IMPORT_PATTERN.source, \"g\");\n while ((match = pattern.exec(code)) !== null) {\n const [original, importClause, relativePath] = match;\n if (relativePath && importClause) {\n imports.push({ original, importClause, relativePath });\n }\n }\n\n if (imports.length === 0) {\n return code;\n }\n\n logger.info(`${LOG_PREFIX_MDX_LOADER} Found ${imports.length} @/ imports to transform`);\n\n const { transform } = await import(\"esbuild/mod.js\");\n let result = code;\n\n for (const { original, importClause, relativePath } of imports) {\n // Try common extensions\n const extensions = [\"\", \".tsx\", \".ts\", \".jsx\", \".js\", \".mdx\"];\n let fileContent: string | null = null;\n let resolvedPath: string | null = null;\n let ext: string = \"\";\n\n for (const tryExt of extensions) {\n const tryPath = relativePath + tryExt;\n try {\n const content = await fs.readFile(tryPath);\n fileContent = typeof content === \"string\" ? content : new TextDecoder().decode(content);\n resolvedPath = tryPath;\n ext = tryExt || tryPath.split(\".\").pop() || \"\";\n break;\n } catch {\n // Try next extension\n }\n }\n\n // Also try index files\n if (!fileContent) {\n for (const tryExt of [\".tsx\", \".ts\", \".jsx\", \".js\", \".mdx\"]) {\n const tryPath = `${relativePath}/index${tryExt}`;\n try {\n const content = await fs.readFile(tryPath);\n fileContent = typeof content === \"string\" ? content : new TextDecoder().decode(content);\n resolvedPath = tryPath;\n ext = tryExt;\n break;\n } catch {\n // Try next extension\n }\n }\n }\n\n if (!fileContent || !resolvedPath) {\n logger.warn(`${LOG_PREFIX_MDX_LOADER} Could not resolve @/${relativePath}`);\n continue;\n }\n\n try {\n let transformed = fileContent;\n\n // Transform TSX/JSX/TS files with esbuild\n if (ext === \".tsx\" || ext === \".jsx\" || ext === \".ts\") {\n const esbuildResult = await transform(fileContent, {\n loader: ext === \".tsx\" ? \"tsx\" : ext === \".jsx\" ? \"jsx\" : \"ts\",\n jsx: \"transform\",\n jsxFactory: ESBUILD_JSX_FACTORY,\n jsxFragment: ESBUILD_JSX_FRAGMENT,\n format: \"esm\",\n });\n transformed = esbuildResult.code;\n\n // Add React import if JSX was used and no React import exists\n if ((ext === \".tsx\" || ext === \".jsx\") && !REACT_IMPORT_PATTERN.test(transformed)) {\n transformed = `import React from 'react';\\n${transformed}`;\n }\n }\n\n // Write transformed code to temp file\n const transformedFileName = `alias-${hashString(resolvedPath)}.mjs`;\n const transformedPath = join(esmCacheDir, transformedFileName);\n await fs.writeFile(transformedPath, transformed);\n\n // Replace import in code\n result = result.replace(\n original,\n `import ${importClause} from \"file://${transformedPath}\";`,\n );\n\n logger.info(`${LOG_PREFIX_MDX_LOADER} Transformed @/${relativePath} -> ${transformedPath}`);\n } catch (error) {\n logger.warn(`${LOG_PREFIX_MDX_LOADER} Failed to transform @/${relativePath}`, error);\n }\n }\n\n return result;\n}\n\n/**\n * Transform /_vf_modules/ imports to file:// paths\n * These are browser-style module URLs that need to be resolved for server-side execution\n */\nasync function _transformModuleServerImports(\n code: string,\n fs: FSAdapter,\n esmCacheDir: string,\n): Promise<string> {\n const imports: Array<{\n original: string;\n modulePath: string;\n }> = [];\n\n // Find all /_vf_modules/ imports\n let match;\n const pattern = new RegExp(MODULE_SERVER_IMPORT_PATTERN.source, \"g\");\n while ((match = pattern.exec(code)) !== null) {\n const [original, modulePath] = match;\n if (modulePath) {\n imports.push({ original, modulePath });\n }\n }\n\n if (imports.length === 0) {\n return code;\n }\n\n logger.info(\n `${LOG_PREFIX_MDX_LOADER} Found ${imports.length} /_vf_modules/ imports to transform`,\n );\n\n const { transform } = await import(\"esbuild/mod.js\");\n let result = code;\n\n for (const { original, modulePath } of imports) {\n // Remove .js extension if present\n const pathWithoutExt = modulePath.replace(/\\.js$/, \"\");\n\n // Try common extensions\n const extensions = [\".tsx\", \".ts\", \".jsx\", \".js\", \".mdx\", \"\"];\n let fileContent: string | null = null;\n let resolvedPath: string | null = null;\n let ext: string = \"\";\n\n for (const tryExt of extensions) {\n const tryPath = pathWithoutExt + tryExt;\n try {\n const content = await fs.readFile(tryPath);\n fileContent = typeof content === \"string\" ? content : new TextDecoder().decode(content);\n resolvedPath = tryPath;\n ext = tryExt || tryPath.split(\".\").pop() || \"\";\n break;\n } catch {\n // Try next extension\n }\n }\n\n // Also try index files\n if (!fileContent) {\n for (const tryExt of [\".tsx\", \".ts\", \".jsx\", \".js\", \".mdx\"]) {\n const tryPath = `${pathWithoutExt}/index${tryExt}`;\n try {\n const content = await fs.readFile(tryPath);\n fileContent = typeof content === \"string\" ? content : new TextDecoder().decode(content);\n resolvedPath = tryPath;\n ext = tryExt;\n break;\n } catch {\n // Try next extension\n }\n }\n }\n\n if (!fileContent || !resolvedPath) {\n logger.warn(`${LOG_PREFIX_MDX_LOADER} Could not resolve /_vf_modules/${modulePath}`);\n continue;\n }\n\n try {\n let transformed = fileContent;\n\n // Transform TSX/JSX/TS files with esbuild\n if (ext === \".tsx\" || ext === \".jsx\" || ext === \".ts\") {\n const esbuildResult = await transform(fileContent, {\n loader: ext === \".tsx\" ? \"tsx\" : ext === \".jsx\" ? \"jsx\" : \"ts\",\n jsx: \"transform\",\n jsxFactory: ESBUILD_JSX_FACTORY,\n jsxFragment: ESBUILD_JSX_FRAGMENT,\n format: \"esm\",\n });\n transformed = esbuildResult.code;\n\n // Add React import if JSX was used and no React import exists\n if ((ext === \".tsx\" || ext === \".jsx\") && !REACT_IMPORT_PATTERN.test(transformed)) {\n transformed = `import React from 'react';\\n${transformed}`;\n }\n }\n\n // Write transformed code to temp file\n const transformedFileName = `vfmod-${hashString(resolvedPath)}.mjs`;\n const transformedPath = join(esmCacheDir, transformedFileName);\n await fs.writeFile(transformedPath, transformed);\n\n // Replace import in code\n const newFrom = `from \"file://${transformedPath}\"`;\n result = result.replace(original, newFrom);\n\n logger.info(\n `${LOG_PREFIX_MDX_LOADER} Transformed /_vf_modules/${modulePath} -> ${transformedPath}`,\n );\n } catch (error) {\n logger.warn(`${LOG_PREFIX_MDX_LOADER} Failed to transform /_vf_modules/${modulePath}`, error);\n }\n }\n\n return result;\n}\n\nexport async function loadModuleESM(\n compiledProgramCode: string,\n context: ESMLoaderContext,\n): Promise<MDXModule> {\n const loadStart = performance.now();\n try {\n // Use provided adapter if available, otherwise fall back to detecting runtime adapter\n const adapter = context.adapter ?? await (async () => {\n const { getAdapter } = await import(\"@veryfront/platform/adapters/detect.ts\");\n return getAdapter();\n })();\n\n if (!context.esmCacheDir) {\n // Use persistent cache directory that survives server restarts\n // This dramatically improves first-request performance after initial warm-up\n const persistentCacheDir = join(cwd(), \".cache\", \"veryfront-mdx-esm\");\n const localFs = getLocalFs();\n try {\n await localFs.mkdir(persistentCacheDir, { recursive: true });\n context.esmCacheDir = persistentCacheDir;\n logger.info(`${LOG_PREFIX_MDX_LOADER} Using persistent cache dir: ${persistentCacheDir}`);\n } catch {\n // Fallback to temp dir if persistent cache fails\n if (IS_TRUE_NODE) {\n const projectCacheDir = join(cwd(), \"node_modules\", \".cache\", \"veryfront-mdx\");\n await localFs.mkdir(projectCacheDir, { recursive: true });\n context.esmCacheDir = projectCacheDir;\n } else {\n context.esmCacheDir = await localFs.makeTempDir({ prefix: \"veryfront-mdx-esm-\" });\n }\n }\n }\n\n // Transform @/ aliased imports to /_vf_modules/ paths FIRST\n // This must happen before transformImportsWithMap to prevent @/ from being treated as bare npm imports\n // These will then be converted to HTTP URLs by the MODULE_SERVER_IMPORT_PATTERN handling below\n let rewritten = compiledProgramCode.replace(\n /from\\s+[\"']@\\/([^\"']+)[\"']/g,\n (_match, path) => {\n const jsPath = path.endsWith(\".js\") ? path : `${path}.js`;\n return `from \"/_vf_modules/${jsPath}\"`;\n },\n );\n\n // Transform imports with import map\n if (IS_TRUE_NODE) {\n // On Node.js, transform react imports to absolute file:// paths\n // This is needed because MDX modules are cached in temp directories\n // where Node.js cannot resolve bare imports\n rewritten = await transformReactImportsToAbsolute(rewritten);\n } else {\n // On Deno/browser, transform to esm.sh URLs\n rewritten = transformImportsWithMap(\n rewritten,\n getDefaultImportMap(),\n undefined,\n { resolveBare: true },\n );\n\n // HTTP imports will be bundled with esbuild later (same as Node.js)\n // This allows real code to run during SSR instead of stubs\n }\n\n // Transform /_vf_modules/ imports to file:// paths\n // We directly transform modules (bypassing HTTP) and cache as file:// modules\n // to ensure all modules share the same npm: resolution context.\n\n // Find all /_vf_modules/ imports and transform them\n const vfModulePattern = /from\\s+[\"'](\\/?)(_vf_modules\\/[^\"']+)[\"']/g;\n const vfModuleImports: Array<{ original: string; path: string }> = [];\n let vfMatch;\n while ((vfMatch = vfModulePattern.exec(rewritten)) !== null) {\n const [original, , path] = vfMatch;\n if (path) {\n vfModuleImports.push({ original, path });\n }\n }\n\n // Get projectDir from cwd\n const projectDir = cwd();\n const projectId = \"default\";\n\n // In-flight tracking to prevent duplicate parallel fetches\n const inFlight = new Map<string, Promise<string | null>>();\n\n // Recursive function to fetch and cache a module\n // deno-lint-ignore no-inner-declarations\n async function fetchAndCacheModule(\n modulePath: string,\n parentModulePath?: string,\n ): Promise<string | null> {\n // Normalize the module path (remove leading slash, resolve relative paths)\n let normalizedPath = modulePath.replace(/^\\//, \"\");\n\n // If it's a relative import and we have a parent, resolve it relative to parent\n if (parentModulePath && (modulePath.startsWith(\"./\") || modulePath.startsWith(\"../\"))) {\n // Get the directory of the parent module\n const parentDir = parentModulePath.replace(/\\/[^/]+$/, \"\");\n // Use posix.join and posix.normalize to properly resolve all ../ segments\n const joinedPath = posix.join(parentDir, modulePath);\n normalizedPath = posix.normalize(joinedPath);\n // Ensure it has _vf_modules prefix\n if (!normalizedPath.startsWith(\"_vf_modules/\")) {\n normalizedPath = `_vf_modules/${normalizedPath}`;\n }\n }\n\n // Check if this module is already being fetched (prevent race conditions)\n const existingFetch = inFlight.get(normalizedPath);\n if (existingFetch) {\n logger.debug(`${LOG_PREFIX_MDX_LOADER} Waiting for in-flight fetch: ${normalizedPath}`);\n return existingFetch;\n }\n\n // Create a deferred promise to track this fetch\n let resolveDeferred: (value: string | null) => void;\n const fetchPromise = new Promise<string | null>((resolve) => {\n resolveDeferred = resolve;\n });\n\n // Register BEFORE starting fetch to prevent race conditions\n inFlight.set(normalizedPath, fetchPromise);\n\n // Now do the actual fetch\n const result = await (async (): Promise<string | null> => {\n // Check persistent module path cache first\n const pathCache = await getModulePathCache(context.esmCacheDir!);\n const cachedPath = pathCache.get(normalizedPath);\n if (cachedPath) {\n // Verify the file still exists (use local filesystem, not API adapter)\n try {\n const localFs = getLocalFs();\n const stat = await localFs.stat(cachedPath);\n if (stat?.isFile) {\n return cachedPath;\n }\n } catch {\n // Cache entry is stale, remove it\n pathCache.delete(normalizedPath);\n }\n }\n\n // DIRECT TRANSFORM: Skip HTTP round-trip by calling transformToESM directly\n // This saves ~50-100ms per module\n try {\n // Extract file path from module path (remove _vf_modules/ prefix)\n const filePathWithoutJs = normalizedPath\n .replace(/^_vf_modules\\//, \"\")\n .replace(/\\.js$/, \"\");\n\n // Try to find and read the source file\n const extensions = [\".tsx\", \".ts\", \".jsx\", \".js\", \".mdx\"];\n // Also try common directory prefixes\n const prefixes = [\"\", \"src/\"];\n // Directory prefixes to try stripping (API may store files without these prefixes)\n const prefixesToStrip = [\"components/\", \"pages/\", \"lib/\", \"app/\"];\n let sourceCode: string | null = null;\n let actualFilePath: string | null = null;\n\n // Check if path already has a known extension (e.g., DocsLayout.mdx from DocsLayout.mdx.js)\n const hasKnownExt = extensions.some((ext) => filePathWithoutJs.endsWith(ext));\n\n // If path already has extension, try it directly first\n if (hasKnownExt) {\n for (const prefix of prefixes) {\n const tryPath = prefix + filePathWithoutJs;\n try {\n const content = await adapter.fs.readFile(tryPath);\n sourceCode = typeof content === \"string\"\n ? content\n : new TextDecoder().decode(content as Uint8Array);\n actualFilePath = tryPath;\n break;\n } catch {\n // Try next prefix\n }\n }\n }\n\n // If not found yet, try adding extensions\n if (!sourceCode) {\n // Strip any existing extension before adding new ones\n const filePathWithoutExt = hasKnownExt\n ? filePathWithoutJs.replace(/\\.(tsx|ts|jsx|js|mdx)$/, \"\")\n : filePathWithoutJs;\n\n const triedPaths: string[] = [];\n outer: for (const prefix of prefixes) {\n for (const ext of extensions) {\n const tryPath = prefix + filePathWithoutExt + ext;\n triedPaths.push(tryPath);\n try {\n const content = await adapter.fs.readFile(tryPath);\n sourceCode = typeof content === \"string\"\n ? content\n : new TextDecoder().decode(content as Uint8Array);\n actualFilePath = tryPath;\n logger.debug(`${LOG_PREFIX_MDX_LOADER} Found file with extension`, {\n normalizedPath,\n tryPath,\n });\n break outer;\n } catch {\n // Try next extension\n }\n }\n }\n if (!sourceCode) {\n logger.debug(`${LOG_PREFIX_MDX_LOADER} Extension resolution failed`, {\n normalizedPath,\n filePathWithoutExt,\n triedPaths,\n });\n }\n }\n\n // If still not found, try stripping common directory prefixes\n // This handles cases where API stores files at root level (e.g., \"VideoPlayer.tsx\")\n // but code imports them as \"components/VideoPlayer\"\n if (!sourceCode) {\n const filePathWithoutExt = hasKnownExt\n ? filePathWithoutJs.replace(/\\.(tsx|ts|jsx|js|mdx)$/, \"\")\n : filePathWithoutJs;\n\n stripLoop: for (const stripPrefix of prefixesToStrip) {\n if (filePathWithoutExt.startsWith(stripPrefix)) {\n const strippedPath = filePathWithoutExt.slice(stripPrefix.length);\n for (const ext of extensions) {\n const tryPath = strippedPath + ext;\n try {\n const content = await adapter.fs.readFile(tryPath);\n sourceCode = typeof content === \"string\"\n ? content\n : new TextDecoder().decode(content as Uint8Array);\n actualFilePath = tryPath;\n logger.debug(`${LOG_PREFIX_MDX_LOADER} Found file after stripping prefix`, {\n originalPath: filePathWithoutJs,\n strippedPath: tryPath,\n });\n break stripLoop;\n } catch {\n // Try next extension\n }\n }\n }\n }\n }\n\n // If not found, try index files\n if (!sourceCode) {\n // Use base path without extension for index lookup\n const basePath = hasKnownExt\n ? filePathWithoutJs.replace(/\\.(tsx|ts|jsx|js|mdx)$/, \"\")\n : filePathWithoutJs;\n\n outer: for (const prefix of prefixes) {\n for (const ext of extensions) {\n const tryPath = `${prefix}${basePath}/index${ext}`;\n try {\n const content = await adapter.fs.readFile(tryPath);\n sourceCode = typeof content === \"string\"\n ? content\n : new TextDecoder().decode(content as Uint8Array);\n actualFilePath = tryPath;\n break outer;\n } catch {\n // Try next extension\n }\n }\n }\n }\n\n // FALLBACK: For lib/* imports not found in project, check framework lib directory\n // This provides framework utilities like lib/Router, lib/Head, lib/usePageContext\n if (!sourceCode && filePathWithoutJs.startsWith(\"lib/\")) {\n const localFs = getLocalFs();\n for (const ext of extensions) {\n const frameworkPath = join(FRAMEWORK_ROOT, filePathWithoutJs + ext);\n try {\n const stat = await localFs.stat(frameworkPath);\n if (stat?.isFile) {\n const content = await localFs.readTextFile(frameworkPath);\n sourceCode = content;\n actualFilePath = frameworkPath;\n logger.debug(`${LOG_PREFIX_MDX_LOADER} Found framework lib file (fallback)`, {\n basePath: filePathWithoutJs,\n resolvedPath: frameworkPath,\n });\n break;\n }\n } catch {\n // Continue trying other extensions\n }\n }\n }\n\n if (!sourceCode || !actualFilePath) {\n // Fallback to HTTP fetch if direct file read fails\n // This handles cases where files are in remote storage (Veryfront API)\n\n // In proxy mode, HTTP fallback to localhost won't work (self-referential request)\n // The files should be loaded via the API adapter at a higher level\n const isProxyMode = adapter.env.get(\"PROXY_MODE\") === \"1\";\n if (isProxyMode) {\n logger.warn(\n `${LOG_PREFIX_MDX_LOADER} Direct read failed in proxy mode (module must be pre-loaded): ${filePathWithoutJs}`,\n );\n return null;\n }\n\n logger.debug(\n `${LOG_PREFIX_MDX_LOADER} Direct read failed, falling back to HTTP: ${filePathWithoutJs}`,\n );\n // Try multiple port sources: VERYFRONT_DEV_PORT (set by dev server), PORT env, then default\n const port = adapter.env.get(\"VERYFRONT_DEV_PORT\") || adapter.env.get(\"PORT\") || \"3001\";\n const moduleUrl = `http://localhost:${port}/${normalizedPath}?ssr=true`;\n const response = await fetch(moduleUrl);\n if (!response.ok) {\n logger.warn(\n `${LOG_PREFIX_MDX_LOADER} HTTP fetch also failed: ${moduleUrl} (${response.status})`,\n );\n return null;\n }\n let moduleCode = await response.text();\n // Note: React normalization is handled by esbuild aliasing when loading the module\n\n // Find and recursively process any /_vf_modules/ imports\n const vfModuleImportPattern = /from\\s+[\"'](\\/?_vf_modules\\/[^\"'?]+)(?:\\?[^\"']*)?[\"']/g;\n const nestedImports: Array<{ original: string; path: string }> = [];\n let match;\n while ((match = vfModuleImportPattern.exec(moduleCode)) !== null) {\n if (match[1]) {\n nestedImports.push({ original: match[0], path: match[1].replace(/^\\//, \"\") });\n }\n }\n\n // Also handle relative imports\n const relativeImportPattern = /from\\s+[\"'](\\.\\.?\\/[^\"'?]+)(?:\\?[^\"']*)?[\"']/g;\n const relativeImports: Array<{ original: string; path: string }> = [];\n let relMatch;\n while ((relMatch = relativeImportPattern.exec(moduleCode)) !== null) {\n if (relMatch[1]) {\n relativeImports.push({ original: relMatch[0], path: relMatch[1] });\n }\n }\n\n // Process nested imports IN PARALLEL\n const nestedResults = await Promise.all(\n nestedImports.map(async ({ original, path: nestedPath }) => {\n const nestedFilePath = await fetchAndCacheModule(nestedPath, normalizedPath);\n return { original, nestedFilePath };\n }),\n );\n for (const { original, nestedFilePath } of nestedResults) {\n if (nestedFilePath) {\n moduleCode = moduleCode.replace(original, `from \"file://${nestedFilePath}\"`);\n }\n }\n\n // Process relative imports IN PARALLEL\n const relativeResults = await Promise.all(\n relativeImports.map(async ({ original, path: relativePath }) => {\n const nestedFilePath = await fetchAndCacheModule(relativePath, normalizedPath);\n return { original, nestedFilePath };\n }),\n );\n for (const { original, nestedFilePath } of relativeResults) {\n if (nestedFilePath) {\n moduleCode = moduleCode.replace(original, `from \"file://${nestedFilePath}\"`);\n }\n }\n\n // Check for any unresolved /_vf_modules/ imports - don't cache broken modules\n const unresolvedPattern = /from\\s+[\"'](\\/?_vf_modules\\/[^\"']+)[\"']/g;\n const unresolvedMatches = [...moduleCode.matchAll(unresolvedPattern)];\n if (unresolvedMatches.length > 0) {\n const unresolvedPaths = unresolvedMatches.map((m) => m[1]).slice(0, 3);\n logger.warn(\n `${LOG_PREFIX_MDX_LOADER} Module has ${unresolvedMatches.length} unresolved imports, skipping cache`,\n { path: normalizedPath, unresolved: unresolvedPaths },\n );\n // Return null so caller retries or uses different strategy\n return null;\n }\n\n // Use content-based cache key so unchanged files stay cached\n const contentHash = hashString(normalizedPath + moduleCode);\n const cachePath = join(context.esmCacheDir!, `vfmod-${contentHash}.mjs`);\n\n // Check if this exact content is already cached (use local filesystem, not API adapter)\n const localFs = getLocalFs();\n try {\n const stat = await localFs.stat(cachePath);\n if (stat?.isFile) {\n pathCache.set(normalizedPath, cachePath);\n logger.debug(`${LOG_PREFIX_MDX_LOADER} Content cache hit: ${normalizedPath}`);\n return cachePath;\n }\n } catch {\n // Not cached, write it\n }\n\n // Ensure cache directory exists before writing\n await localFs.mkdir(context.esmCacheDir!, { recursive: true });\n await localFs.writeTextFile(cachePath, moduleCode);\n pathCache.set(normalizedPath, cachePath);\n await saveModulePathCache(context.esmCacheDir!);\n logger.debug(`${LOG_PREFIX_MDX_LOADER} Cached: ${normalizedPath} -> ${cachePath}`);\n return cachePath;\n }\n\n // Transform the source code directly (SSR mode)\n let moduleCode: string;\n try {\n moduleCode = await transformToESM(\n sourceCode,\n actualFilePath,\n projectDir,\n adapter as RuntimeAdapter,\n { projectId, dev: true, ssr: true },\n );\n } catch (transformError) {\n logger.error(`${LOG_PREFIX_MDX_LOADER} Transform failed for module`, {\n normalizedPath,\n actualFilePath,\n sourceLength: sourceCode.length,\n sourcePreview: sourceCode.slice(0, 200),\n error: transformError instanceof Error\n ? transformError.message\n : String(transformError),\n });\n throw transformError;\n }\n\n // Note: React normalization is handled by esbuild aliasing when loading the module\n\n // Find and recursively process any /_vf_modules/ imports\n const vfModuleImportPattern = /from\\s+[\"'](\\/?_vf_modules\\/[^\"'?]+)(?:\\?[^\"']*)?[\"']/g;\n const nestedImports: Array<{ original: string; path: string }> = [];\n let match;\n while ((match = vfModuleImportPattern.exec(moduleCode)) !== null) {\n if (match[1]) {\n nestedImports.push({ original: match[0], path: match[1].replace(/^\\//, \"\") });\n }\n }\n\n // Also handle relative imports with ?ssr=true query params\n // These are created by the module server and need to be resolved\n const relativeImportPattern = /from\\s+[\"'](\\.\\.?\\/[^\"'?]+)(?:\\?[^\"']*)?[\"']/g;\n const relativeImports: Array<{ original: string; path: string }> = [];\n let relMatch;\n while ((relMatch = relativeImportPattern.exec(moduleCode)) !== null) {\n if (relMatch[1]) {\n relativeImports.push({ original: relMatch[0], path: relMatch[1] });\n }\n }\n\n // Process nested /_vf_modules/ imports recursively IN PARALLEL\n const nestedResults = await Promise.all(\n nestedImports.map(async ({ original, path: nestedPath }) => {\n const nestedFilePath = await fetchAndCacheModule(nestedPath, normalizedPath);\n return { original, nestedFilePath, nestedPath };\n }),\n );\n for (const { original, nestedFilePath, nestedPath } of nestedResults) {\n if (nestedFilePath) {\n moduleCode = moduleCode.replace(original, `from \"file://${nestedFilePath}\"`);\n } else {\n // Extract named imports from the full import statement to create proper stub exports\n const importNamePattern = new RegExp(\n `import\\\\s+(?:({[^}]+})|([\\\\w$]+))\\\\s*${\n original.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n }`,\n );\n const importMatch = moduleCode.match(importNamePattern);\n let namedExports = \"\";\n if (importMatch) {\n if (importMatch[1]) {\n // Named imports: import { a, b as c } from \"...\"\n const names = importMatch[1]\n .replace(/[{}]/g, \"\")\n .split(\",\")\n .map((n) => n.trim().split(/\\s+as\\s+/)[0]?.trim())\n .filter((n): n is string => !!n);\n namedExports = names\n .map((n) =>\n `export const ${n} = () => { console.warn('[Veryfront] Missing export \"${n}\" from \"${nestedPath}\"'); return null; };`\n )\n .join(\"\\n\");\n }\n }\n // Create stub module for missing files\n const stubCode = `\n// Stub module for missing file: ${nestedPath}\n// This file was not found in the project's published release.\nconst handler = {\n get(_, prop) {\n if (prop === 'default' || prop === '__esModule' || typeof prop === 'symbol') {\n return new Proxy({}, handler);\n }\n console.warn('[Veryfront] Missing module: ${nestedPath}. Component \"' + prop + '\" was not found.');\n return () => null;\n },\n apply() { return null; }\n};\nexport default new Proxy(function(){}, handler);\n${namedExports}\n`;\n const stubHash = hashString(`stub:${nestedPath}:${namedExports}`);\n const stubPath = join(context.esmCacheDir!, `stub-${stubHash}.mjs`);\n try {\n await getLocalFs().writeTextFile(stubPath, stubCode);\n moduleCode = moduleCode.replace(original, `from \"file://${stubPath}\"`);\n logger.warn(\n `${LOG_PREFIX_MDX_LOADER} Created stub for missing module: ${nestedPath}`,\n );\n } catch (e) {\n logger.error(\n `${LOG_PREFIX_MDX_LOADER} Failed to create stub for: ${nestedPath}`,\n e,\n );\n }\n }\n }\n\n // Process relative imports by resolving them IN PARALLEL\n const relativeResults = await Promise.all(\n relativeImports.map(async ({ original, path: relativePath }) => {\n const nestedFilePath = await fetchAndCacheModule(relativePath, normalizedPath);\n return { original, nestedFilePath, relativePath };\n }),\n );\n for (const { original, nestedFilePath, relativePath } of relativeResults) {\n if (nestedFilePath) {\n moduleCode = moduleCode.replace(original, `from \"file://${nestedFilePath}\"`);\n } else {\n // Extract named imports from the full import statement to create proper stub exports\n const importNamePattern = new RegExp(\n `import\\\\s+(?:({[^}]+})|([\\\\w$]+))\\\\s*${\n original.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n }`,\n );\n const importMatch = moduleCode.match(importNamePattern);\n let namedExports = \"\";\n if (importMatch) {\n if (importMatch[1]) {\n // Named imports: import { a, b as c } from \"...\"\n const names = importMatch[1]\n .replace(/[{}]/g, \"\")\n .split(\",\")\n .map((n) => n.trim().split(/\\s+as\\s+/)[0]?.trim())\n .filter((n): n is string => !!n);\n namedExports = names\n .map((n) =>\n `export const ${n} = () => { console.warn('[Veryfront] Missing export \"${n}\" from \"${relativePath}\"'); return null; };`\n )\n .join(\"\\n\");\n }\n }\n // Create stub module for missing files to prevent import errors\n const stubCode = `\n// Stub module for missing file: ${relativePath}\n// This file was not found in the project's published release.\nconst handler = {\n get(_, prop) {\n if (prop === 'default' || prop === '__esModule' || typeof prop === 'symbol') {\n return new Proxy({}, handler);\n }\n console.warn('[Veryfront] Missing module: ${relativePath}. Component \"' + prop + '\" was not found.');\n return () => null;\n },\n apply() { return null; }\n};\nexport default new Proxy(function(){}, handler);\n${namedExports}\n`;\n const stubHash = hashString(`stub:${relativePath}:${namedExports}`);\n const stubPath = join(context.esmCacheDir!, `stub-${stubHash}.mjs`);\n try {\n await getLocalFs().writeTextFile(stubPath, stubCode);\n moduleCode = moduleCode.replace(original, `from \"file://${stubPath}\"`);\n logger.warn(\n `${LOG_PREFIX_MDX_LOADER} Created stub for missing module: ${relativePath}`,\n );\n } catch (e) {\n logger.error(\n `${LOG_PREFIX_MDX_LOADER} Failed to create stub for: ${relativePath}`,\n e,\n );\n }\n }\n }\n\n // Check for any unresolved /_vf_modules/ imports - don't cache broken modules\n const unresolvedPattern = /from\\s+[\"'](\\/?_vf_modules\\/[^\"']+)[\"']/g;\n const unresolvedMatches = [...moduleCode.matchAll(unresolvedPattern)];\n if (unresolvedMatches.length > 0) {\n const unresolvedPaths = unresolvedMatches.map((m) => m[1]).slice(0, 3);\n logger.warn(\n `${LOG_PREFIX_MDX_LOADER} Module has ${unresolvedMatches.length} unresolved imports, skipping cache`,\n { path: normalizedPath, unresolved: unresolvedPaths },\n );\n // Return null so caller retries or uses different strategy\n return null;\n }\n\n // Use content-based cache key so unchanged files stay cached\n const contentHash = hashString(normalizedPath + moduleCode);\n const cachePath = join(context.esmCacheDir!, `vfmod-${contentHash}.mjs`);\n\n // Check if this exact content is already cached (use local filesystem, not API adapter)\n const localFs = getLocalFs();\n try {\n const stat = await localFs.stat(cachePath);\n if (stat?.isFile) {\n pathCache.set(normalizedPath, cachePath);\n logger.debug(`${LOG_PREFIX_MDX_LOADER} Content cache hit: ${normalizedPath}`);\n return cachePath;\n }\n } catch {\n // Not cached, write it\n }\n\n // Ensure cache directory exists before writing\n await localFs.mkdir(context.esmCacheDir!, { recursive: true });\n await localFs.writeTextFile(cachePath, moduleCode);\n pathCache.set(normalizedPath, cachePath);\n await saveModulePathCache(context.esmCacheDir!);\n logger.debug(\n `${LOG_PREFIX_MDX_LOADER} Cached vf_module: ${normalizedPath} -> ${cachePath}`,\n );\n return cachePath;\n } catch (error) {\n logger.warn(`${LOG_PREFIX_MDX_LOADER} Failed to process ${normalizedPath}`, error);\n return null;\n }\n })();\n\n // Resolve the deferred promise and clean up\n resolveDeferred!(result);\n inFlight.delete(normalizedPath);\n return result;\n }\n\n // Process each vf_modules import IN PARALLEL\n const fetchStart = performance.now();\n const vfModuleResults = await Promise.all(\n vfModuleImports.map(async ({ original, path }) => {\n const filePath = await fetchAndCacheModule(path);\n return { original, filePath, path };\n }),\n );\n const fetchEnd = performance.now();\n logger.info(`${LOG_PREFIX_MDX_LOADER} Module fetch phase completed`, {\n moduleCount: vfModuleImports.length,\n durationMs: (fetchEnd - fetchStart).toFixed(1),\n });\n for (const { original, filePath, path } of vfModuleResults) {\n if (filePath) {\n rewritten = rewritten.replace(original, `from \"file://${filePath}\"`);\n } else {\n // Create stub module for missing top-level imports (same as nested imports)\n // This prevents MDX rendering failures when lib modules aren't published\n const importNamePattern = new RegExp(\n `import\\\\s+(?:({[^}]+})|([\\\\w$]+))\\\\s*${original.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")}`,\n );\n const importMatch = rewritten.match(importNamePattern);\n let namedExports = \"\";\n if (importMatch) {\n if (importMatch[1]) {\n // Named imports: import { a, b as c } from \"...\"\n const names = importMatch[1]\n .replace(/[{}]/g, \"\")\n .split(\",\")\n .map((n) => n.trim().split(/\\s+as\\s+/)[0]?.trim())\n .filter((n): n is string => !!n);\n namedExports = names\n .map((n) =>\n `export const ${n} = () => { console.warn('[Veryfront] Missing export \"${n}\" from \"${path}\"'); return null; };`\n )\n .join(\"\\n\");\n }\n }\n const stubCode = `\n// Stub module for missing file: ${path}\n// This file was not found in the project's published release.\nconst handler = {\n get(_, prop) {\n if (prop === 'default' || prop === '__esModule' || typeof prop === 'symbol') {\n return new Proxy({}, handler);\n }\n console.warn('[Veryfront] Missing module: ${path}. Component \"' + prop + '\" was not found.');\n return () => null;\n },\n apply() { return null; }\n};\nexport default new Proxy(function(){}, handler);\n${namedExports}\n`;\n const stubHash = hashString(`stub:${path}:${namedExports}`);\n const stubPath = join(context.esmCacheDir!, `stub-${stubHash}.mjs`);\n try {\n await getLocalFs().writeTextFile(stubPath, stubCode);\n rewritten = rewritten.replace(original, `from \"file://${stubPath}\"`);\n logger.warn(\n `${LOG_PREFIX_MDX_LOADER} Created stub for missing top-level module: ${path}`,\n );\n } catch (e) {\n logger.error(\n `${LOG_PREFIX_MDX_LOADER} Failed to create stub for: ${path}`,\n e,\n );\n }\n }\n }\n\n // Transform JSX/TSX imports using esbuild\n // This handles user components that use JSX syntax\n let jsxMatch;\n const jsxTransforms: Array<{ original: string; transformed: string }> = [];\n\n // Import esbuild once outside the loop for better performance\n const { transform } = await import(\"esbuild/mod.js\");\n\n while ((jsxMatch = JSX_IMPORT_PATTERN.exec(rewritten)) !== null) {\n const [fullMatch, importClause, filePath, ext] = jsxMatch;\n\n if (!filePath) {\n logger.warn(`${LOG_PREFIX_MDX_LOADER} Skipping JSX import with undefined file path`, {\n fullMatch,\n });\n continue;\n }\n\n try {\n // Read the JSX file (filePath already includes full path)\n const jsxCode = await adapter.fs.readFile(filePath);\n\n // Use esbuild to transform JSX to JavaScript\n const result = await transform(jsxCode as string, {\n loader: ext === \"tsx\" ? \"tsx\" : \"jsx\",\n jsx: \"transform\",\n jsxFactory: ESBUILD_JSX_FACTORY,\n jsxFragment: ESBUILD_JSX_FRAGMENT,\n format: \"esm\",\n });\n\n let transformed = result.code;\n\n // Add React import if not present\n if (!REACT_IMPORT_PATTERN.test(transformed)) {\n transformed = `import React from 'react';\\n${transformed}`;\n }\n\n // Write transformed code to temp file (local cache)\n const transformedFileName = `jsx-${hashString(filePath)}.mjs`;\n const transformedPath = join(context.esmCacheDir!, transformedFileName);\n await getLocalFs().writeTextFile(transformedPath, transformed);\n\n jsxTransforms.push({\n original: fullMatch,\n transformed: `import ${importClause} from \"file://${transformedPath}\";`,\n });\n\n logger.info(\n `${LOG_PREFIX_MDX_LOADER} Transformed JSX import using esbuild: ${filePath} -> ${transformedPath}`,\n );\n } catch (error) {\n logger.warn(`${LOG_PREFIX_MDX_LOADER} Failed to transform JSX import: ${filePath}`, error);\n // Keep original import if transformation fails\n }\n }\n\n // Apply all JSX transformations\n for (const { original, transformed } of jsxTransforms) {\n rewritten = rewritten.replace(original, transformed);\n }\n\n if (/\\bconst\\s+MDXLayout\\b/.test(rewritten) && !/export\\s+\\{[^}]*MDXLayout/.test(rewritten)) {\n rewritten += \"\\nexport { MDXLayout as __vfLayout };\\n\";\n }\n\n // Bundle HTTP imports via esbuild for both Node.js and Deno\n // This allows real code to run during SSR instead of no-op stubs\n const codeHasHttpImports = hasHttpImports(rewritten);\n logger.info(`${LOG_PREFIX_MDX_LOADER} HTTP imports check`, {\n hasHttpImports: codeHasHttpImports,\n codePreview: rewritten.substring(0, 500),\n });\n if (codeHasHttpImports) {\n logger.info(`${LOG_PREFIX_MDX_LOADER} Bundling HTTP imports via esbuild`);\n const { build } = await import(\"esbuild/mod.js\");\n\n // Write temp source file for esbuild to process (local cache)\n const tempSourcePath = join(context.esmCacheDir!, `temp-${hashString(rewritten)}.mjs`);\n await getLocalFs().writeTextFile(tempSourcePath, rewritten);\n\n try {\n const reactAliases = getReactAliases();\n const result = await build({\n entryPoints: [tempSourcePath],\n bundle: true,\n format: \"esm\",\n platform: \"neutral\",\n target: \"es2020\",\n write: false,\n plugins: [createHTTPPlugin()],\n // Use aliases to normalize all React imports to esm.sh URLs\n alias: reactAliases,\n // Mark external: React URLs, file:// URLs (local modules), veryfront/* (framework)\n external: [\n ...Object.values(reactAliases),\n \"file://*\",\n \"veryfront/*\",\n ],\n });\n\n const bundledCode = result.outputFiles?.[0]?.text;\n if (bundledCode) {\n rewritten = bundledCode;\n logger.info(`${LOG_PREFIX_MDX_LOADER} Successfully bundled HTTP imports`);\n }\n } catch (bundleError) {\n // Bundling failed - log error but keep original code\n // The runtime will show a clear error if the package uses browser-only APIs\n logger.error(\n `${LOG_PREFIX_MDX_LOADER} Failed to bundle HTTP imports`,\n bundleError,\n );\n } finally {\n // Clean up temp file (use unlink since rm may not exist on all adapters)\n try {\n // deno-lint-ignore no-explicit-any\n const fsAny = adapter.fs as any;\n if (typeof fsAny.rm === \"function\") {\n await fsAny.rm(tempSourcePath);\n } else if (typeof fsAny.unlink === \"function\") {\n await fsAny.unlink(tempSourcePath);\n }\n // If neither exists, just leave the temp file (it's in a cache dir anyway)\n } catch {\n // Ignore cleanup errors\n }\n }\n }\n\n // Strip Deno shim from esm.sh bundled code (prevents read-only property error)\n // Note: esbuild aliasing handles React normalization, so we only need to strip the shim\n rewritten = stripDenoShim(rewritten);\n\n const codeHash = hashString(rewritten);\n const namespace = getCacheNamespace() || \"default\";\n const compositeKey = `${namespace}:${codeHash}`;\n\n const cached = context.moduleCache.get(compositeKey);\n if (cached) return cached as MDXModule;\n\n // Check for unresolved /_vf_modules/ imports - these will fail at runtime\n const unresolvedPattern = /from\\s+[\"'](\\/?_vf_modules\\/[^\"']+)[\"']/g;\n const unresolvedMatches = [...rewritten.matchAll(unresolvedPattern)];\n if (unresolvedMatches.length > 0) {\n const unresolvedPaths = unresolvedMatches.map((m) => m[1]).slice(0, 5);\n const errorMsg = `MDX has ${unresolvedMatches.length} unresolved module imports: ${\n unresolvedPaths.join(\", \")\n }`;\n logger.error(`${LOG_PREFIX_MDX_RENDERER} ${errorMsg}`);\n throw new Error(errorMsg);\n }\n\n const nsDir = join(context.esmCacheDir, namespace);\n // Use local filesystem for cache operations (not adapter.fs which may be remote/read-only)\n const localFs = getLocalFs();\n try {\n await localFs.mkdir(nsDir, { recursive: true });\n } catch (e) {\n logger.debug(\n `${LOG_PREFIX_MDX_RENDERER} mkdir nsDir failed`,\n e instanceof Error ? e : String(e),\n );\n }\n\n const filePath = join(nsDir, `${codeHash}.mjs`);\n try {\n const stat = await localFs.stat(filePath);\n if (!stat?.isFile) {\n await localFs.writeTextFile(filePath, rewritten);\n }\n } catch (error) {\n logger.debug(`${LOG_PREFIX_MDX_RENDERER} Writing temporary MDX module file:`, error);\n await localFs.writeTextFile(filePath, rewritten);\n }\n\n logger.info(`${LOG_PREFIX_MDX_RENDERER} Loading MDX module`, {\n filePath,\n codePreview: rewritten.substring(0, 300),\n });\n\n // Set up browser globals before importing - required for libraries like\n // framer-motion that check for SVGElement during module initialization\n setupSSRGlobals();\n\n const mod = await import(`file://${filePath}?v=${codeHash}`) as Record<string, unknown> & {\n __vfLayout?: React.ComponentType;\n };\n\n const result: MDXModule = {\n ...mod,\n default: mod?.default as React.ComponentType<unknown> | undefined,\n MDXContent: mod?.MDXContent as React.ComponentType<unknown> | undefined,\n frontmatter: mod?.frontmatter as MDXFrontmatter | undefined,\n headings: mod?.headings as Array<{ text: string; level: number }> | undefined,\n title: mod?.title as string | undefined,\n description: mod?.description as string | undefined,\n layout: mod?.layout as string | boolean | React.ComponentType | undefined,\n MDXLayout: (mod?.MDXLayout || mod?.__vfLayout) as React.ComponentType<unknown> | undefined,\n MainLayout: mod?.MainLayout as React.ComponentType<unknown> | undefined,\n };\n context.moduleCache.set(compositeKey, result);\n\n const loadEnd = performance.now();\n logger.info(`${LOG_PREFIX_MDX_LOADER} loadModuleESM completed`, {\n durationMs: (loadEnd - loadStart).toFixed(1),\n });\n\n return result;\n } catch (error) {\n logger.error(`${LOG_PREFIX_MDX_RENDERER} MDX ESM load failed:`, error);\n throw error;\n }\n}\n", "import { serverLogger as logger } from \"../../logger/logger.ts\";\nimport { getEnvironmentVariable } from \"../../logger/env.ts\";\nimport type { GlobalWithVeryFrontCache } from \"@veryfront/types/global-guards.ts\";\n\nlet cacheNamespace: string | undefined =\n (globalThis as GlobalWithVeryFrontCache).__VF_CACHE_NAMESPACE__ ||\n getEnvironmentVariable(\"VF_CACHE_NAMESPACE\");\n\nexport function setCacheNamespace(namespace?: string): void {\n cacheNamespace = namespace || undefined;\n try {\n (globalThis as GlobalWithVeryFrontCache).__VF_CACHE_NAMESPACE__ = cacheNamespace;\n } catch (e) {\n logger.debug(\"[cache] setCacheNamespace failed\", e);\n }\n}\n\nexport function getCacheNamespace(): string | undefined {\n return cacheNamespace;\n}\n", "export { loadImportMap } from \"./loader.ts\";\nexport { getDefaultImportMap } from \"./default-import-map.ts\";\nexport { resolveImport } from \"./resolver.ts\";\nexport { transformImportsWithMap } from \"./transformer.ts\";\nexport { mergeImportMaps } from \"./merger.ts\";\n\nexport type { ImportMapConfig, TransformOptions } from \"./types.ts\";\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport { dirname, join } from \"std/path/mod.ts\";\nimport type { RuntimeAdapter } from \"@veryfront/platform/adapters/base.ts\";\nimport { getConfig } from \"@veryfront/config\";\nimport type { ImportMapConfig } from \"./types.ts\";\nimport { getDefaultImportMap } from \"./default-import-map.ts\";\n\nexport async function loadImportMap(\n startPath: string,\n adapter?: RuntimeAdapter,\n): Promise<ImportMapConfig> {\n let runtimeAdapter = adapter;\n if (!runtimeAdapter) {\n const { getAdapter } = await import(\"@veryfront/platform/adapters/detect.ts\");\n runtimeAdapter = await getAdapter();\n }\n\n try {\n const cfg = await getConfig(startPath, runtimeAdapter!);\n if (cfg?.resolve?.importMap && typeof cfg.resolve.importMap === \"object\") {\n return {\n imports: cfg.resolve.importMap.imports ?? {},\n scopes: cfg.resolve.importMap.scopes ?? {},\n };\n }\n } catch {\n // Config not found or invalid, fall through to file-based discovery\n }\n\n let currentPath = startPath;\n\n while (currentPath !== \"/\" && currentPath !== \"\") {\n const denoJsonPath = join(currentPath, \"deno.json\");\n\n try {\n const content = await runtimeAdapter!.fs.readFile(denoJsonPath);\n const config = JSON.parse(content);\n\n if (config.imports || config.scopes) {\n logger.debug(`Loaded import map from ${denoJsonPath}`);\n return {\n imports: config.imports ?? {},\n scopes: config.scopes ?? {},\n };\n }\n } catch {\n // deno.json not found in this directory, continue searching\n }\n\n const parent = dirname(currentPath);\n if (parent === currentPath) break; // Reached root\n currentPath = parent;\n }\n\n return getDefaultImportMap();\n}\n", "import type { ImportMapConfig } from \"./types.ts\";\nimport {\n CONTEXT_PACKAGE_NAMES,\n getContextPackageUrlSSR,\n} from \"../../build/transforms/esm/package-registry.ts\";\n\n/**\n * Get veryfront/* import mappings for SSR.\n * These map to local exports to avoid esm.sh's Deno shim which fails in actual Deno.\n */\nfunction getVeryfrontSsrImportMap(): Record<string, string> {\n return {\n \"veryfront/head\": \"veryfront/head\",\n \"veryfront/router\": \"veryfront/router\",\n \"veryfront/context\": \"veryfront/context\",\n \"veryfront/fonts\": \"veryfront/fonts\",\n };\n}\n\n/**\n * Get context package import map for SSR.\n *\n * Uses esm.sh URLs (same as browser) to ensure identical module instances.\n * This prevents hydration errors caused by different module instances having\n * different React contexts (e.g., \"No QueryClient set\" error).\n */\nfunction getContextPackageImportMapSSR(): Record<string, string> {\n const map: Record<string, string> = {};\n for (const pkg of CONTEXT_PACKAGE_NAMES) {\n map[pkg] = getContextPackageUrlSSR(pkg);\n }\n return map;\n}\n\n/**\n * Get the default import map for SSR transforms.\n *\n * React is NOT included here - it's resolved via deno.json import map.\n *\n * Context packages use esm.sh URLs (same as browser) to ensure identical\n * module instances across SSR and client, preventing hydration errors.\n */\nexport function getDefaultImportMap(): ImportMapConfig {\n return {\n imports: {\n // Veryfront exports - local resolution\n ...getVeryfrontSsrImportMap(),\n // Context packages via esm.sh URLs (matches browser)\n ...getContextPackageImportMapSSR(),\n },\n };\n}\n", "/**\n * Central package version and URL registry.\n *\n * Single source of truth for all package versions used in both SSR and browser transforms.\n *\n * KEY INSIGHT: SSR uses npm: specifiers (Deno resolves these locally), while browser\n * uses esm.sh URLs. This ensures each environment has consistent module instances.\n * Context packages (react-query, etc) use React context and MUST be single instances.\n */\n\n// Core framework versions\nexport const REACT_VERSION = \"18.3.1\";\nexport const TAILWIND_VERSION = \"4.1.8\";\n\n/**\n * Context-dependent packages that require a single module instance.\n * These packages use React context and must be the SAME instance across SSR and browser.\n *\n * IMPORTANT: Both SSR and browser use esm.sh URLs to ensure identical module instances.\n * This prevents hydration errors caused by different module instances having different\n * React contexts (e.g., \"No QueryClient set\" error).\n *\n * The `external` field lists dependencies that should be provided by the import map,\n * ensuring all packages share the same React instance.\n */\nexport const CONTEXT_PACKAGES = {\n \"@tanstack/react-query\": { version: \"5\", external: [\"react\"] },\n \"@tanstack/query-core\": { version: \"5\", external: [] },\n \"next-themes\": { version: \"0.4\", external: [\"react\"] },\n \"framer-motion\": { version: \"11\", external: [\"react\"] },\n \"react-hook-form\": { version: \"7\", external: [\"react\", \"react-dom\"] },\n} as const;\n\n/** List of context package names for iteration */\nexport const CONTEXT_PACKAGE_NAMES = Object.keys(CONTEXT_PACKAGES) as Array<\n keyof typeof CONTEXT_PACKAGES\n>;\n\n/**\n * Generate npm: specifier for SSR (Deno).\n * @deprecated Use esm.sh URLs instead for consistent module instances across SSR and browser.\n */\nexport function getNpmSpecifier(pkg: string, version: string): string {\n return `npm:${pkg}@${version}`;\n}\n\n/**\n * Generate esm.sh URL for browser.\n * Uses ?external= so browser import map provides React (ensures single instance).\n * Uses ?target=es2022 for consistent builds.\n *\n * NOTE: ?external= works in browser (import map applies to HTTP modules),\n * but NOT in Deno SSR (import map doesn't apply to HTTP modules).\n * That's why SSR uses npm: specifiers instead.\n */\nexport function getEsmShUrl(pkg: string, version: string, external?: readonly string[]): string {\n const base = `https://esm.sh/${pkg}@${version}`;\n const params = [`target=es2022`];\n if (external?.length) {\n // Use ?external= so browser import map provides these dependencies\n // This ensures all packages use the same React from the import map\n params.push(`external=${external.join(\",\")}`);\n }\n return `${base}?${params.join(\"&\")}`;\n}\n\n/**\n * Get URL for a context package - SSR version.\n * Uses esm.sh URLs (same as browser) to ensure identical module instances.\n * This prevents hydration errors from module instance mismatch.\n */\nexport function getContextPackageUrlSSR(pkg: keyof typeof CONTEXT_PACKAGES): string {\n const config = CONTEXT_PACKAGES[pkg];\n // Use esm.sh for SSR to match browser modules exactly\n return getEsmShUrl(pkg, config.version, config.external);\n}\n\n/**\n * Get URL for a context package - Browser version (esm.sh URL).\n */\nexport function getContextPackageUrlBrowser(pkg: keyof typeof CONTEXT_PACKAGES): string {\n const config = CONTEXT_PACKAGES[pkg];\n return getEsmShUrl(pkg, config.version, config.external);\n}\n\n/**\n * Get the unified esm.sh URL for a context-dependent package.\n * @deprecated Use getContextPackageUrlSSR or getContextPackageUrlBrowser instead\n */\nexport function getContextPackageUrl(pkg: keyof typeof CONTEXT_PACKAGES): string {\n // Default to browser URL for backwards compatibility\n return getContextPackageUrlBrowser(pkg);\n}\n\n/**\n * Check if a package name is a context-dependent package.\n */\nexport function isContextPackage(pkg: string): pkg is keyof typeof CONTEXT_PACKAGES {\n return pkg in CONTEXT_PACKAGES;\n}\n\n/**\n * Get React esm.sh URLs with consistent versioning.\n * Used by both SSR and browser for full-stack consistency.\n * Uses ?target=es2022 to ensure identical builds (esm.sh auto-detects target otherwise).\n */\nexport function getReactUrls() {\n return {\n react: `https://esm.sh/react@${REACT_VERSION}?target=es2022`,\n \"react-dom\": `https://esm.sh/react-dom@${REACT_VERSION}?target=es2022`,\n \"react-dom/client\": `https://esm.sh/react-dom@${REACT_VERSION}/client?target=es2022`,\n \"react-dom/server\": `https://esm.sh/react-dom@${REACT_VERSION}/server?target=es2022`,\n \"react/jsx-runtime\": `https://esm.sh/react@${REACT_VERSION}/jsx-runtime?target=es2022`,\n \"react/jsx-dev-runtime\": `https://esm.sh/react@${REACT_VERSION}/jsx-dev-runtime?target=es2022`,\n };\n}\n\n/**\n * Get complete React import map for esm.sh.\n * This is used by BOTH SSR and browser to ensure identical React instances,\n * preventing hydration mismatches.\n *\n * Works in Deno, Node, and Bun since esm.sh URLs are standard HTTPS imports.\n * Uses ?target=es2022 to ensure identical builds across all runtimes.\n */\nexport function getReactImportMap(): Record<string, string> {\n return {\n ...getReactUrls(),\n // Prefix match for any react/* subpath imports\n \"react/\": `https://esm.sh/react@${REACT_VERSION}/?target=es2022`,\n };\n}\n\n/**\n * Get the complete import map for context packages.\n * Returns a map of bare specifiers to esm.sh URLs.\n */\nexport function getContextPackageImportMap(): Record<string, string> {\n const map: Record<string, string> = {};\n for (const pkg of CONTEXT_PACKAGE_NAMES) {\n map[pkg] = getContextPackageUrl(pkg);\n }\n return map;\n}\n\n/**\n * Get Tailwind CSS import map entries.\n * Pins all tailwindcss imports to a unified version.\n * Uses ?target=es2022 for consistent builds.\n */\nexport function getTailwindImportMap(): Record<string, string> {\n const tw = TAILWIND_VERSION;\n return {\n tailwindcss: `https://esm.sh/tailwindcss@${tw}?target=es2022`,\n \"tailwindcss/\": `https://esm.sh/tailwindcss@${tw}/?target=es2022`,\n \"tailwindcss/plugin\": `https://esm.sh/tailwindcss@${tw}/plugin?target=es2022`,\n \"tailwindcss/colors\": `https://esm.sh/tailwindcss@${tw}/colors?target=es2022`,\n \"tailwindcss/defaultTheme\": `https://esm.sh/tailwindcss@${tw}/defaultTheme?target=es2022`,\n \"tailwindcss/lib/util/flattenColorPalette\":\n `https://esm.sh/tailwindcss@${tw}/lib/util/flattenColorPalette?target=es2022`,\n };\n}\n", "import type { ImportMapConfig } from \"./types.ts\";\n\n/**\n * Extract package name from esm.sh URL.\n * E.g., \"https://esm.sh/@tanstack/react-query@5?external=react\" -> \"@tanstack/react-query\"\n */\nfunction extractEsmShPackage(url: string): string | null {\n if (!url.startsWith(\"https://esm.sh/\") && !url.startsWith(\"http://esm.sh/\")) {\n return null;\n }\n\n try {\n const parsed = new URL(url);\n let pathname = parsed.pathname.slice(1); // Remove leading /\n\n // Remove version prefix like /v135/\n pathname = pathname.replace(/^v\\d+\\//, \"\");\n\n // Extract package name (before @version if present)\n // Handle scoped packages like @tanstack/react-query@5\n let packageName: string;\n if (pathname.startsWith(\"@\")) {\n // Scoped package: @scope/name@version\n const parts = pathname.split(\"/\");\n const scopedName = parts.slice(0, 2).join(\"/\"); // @scope/name\n // Remove version suffix\n packageName = scopedName.replace(/@[\\d.]+.*$/, \"\");\n } else {\n // Regular package: name@version\n const parts = pathname.split(\"@\");\n packageName = (parts[0] ?? \"\").split(\"/\")[0] ?? \"\";\n }\n\n return packageName || null;\n } catch {\n return null;\n }\n}\n\nexport function resolveImport(\n specifier: string,\n importMap: ImportMapConfig,\n scope?: string,\n): string {\n if (scope && importMap.scopes?.[scope]?.[specifier]) {\n return importMap.scopes[scope][specifier];\n }\n\n if (importMap.imports?.[specifier]) {\n return importMap.imports[specifier];\n }\n\n // Handle esm.sh URLs - normalize package version but preserve subpath\n if (specifier.startsWith(\"https://esm.sh/\") || specifier.startsWith(\"http://esm.sh/\")) {\n const esmShPackage = extractEsmShPackage(specifier);\n // Check scoped imports first, then global imports\n const scopedMapping = scope && esmShPackage && importMap.scopes?.[scope]?.[esmShPackage];\n const globalMapping = esmShPackage && importMap.imports?.[esmShPackage];\n const mapping = scopedMapping || globalMapping;\n if (mapping) {\n // Extract subpath from original URL\n const url = new URL(specifier);\n const pathname = url.pathname.slice(1).replace(/^v\\d+\\//, \"\"); // Remove leading / and version prefix\n\n // Find where the subpath starts (after package@version)\n let subpath = \"\";\n\n if (pathname.startsWith(\"@\")) {\n // Scoped package: @scope/name@version or @scope/name@version/subpath\n const parts = pathname.split(\"/\");\n if (parts.length > 2) {\n // @scope/name@version/subpath - has more than scope/name\n const packageParts = parts.slice(0, 2).join(\"/\"); // @scope/name\n const afterPackage = pathname.slice(packageParts.length);\n // Remove version suffix to get subpath\n // afterPackage is like \"@5/subpath\" or \"@5.1.0/subpath/file\"\n const versionMatch = afterPackage.match(/^@[^/]+(.*)$/);\n subpath = versionMatch?.[1] ?? \"\";\n }\n // If parts.length <= 2, it's just @scope/name@version with no subpath\n } else {\n // Non-scoped package: name@version or name@version/subpath\n if (pathname.includes(\"/\")) {\n // Has a subpath: name@version/subpath\n const packageWithVersion = pathname.split(\"/\")[0];\n const restPath = pathname.slice(packageWithVersion!.length);\n if (restPath.startsWith(\"/\")) {\n subpath = restPath;\n }\n }\n }\n\n // Return mapped URL with preserved subpath\n return subpath ? mapping + subpath : mapping;\n }\n }\n\n if (\n specifier.endsWith(\".js\") || specifier.endsWith(\".mjs\") ||\n specifier.endsWith(\".cjs\")\n ) {\n const base = specifier.replace(/\\.(m|c)?js$/, \"\");\n if (importMap.imports?.[base]) {\n return importMap.imports[base];\n }\n }\n\n if (importMap.imports) {\n for (const [key, value] of Object.entries(importMap.imports)) {\n if (key.endsWith(\"/\") && specifier.startsWith(key)) {\n return value + specifier.slice(key.length);\n }\n }\n }\n\n return specifier;\n}\n", "import type { ImportMapConfig, TransformOptions } from \"./types.ts\";\nimport { resolveImport } from \"./resolver.ts\";\n\n/**\n * Check if specifier should be processed by the import map.\n * - Bare imports (no path prefix): only if resolveBare option is set\n * - esm.sh URLs: always process (to normalize package instances)\n * - Other URLs/paths: process via import map\n */\nfunction shouldResolve(specifier: string, options?: TransformOptions): boolean {\n // Always process esm.sh URLs to normalize them\n if (specifier.startsWith(\"https://esm.sh/\") || specifier.startsWith(\"http://esm.sh/\")) {\n return true;\n }\n\n const isBare = !specifier.startsWith(\"http\") &&\n !specifier.startsWith(\"/\") &&\n !specifier.startsWith(\".\");\n\n // Only process bare imports if resolveBare is set\n if (isBare && !options?.resolveBare) {\n return false;\n }\n\n return true;\n}\n\nexport function transformImportsWithMap(\n code: string,\n importMap: ImportMapConfig,\n scope?: string,\n options?: TransformOptions,\n): string {\n let transformedCode = code;\n\n transformedCode = transformedCode.replace(\n /((?:import|export)\\s+(?:[\\w,{}\\s*]+\\s+from\\s+)?|export\\s+(?:\\*|\\{[^}]+\\})\\s+from\\s+)[\"']([^\"']+)[\"']/g,\n (_match, prefix, specifier) => {\n if (!shouldResolve(specifier, options)) {\n return `${prefix}\"${specifier}\"`;\n }\n const resolved = resolveImport(specifier, importMap, scope);\n return `${prefix}\"${resolved}\"`;\n },\n );\n\n transformedCode = transformedCode.replace(\n /from\\s+[\"']([^\"']+)[\"']/g,\n (match, specifier) => {\n if (!shouldResolve(specifier, options)) {\n return match;\n }\n const resolved = resolveImport(specifier, importMap, scope);\n return `from \"${resolved}\"`;\n },\n );\n\n transformedCode = transformedCode.replace(\n /import\\s*\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/g,\n (_match, specifier) => {\n const resolved = resolveImport(specifier, importMap, scope);\n return `import(\"${resolved}\")`;\n },\n );\n\n return transformedCode;\n}\n", "import type { ImportMapConfig } from \"./types.ts\";\n\nexport function mergeImportMaps(...maps: ImportMapConfig[]): ImportMapConfig {\n const imports: Record<string, string> = {};\n const scopes: Record<string, Record<string, string>> = {};\n\n for (const map of maps) {\n if (map.imports) {\n Object.assign(imports, map.imports);\n }\n\n if (map.scopes) {\n for (const [scope, scopeImports] of Object.entries(map.scopes)) {\n if (!scopes[scope]) {\n scopes[scope] = {};\n }\n Object.assign(scopes[scope], scopeImports);\n }\n }\n }\n\n return { imports, scopes };\n}\n", "export type { TransformContext, TransformOptions } from \"./esm/types.ts\";\nexport { needsTransform, transformToESM } from \"./esm/index.ts\";\n\nexport {\n addDepsToEsmShUrls,\n computeContentHash,\n getLoaderFromPath,\n resolvePathAliases,\n resolveReactImports,\n resolveRelativeImports,\n rewriteBareImports,\n rewriteVendorImports,\n} from \"./esm/index.ts\";\n", "// Export new pipeline transformToESM (drop-in replacement for legacy transform-core)\nexport { runPipeline, TransformStage, transformToESM } from \"../pipeline/index.ts\";\n\n// Export legacy types for backwards compatibility\nexport type { TransformContext, TransformOptions } from \"./types.ts\";\n\n// Export pipeline types\nexport type {\n PipelineConfig,\n TransformContext as PipelineContext,\n TransformOptions as PipelineOptions,\n TransformPlugin,\n TransformResult,\n} from \"../pipeline/types.ts\";\n\nexport { needsTransform } from \"./transform-utils.ts\";\n\nexport { computeContentHash, getLoaderFromPath } from \"./transform-utils.ts\";\nexport { addDepsToEsmShUrls, resolveReactImports } from \"./react-imports.ts\";\nexport { resolvePathAliases, resolveRelativeImports } from \"./path-resolver.ts\";\nexport { rewriteBareImports, rewriteVendorImports } from \"./import-rewriter.ts\";\n", "/**\n * ESM Transform Pipeline Orchestrator.\n *\n * Executes transform plugins in stage order, tracking timing and handling caching.\n * This replaces the monolithic transform-core.ts with a modular, testable architecture.\n */\n\nimport {\n generateCacheKey,\n getCachedTransform,\n setCachedTransform,\n} from \"../esm/transform-cache.ts\";\nimport { rendererLogger as logger } from \"@veryfront/utils\";\nimport { createTransformContext, formatTimingLog, recordStageTiming } from \"./context.ts\";\nimport type {\n PipelineConfig,\n TransformOptions,\n TransformPlugin,\n TransformResult,\n} from \"./types.ts\";\nimport {\n compilePlugin,\n finalizePlugin,\n parsePlugin,\n resolveAliasesPlugin,\n resolveBarePlugin,\n resolveContextPlugin,\n resolveReactPlugin,\n resolveRelativePlugin,\n ssrHttpStubPlugin,\n} from \"./stages/index.ts\";\n\n/**\n * Default SSR pipeline configuration.\n * Runs all stages in order with SSR-specific resolution.\n */\nconst SSR_PIPELINE: TransformPlugin[] = [\n parsePlugin,\n compilePlugin,\n resolveAliasesPlugin,\n resolveReactPlugin,\n resolveContextPlugin,\n ssrHttpStubPlugin, // Stub browser-only HTTP imports during SSR\n resolveRelativePlugin,\n resolveBarePlugin,\n finalizePlugin,\n];\n\n/**\n * Default browser pipeline configuration.\n * Runs all stages in order with browser-specific resolution.\n */\nconst BROWSER_PIPELINE: TransformPlugin[] = [\n parsePlugin,\n compilePlugin,\n resolveAliasesPlugin,\n resolveReactPlugin,\n resolveContextPlugin,\n resolveRelativePlugin,\n resolveBarePlugin,\n finalizePlugin,\n];\n\n/**\n * Run the transform pipeline on source code.\n *\n * @param source - Source code to transform\n * @param filePath - Path to the source file\n * @param projectDir - Project root directory\n * @param options - Transform options\n * @param config - Optional pipeline configuration\n * @returns Transform result with code and timing info\n */\nexport async function runPipeline(\n source: string,\n filePath: string,\n projectDir: string,\n options: TransformOptions,\n config?: PipelineConfig,\n): Promise<TransformResult> {\n const transformStart = performance.now();\n\n // Create transform context\n const ctx = await createTransformContext(source, filePath, projectDir, options);\n ctx.debug = config?.debug ?? false;\n\n // Generate cache key and check cache\n const cacheKey = generateCacheKey(\n options.projectId,\n filePath,\n ctx.contentHash,\n options.ssr ?? false,\n );\n const cached = getCachedTransform(cacheKey);\n\n if (cached) {\n return {\n code: cached.code,\n contentHash: ctx.contentHash,\n timing: new Map(),\n totalMs: performance.now() - transformStart,\n cached: true,\n };\n }\n\n // Select pipeline based on target\n const basePipeline = options.ssr ? SSR_PIPELINE : BROWSER_PIPELINE;\n\n // Merge with custom plugins if provided\n const pipeline = config?.plugins\n ? [...basePipeline, ...config.plugins].sort((a, b) => a.stage - b.stage)\n : basePipeline;\n\n // Execute pipeline stages\n for (const plugin of pipeline) {\n // Check condition if present\n if (plugin.condition && !plugin.condition(ctx)) {\n continue;\n }\n\n const stageStart = performance.now();\n\n try {\n ctx.code = await plugin.transform(ctx);\n } catch (error) {\n logger.error(`[PIPELINE:${plugin.name}] Stage failed`, {\n file: filePath.slice(-60),\n stage: plugin.name,\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n\n recordStageTiming(ctx, plugin.stage, stageStart);\n }\n\n // Cache the result\n setCachedTransform(cacheKey, ctx.code, ctx.contentHash);\n\n const totalMs = performance.now() - transformStart;\n\n // Log timing in debug mode\n if (ctx.debug) {\n logger.debug(\"[PIPELINE] Transform complete\", formatTimingLog(ctx));\n }\n\n return {\n code: ctx.code,\n contentHash: ctx.contentHash,\n timing: ctx.timing,\n totalMs,\n cached: false,\n };\n}\n\n/**\n * Transform source to ESM.\n *\n * Drop-in replacement for the legacy transformToESM function.\n * Returns just the code string for backwards compatibility.\n *\n * @param source - Source code to transform\n * @param filePath - Path to the source file\n * @param projectDir - Project root directory\n * @param _adapter - Runtime adapter (unused, kept for API compatibility)\n * @param options - Transform options\n * @returns Transformed ESM code\n */\nexport async function transformToESM(\n source: string,\n filePath: string,\n projectDir: string,\n _adapter: unknown,\n options: TransformOptions,\n): Promise<string> {\n // CSS and JSON files don't need JS transforms - return as-is\n if (filePath.endsWith(\".css\") || filePath.endsWith(\".json\")) {\n return source;\n }\n\n const result = await runPipeline(source, filePath, projectDir, options);\n return result.code;\n}\n\n/**\n * Get available plugins for a target.\n */\nexport function getDefaultPlugins(ssr: boolean): TransformPlugin[] {\n return ssr ? [...SSR_PIPELINE] : [...BROWSER_PIPELINE];\n}\n\n// Re-export types for consumers\nexport type {\n PipelineConfig,\n TransformContext,\n TransformOptions,\n TransformPlugin,\n TransformResult,\n TransformTarget,\n} from \"./types.ts\";\n\nexport { TransformStage } from \"./types.ts\";\n\n// Re-export context utilities\nexport {\n createTransformContext,\n createTransformContextSync,\n isBrowser,\n isMDX,\n isSSR,\n isTypeScript,\n} from \"./context.ts\";\n", "/**\n * Transform Cache with Redis Support\n *\n * Caches ESM-transformed code with support for:\n * - In-memory cache (default, with LRU eviction)\n * - Redis cache (shared across pods, reduces duplicate transforms)\n */\n\nimport { registerCache } from \"../../../core/memory/index.ts\";\nimport { logger } from \"../../../core/utils/logger/logger.ts\";\nimport {\n getRedisClient,\n isRedisConfigured,\n type RedisClient,\n} from \"../../../core/utils/redis-client.ts\";\n\nconst DEFAULT_TTL_MS = 5 * 60 * 1000; // 5 minutes\nconst DEFAULT_TTL_SECONDS = 300; // 5 minutes for Redis\nconst MAX_ENTRIES = 2_000;\nconst CLEANUP_INTERVAL_MS = 60000; // 1 minute\nconst REDIS_KEY_PREFIX = \"veryfront:transform:\";\n\nexport interface TransformCacheEntry {\n code: string;\n hash: string;\n timestamp: number;\n expiresAt: number;\n}\n\n// In-memory cache (used as primary or fallback)\nconst memoryCache = new Map<string, TransformCacheEntry>();\n\n// Redis state\nlet redisEnabled = false;\nlet redisClient: RedisClient | null = null;\nlet redisInitialized = false;\nlet redisInitPromise: Promise<void> | null = null;\n\n// Register with memory profiler\nregisterCache(\"transform-cache\", () => ({\n name: \"transform-cache\",\n entries: memoryCache.size,\n maxEntries: MAX_ENTRIES,\n redisEnabled,\n}));\n\n// Periodic cleanup of expired entries to prevent memory bloat\nlet cleanupInterval: ReturnType<typeof setInterval> | undefined;\n\nfunction shouldDisableInterval(): boolean {\n if ((globalThis as Record<string, unknown>).__vfDisableLruInterval === true) {\n return true;\n }\n try {\n if (typeof Deno !== \"undefined\" && Deno.env) {\n return Deno.env.get(\"VF_DISABLE_LRU_INTERVAL\") === \"1\";\n }\n } catch {\n // Ignore env access errors\n }\n return false;\n}\n\nfunction startPeriodicCleanup(): void {\n if (shouldDisableInterval()) {\n return;\n }\n if (cleanupInterval) return;\n\n cleanupInterval = setInterval(() => {\n const now = Date.now();\n for (const [key, entry] of memoryCache) {\n if (entry.expiresAt <= now) {\n memoryCache.delete(key);\n }\n }\n }, CLEANUP_INTERVAL_MS);\n\n // Unref the timer so it doesn't prevent process exit or cause test leaks\n if (typeof Deno !== \"undefined\" && \"unrefTimer\" in Deno) {\n Deno.unrefTimer(cleanupInterval);\n }\n}\n\n// Start cleanup on module load\nstartPeriodicCleanup();\n\nexport function stopPeriodicCleanup(): void {\n if (cleanupInterval) {\n clearInterval(cleanupInterval);\n cleanupInterval = undefined;\n }\n}\n\n/**\n * Initialize Redis for transform cache.\n * Call this at startup if you want to enable Redis caching.\n */\nexport async function initializeRedisCache(): Promise<boolean> {\n if (redisInitialized) {\n return redisEnabled;\n }\n\n if (redisInitPromise) {\n await redisInitPromise;\n return redisEnabled;\n }\n\n redisInitPromise = (async () => {\n if (!isRedisConfigured()) {\n logger.debug(\"[TransformCache] Redis not configured, using memory cache\");\n redisInitialized = true;\n return;\n }\n\n try {\n redisClient = await getRedisClient();\n redisEnabled = true;\n redisInitialized = true;\n logger.info(\"[TransformCache] Redis cache enabled\");\n } catch (error) {\n logger.warn(\"[TransformCache] Redis unavailable, falling back to memory cache\", { error });\n redisEnabled = false;\n redisInitialized = true;\n }\n })();\n\n await redisInitPromise;\n redisInitPromise = null;\n return redisEnabled;\n}\n\n/**\n * Check if Redis caching is enabled.\n */\nexport function isRedisCacheEnabled(): boolean {\n return redisEnabled && redisClient !== null;\n}\n\nexport function generateCacheKey(\n projectId: string | undefined,\n filePath: string,\n contentHash: string,\n ssr: boolean = false,\n): string {\n const projectKey = projectId?.trim() || \"default\";\n const ssrKey = ssr ? \"ssr\" : \"browser\";\n return `${projectKey}:${filePath}:${contentHash}:${ssrKey}`;\n}\n\nfunction redisKey(key: string): string {\n return `${REDIS_KEY_PREFIX}${key}`;\n}\n\n/**\n * Get cached transform, checking Redis first (if enabled), then memory.\n */\nexport async function getCachedTransformAsync(\n key: string,\n): Promise<TransformCacheEntry | undefined> {\n // Try Redis first if enabled\n if (redisEnabled && redisClient) {\n try {\n const raw = await redisClient.get(redisKey(key));\n if (raw) {\n const entry = JSON.parse(raw) as TransformCacheEntry;\n // Also store in memory cache for faster subsequent access\n memoryCache.set(key, entry);\n return entry;\n }\n } catch (error) {\n logger.debug(\"[TransformCache] Redis get failed, trying memory\", { key, error });\n }\n }\n\n // Fall back to memory cache\n return getCachedTransform(key);\n}\n\n/**\n * Get cached transform from memory (synchronous).\n */\nexport function getCachedTransform(key: string): TransformCacheEntry | undefined {\n const entry = memoryCache.get(key);\n if (!entry) {\n return undefined;\n }\n\n if (entry.expiresAt <= Date.now()) {\n memoryCache.delete(key);\n return undefined;\n }\n\n return entry;\n}\n\n/**\n * Set cached transform in both Redis (if enabled) and memory.\n */\nexport async function setCachedTransformAsync(\n key: string,\n code: string,\n hash: string,\n ttl: number = DEFAULT_TTL_MS,\n): Promise<void> {\n const now = Date.now();\n const entry: TransformCacheEntry = {\n code,\n hash,\n timestamp: now,\n expiresAt: now + Math.max(1, ttl),\n };\n\n // Store in memory cache\n memoryCache.set(key, entry);\n\n if (memoryCache.size > MAX_ENTRIES) {\n pruneMemoryCache();\n }\n\n // Store in Redis if enabled\n if (redisEnabled && redisClient) {\n try {\n const ttlSeconds = Math.ceil(ttl / 1000);\n await redisClient.set(redisKey(key), JSON.stringify(entry), {\n EX: ttlSeconds > 0 ? ttlSeconds : DEFAULT_TTL_SECONDS,\n });\n } catch (error) {\n logger.debug(\"[TransformCache] Redis set failed\", { key, error });\n }\n }\n}\n\n/**\n * Set cached transform (synchronous, memory only).\n * Use setCachedTransformAsync for Redis support.\n */\nexport function setCachedTransform(\n key: string,\n code: string,\n hash: string,\n ttl: number = DEFAULT_TTL_MS,\n): void {\n const now = Date.now();\n memoryCache.set(key, {\n code,\n hash,\n timestamp: now,\n expiresAt: now + Math.max(1, ttl),\n });\n\n if (memoryCache.size > MAX_ENTRIES) {\n pruneMemoryCache();\n }\n\n // Fire-and-forget Redis set if enabled\n if (redisEnabled && redisClient) {\n const entry: TransformCacheEntry = {\n code,\n hash,\n timestamp: now,\n expiresAt: now + Math.max(1, ttl),\n };\n const ttlSeconds = Math.ceil(ttl / 1000);\n redisClient\n .set(redisKey(key), JSON.stringify(entry), {\n EX: ttlSeconds > 0 ? ttlSeconds : DEFAULT_TTL_SECONDS,\n })\n .catch((error) => {\n logger.debug(\"[TransformCache] Redis set failed\", { key, error });\n });\n }\n}\n\nexport function destroyTransformCache(): void {\n memoryCache.clear();\n}\n\nfunction pruneMemoryCache(): void {\n const entries = Array.from(memoryCache.entries()).sort(\n ([, a], [, b]) => a.timestamp - b.timestamp,\n );\n\n const excess = memoryCache.size - MAX_ENTRIES;\n for (let i = 0; i < excess; i++) {\n const [key] = entries[i]!;\n memoryCache.delete(key);\n }\n}\n\n/**\n * Get cache statistics.\n */\nexport function getTransformCacheStats(): {\n memoryEntries: number;\n maxEntries: number;\n redisEnabled: boolean;\n} {\n return {\n memoryEntries: memoryCache.size,\n maxEntries: MAX_ENTRIES,\n redisEnabled,\n };\n}\n", "/**\n * Memory Management Module\n *\n * Exports memory profiling and monitoring utilities\n */\n\nexport {\n type CacheStats,\n checkMemoryPressure,\n clearAllCaches,\n forceGC,\n type GCStats,\n getCacheStats,\n getHeapStats,\n getMemorySnapshot,\n type HeapStats,\n type MemorySnapshot,\n registerCache,\n setHeapWarningThreshold,\n startMemoryMonitoring,\n stopMemoryMonitoring,\n unregisterCache,\n} from \"./profiler.ts\";\n", "/**\n * Memory Profiler\n *\n * Advanced memory profiling utilities for monitoring heap usage,\n * tracking cache sizes, and detecting memory leaks.\n */\n\nimport { rendererLogger as logger } from \"@veryfront/utils\";\n\n// Registry of all tracked caches for memory monitoring\nconst cacheRegistry = new Map<string, () => CacheStats>();\n\nexport interface CacheStats {\n name: string;\n entries: number;\n maxEntries?: number;\n estimatedSizeBytes?: number;\n}\n\nexport interface HeapStats {\n usedHeapSizeMB: number;\n totalHeapSizeMB: number;\n heapSizeLimitMB: number;\n externalMemoryMB: number;\n heapUsedPercent: number;\n rss?: number;\n}\n\nexport interface MemorySnapshot {\n timestamp: string;\n heap: HeapStats;\n caches: CacheStats[];\n totalCacheEntries: number;\n gcStats?: GCStats;\n}\n\nexport interface GCStats {\n majorGCs: number;\n minorGCs: number;\n lastGCDurationMs?: number;\n}\n\n// Tracking for periodic memory logging\nlet memoryCheckInterval: ReturnType<typeof setInterval> | undefined;\nlet lastHeapUsed = 0;\nlet heapGrowthWarningThreshold = 0.8; // 80% of heap limit\n\n/**\n * Register a cache for memory monitoring\n */\nexport function registerCache(name: string, getStats: () => CacheStats): void {\n cacheRegistry.set(name, getStats);\n logger.debug(`[MemoryProfiler] Registered cache: ${name}`);\n}\n\n/**\n * Unregister a cache from memory monitoring\n */\nexport function unregisterCache(name: string): void {\n cacheRegistry.delete(name);\n}\n\n/**\n * Get current heap statistics\n */\nexport function getHeapStats(): HeapStats {\n // Deno uses V8, access memory info via Deno.memoryUsage()\n const mem = Deno.memoryUsage();\n\n const usedHeapSizeMB = mem.heapUsed / (1024 * 1024);\n const totalHeapSizeMB = mem.heapTotal / (1024 * 1024);\n\n // V8 default max heap is ~4GB on 64-bit, but can be configured\n // Use --max-old-space-size value if available, otherwise estimate\n const heapSizeLimitMB = getConfiguredHeapLimit();\n const externalMemoryMB = mem.external / (1024 * 1024);\n const heapUsedPercent = (usedHeapSizeMB / heapSizeLimitMB) * 100;\n\n return {\n usedHeapSizeMB: Math.round(usedHeapSizeMB * 100) / 100,\n totalHeapSizeMB: Math.round(totalHeapSizeMB * 100) / 100,\n heapSizeLimitMB,\n externalMemoryMB: Math.round(externalMemoryMB * 100) / 100,\n heapUsedPercent: Math.round(heapUsedPercent * 100) / 100,\n rss: Math.round(mem.rss / (1024 * 1024) * 100) / 100,\n };\n}\n\n/**\n * Get configured heap limit from V8 flags or environment\n */\nfunction getConfiguredHeapLimit(): number {\n // Check for --max-old-space-size in Deno.args or environment\n const args = Deno.args.join(\" \");\n const envHeapSize = Deno.env.get(\"V8_MAX_OLD_SPACE_SIZE\");\n const denoV8Flags = Deno.env.get(\"DENO_V8_FLAGS\");\n\n // Parse from args: --v8-flags=--max-old-space-size=2800\n const v8FlagsMatch = args.match(/--max-old-space-size=(\\d+)/);\n if (v8FlagsMatch && v8FlagsMatch[1]) {\n return parseInt(v8FlagsMatch[1], 10);\n }\n\n // Parse from DENO_V8_FLAGS environment variable\n if (denoV8Flags) {\n const denoV8Match = denoV8Flags.match(/--max-old-space-size=(\\d+)/);\n if (denoV8Match && denoV8Match[1]) {\n return parseInt(denoV8Match[1], 10);\n }\n }\n\n // Parse from V8_MAX_OLD_SPACE_SIZE environment\n if (envHeapSize) {\n return parseInt(envHeapSize, 10);\n }\n\n // Default V8 heap limit (approximately 4GB on 64-bit systems)\n // But in containers it's often lower based on cgroup limits\n return 5120; // Match values.yaml configuration\n}\n\n/**\n * Get all registered cache statistics\n */\nexport function getCacheStats(): CacheStats[] {\n const stats: CacheStats[] = [];\n for (const [name, getStats] of cacheRegistry) {\n try {\n stats.push(getStats());\n } catch (err) {\n logger.warn(`[MemoryProfiler] Failed to get stats for cache ${name}:`, err);\n stats.push({ name, entries: -1 });\n }\n }\n return stats;\n}\n\n/**\n * Get complete memory snapshot\n */\nexport function getMemorySnapshot(): MemorySnapshot {\n const heap = getHeapStats();\n const caches = getCacheStats();\n const totalCacheEntries = caches.reduce((sum, c) => sum + Math.max(0, c.entries), 0);\n\n return {\n timestamp: new Date().toISOString(),\n heap,\n caches,\n totalCacheEntries,\n };\n}\n\n/**\n * Force garbage collection if available\n * Note: Requires --expose-gc flag in V8\n */\nexport async function forceGC(): Promise<boolean> {\n try {\n // Deno doesn't expose gc() directly, but we can try to trigger it\n // by allocating and releasing a large buffer\n const size = 100 * 1024 * 1024; // 100MB\n const buffer = new Uint8Array(size);\n buffer.fill(0);\n // Let it go out of scope and wait a bit\n await new Promise((resolve) => setTimeout(resolve, 100));\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Start periodic memory monitoring\n */\nexport function startMemoryMonitoring(intervalMs = 30000): void {\n if (memoryCheckInterval) {\n clearInterval(memoryCheckInterval);\n }\n\n logger.info(`[MemoryProfiler] Starting memory monitoring (interval: ${intervalMs}ms)`);\n\n memoryCheckInterval = setInterval(() => {\n const snapshot = getMemorySnapshot();\n const heap = snapshot.heap;\n\n // Log memory status\n logger.info(\"[MemoryProfiler] Memory status\", {\n heapUsedMB: heap.usedHeapSizeMB,\n heapTotalMB: heap.totalHeapSizeMB,\n heapLimitMB: heap.heapSizeLimitMB,\n heapUsedPercent: heap.heapUsedPercent,\n rssMB: heap.rss,\n totalCacheEntries: snapshot.totalCacheEntries,\n });\n\n // Warn if heap usage is growing dangerously\n if (heap.heapUsedPercent > heapGrowthWarningThreshold * 100) {\n logger.warn(\"[MemoryProfiler] HIGH MEMORY USAGE\", {\n heapUsedPercent: heap.heapUsedPercent,\n threshold: heapGrowthWarningThreshold * 100,\n caches: snapshot.caches.map((c) => `${c.name}: ${c.entries}`).join(\", \"),\n });\n }\n\n // Track heap growth rate\n const heapGrowthMB = heap.usedHeapSizeMB - lastHeapUsed;\n if (heapGrowthMB > 100) {\n logger.warn(\"[MemoryProfiler] Rapid heap growth detected\", {\n growthMB: heapGrowthMB,\n intervalMs,\n });\n }\n lastHeapUsed = heap.usedHeapSizeMB;\n }, intervalMs);\n}\n\n/**\n * Stop periodic memory monitoring\n */\nexport function stopMemoryMonitoring(): void {\n if (memoryCheckInterval) {\n clearInterval(memoryCheckInterval);\n memoryCheckInterval = undefined;\n logger.info(\"[MemoryProfiler] Memory monitoring stopped\");\n }\n}\n\n/**\n * Set heap growth warning threshold (0-1)\n */\nexport function setHeapWarningThreshold(threshold: number): void {\n heapGrowthWarningThreshold = Math.max(0.1, Math.min(0.99, threshold));\n}\n\n/**\n * Clear all registered caches (emergency memory relief)\n */\nexport function clearAllCaches(): void {\n logger.warn(\"[MemoryProfiler] Clearing all registered caches\");\n // We can't clear the caches directly from here, but we can log what should be cleared\n const caches = getCacheStats();\n for (const cache of caches) {\n logger.info(`[MemoryProfiler] Cache to clear: ${cache.name} (${cache.entries} entries)`);\n }\n}\n\n/**\n * Check if memory is critically low and trigger emergency measures\n */\nexport function checkMemoryPressure(): {\n critical: boolean;\n warning: boolean;\n heapUsedPercent: number;\n} {\n const heap = getHeapStats();\n const critical = heap.heapUsedPercent > 90;\n const warning = heap.heapUsedPercent > 75;\n\n if (critical) {\n logger.error(\"[MemoryProfiler] CRITICAL MEMORY PRESSURE\", {\n heapUsedPercent: heap.heapUsedPercent,\n usedMB: heap.usedHeapSizeMB,\n limitMB: heap.heapSizeLimitMB,\n });\n }\n\n return {\n critical,\n warning,\n heapUsedPercent: heap.heapUsedPercent,\n };\n}\n\n// Export for use in cache implementations\nexport type { MemorySnapshot as MemorySnapshotType };\n", "/**\n * Shared Redis Client Utility\n *\n * Provides a singleton Redis client with connection pooling,\n * automatic reconnection, and graceful fallback handling.\n */\n\nimport { logger } from \"./logger/logger.ts\";\n\nexport interface RedisClient {\n connect(): Promise<void>;\n disconnect(): Promise<void>;\n get(key: string): Promise<string | null>;\n set(key: string, value: string, options?: { EX?: number }): Promise<string | null>;\n del(key: string | string[]): Promise<number>;\n scan(\n cursor: number,\n options?: { MATCH?: string; COUNT?: number },\n ): Promise<{ cursor: number; keys: string[] }>;\n expire(key: string, seconds: number): Promise<number>;\n on?(event: string, listener: (...args: unknown[]) => void): void;\n isOpen?: boolean;\n}\n\nexport interface RedisClientOptions {\n url?: string;\n /** Connection timeout in milliseconds */\n connectTimeout?: number;\n /** Enable auto-reconnect on disconnect */\n autoReconnect?: boolean;\n}\n\n// Singleton client instance\nlet sharedClient: RedisClient | null = null;\nlet connectionPromise: Promise<RedisClient> | null = null;\nlet isConnecting = false;\nlet connectionFailed = false;\nlet lastConnectionAttempt = 0;\n\nconst RECONNECT_DELAY_MS = 5000; // Wait 5 seconds before retrying failed connection\n\n/**\n * Get or create the shared Redis client.\n * Uses a singleton pattern to avoid multiple connections.\n */\nexport async function getRedisClient(options: RedisClientOptions = {}): Promise<RedisClient> {\n // If we have a connected client, return it\n if (sharedClient && sharedClient.isOpen !== false) {\n return sharedClient;\n }\n\n // If connection recently failed, don't retry immediately\n if (connectionFailed && Date.now() - lastConnectionAttempt < RECONNECT_DELAY_MS) {\n throw new Error(\"[Redis] Connection recently failed, waiting before retry\");\n }\n\n // If already connecting, wait for that promise\n if (isConnecting && connectionPromise) {\n return connectionPromise;\n }\n\n // Start new connection\n isConnecting = true;\n lastConnectionAttempt = Date.now();\n\n connectionPromise = createClient(options);\n\n try {\n sharedClient = await connectionPromise;\n connectionFailed = false;\n logger.info(\"[Redis] Connected successfully\");\n return sharedClient;\n } catch (error) {\n connectionFailed = true;\n sharedClient = null;\n throw error;\n } finally {\n isConnecting = false;\n connectionPromise = null;\n }\n}\n\n/**\n * Create a new Redis client instance.\n */\nasync function createClient(options: RedisClientOptions): Promise<RedisClient> {\n let createClientFn: ((opts: { url?: string }) => RedisClient) | undefined;\n\n try {\n // Dynamic import to avoid static analysis issues with Deno\n const redisClientModule = [\"npm:@redis/client\", \"@1.5.8\"].join(\"\");\n const mod = await import(redisClientModule);\n createClientFn = mod.createClient as unknown as (opts: { url?: string }) => RedisClient;\n } catch {\n throw new Error(\n \"[Redis] Failed to load @redis/client. Install with: deno add npm:@redis/client@1.5.8\",\n );\n }\n\n const url = options.url || getEnvRedisUrl();\n const client = createClientFn({ url });\n\n // Set up error handler\n if (typeof client?.on === \"function\") {\n client.on(\"error\", (err: unknown) => {\n logger.error(\"[Redis] Client error\", err);\n connectionFailed = true;\n });\n\n client.on(\"reconnecting\", () => {\n logger.info(\"[Redis] Reconnecting...\");\n });\n\n client.on(\"ready\", () => {\n logger.info(\"[Redis] Ready\");\n connectionFailed = false;\n });\n }\n\n await client.connect();\n return client;\n}\n\n/**\n * Get Redis URL from environment.\n */\nfunction getEnvRedisUrl(): string | undefined {\n try {\n if (typeof Deno !== \"undefined\" && Deno.env) {\n return Deno.env.get(\"REDIS_URL\");\n }\n } catch {\n // Ignore env access errors\n }\n return undefined;\n}\n\n/**\n * Check if Redis is available (has a connected client).\n */\nexport function isRedisAvailable(): boolean {\n return sharedClient !== null && sharedClient.isOpen !== false && !connectionFailed;\n}\n\n/**\n * Check if Redis is configured (URL is set).\n */\nexport function isRedisConfigured(): boolean {\n return !!getEnvRedisUrl();\n}\n\n/**\n * Disconnect and cleanup the shared client.\n */\nexport async function disconnectRedis(): Promise<void> {\n if (sharedClient) {\n try {\n await sharedClient.disconnect();\n } catch {\n // Ignore disconnect errors\n }\n sharedClient = null;\n }\n connectionFailed = false;\n isConnecting = false;\n connectionPromise = null;\n}\n\n/**\n * Reset connection state (for testing).\n */\nexport function resetRedisState(): void {\n sharedClient = null;\n connectionFailed = false;\n isConnecting = false;\n connectionPromise = null;\n lastConnectionAttempt = 0;\n}\n", "/**\n * Transform context factory and utilities.\n *\n * Provides functions for creating and managing transform context\n * as it flows through the pipeline stages.\n */\n\nimport { computeContentHash } from \"../esm/transform-utils.ts\";\nimport type {\n TransformContext,\n TransformOptions,\n TransformStage,\n TransformTarget,\n} from \"./types.ts\";\n\n/**\n * Create a new transform context from source and options.\n */\nexport async function createTransformContext(\n source: string,\n filePath: string,\n projectDir: string,\n options: TransformOptions,\n): Promise<TransformContext> {\n const contentHash = await computeContentHash(source);\n const target: TransformTarget = options.ssr ? \"ssr\" : \"browser\";\n\n return {\n code: source,\n originalSource: source,\n filePath,\n projectDir,\n projectId: options.projectId,\n target,\n dev: options.dev ?? true,\n contentHash,\n moduleServerUrl: options.moduleServerUrl,\n vendorBundleHash: options.vendorBundleHash,\n apiBaseUrl: options.apiBaseUrl,\n jsxImportSource: options.jsxImportSource ?? \"react\",\n timing: new Map(),\n debug: false,\n metadata: new Map(),\n };\n}\n\n/**\n * Create context synchronously when content hash is already known.\n */\nexport function createTransformContextSync(\n source: string,\n filePath: string,\n projectDir: string,\n contentHash: string,\n options: TransformOptions,\n): TransformContext {\n const target: TransformTarget = options.ssr ? \"ssr\" : \"browser\";\n\n return {\n code: source,\n originalSource: source,\n filePath,\n projectDir,\n projectId: options.projectId,\n target,\n dev: options.dev ?? true,\n contentHash,\n moduleServerUrl: options.moduleServerUrl,\n vendorBundleHash: options.vendorBundleHash,\n apiBaseUrl: options.apiBaseUrl,\n jsxImportSource: options.jsxImportSource ?? \"react\",\n timing: new Map(),\n debug: false,\n metadata: new Map(),\n };\n}\n\n/**\n * Record timing for a stage.\n */\nexport function recordStageTiming(\n ctx: TransformContext,\n stage: TransformStage,\n startTime: number,\n): void {\n ctx.timing.set(stage, performance.now() - startTime);\n}\n\n/**\n * Get total timing from context.\n */\nexport function getTotalTiming(ctx: TransformContext): number {\n let total = 0;\n for (const ms of ctx.timing.values()) {\n total += ms;\n }\n return total;\n}\n\n/**\n * Format timing data for logging.\n */\nexport function formatTimingLog(ctx: TransformContext): Record<string, string> {\n const stageNames = [\n \"parse\",\n \"compile\",\n \"aliases\",\n \"react\",\n \"context\",\n \"relative\",\n \"bare\",\n \"finalize\",\n ];\n\n const result: Record<string, string> = {\n file: ctx.filePath.slice(-40),\n target: ctx.target,\n };\n\n for (const [stage, ms] of ctx.timing) {\n const name = stageNames[stage] ?? `stage${stage}`;\n result[`${name}Ms`] = ms.toFixed(1);\n }\n\n result.totalMs = getTotalTiming(ctx).toFixed(1);\n return result;\n}\n\n/**\n * Check if context is for SSR.\n */\nexport function isSSR(ctx: TransformContext): boolean {\n return ctx.target === \"ssr\";\n}\n\n/**\n * Check if context is for browser.\n */\nexport function isBrowser(ctx: TransformContext): boolean {\n return ctx.target === \"browser\";\n}\n\n/**\n * Check if file is MDX.\n */\nexport function isMDX(ctx: TransformContext): boolean {\n return ctx.filePath.endsWith(\".mdx\");\n}\n\n/**\n * Check if file is TypeScript.\n */\nexport function isTypeScript(ctx: TransformContext): boolean {\n return ctx.filePath.endsWith(\".ts\") || ctx.filePath.endsWith(\".tsx\");\n}\n\n/**\n * Get file extension.\n */\nexport function getExtension(ctx: TransformContext): string {\n const dot = ctx.filePath.lastIndexOf(\".\");\n return dot >= 0 ? ctx.filePath.slice(dot) : \"\";\n}\n", "import type { Loader } from \"esbuild\";\nimport { shortHash } from \"@veryfront/utils/hash-utils.ts\";\n\nexport function computeContentHash(content: string): Promise<string> {\n return shortHash(content);\n}\n\nexport function getLoaderFromPath(filePath: string): Loader {\n if (filePath.endsWith(\".tsx\")) return \"tsx\";\n if (filePath.endsWith(\".ts\")) return \"ts\";\n if (filePath.endsWith(\".jsx\")) return \"jsx\";\n if (filePath.endsWith(\".js\")) return \"js\";\n if (filePath.endsWith(\".mdx\")) return \"jsx\"; // MDX pre-compiled to JSX\n if (filePath.endsWith(\".css\")) return \"css\";\n if (filePath.endsWith(\".json\")) return \"json\";\n return \"tsx\"; // Default\n}\n\nexport function needsTransform(filePath: string): boolean {\n return /\\.(tsx?|jsx?|mdx)$/.test(filePath);\n}\n", "/**\n * Pipeline stages barrel export.\n *\n * Each stage handles one concern in the ESM transform pipeline.\n */\n\nexport { parsePlugin } from \"./parse.ts\";\nexport { compilePlugin } from \"./compile.ts\";\nexport { resolveAliasesPlugin } from \"./resolve-aliases.ts\";\nexport { resolveReactPlugin } from \"./resolve-react.ts\";\nexport { resolveContextPlugin } from \"./resolve-context.ts\";\nexport { ssrHttpStubPlugin } from \"./ssr-http-stub.ts\";\nexport { resolveRelativePlugin } from \"./resolve-relative.ts\";\nexport { resolveBarePlugin } from \"./resolve-bare.ts\";\nexport { finalizePlugin } from \"./finalize.ts\";\n", "/**\n * Parse stage - MDX \u2192 JSX compilation.\n *\n * Only runs for .mdx files. Compiles MDX to JSX using the MDX compiler.\n */\n\nimport { compileMDXRuntime } from \"../../mdx/compiler/mdx-compiler.ts\";\nimport { isMDX, isSSR } from \"../context.ts\";\nimport { type TransformContext, type TransformPlugin, TransformStage } from \"../types.ts\";\n\n/**\n * Parse plugin - compiles MDX to JSX.\n */\nexport const parsePlugin: TransformPlugin = {\n name: \"parse-mdx\",\n stage: TransformStage.PARSE,\n\n condition: isMDX,\n\n async transform(ctx: TransformContext): Promise<string> {\n // SSR needs \"server\" target to use file:// paths\n // Browser needs module server URLs\n const mdxTarget = isSSR(ctx) ? \"server\" : \"browser\";\n const mdxBaseUrl = isSSR(ctx) ? undefined : ctx.moduleServerUrl;\n\n const result = await compileMDXRuntime(\n ctx.dev ? \"development\" : \"production\",\n ctx.projectDir,\n ctx.code,\n undefined,\n ctx.filePath,\n mdxTarget,\n mdxBaseUrl,\n );\n\n // Store frontmatter in metadata for later stages\n if (result.frontmatter) {\n ctx.metadata.set(\"frontmatter\", result.frontmatter);\n }\n\n return result.compiledCode;\n },\n};\n\nexport default parsePlugin;\n", "import type { Pluggable } from \"unified\";\nimport { rendererLogger as logger } from \"@veryfront/utils\";\nimport { getRehypePlugins, getRemarkPlugins } from \"../../plugins/plugin-loader.ts\";\nimport { extractFrontmatter } from \"./frontmatter-extractor.ts\";\nimport { rewriteBodyImports, rewriteCompiledImports } from \"./import-rewriter.ts\";\nimport type { CompilationMode, CompilationTarget, MdxRuntimeBundle } from \"./types.ts\";\nimport { createError, toError } from \"../../../../core/errors/veryfront-error.ts\";\nimport { rehypeNodePositions as _rehypeNodePositions } from \"../../plugins/rehype-node-positions.ts\";\n\ntype PluggableList = Pluggable[];\n\nexport async function compileMDXRuntime(\n _mode: CompilationMode,\n projectDir: string,\n content: string,\n frontmatter?: Record<string, unknown>,\n filePath?: string,\n target: CompilationTarget = \"server\",\n baseUrl?: string,\n): Promise<MdxRuntimeBundle> {\n try {\n const { compile } = await import(\"@mdx-js/mdx\");\n\n const remarkPlugins = (await getRemarkPlugins(projectDir)) as unknown as PluggableList;\n const rehypePlugins = (await getRehypePlugins(projectDir)) as unknown as PluggableList;\n\n const extracted = await extractFrontmatter(content, frontmatter);\n let { body } = extracted;\n const { frontmatter: extractedFrontmatter } = extracted;\n\n if (filePath && (target === \"browser\" || target === \"server\")) {\n body = rewriteBodyImports(body, { filePath, target, baseUrl, projectDir });\n }\n\n // DISABLED: Rehype plugin to inject node position data for Studio Navigator\n // This was adding data-node-line, data-node-column, etc. to MDX elements.\n // CRITICAL: Disabled to prevent hydration mismatch.\n // Browser modules (via module server) no longer inject positions, so SSR\n // must not inject them either for hydration to succeed.\n // TODO(#studio-navigator): Re-enable with proper SSR/browser synchronization when Studio Navigator\n // is implemented with edit-in-place support.\n const allRehypePlugins: PluggableList = [\n ...rehypePlugins,\n // [rehypeNodePositions, { filePath }],\n ];\n\n // Always use production JSX mode for SSR stability.\n // Development mode outputs jsxDEV calls which require react/jsx-dev-runtime,\n // but this module resolution is flaky in some environments (especially CI).\n // Production mode uses jsx/jsxs which is always reliably available.\n const compiled = await compile(body, {\n outputFormat: \"program\",\n development: false,\n remarkPlugins,\n rehypePlugins: allRehypePlugins,\n providerImportSource: undefined,\n jsxImportSource: \"react\",\n });\n\n logger.info(\"MDX compiled output preview:\", String(compiled).substring(0, 200));\n logger.info(\"Extracted frontmatter:\", extractedFrontmatter);\n\n let compiledCode = String(compiled);\n\n if (filePath && (target === \"browser\" || target === \"server\")) {\n compiledCode = rewriteCompiledImports(compiledCode, {\n filePath,\n target,\n baseUrl,\n projectDir,\n });\n }\n\n return {\n compiledCode,\n frontmatter: extractedFrontmatter,\n globals: {},\n headings: [],\n nodeMap: new Map(),\n };\n } catch (error) {\n logger.error(\"[MDX Compiler] Compilation failed:\", {\n filePath,\n error: error instanceof Error ? error.message : String(error),\n stack: error instanceof Error ? error.stack : undefined,\n });\n throw toError(createError({\n type: \"build\",\n message: `MDX compilation error: ${\n error instanceof Error ? error.message : String(error)\n } | file: ${filePath || \"<memory>\"}`,\n }));\n }\n}\n", "import type { Root as HastRoot } from \"hast\";\nimport type { Root as MdastRoot } from \"mdast\";\nimport type { RuntimeAdapter } from \"@veryfront/platform/adapters/base.ts\";\nimport { getConfig } from \"@veryfront/config\";\nimport { serverLogger } from \"@veryfront/utils\";\nimport { rehypeAddClasses, rehypeMdxComponents, rehypePreserveNodeIds } from \"./rehype-utils.ts\";\nimport { remarkMdxHeadings } from \"./remark-headings.ts\";\nimport { createError, toError } from \"../../../core/errors/veryfront-error.ts\";\nimport {\n remarkCodeBlocks,\n remarkMdxImports,\n remarkMdxRemoveParagraphs,\n} from \"./remark-mdx-utils.ts\";\nimport { remarkAddNodeId as _remarkAddNodeId } from \"./remark-node-id.ts\";\nimport { rehypeMermaid } from \"./rehype-mermaid.ts\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkFrontmatter from \"remark-frontmatter\";\nimport rehypeHighlight from \"rehype-highlight\";\nimport rehypeSlug from \"rehype-slug\";\n\nexport type PluginFunction = (\n tree: MdastRoot | HastRoot,\n file?: unknown,\n) => void | Promise<void> | ((tree: MdastRoot | HastRoot, file?: unknown) => void);\n\ntype PluginEntry = ((...args: unknown[]) => unknown) | [\n ((...args: unknown[]) => unknown),\n ...unknown[],\n];\n\nfunction _validatePlugin(plugin: unknown, index: number): PluginEntry {\n if (typeof plugin === \"function\") {\n return plugin as ((...args: unknown[]) => unknown);\n }\n\n if (Array.isArray(plugin)) {\n if (plugin.length === 0) {\n throw toError(createError({\n type: \"config\",\n message: `Invalid plugin at index ${index}: empty array`,\n }));\n }\n if (typeof plugin[0] !== \"function\") {\n throw toError(createError({\n type: \"config\",\n message:\n `Invalid plugin at index ${index}: first element of array must be a function, got ${typeof plugin[\n 0\n ]}`,\n }));\n }\n return plugin as [((...args: unknown[]) => unknown), ...unknown[]];\n }\n\n throw toError(createError({\n type: \"config\",\n message: `Invalid plugin at index ${index}: must be a function or array, got ${typeof plugin}`,\n }));\n}\n\nasync function loadUserPlugins(\n projectDir: string,\n adapter: RuntimeAdapter,\n pluginType: \"remark\" | \"rehype\",\n): Promise<PluginEntry[]> {\n try {\n const _config = await getConfig(projectDir, adapter);\n\n return [];\n } catch (error) {\n serverLogger.warn(\n `Failed to load ${pluginType} plugins from config`,\n { error: error instanceof Error ? error.message : String(error) },\n );\n return [];\n }\n}\n\nexport async function getRemarkPlugins(\n projectDir: string,\n adapter?: RuntimeAdapter,\n): Promise<PluginEntry[]> {\n // DISABLED: remarkAddNodeId temporarily disabled to fix hydration mismatch.\n // This was adding data-node-id, data-node-line, etc. to MDX elements.\n // Browser modules (via module server) no longer inject positions, so SSR\n // must not inject them either for hydration to succeed.\n // TODO(#studio-navigator): Re-enable with proper SSR/browser synchronization when Studio Navigator\n // is implemented with edit-in-place support.\n const defaultPlugins: PluginEntry[] = [\n remarkGfm as PluginEntry,\n remarkFrontmatter as PluginEntry,\n // remarkAddNodeId as PluginEntry,\n remarkMdxHeadings as PluginEntry,\n remarkMdxRemoveParagraphs as PluginEntry,\n remarkCodeBlocks as PluginEntry,\n remarkMdxImports as PluginEntry,\n ];\n\n if (adapter) {\n try {\n const userPlugins = await loadUserPlugins(projectDir, adapter, \"remark\");\n return [...defaultPlugins, ...userPlugins];\n } catch (error) {\n serverLogger.error(\n \"Error loading user remark plugins\",\n { error: error instanceof Error ? error.message : String(error) },\n );\n }\n }\n\n return defaultPlugins;\n}\n\nexport async function getRehypePlugins(\n projectDir: string,\n adapter?: RuntimeAdapter,\n): Promise<PluginEntry[]> {\n const defaultPlugins: PluginEntry[] = [\n rehypeMermaid as PluginEntry, // Must run before rehypeHighlight\n rehypeHighlight as PluginEntry,\n rehypeSlug as PluginEntry,\n rehypePreserveNodeIds as PluginEntry,\n rehypeAddClasses as PluginEntry,\n rehypeMdxComponents as PluginEntry,\n ];\n\n if (adapter) {\n try {\n const userPlugins = await loadUserPlugins(projectDir, adapter, \"rehype\");\n return [...defaultPlugins, ...userPlugins];\n } catch (error) {\n serverLogger.error(\n \"Error loading user rehype plugins\",\n { error: error instanceof Error ? error.message : String(error) },\n );\n }\n }\n\n return defaultPlugins;\n}\n", "import type { Element } from \"hast\";\nimport { visit } from \"unist-util-visit\";\n\nexport function rehypePreserveNodeIds() {\n return (tree: { type: string; children?: unknown[] }) => {\n visit(tree, \"element\", (node: Element) => {\n if (!node.properties) {\n node.properties = {};\n }\n\n if (node.data && (node.data as Record<string, unknown>).hProperties) {\n Object.entries(\n (node.data as Record<string, unknown>).hProperties as Record<string, unknown>,\n ).forEach(([key, value]) => {\n if (key.startsWith(\"data-node-\")) {\n node.properties![key] = value as string;\n }\n });\n }\n });\n };\n}\n\nexport function rehypeAddClasses() {\n return (tree: { type: string; children?: unknown[] }) => {\n visit(tree, \"element\", (node: Element) => {\n if (!node.properties) {\n node.properties = {};\n }\n\n switch (node.tagName) {\n case \"p\":\n addClassName(node, \"mb-4\");\n break;\n case \"h1\":\n addClassName(node, \"text-4xl font-bold mb-8 mt-12\");\n break;\n case \"h2\":\n addClassName(node, \"text-3xl font-bold mb-6 mt-10\");\n break;\n case \"h3\":\n addClassName(node, \"text-2xl font-bold mb-4 mt-8\");\n break;\n case \"a\":\n addClassName(node, \"text-blue-600 hover:text-blue-800 underline\");\n break;\n case \"code\":\n if (\n Array.isArray(node.properties.className) &&\n node.properties.className.some((cls) => String(cls).includes(\"language-\"))\n ) {\n addClassName(node, \"block p-4 bg-gray-900 text-gray-100 rounded-lg overflow-x-auto\");\n } else {\n addClassName(node, \"px-1 py-0.5 bg-gray-100 text-gray-900 rounded text-sm\");\n }\n break;\n case \"blockquote\":\n addClassName(node, \"border-l-4 border-gray-300 pl-4 italic\");\n break;\n case \"ul\":\n addClassName(node, \"list-disc list-inside mb-4\");\n break;\n case \"ol\":\n addClassName(node, \"list-decimal list-inside mb-4\");\n break;\n case \"li\":\n addClassName(node, \"mb-2\");\n break;\n }\n });\n };\n}\n\nexport function rehypeMdxComponents() {\n return (tree: { type: string; children?: unknown[] }) => {\n visit(tree, \"mdxJsxFlowElement\", (node: { name: string; data?: Record<string, unknown> }) => {\n if (!node.data) {\n node.data = {};\n }\n if (!(node.data as Record<string, unknown>).hProperties) {\n (node.data as Record<string, unknown>).hProperties = {};\n }\n\n ((node.data as Record<string, unknown>).hProperties as Record<string, unknown>)[\n \"data-mdx-component\"\n ] = node.name;\n });\n };\n}\n\nfunction addClassName(node: Element, className: string) {\n if (!node.properties) {\n node.properties = {};\n }\n\n if (!node.properties.className) {\n node.properties.className = [];\n } else if (typeof node.properties.className === \"string\") {\n node.properties.className = node.properties.className.split(\" \");\n }\n\n (node.properties.className as string[]).push(className);\n}\n", "import GithubSlugger from \"github-slugger\";\nimport type { Heading, Root } from \"mdast\";\nimport { toString } from \"mdast-util-to-string\";\nimport { visit } from \"unist-util-visit\";\n\ninterface FileData {\n headings?: Array<{ text: string; id: string; level: number }>;\n}\n\ninterface VFile {\n data?: FileData;\n}\n\nexport function remarkMdxHeadings() {\n const slugger = new GithubSlugger();\n\n return (tree: Root, file: VFile) => {\n const headings: Array<{\n text: string;\n id: string;\n level: number;\n }> = [];\n\n slugger.reset();\n\n visit(tree, \"heading\", (node: Heading) => {\n const text = toString(node);\n const id = slugger.slug(text);\n\n if (!node.data) {\n node.data = {};\n }\n if (!(node.data as Record<string, unknown>).hProperties) {\n (node.data as Record<string, unknown>).hProperties = {};\n }\n ((node.data as Record<string, unknown>).hProperties as Record<string, unknown>).id = id;\n\n headings.push({\n text,\n id,\n level: node.depth,\n });\n });\n\n if (!file.data) {\n file.data = {};\n }\n file.data.headings = headings;\n\n const headingsExport = {\n type: \"mdxjsEsm\",\n value: \"\",\n data: {\n estree: {\n type: \"Program\",\n sourceType: \"module\",\n body: [\n {\n type: \"ExportNamedDeclaration\",\n specifiers: [],\n source: null,\n declaration: {\n type: \"VariableDeclaration\",\n kind: \"const\",\n declarations: [\n {\n type: \"VariableDeclarator\",\n id: { type: \"Identifier\", name: \"headings\" },\n init: {\n type: \"ArrayExpression\",\n elements: headings.map((h) => ({\n type: \"ObjectExpression\",\n properties: [\n {\n type: \"Property\",\n key: { type: \"Identifier\", name: \"text\" },\n value: { type: \"Literal\", value: h.text },\n kind: \"init\",\n method: false,\n shorthand: false,\n computed: false,\n },\n {\n type: \"Property\",\n key: { type: \"Identifier\", name: \"id\" },\n value: { type: \"Literal\", value: h.id },\n kind: \"init\",\n method: false,\n shorthand: false,\n computed: false,\n },\n {\n type: \"Property\",\n key: { type: \"Identifier\", name: \"level\" },\n value: { type: \"Literal\", value: h.level },\n kind: \"init\",\n method: false,\n shorthand: false,\n computed: false,\n },\n ],\n })),\n },\n },\n ],\n },\n },\n ],\n },\n },\n };\n\n tree.children.unshift(headingsExport as unknown as (typeof tree.children)[0]);\n };\n}\n", "import type { Code, Paragraph, Root } from \"mdast\";\nimport type { Data, Node, Parent } from \"unist\";\nimport { visit } from \"unist-util-visit\";\n\ninterface FileData {\n imports?: string[];\n}\n\ninterface VFile {\n data?: FileData;\n}\n\ninterface MDXJsxElement extends Node {\n type: \"mdxJsxTextElement\" | \"mdxJsxFlowElement\";\n children?: Node[];\n}\n\nexport function remarkMdxRemoveParagraphs() {\n return (tree: Root) => {\n visit(\n tree as unknown as Root,\n \"paragraph\",\n (node: Node, index: number | null | undefined, parent: Parent | undefined) => {\n const children = Array.isArray((node as Paragraph)?.children)\n ? (node as Paragraph).children as Node[]\n : [];\n if (\n children.length === 1 &&\n ((children[0] as Node)?.type === \"mdxJsxTextElement\" ||\n (children[0] as Node)?.type === \"mdxJsxFlowElement\")\n ) {\n if (parent && Array.isArray(parent.children) && typeof index === \"number\") {\n parent.children.splice(index, 1, children[0] as Node);\n }\n }\n },\n );\n };\n}\n\nexport function remarkCodeBlocks() {\n return (tree: Root) => {\n visit(tree, \"code\", (node: Code) => {\n if (!node.data) {\n node.data = {};\n }\n if (!(node.data as Record<string, unknown>).hProperties) {\n (node.data as Record<string, unknown>).hProperties = {};\n }\n\n if (node.lang) {\n ((node.data as Record<string, unknown>).hProperties as Record<string, unknown>).className =\n [`language-${node.lang}`];\n }\n\n if (node.meta) {\n const highlightMatch = node.meta.match(/\\{([\\d,-]+)\\}/);\n if (highlightMatch) {\n ((node.data as Record<string, unknown>).hProperties as Record<string, unknown>)[\n \"data-line-numbers\"\n ] = highlightMatch[1];\n }\n }\n });\n };\n}\n\ninterface MDXjsEsm extends Node {\n type: \"mdxjsEsm\";\n value?: string;\n data?: Data;\n}\n\nexport function remarkMdxImports() {\n return (tree: Root, file: VFile) => {\n const imports: string[] = [];\n\n visit(tree as unknown as Root, \"mdxjsEsm\", (node: MDXjsEsm) => {\n if (node.value?.includes(\"import\")) {\n const importMatches = node.value.matchAll(\n /import\\s+(?:(?:\\{[^}]*\\}|\\*\\s+as\\s+\\w+|\\w+)\\s+from\\s+)?['\"]([^'\"]+)['\"]/g,\n );\n\n for (const match of importMatches) {\n const path = match[1] as string | undefined;\n if (typeof path === \"string\") imports.push(path);\n }\n }\n });\n\n if (!file.data) {\n file.data = {};\n }\n file.data.imports = imports;\n };\n}\n", "import type { Element, Root } from \"hast\";\nimport { visit } from \"unist-util-visit\";\n\n/**\n * Rehype plugin to transform mermaid code blocks for client-side rendering.\n *\n * Transforms:\n * ```mermaid\n * graph TD\n * A --> B\n * ```\n *\n * Into:\n * <div class=\"mermaid\">\n * graph TD\n * A --> B\n * </div>\n *\n * The Mermaid library (loaded client-side) will then render these as diagrams.\n */\nexport function rehypeMermaid() {\n return (tree: Root) => {\n visit(tree, \"element\", (node: Element, index, parent) => {\n // Look for <pre><code class=\"language-mermaid\">\n const firstChild = node.children[0];\n if (\n node.tagName === \"pre\" &&\n node.children.length === 1 &&\n firstChild &&\n firstChild.type === \"element\" &&\n firstChild.tagName === \"code\"\n ) {\n const codeNode = node.children[0] as Element;\n const className = codeNode.properties?.className;\n\n // Check if it's a mermaid code block\n const isMermaid = Array.isArray(className)\n ? className.some((c) =>\n String(c).includes(\"mermaid\") || String(c).includes(\"language-mermaid\")\n )\n : String(className || \"\").includes(\"mermaid\");\n\n if (isMermaid && parent && typeof index === \"number\") {\n // Extract the text content\n const textContent = extractText(codeNode);\n\n // Replace the pre/code with a mermaid div\n const mermaidDiv: Element = {\n type: \"element\",\n tagName: \"div\",\n properties: {\n className: [\"mermaid\"],\n },\n children: [{ type: \"text\", value: textContent }],\n };\n\n // Replace the node\n (parent.children as Element[])[index] = mermaidDiv;\n }\n }\n });\n };\n}\n\nfunction extractText(node: Element): string {\n let text = \"\";\n for (const child of node.children) {\n if (child.type === \"text\") {\n text += child.value;\n } else if (child.type === \"element\") {\n text += extractText(child);\n }\n }\n return text.trim();\n}\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\n\nexport interface FrontmatterExtractionResult {\n body: string;\n frontmatter: Record<string, unknown>;\n}\n\nasync function extractYamlFrontmatter(content: string): Promise<FrontmatterExtractionResult> {\n if (!content.trim().startsWith(\"---\")) {\n return { body: content, frontmatter: {} };\n }\n\n const { extract } = await import(\"std/front_matter/yaml.ts\");\n const extracted = extract(content);\n return {\n body: extracted.body,\n frontmatter: extracted.attrs as Record<string, unknown>,\n };\n}\n\nfunction extractExportConstants(body: string): { body: string; exports: Record<string, unknown> } {\n // Only match simple single-line exports with string, number, or boolean values\n // Avoid matching complex exports like arrays, objects, or functions\n const exportRegex =\n /^export\\s+const\\s+(\\w+)\\s*=\\s*(['\"`][^'\"`\\n]*['\"`]|\\d+(?:\\.\\d+)?|true|false|null)\\s*;?\\s*$/gm;\n const exports: Record<string, unknown> = {};\n const linesToRemove: string[] = [];\n let match: RegExpExecArray | null;\n\n while ((match = exportRegex.exec(body)) !== null) {\n const key = match[1];\n const rawValue = match[2];\n if (key && key.length > 0 && rawValue) {\n linesToRemove.push(match[0]);\n // Parse the value\n if (rawValue === \"true\") {\n exports[key] = true;\n } else if (rawValue === \"false\") {\n exports[key] = false;\n } else if (rawValue === \"null\") {\n exports[key] = null;\n } else if (/^\\d+(?:\\.\\d+)?$/.test(rawValue)) {\n exports[key] = parseFloat(rawValue);\n } else {\n // Remove quotes from string values\n exports[key] = rawValue.replace(/^['\"`]|['\"`]$/g, \"\");\n }\n }\n }\n\n // Remove matched lines from body\n let cleanedBody = body;\n for (const line of linesToRemove) {\n cleanedBody = cleanedBody.replace(line, \"\");\n }\n return { body: cleanedBody, exports };\n}\n\nexport async function extractFrontmatter(\n content: string,\n providedFrontmatter?: Record<string, unknown>,\n): Promise<FrontmatterExtractionResult> {\n let body = content;\n let frontmatter: Record<string, unknown> = {};\n\n // Always extract YAML frontmatter from content if present\n // This ensures the body is stripped of frontmatter markers regardless of providedFrontmatter\n if (content.trim().startsWith(\"---\")) {\n const yamlResult = await extractYamlFrontmatter(content);\n body = yamlResult.body;\n frontmatter = yamlResult.frontmatter;\n }\n\n // Merge provided frontmatter on top of extracted frontmatter\n if (providedFrontmatter) {\n frontmatter = { ...frontmatter, ...providedFrontmatter };\n }\n\n const exportResult = extractExportConstants(body);\n body = exportResult.body;\n frontmatter = { ...frontmatter, ...exportResult.exports };\n\n logger.info(\"Extracted frontmatter:\", frontmatter);\n\n return { body, frontmatter };\n}\n", "import { dirname, join, resolve as pathResolve } from \"std/path/mod.ts\";\nimport type { CompilationTarget } from \"./types.ts\";\n\nexport interface ImportRewriterConfig {\n filePath: string;\n target: CompilationTarget;\n baseUrl?: string;\n projectDir?: string;\n}\n\nfunction toAbsPath(spec: string, basedir: string): string {\n try {\n if (spec.startsWith(\"file://\")) return new URL(spec).pathname;\n if (spec.startsWith(\"/\")) return pathResolve(spec);\n if (spec.startsWith(\"http://\") || spec.startsWith(\"https://\")) return spec;\n\n if (!spec.startsWith(\".\") && !spec.startsWith(\"/\")) {\n return spec; // Return unchanged - it's a bare specifier\n }\n\n return pathResolve(join(basedir, spec));\n } catch {\n return spec;\n }\n}\n\nfunction toBrowserFs(abs: string, baseUrl?: string): string {\n if (abs.startsWith(\"http://\") || abs.startsWith(\"https://\")) return abs;\n const b64 = btoa(abs).replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replaceAll(\"=\", \"\");\n const path = `/_veryfront/fs/${b64}.js`;\n return baseUrl ? `${baseUrl}${path}` : path;\n}\n\nfunction mapSpec(\n spec: string,\n basedir: string,\n target: CompilationTarget,\n baseUrl?: string,\n _projectDir?: string,\n): string {\n // Handle @/ project-relative aliases\n // @/ maps to components/ directory in veryfront projects\n if (spec.startsWith(\"@/\")) {\n const relativePath = spec.slice(2); // Remove @/ prefix\n if (target === \"browser\") {\n // For browser, use module server endpoint\n const path = `/_vf_modules/${relativePath}.js`;\n return baseUrl ? `${baseUrl}${path}` : path;\n } else {\n // For server (SSR), leave @/ imports as-is\n // The SSRModuleLoader's transformProjectAliasImports will handle these,\n // properly resolving file extensions and transforming dependencies\n return spec;\n }\n }\n\n const abs = toAbsPath(spec, basedir);\n if (typeof abs !== \"string\") return spec;\n\n if (\n abs === spec &&\n !spec.startsWith(\".\") &&\n !spec.startsWith(\"/\") &&\n !spec.startsWith(\"file://\") &&\n !spec.startsWith(\"http\")\n ) {\n return spec; // Bare specifier - leave for import map resolution\n }\n\n if (target === \"browser\") return toBrowserFs(abs, baseUrl);\n return abs.startsWith(\"http\") ? abs : `file://${abs}`;\n}\n\nfunction rewriteLine(\n line: string,\n basedir: string,\n target: CompilationTarget,\n baseUrl?: string,\n projectDir?: string,\n): string {\n const mapper = (spec: string) => mapSpec(spec, basedir, target, baseUrl, projectDir);\n\n line = line.replace(\n /^(\\s*import\\s+[^'\";]+?from\\s+)([\"'])([^\"']+)(\\2)/,\n (_m, p1, q, s, q2) => `${p1}${q}${mapper(s)}${q2}`,\n );\n\n line = line.replace(\n /^(\\s*import\\s+)([\"'])([^\"']+)(\\2)/,\n (_m, p1, q, s, q2) => `${p1}${q}${mapper(s)}${q2}`,\n );\n\n line = line.replace(\n /^(\\s*export\\s+[^'\";]+?from\\s+)([\"'])([^\"']+)(\\2)/,\n (_m, p1, q, s, q2) => `${p1}${q}${mapper(s)}${q2}`,\n );\n\n return line;\n}\n\nexport function rewriteBodyImports(body: string, config: ImportRewriterConfig): string {\n const basedir = dirname(config.filePath);\n\n return body\n .split(/\\r?\\n/)\n .map((ln) => {\n const trimmed = ln.trimStart();\n if (trimmed.startsWith(\"import\") || trimmed.startsWith(\"export\")) {\n return rewriteLine(ln, basedir, config.target, config.baseUrl, config.projectDir);\n }\n return ln;\n })\n .join(\"\\n\");\n}\n\nexport function rewriteCompiledImports(compiledCode: string, config: ImportRewriterConfig): string {\n const basedir = dirname(config.filePath);\n const mapper = (spec: string) =>\n mapSpec(spec, basedir, config.target, config.baseUrl, config.projectDir);\n\n let code = compiledCode;\n\n // Handle @/ aliased imports\n code = code.replace(\n /(from\\s+[\"'])(@\\/[^\"']+)([\"'])/g,\n (_m, p1, p2, p3) => `${p1}${mapper(p2)}${p3}`,\n );\n\n code = code.replace(\n /(import\\(\\s*[\"'])(@\\/[^\"']+)([\"']\\s*\\))/g,\n (_m, p1, p2, p3) => `${p1}${mapper(p2)}${p3}`,\n );\n\n code = code.replace(\n /(from\\s+[\"'])(\\.{1,2}\\/[^\"']+)([\"'])/g,\n (_m, p1, p2, p3) => `${p1}${mapper(p2)}${p3}`,\n );\n\n code = code.replace(\n /(from\\s+[\"'])(file:\\/\\/[^\"']+)([\"'])/g,\n (_m, p1, p2, p3) => `${p1}${mapper(p2)}${p3}`,\n );\n\n code = code.replace(\n /(import\\(\\s*[\"'])(\\.{1,2}\\/[^\"']+)([\"']\\s*\\))/g,\n (_m, p1, p2, p3) => `${p1}${mapper(p2)}${p3}`,\n );\n\n code = code.replace(\n /(import\\(\\s*[\"'])(file:\\/\\/[^\"']+)([\"']\\s*\\))/g,\n (_m, p1, p2, p3) => `${p1}${mapper(p2)}${p3}`,\n );\n\n code = code.replace(/file:\\/\\/[A-Za-z0-9_\\-./%]+/g, (match) => mapper(match));\n\n return code;\n}\n", "/**\n * Transform pipeline types.\n *\n * Defines the plugin-based architecture for ESM transforms.\n * Each stage handles one concern, making the pipeline testable and maintainable.\n */\n\n/**\n * Transform stages in execution order.\n * Each stage runs after the previous completes.\n */\nexport enum TransformStage {\n /** MDX \u2192 JSX compilation */\n PARSE = 0,\n /** esbuild JSX \u2192 JS compilation */\n COMPILE = 1,\n /** @/ alias resolution */\n RESOLVE_ALIASES = 2,\n /** react/jsx-runtime \u2192 esm.sh or npm: URLs */\n RESOLVE_REACT = 3,\n /** Context packages (@tanstack/react-query, etc.) \u2192 unified URLs */\n RESOLVE_CONTEXT = 4,\n /** ./relative imports \u2192 full paths or module server URLs */\n RESOLVE_RELATIVE = 5,\n /** Bare npm imports \u2192 esm.sh URLs */\n RESOLVE_BARE = 6,\n /** Final cleanup, caching, HTTP bundling */\n FINALIZE = 7,\n}\n\n/**\n * Transform target environment.\n */\nexport type TransformTarget = \"ssr\" | \"browser\";\n\n/**\n * Options passed to the transform pipeline.\n */\nexport interface TransformOptions {\n /** Development mode (enables sourcemaps, disables minification) */\n dev?: boolean;\n /** Project identifier for caching */\n projectId: string;\n /** JSX import source (default: \"react\") */\n jsxImportSource?: string;\n /** Module server URL for browser imports */\n moduleServerUrl?: string;\n /** Vendor bundle hash for cache busting */\n vendorBundleHash?: string;\n /** SSR mode (true) or browser mode (false) */\n ssr?: boolean;\n /** API base URL for cross-project imports */\n apiBaseUrl?: string;\n}\n\n/**\n * Context passed through the transform pipeline.\n * Mutable - stages update ctx.code as they process.\n */\nexport interface TransformContext {\n /** Current code being transformed */\n code: string;\n /** Original source code (immutable) */\n originalSource: string;\n /** File path being transformed */\n filePath: string;\n /** Project root directory */\n projectDir: string;\n /** Project identifier */\n projectId: string;\n /** Transform target: SSR or browser */\n target: TransformTarget;\n /** Development mode */\n dev: boolean;\n /** Content hash for caching */\n contentHash: string;\n /** Module server URL (browser only) */\n moduleServerUrl?: string;\n /** Vendor bundle hash (browser only) */\n vendorBundleHash?: string;\n /** API base URL for cross-project imports */\n apiBaseUrl?: string;\n /** JSX import source */\n jsxImportSource: string;\n /** Timing data per stage */\n timing: Map<TransformStage, number>;\n /** Enable debug logging */\n debug: boolean;\n /** Metadata set by stages (e.g., MDX frontmatter) */\n metadata: Map<string, unknown>;\n}\n\n/**\n * A transform plugin that processes code at a specific stage.\n */\nexport interface TransformPlugin {\n /** Plugin name for logging/debugging */\n name: string;\n /** Stage this plugin runs at */\n stage: TransformStage;\n /** Optional condition - if false, plugin is skipped */\n condition?: (ctx: TransformContext) => boolean;\n /** Transform function - returns new code */\n transform: (ctx: TransformContext) => Promise<string> | string;\n}\n\n/**\n * Result of a transform pipeline run.\n */\nexport interface TransformResult {\n /** Transformed code */\n code: string;\n /** Content hash */\n contentHash: string;\n /** Timing breakdown by stage */\n timing: Map<TransformStage, number>;\n /** Total transform time in ms */\n totalMs: number;\n /** Whether result was from cache */\n cached: boolean;\n}\n\n/**\n * Pipeline configuration.\n */\nexport interface PipelineConfig {\n /** Enable debug logging */\n debug?: boolean;\n /** Enable timing collection */\n collectTiming?: boolean;\n /** Custom plugins to add */\n plugins?: TransformPlugin[];\n}\n", "/**\n * Compile stage - esbuild JSX \u2192 JS transformation.\n *\n * Uses esbuild to transform JSX/TSX to plain JavaScript with ES modules.\n */\n\nimport * as esbuild from \"esbuild/mod.js\";\nimport { getLoaderFromPath } from \"../../esm/transform-utils.ts\";\nimport { rendererLogger as logger } from \"@veryfront/utils\";\nimport { type TransformContext, type TransformPlugin, TransformStage } from \"../types.ts\";\n\n/**\n * Compile plugin - transforms JSX/TSX to JS using esbuild.\n */\nexport const compilePlugin: TransformPlugin = {\n name: \"esbuild-compile\",\n stage: TransformStage.COMPILE,\n\n async transform(ctx: TransformContext): Promise<string> {\n const loader = getLoaderFromPath(ctx.filePath);\n\n try {\n const result = await esbuild.transform(ctx.code, {\n loader,\n format: \"esm\",\n target: \"es2020\",\n jsx: \"automatic\",\n jsxImportSource: ctx.jsxImportSource,\n minify: !ctx.dev,\n sourcemap: ctx.dev ? \"inline\" : false,\n treeShaking: !ctx.dev, // Disable in dev mode to preserve import errors\n keepNames: true,\n });\n\n let code = result.code;\n\n // For MDX files, export MDXLayout so client can use it instead of MDXContent (default).\n // MDXContent (default export) has a bug where it overwrites children prop, breaking layouts.\n // By exporting MDXLayout, client-side can use the inner component that properly passes children.\n // This matches what SSR does in esm-module-loader.ts\n if (ctx.filePath.endsWith(\".mdx\")) {\n // Check if MDXLayout is defined but not exported\n if (/\\bconst\\s+MDXLayout\\b/.test(code) && !/export\\s+\\{[^}]*MDXLayout/.test(code)) {\n code += \"\\nexport { MDXLayout };\\n\";\n }\n }\n\n return code;\n } catch (transformError) {\n // Structured debugging for transform errors\n const sourcePreview = ctx.code\n .split(\"\\n\")\n .slice(0, 10)\n .map((line, i) => `${String(i + 1).padStart(3, \" \")}| ${line}`)\n .join(\"\\n\");\n\n logger.error(\"[ESM-TRANSFORM] Transform failed\", {\n filePath: ctx.filePath,\n loader,\n sourceLength: ctx.code.length,\n isMdx: ctx.filePath.endsWith(\".mdx\"),\n error: transformError instanceof Error ? transformError.message : String(transformError),\n });\n logger.error(\"[ESM-TRANSFORM] Source preview (first 10 lines):\\n\" + sourcePreview);\n\n // Re-throw with enhanced error message\n const errorMsg = transformError instanceof Error\n ? transformError.message\n : String(transformError);\n throw new Error(`ESM transform failed for ${ctx.filePath} (loader: ${loader}): ${errorMsg}`);\n }\n },\n};\n\nexport default compilePlugin;\n", "/**\n * Resolve aliases stage - @/ \u2192 relative/absolute paths.\n *\n * Transforms path aliases to appropriate paths based on target:\n * - SSR: file:// URLs pointing to project directory\n * - Browser: module server URLs\n */\n\nimport { resolveCrossProjectImports, resolvePathAliases } from \"../../esm/path-resolver.ts\";\nimport { isSSR } from \"../context.ts\";\nimport { type TransformContext, type TransformPlugin, TransformStage } from \"../types.ts\";\n\n/**\n * Resolve aliases plugin - transforms @/ imports.\n */\nexport const resolveAliasesPlugin: TransformPlugin = {\n name: \"resolve-aliases\",\n stage: TransformStage.RESOLVE_ALIASES,\n\n async transform(ctx: TransformContext): Promise<string> {\n let code = ctx.code;\n\n // Resolve @/ path aliases\n code = await resolvePathAliases(code, ctx.filePath, ctx.projectDir, isSSR(ctx));\n\n // Resolve cross-project versioned imports (e.g., demo@0.0.1/@/components/Button)\n // Must be done before other import rewrites since it transforms to absolute URLs\n const apiBaseUrl = ctx.apiBaseUrl ||\n Deno.env.get(\"VERYFRONT_API_BASE_URL\") ||\n Deno.env.get(\"VERYFRONT_API_URL\")?.replace(\"/graphql\", \"/api\") ||\n \"http://api.lvh.me:4000/api\";\n\n code = await resolveCrossProjectImports(code, {\n apiBaseUrl,\n ssr: isSSR(ctx),\n });\n\n return code;\n },\n};\n\nexport default resolveAliasesPlugin;\n", "import { replaceSpecifiers } from \"./lexer.ts\";\nimport { rendererLogger as logger } from \"@veryfront/utils\";\n\nexport interface BlockExternalUrlResult {\n code: string;\n blockedUrls: string[];\n}\n\n/**\n * Pattern to match cross-project imports (with or without version).\n *\n * Supported formats:\n * - projectSlug@version/@/path (versioned)\n * - projectSlug/@/path (versionless, defaults to \"latest\")\n *\n * Examples:\n * - demo@0.0.1/@/components/Button\n * - shadcn-ui@1.2.3/@/lib/utils\n * - demo/@/app.tsx (defaults to latest)\n *\n * The separator /@/ distinguishes cross-project imports from other patterns.\n */\nconst CROSS_PROJECT_VERSIONED_PATTERN = /^([a-z0-9-]+)@([\\d^~x][\\d.x^~-]*)\\/@\\/(.+)$/;\nconst CROSS_PROJECT_LATEST_PATTERN = /^([a-z0-9-]+)\\/@\\/(.+)$/;\n\n/**\n * Check if a specifier is a cross-project import (versioned or versionless).\n */\nexport function isCrossProjectImport(specifier: string): boolean {\n return CROSS_PROJECT_VERSIONED_PATTERN.test(specifier) ||\n CROSS_PROJECT_LATEST_PATTERN.test(specifier);\n}\n\n/**\n * Parse a cross-project import specifier into its components.\n * Returns null if the specifier doesn't match the pattern.\n * Versionless imports default to \"latest\".\n */\nexport function parseCrossProjectImport(\n specifier: string,\n): { projectSlug: string; version: string; path: string } | null {\n // Try versioned pattern first\n const versionedMatch = specifier.match(CROSS_PROJECT_VERSIONED_PATTERN);\n if (versionedMatch) {\n return {\n projectSlug: versionedMatch[1]!,\n version: versionedMatch[2]!,\n path: versionedMatch[3]!,\n };\n }\n\n // Try versionless pattern (defaults to \"latest\")\n const latestMatch = specifier.match(CROSS_PROJECT_LATEST_PATTERN);\n if (latestMatch) {\n return {\n projectSlug: latestMatch[1]!,\n version: \"latest\",\n path: latestMatch[2]!,\n };\n }\n\n return null;\n}\n\nexport interface CrossProjectImportOptions {\n /** Base URL for the API (unused in browser mode, kept for interface compat) */\n apiBaseUrl?: string;\n /** Whether this is SSR mode */\n ssr?: boolean;\n}\n\n/**\n * Rewrite cross-project imports to module server URLs (browser mode only).\n *\n * For browser mode, transforms imports like:\n * import { Button } from \"demo@0.0.1/@/components/Button\" (versioned)\n * import { Button } from \"demo/@/components/Button\" (versionless \u2192 latest)\n *\n * To module server URL:\n * /_vf_modules/_cross/demo@0.0.1/@/components/Button.tsx\n * /_vf_modules/_cross/demo/@/components/Button.tsx\n *\n * For SSR mode, imports are left as-is. The SSRModuleLoader handles cross-project\n * imports by fetching from registry and writing to temp files with file:// URLs.\n */\nexport function resolveCrossProjectImports(\n code: string,\n options: CrossProjectImportOptions,\n): Promise<string> {\n const { ssr = false } = options;\n\n // In SSR mode, leave cross-project imports as-is\n // SSRModuleLoader handles them by fetching from registry and writing to temp files\n if (ssr) {\n return Promise.resolve(code);\n }\n\n // Browser mode: rewrite to module server URL\n return Promise.resolve(\n replaceSpecifiers(code, (specifier) => {\n const parsed = parseCrossProjectImport(specifier);\n if (!parsed) return null;\n\n const { projectSlug, version, path } = parsed;\n\n // Keep the original extension - module server will handle it\n let modulePath = path;\n if (!/\\.(js|mjs|jsx|ts|tsx|mdx)$/.test(modulePath)) {\n modulePath = `${modulePath}.tsx`;\n }\n\n // Build URL - omit version for \"latest\" (versionless imports)\n const projectRef = version === \"latest\" ? projectSlug : `${projectSlug}@${version}`;\n const moduleServerUrl = `/_vf_modules/_cross/${projectRef}/@/${modulePath}`;\n\n logger.debug(\"[CrossProjectImport] Rewriting\", { from: specifier, to: moduleServerUrl });\n\n return moduleServerUrl;\n }),\n );\n}\n\n/**\n * Pass-through function for SSR mode.\n *\n * External URL imports (esm.sh, etc.) are left as-is. The esm-module-loader's\n * esbuild bundling handles HTTP imports properly by fetching and bundling them.\n *\n * This function exists for interface compatibility but doesn't transform anything.\n */\nexport function blockExternalUrlImports(\n code: string,\n _filePath: string,\n): Promise<BlockExternalUrlResult> {\n // No transformation - let esbuild bundle HTTP imports in esm-module-loader\n return Promise.resolve({ code, blockedUrls: [] });\n}\n\n/**\n * Rewrite @veryfront/* imports to veryfront/* for npm compatibility\n * This allows Deno-style imports to work in Node.js environments\n */\nexport function resolveVeryfrontImports(code: string): Promise<string> {\n return Promise.resolve(replaceSpecifiers(code, (specifier) => {\n if (specifier.startsWith(\"@veryfront/\")) {\n // @veryfront/ai -> veryfront/ai\n // @veryfront/ai/react -> veryfront/ai/react\n return specifier.replace(\"@veryfront/\", \"veryfront/\");\n }\n if (specifier === \"@veryfront\") {\n return \"veryfront\";\n }\n return null;\n }));\n}\n\nexport function resolvePathAliases(\n code: string,\n filePath: string,\n projectDir: string,\n ssr = false,\n): Promise<string> {\n const _normalizedProjectDir = projectDir.replace(/\\\\/g, \"/\").replace(/\\/$/, \"\");\n\n // For both SSR and browser, we need to resolve @/ aliases to relative paths\n // SSR files are written to a temp directory with the same relative structure as the source\n // So @/components from pages/index.tsx becomes ../components (relative path)\n let relativeFilePath = filePath;\n if (filePath.startsWith(_normalizedProjectDir)) {\n relativeFilePath = filePath.substring(_normalizedProjectDir.length + 1);\n } else if (filePath.startsWith(\"/\")) {\n const pathParts = filePath.split(\"/\");\n const projectParts = _normalizedProjectDir.split(\"/\");\n const lastProjectPart = projectParts[projectParts.length - 1];\n const projectIndex = pathParts.indexOf(lastProjectPart!);\n if (projectIndex >= 0) {\n relativeFilePath = pathParts.slice(projectIndex + 1).join(\"/\");\n }\n }\n\n const fileDir = relativeFilePath.substring(0, relativeFilePath.lastIndexOf(\"/\"));\n const depth = fileDir.split(\"/\").filter(Boolean).length;\n const relativeToRoot = depth === 0 ? \".\" : \"../\".repeat(depth).slice(0, -1);\n\n return Promise.resolve(replaceSpecifiers(code, (specifier) => {\n if (specifier.startsWith(\"@/\")) {\n const path = specifier.substring(2);\n // @/ maps to project root in veryfront projects\n const relativePath = depth === 0 ? `./${path}` : `${relativeToRoot}/${path}`;\n // Add .js extension if path doesn't already have a valid JS/TS extension\n // This ensures Deno can properly identify the module type when loading via HTTP\n if (!/\\.(tsx?|jsx?|mjs|cjs|mdx)$/.test(relativePath)) {\n return relativePath + \".js\";\n }\n // For SSR, also normalize TS/TSX extensions to .js\n if (ssr) {\n return relativePath.replace(/\\.(tsx?|jsx|mdx)$/, \".js\");\n }\n return relativePath;\n }\n return null;\n }));\n}\n\nexport function resolveRelativeImports(\n code: string,\n filePath: string,\n projectDir: string,\n moduleServerUrl?: string,\n): Promise<string> {\n const _normalizedProjectDir = projectDir.replace(/\\\\/g, \"/\").replace(/\\/$/, \"\");\n\n let relativeFilePath = filePath;\n if (filePath.startsWith(_normalizedProjectDir)) {\n relativeFilePath = filePath.substring(_normalizedProjectDir.length + 1);\n } else if (filePath.startsWith(\"/\")) {\n const pathParts = filePath.split(\"/\");\n const projectParts = _normalizedProjectDir.split(\"/\");\n const lastProjectPart = projectParts[projectParts.length - 1];\n const projectIndex = pathParts.indexOf(lastProjectPart!);\n if (projectIndex >= 0) {\n relativeFilePath = pathParts.slice(projectIndex + 1).join(\"/\");\n }\n }\n\n const fileDir = relativeFilePath.substring(0, relativeFilePath.lastIndexOf(\"/\"));\n\n return Promise.resolve(replaceSpecifiers(code, (specifier) => {\n if (specifier.startsWith(\"./\") || specifier.startsWith(\"../\")) {\n // Rewrite TypeScript extensions to .js for browser compatibility\n let rewrittenSpecifier = specifier;\n if (/\\.(tsx?|jsx)$/.test(specifier)) {\n rewrittenSpecifier = specifier.replace(/\\.(tsx?|jsx)$/, \".js\");\n }\n\n // If moduleServerUrl provided, convert to absolute URL\n if (moduleServerUrl) {\n const resolvedPath = resolveRelativePath(fileDir, rewrittenSpecifier);\n return `${moduleServerUrl}/${resolvedPath}`;\n }\n\n return rewrittenSpecifier;\n }\n return null;\n }));\n}\n\nfunction resolveRelativePath(currentDir: string, importPath: string): string {\n const currentParts = currentDir.split(\"/\").filter(Boolean);\n const importParts = importPath.split(\"/\").filter(Boolean);\n\n const resolvedParts = [...currentParts];\n for (const part of importParts) {\n if (part === \"..\") {\n resolvedParts.pop(); // Go up one directory\n } else if (part !== \".\") {\n resolvedParts.push(part); // Add to path\n }\n }\n\n return resolvedParts.join(\"/\");\n}\n\nexport async function resolveRelativeImportsToAbsolute(\n code: string,\n filePath: string,\n _projectDir: string,\n): Promise<string> {\n const normalizedFilePath = filePath.replace(/\\\\/g, \"/\");\n const fileDir = normalizedFilePath.substring(0, normalizedFilePath.lastIndexOf(\"/\"));\n\n // Build a map of specifiers to resolved paths with extensions\n const resolvedImports = new Map<string, string>();\n const specifiersToResolve: string[] = [];\n\n // First pass: collect all relative import specifiers\n await replaceSpecifiers(code, (specifier) => {\n if (specifier.startsWith(\"./\") || specifier.startsWith(\"../\")) {\n specifiersToResolve.push(specifier);\n }\n return null;\n });\n\n // Resolve each specifier to an absolute path with extension\n for (const specifier of specifiersToResolve) {\n const absolutePath = resolveAbsolutePath(fileDir, specifier);\n const resolvedPath = await findFileWithExtension(absolutePath);\n resolvedImports.set(specifier, `file://${resolvedPath}`);\n }\n\n // Second pass: replace specifiers with resolved paths\n return replaceSpecifiers(code, (specifier) => {\n return resolvedImports.get(specifier) || null;\n });\n}\n\n/**\n * Find a file by trying common TypeScript/JavaScript extensions\n * If the path already has an extension, return it as-is\n */\nasync function findFileWithExtension(basePath: string): Promise<string> {\n // If already has a valid extension, return as-is\n if (/\\.(tsx?|jsx?|mjs|cjs|mdx)$/.test(basePath)) {\n return basePath;\n }\n\n const extensions = [\".tsx\", \".ts\", \".jsx\", \".js\", \".mdx\"];\n\n for (const ext of extensions) {\n const fullPath = basePath + ext;\n try {\n const stat = await Deno.stat(fullPath);\n if (stat.isFile) {\n return fullPath;\n }\n } catch {\n // File doesn't exist with this extension, try next\n }\n }\n\n // If no file found, return with .ts extension as fallback\n // (Deno will give a clearer error message)\n return basePath + \".ts\";\n}\n\nexport function resolveRelativeImportsForNodeSSR(code: string): Promise<string> {\n return Promise.resolve(replaceSpecifiers(code, (specifier) => {\n if (specifier.startsWith(\"./\") || specifier.startsWith(\"../\")) {\n return specifier.replace(/\\.(tsx|ts|jsx)$/, \".js\");\n }\n return null;\n }));\n}\n\nexport function resolveRelativeImportsForSSR(code: string): Promise<string> {\n return Promise.resolve(replaceSpecifiers(code, (specifier) => {\n if (specifier.startsWith(\"./\") || specifier.startsWith(\"../\")) {\n if (/\\.(js|mjs|cjs)$/.test(specifier)) {\n return null;\n }\n const withoutExt = specifier.replace(/\\.(tsx?|jsx|mdx)$/, \"\");\n return withoutExt + \".js\";\n }\n return null;\n }));\n}\n\nfunction resolveAbsolutePath(baseDir: string, relativePath: string): string {\n const baseParts = baseDir.split(\"/\").filter(Boolean);\n const relativeParts = relativePath.split(\"/\").filter(Boolean);\n\n const resolvedParts = [...baseParts];\n for (const part of relativeParts) {\n if (part === \"..\") {\n resolvedParts.pop();\n } else if (part !== \".\") {\n resolvedParts.push(part);\n }\n }\n\n return \"/\" + resolvedParts.join(\"/\");\n}\n", "import { init, parse } from \"es-module-lexer\";\n\nlet initPromise: Promise<void> | null = null;\n\n// ============================================================================\n// URL Masking - es-module-lexer cannot parse HTTP URLs with special chars\n// We temporarily replace them with safe placeholders before parsing\n// ============================================================================\n\n// Matches HTTP/HTTPS URLs in string literals (single, double, or backtick quotes)\nconst HTTP_URL_PATTERN = /(['\"`])(https?:\\/\\/[^'\"`\\n]+)\\1/g;\n\ntype UrlMaskResult = {\n masked: string;\n urlMap: Map<string, string>;\n};\n\nfunction maskHttpUrls(code: string): UrlMaskResult {\n const urlMap = new Map<string, string>();\n let counter = 0;\n\n const masked = code.replace(HTTP_URL_PATTERN, (_match, quote, url) => {\n const placeholder = `__VFURL_${counter++}__`;\n urlMap.set(placeholder, url);\n return `${quote}${placeholder}${quote}`;\n });\n\n return { masked, urlMap };\n}\n\nfunction unmaskHttpUrls(code: string, urlMap: Map<string, string>): string {\n let result = code;\n for (const [placeholder, url] of urlMap) {\n result = result.replaceAll(placeholder, url);\n }\n return result;\n}\n\nexport async function initLexer() {\n if (!initPromise) {\n // es-module-lexer@1.5 exports init as a Promise (not a function) in ESM build\n // but some typings expect a function. Handle both to avoid type errors.\n const anyInit = init as unknown;\n initPromise = typeof anyInit === \"function\"\n ? (anyInit as () => Promise<void>)()\n : (anyInit as Promise<void>);\n }\n await initPromise;\n}\n\nexport type ImportSpecifier = {\n n: string | undefined; // The module specifier (e.g., \"react\")\n s: number; // Start of module specifier\n e: number; // End of module specifier\n ss: number; // Start of import statement\n se: number; // End of import statement\n d: number; // > -1 if dynamic import\n a: number; // assert index\n};\n\nexport async function parseImports(code: string): Promise<readonly ImportSpecifier[]> {\n await initLexer();\n\n // Mask HTTP URLs to avoid es-module-lexer parse errors\n const { masked, urlMap } = maskHttpUrls(code);\n const [imports] = parse(masked);\n\n // If no URLs were masked, return as-is\n if (urlMap.size === 0) {\n return imports;\n }\n\n // Restore original URLs in import specifiers\n return imports.map((imp) => {\n if (imp.n) {\n const restoredN = unmaskHttpUrls(imp.n, urlMap);\n if (restoredN !== imp.n) {\n return { ...imp, n: restoredN };\n }\n }\n return imp;\n });\n}\n\n/**\n * Replace import specifiers (the path string) in the code.\n * Safe for simple re-mappings like aliases or rewriting URLs.\n */\nexport async function replaceSpecifiers(\n code: string,\n replacer: (specifier: string, isDynamic: boolean) => string | null | undefined,\n): Promise<string> {\n await initLexer();\n\n // Mask HTTP URLs to avoid es-module-lexer parse errors\n const { masked, urlMap } = maskHttpUrls(code);\n const [imports] = parse(masked);\n\n let result = masked;\n\n // Process in reverse order to maintain indices\n for (let i = imports.length - 1; i >= 0; i--) {\n const imp = imports[i];\n if (!imp) continue;\n if (imp.n === undefined) continue;\n\n // Unmask the specifier for the replacer to see the original URL\n const originalSpecifier = unmaskHttpUrls(imp.n, urlMap);\n const replacement = replacer(originalSpecifier, imp.d > -1);\n\n if (replacement && replacement !== originalSpecifier) {\n // Replace only the specifier part [s, e]\n // imp.s and imp.e are indices in the masked string.\n // Since we modify 'result' from right to left, these indices are valid for 'result' too.\n const before = result.substring(0, imp.s);\n const after = result.substring(imp.e);\n result = before + replacement + after;\n }\n }\n\n // Unmask any remaining HTTP URLs that weren't replaced\n return unmaskHttpUrls(result, urlMap);\n}\n\n/**\n * Rewrite entire import statements.\n * Useful for complex transformations like vendor splitting.\n */\nexport async function rewriteImports(\n code: string,\n rewriter: (imp: ImportSpecifier, statement: string) => string | null,\n): Promise<string> {\n await initLexer();\n\n // Mask HTTP URLs to avoid es-module-lexer parse errors\n const { masked, urlMap } = maskHttpUrls(code);\n const [imports] = parse(masked);\n\n let result = masked;\n\n for (let i = imports.length - 1; i >= 0; i--) {\n const imp = imports[i];\n if (!imp) continue;\n\n // Unmask the import specifier for the rewriter\n const unmaskedImp = imp.n ? { ...imp, n: unmaskHttpUrls(imp.n, urlMap) } : imp;\n\n // Extract the full statement from the masked code and unmask it\n const statement = unmaskHttpUrls(masked.substring(imp.ss, imp.se), urlMap);\n\n const replacement = rewriter(unmaskedImp, statement);\n\n if (replacement !== null) {\n const before = result.substring(0, imp.ss);\n const after = result.substring(imp.se);\n result = before + replacement + after;\n }\n }\n\n // Unmask any remaining HTTP URLs\n return unmaskHttpUrls(result, urlMap);\n}\n", "/* es-module-lexer 1.5.0 */\nexport var ImportType;!function(A){A[A.Static=1]=\"Static\",A[A.Dynamic=2]=\"Dynamic\",A[A.ImportMeta=3]=\"ImportMeta\",A[A.StaticSourcePhase=4]=\"StaticSourcePhase\",A[A.DynamicSourcePhase=5]=\"DynamicSourcePhase\"}(ImportType||(ImportType={}));const A=1===new Uint8Array(new Uint16Array([1]).buffer)[0];export function parse(E,g=\"@\"){if(!C)return init.then((()=>parse(E)));const I=E.length+1,w=(C.__heap_base.value||C.__heap_base)+4*I-C.memory.buffer.byteLength;w>0&&C.memory.grow(Math.ceil(w/65536));const D=C.sa(I-1);if((A?B:Q)(E,new Uint16Array(C.memory.buffer,D,I)),!C.parse())throw Object.assign(new Error(`Parse error ${g}:${E.slice(0,C.e()).split(\"\\n\").length}:${C.e()-E.lastIndexOf(\"\\n\",C.e()-1)}`),{idx:C.e()});const o=[],K=[];for(;C.ri();){const A=C.is(),Q=C.ie(),B=C.it(),g=C.ai(),I=C.id(),w=C.ss(),D=C.se();let K;C.ip()&&(K=k(E.slice(-1===I?A-1:A,-1===I?Q+1:Q))),o.push({n:K,t:B,s:A,e:Q,ss:w,se:D,d:I,a:g})}for(;C.re();){const A=C.es(),Q=C.ee(),B=C.els(),g=C.ele(),I=E.slice(A,Q),w=I[0],D=B<0?void 0:E.slice(B,g),o=D?D[0]:\"\";K.push({s:A,e:Q,ls:B,le:g,n:'\"'===w||\"'\"===w?k(I):I,ln:'\"'===o||\"'\"===o?k(D):D})}function k(A){try{return(0,eval)(A)}catch(A){}}return[o,K,!!C.f(),!!C.ms()]}function Q(A,Q){const B=A.length;let C=0;for(;C<B;){const B=A.charCodeAt(C);Q[C++]=(255&B)<<8|B>>>8}}function B(A,Q){const B=A.length;let C=0;for(;C<B;)Q[C]=A.charCodeAt(C++)}let C;export const init=WebAssembly.compile((E=\"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\",\"undefined\"!=typeof Buffer?Buffer.from(E,\"base64\"):Uint8Array.from(atob(E),(A=>A.charCodeAt(0))))).then(WebAssembly.instantiate).then((({exports:A})=>{C=A}));var E;", "/**\n * Resolve React stage - react/jsx-runtime \u2192 esm.sh or npm: URLs.\n *\n * Handles React-specific import resolution based on target environment.\n * For SSR: Resolves to file:// URLs or npm: specifiers\n * For browser: Resolves to esm.sh URLs\n */\n\nimport { addDepsToEsmShUrls, resolveReactImports } from \"../../esm/react-imports.ts\";\nimport { isBrowser, isSSR } from \"../context.ts\";\nimport { type TransformContext, type TransformPlugin, TransformStage } from \"../types.ts\";\n\n/**\n * Resolve React plugin - transforms react imports to target-appropriate URLs.\n */\nexport const resolveReactPlugin: TransformPlugin = {\n name: \"resolve-react\",\n stage: TransformStage.RESOLVE_REACT,\n\n async transform(ctx: TransformContext): Promise<string> {\n let code = ctx.code;\n\n // Resolve react imports based on target\n code = await resolveReactImports(code, isSSR(ctx));\n\n // Add deps to esm.sh URLs for consistent React versions\n code = await addDepsToEsmShUrls(code, isSSR(ctx));\n\n // In dev mode for browser, rewrite hardcoded project domain URLs\n // to use current origin for local dev server compatibility\n if (ctx.dev && isBrowser(ctx)) {\n code = code.replace(\n /(['\"])https?:\\/\\/[a-zA-Z0-9-]+\\.(?:com|org|net|io|dev|app|veryfront\\.com)\\1/g,\n \"location.origin\",\n );\n }\n\n return code;\n },\n};\n\nexport default resolveReactPlugin;\n", "import { replaceSpecifiers } from \"./lexer.ts\";\nimport { getReactImportMap, REACT_VERSION } from \"./package-registry.ts\";\n\n/**\n * Get the absolute path to the veryfront AI React module for SSR.\n * This resolves relative to this file's location in the veryfront source tree.\n */\nfunction getVeryfrontAIReactPath(subpath: string = \"\"): string {\n const currentDir = new URL(\".\", import.meta.url).pathname;\n const srcDir = currentDir.replace(/\\/build\\/transforms\\/esm\\/?$/, \"\");\n const modulePath = subpath || \"index.ts\";\n return `file://${srcDir}/ai/react/${modulePath}`;\n}\n\n/**\n * Get the absolute path to a veryfront export module for SSR.\n * Exports are located at: src/exports/{name}.ts\n */\nfunction getVeryfrontExportPath(name: string): string {\n const currentDir = new URL(\".\", import.meta.url).pathname;\n const srcDir = currentDir.replace(/\\/build\\/transforms\\/esm\\/?$/, \"\");\n return `file://${srcDir}/exports/${name}.ts`;\n}\n\n/**\n * Resolve React imports based on target environment.\n *\n * SSR: Leave React as bare specifiers so Deno's import map (deno.json) resolves\n * them to npm: packages. This ensures user code uses the same React instance\n * as react-dom/server (which is from npm).\n *\n * Browser: Transform to esm.sh URLs (via browser import map in HTML).\n *\n * This separation is necessary because react-dom/server from npm has its own\n * internal dependency on npm:react. Using esm.sh/react for user code while\n * react-dom/server uses npm:react creates a React instance mismatch.\n */\n// deno-lint-ignore require-await\nexport async function resolveReactImports(code: string, forSSR: boolean = false): Promise<string> {\n if (forSSR) {\n // SSR: Only resolve veryfront-specific imports to file:// URLs\n // Leave React imports as bare specifiers for deno.json import map to resolve\n const ssrImports: Record<string, string> = {\n // AI modules - file:// URLs for local resolution\n \"veryfront/ai/react\": getVeryfrontAIReactPath(),\n \"veryfront/ai/components\": getVeryfrontAIReactPath(\"components/index.ts\"),\n \"veryfront/ai/primitives\": getVeryfrontAIReactPath(\"primitives/index.ts\"),\n // Framework exports - file:// URLs for local resolution\n \"veryfront/head\": getVeryfrontExportPath(\"head\"),\n \"veryfront/router\": getVeryfrontExportPath(\"router\"),\n \"veryfront/context\": getVeryfrontExportPath(\"context\"),\n \"veryfront/fonts\": getVeryfrontExportPath(\"fonts\"),\n };\n\n return replaceSpecifiers(code, (specifier) => {\n return ssrImports[specifier] || null;\n });\n }\n\n // For browser, transform to esm.sh URLs\n const reactImports = getReactImportMap();\n return replaceSpecifiers(code, (specifier) => {\n return reactImports[specifier] || null;\n });\n}\n\n/**\n * Packages that are in the import map and should be converted to bare specifiers.\n * This ensures the import map can intercept and provide consistent modules.\n */\nconst IMPORT_MAP_PACKAGES = [\n \"@tanstack/react-query\",\n \"@tanstack/query-core\",\n \"next-themes\",\n \"framer-motion\",\n \"react-hook-form\",\n];\n\n/**\n * Extract package name from esm.sh URL.\n * E.g., \"https://esm.sh/@tanstack/react-query@5?external=react\" -> \"@tanstack/react-query\"\n */\nfunction extractPackageFromEsmSh(url: string): string | null {\n if (!url.startsWith(\"https://esm.sh/\") && !url.startsWith(\"http://esm.sh/\")) {\n return null;\n }\n\n // Remove protocol and host\n let path = url.replace(/^https?:\\/\\/esm\\.sh\\//, \"\");\n\n // Remove version prefix like /v135/\n path = path.replace(/^v\\d+\\//, \"\");\n\n // Handle scoped packages like @tanstack/react-query@5?external=...\n if (path.startsWith(\"@\")) {\n const match = path.match(/^(@[^/]+\\/[^@/?]+)/);\n return match?.[1] ?? null;\n } else {\n // Regular package: name@version or name?query\n const match = path.match(/^([^@/?]+)/);\n return match?.[1] ?? null;\n }\n}\n\n/**\n * Add deps/external params to esm.sh URLs for React version consistency.\n *\n * UNIFIED APPROACH: Both SSR and browser use the same strategy now.\n * esm.sh URLs that don't already have React version pinned get ?deps added.\n */\nexport function addDepsToEsmShUrls(code: string, _forSSR: boolean = false): Promise<string> {\n return Promise.resolve(replaceSpecifiers(code, (specifier) => {\n if (\n specifier.startsWith(\"https://esm.sh/\") &&\n !specifier.includes(`react@${REACT_VERSION}`)\n ) {\n // Convert import-mapped packages to bare specifiers\n // This allows the import map to intercept and provide consistent modules\n const packageName = extractPackageFromEsmSh(specifier);\n if (packageName && IMPORT_MAP_PACKAGES.includes(packageName)) {\n return packageName; // Return bare specifier for import map to handle\n }\n\n // For other esm.sh URLs, add external param if not present\n // Using ?external= so esm.sh doesn't bundle React - browser import map provides it\n const hasQuery = specifier.includes(\"?\");\n if (hasQuery) {\n return null; // Already has query params\n }\n return `${specifier}?external=react,react-dom&target=es2022`;\n }\n return null;\n }));\n}\n", "/**\n * Resolve context stage - context packages \u2192 unified URLs.\n *\n * CRITICAL: This stage ensures context-dependent packages (like @tanstack/react-query)\n * resolve to consistent module instances WITHIN each environment:\n *\n * - SSR uses npm: specifiers \u2192 Deno resolves locally, shares React with app\n * - Browser uses esm.sh URLs with ?deps= \u2192 esm.sh bundles React internally\n *\n * Uses package-registry.ts as single source of truth for package URLs.\n */\n\nimport { replaceSpecifiers } from \"../../esm/lexer.ts\";\nimport {\n CONTEXT_PACKAGE_NAMES,\n getContextPackageUrlBrowser,\n getContextPackageUrlSSR,\n isContextPackage,\n} from \"../../esm/package-registry.ts\";\nimport { type TransformContext, type TransformPlugin, TransformStage } from \"../types.ts\";\n\n/**\n * Build import map from bare specifier to resolved URL for context packages.\n * Uses different URLs for SSR (npm:) vs browser (esm.sh).\n */\nfunction buildContextImportMap(ssr: boolean): Record<string, string> {\n const map: Record<string, string> = {};\n for (const pkg of CONTEXT_PACKAGE_NAMES) {\n map[pkg] = ssr ? getContextPackageUrlSSR(pkg) : getContextPackageUrlBrowser(pkg);\n }\n return map;\n}\n\n/**\n * Resolve context plugin - ensures context packages resolve consistently.\n *\n * SSR: Uses npm: specifiers so Deno resolves locally (shares React with deno.json)\n * Browser: Uses esm.sh URLs with ?deps= to pin React version\n */\nexport const resolveContextPlugin: TransformPlugin = {\n name: \"resolve-context\",\n stage: TransformStage.RESOLVE_CONTEXT,\n\n async transform(ctx: TransformContext): Promise<string> {\n const importMap = buildContextImportMap(ctx.target === \"ssr\");\n\n return await replaceSpecifiers(ctx.code, (specifier) => {\n // Check if this is a context package that needs unified resolution\n if (isContextPackage(specifier)) {\n return importMap[specifier] || null;\n }\n\n // Check if it's an esm.sh URL for a context package (normalize it)\n if (specifier.startsWith(\"https://esm.sh/\")) {\n const packageName = extractPackageFromEsmSh(specifier);\n if (packageName && isContextPackage(packageName)) {\n // Return the canonical URL from our registry\n return importMap[packageName] || null;\n }\n }\n\n return null;\n });\n },\n};\n\n/**\n * Extract package name from esm.sh URL.\n * E.g., \"https://esm.sh/@tanstack/react-query@5?external=react\" -> \"@tanstack/react-query\"\n */\nfunction extractPackageFromEsmSh(url: string): string | null {\n if (!url.startsWith(\"https://esm.sh/\") && !url.startsWith(\"http://esm.sh/\")) {\n return null;\n }\n\n // Remove protocol and host\n let path = url.replace(/^https?:\\/\\/esm\\.sh\\//, \"\");\n\n // Remove version prefix like /v135/\n path = path.replace(/^v\\d+\\//, \"\");\n\n // Handle scoped packages like @tanstack/react-query@5?external=...\n if (path.startsWith(\"@\")) {\n const match = path.match(/^(@[^/]+\\/[^@/?]+)/);\n return match?.[1] ?? null;\n } else {\n // Regular package: name@version or name?query\n const match = path.match(/^([^@/?]+)/);\n return match?.[1] ?? null;\n }\n}\n\nexport default resolveContextPlugin;\n", "/**\n * SSR HTTP Stub Stage\n *\n * Replaces static HTTP URL imports with SSR-safe stubs during server-side rendering.\n * Browser-only modules (like video.js) fail when imported during SSR because they\n * access browser globals (document, window) at module-level.\n *\n * This stage:\n * 1. Detects static imports from HTTP URLs (esm.sh, unpkg, etc.)\n * 2. Replaces them with null/empty stubs during SSR\n * 3. Leaves browser transforms unchanged\n *\n * The client-side code keeps the original imports, ensuring proper hydration.\n */\n\nimport type { TransformPlugin } from \"../types.ts\";\nimport { TransformStage } from \"../types.ts\";\nimport { parseImports, rewriteImports } from \"../../esm/lexer.ts\";\n\n/**\n * Check if a specifier is an HTTP URL import\n */\nfunction isHttpImport(specifier: string | undefined): boolean {\n if (!specifier) return false;\n return specifier.startsWith(\"http://\") || specifier.startsWith(\"https://\");\n}\n\n/**\n * Check if a specifier is likely a browser-only module that needs stubbing\n * These are modules that have side effects or access browser globals at import time\n */\nfunction isBrowserOnlyModule(specifier: string): boolean {\n // video.js and similar media libraries\n if (specifier.includes(\"video.js\") || specifier.includes(\"video-js\")) return true;\n if (specifier.includes(\"videojs\")) return true;\n\n // Other known browser-only packages\n if (specifier.includes(\"gsap\")) return true;\n if (specifier.includes(\"three\")) return true;\n if (specifier.includes(\"mapbox\")) return true;\n if (specifier.includes(\"leaflet\")) return true;\n\n // Default: Don't stub - most packages work fine in SSR\n return false;\n}\n\n/**\n * Generate a stub for a given import statement\n */\nfunction generateStub(imp: {\n n: string | undefined;\n ss: number;\n se: number;\n d: number;\n}, statement: string): string | null {\n if (!imp.n || !isHttpImport(imp.n)) return null;\n if (!isBrowserOnlyModule(imp.n)) return null;\n\n // Don't stub dynamic imports - they're already deferred\n if (imp.d > -1) return null;\n\n // Parse the import clause to understand what's being imported\n // import X from 'url'\n // import { X, Y } from 'url'\n // import * as X from 'url'\n // import 'url' (side-effect)\n\n const trimmed = statement.trim();\n\n // Side-effect import: import 'url' -> // SSR stub: import 'url'\n if (/^import\\s+['\"`]/.test(trimmed)) {\n return `/* SSR stub: ${trimmed} */`;\n }\n\n // Extract what's between 'import' and 'from'\n const fromIndex = trimmed.lastIndexOf(\" from \");\n if (fromIndex === -1) return null;\n\n const importClause = trimmed.slice(6, fromIndex).trim(); // Skip 'import '\n\n // Default import: import X from 'url' -> const X = null\n if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(importClause)) {\n return `const ${importClause} = null; /* SSR stub for ${imp.n} */`;\n }\n\n // Namespace import: import * as X from 'url' -> const X = {}\n const namespaceMatch = importClause.match(/^\\*\\s+as\\s+([a-zA-Z_$][a-zA-Z0-9_$]*)$/);\n if (namespaceMatch) {\n return `const ${namespaceMatch[1]} = {}; /* SSR stub for ${imp.n} */`;\n }\n\n // Named imports: import { X, Y as Z } from 'url' -> const X = null, Z = null\n const namedMatch = importClause.match(/^\\{([^}]+)\\}$/);\n if (namedMatch?.[1]) {\n const names = namedMatch[1].split(\",\").map((n) => {\n const parts = n.trim().split(/\\s+as\\s+/);\n return parts[parts.length - 1]?.trim() ?? \"\";\n });\n const stubs = names.map((n) => `${n} = null`).join(\", \");\n return `const ${stubs}; /* SSR stub for ${imp.n} */`;\n }\n\n // Mixed import: import X, { Y } from 'url'\n const mixedMatch = importClause.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*,\\s*\\{([^}]+)\\}$/);\n if (mixedMatch?.[1] && mixedMatch[2]) {\n const defaultName = mixedMatch[1];\n const names = mixedMatch[2].split(\",\").map((n) => {\n const parts = n.trim().split(/\\s+as\\s+/);\n return parts[parts.length - 1]?.trim() ?? \"\";\n });\n const allNames = [defaultName, ...names].map((n) => `${n} = null`).join(\", \");\n return `const ${allNames}; /* SSR stub for ${imp.n} */`;\n }\n\n // Unknown pattern - don't modify\n return null;\n}\n\nexport const ssrHttpStubPlugin: TransformPlugin = {\n name: \"ssr-http-stub\",\n stage: TransformStage.RESOLVE_CONTEXT + 1, // Run just after resolve-context, before resolve-relative\n\n // No condition needed - this plugin is only added to SSR_PIPELINE\n\n async transform(ctx) {\n const imports = await parseImports(ctx.code);\n\n // Check if any HTTP imports need stubbing\n const needsStubbing = imports.some(\n (imp) => imp.n && isHttpImport(imp.n) && isBrowserOnlyModule(imp.n) && imp.d === -1,\n );\n\n if (!needsStubbing) {\n return ctx.code;\n }\n\n // Rewrite browser-only HTTP imports to stubs\n return await rewriteImports(ctx.code, (imp, statement) => generateStub(imp, statement));\n },\n};\n", "/**\n * Resolve relative stage - ./relative imports \u2192 full paths.\n *\n * Transforms relative imports based on target:\n * - SSR: Normalizes extensions to .js for temp file resolution\n * - Browser: Transforms to module server HTTP URLs\n */\n\nimport {\n blockExternalUrlImports,\n resolveRelativeImports,\n resolveRelativeImportsForSSR,\n resolveVeryfrontImports,\n} from \"../../esm/path-resolver.ts\";\nimport { rendererLogger as logger } from \"@veryfront/utils\";\nimport { isBrowser, isSSR } from \"../context.ts\";\nimport { type TransformContext, type TransformPlugin, TransformStage } from \"../types.ts\";\n\n/**\n * Resolve relative plugin - transforms relative imports to full paths.\n */\nexport const resolveRelativePlugin: TransformPlugin = {\n name: \"resolve-relative\",\n stage: TransformStage.RESOLVE_RELATIVE,\n\n async transform(ctx: TransformContext): Promise<string> {\n let code = ctx.code;\n\n if (isSSR(ctx)) {\n // SSR: Block external URL imports from unknown hosts\n // Allowed CDN hosts (esm.sh, deno.land) are kept as-is\n const urlBlockResult = await blockExternalUrlImports(code, ctx.filePath);\n code = urlBlockResult.code;\n\n if (urlBlockResult.blockedUrls.length > 0) {\n logger.warn(\"[PIPELINE:resolve-relative] Blocked external URL imports in SSR mode\", {\n file: ctx.filePath.slice(-60),\n blockedUrls: urlBlockResult.blockedUrls,\n });\n }\n\n // SSR: Keep relative imports but normalize extensions to .js\n // SSRModuleLoader ensures all dependencies are transformed to temp directory\n code = await resolveRelativeImportsForSSR(code);\n\n // Rewrite @veryfront/* imports for npm compatibility (both Node.js and Deno)\n code = await resolveVeryfrontImports(code);\n } else if (isBrowser(ctx)) {\n // Browser: Rewrite imports to use module server (HTTP paths)\n code = await resolveRelativeImports(\n code,\n ctx.filePath,\n ctx.projectDir,\n ctx.moduleServerUrl,\n );\n }\n\n return code;\n },\n};\n\nexport default resolveRelativePlugin;\n", "/**\n * Resolve bare stage - bare npm imports \u2192 esm.sh URLs.\n *\n * Transforms bare package imports (e.g., \"lodash\") to CDN URLs.\n * - SSR: Applies import map to normalize remaining bare specifiers\n * - Browser: Rewrites to esm.sh URLs or vendor bundle paths\n */\n\nimport { rewriteBareImports, rewriteVendorImports } from \"../../esm/import-rewriter.ts\";\nimport {\n getDefaultImportMap,\n transformImportsWithMap,\n} from \"@veryfront/modules/import-map/index.ts\";\nimport { isBrowser, isSSR } from \"../context.ts\";\nimport { type TransformContext, type TransformPlugin, TransformStage } from \"../types.ts\";\n\n/**\n * Resolve bare plugin - transforms bare imports to CDN URLs.\n */\nexport const resolveBarePlugin: TransformPlugin = {\n name: \"resolve-bare\",\n stage: TransformStage.RESOLVE_BARE,\n\n async transform(ctx: TransformContext): Promise<string> {\n let code = ctx.code;\n\n if (isSSR(ctx)) {\n // SSR: Apply import map to normalize remaining bare specifiers\n // This ensures all imports of the same package use the same module instance,\n // preventing React context mismatch issues\n code = transformImportsWithMap(\n code,\n getDefaultImportMap(),\n undefined,\n { resolveBare: true },\n );\n } else if (isBrowser(ctx)) {\n // Browser: Rewrite bare imports to CDN URLs\n if (ctx.moduleServerUrl && ctx.vendorBundleHash) {\n // Use vendor bundle if available\n code = await rewriteVendorImports(code, ctx.moduleServerUrl, ctx.vendorBundleHash);\n } else {\n // Fall back to esm.sh URLs\n code = await rewriteBareImports(code, ctx.moduleServerUrl);\n }\n }\n\n return code;\n },\n};\n\nexport default resolveBarePlugin;\n", "import { parseImports, replaceSpecifiers, rewriteImports } from \"./lexer.ts\";\nimport { REACT_DEFAULT_VERSION, TAILWIND_VERSION } from \"@veryfront/utils/constants/cdn.ts\";\nimport { rendererLogger as logger } from \"@veryfront/utils\";\n\n/**\n * Track unversioned imports to warn users about reproducibility.\n * Imports without explicit versions may break when packages update.\n */\nconst unversionedImportsWarned = new Set<string>();\n\n/**\n * Check if a specifier has an inline version specifier.\n * Returns true for: pkg@1.2.3, pkg@^1.2.3, @scope/pkg@1.2.3\n */\nfunction hasVersionSpecifier(specifier: string): boolean {\n // Match @version patterns: @1.2.3, @^1.2.3, @~1.2.3, @1.x\n return /@[\\d^~x][\\d.x^~-]*(?=\\/|$)/.test(specifier);\n}\n\n/**\n * Warn about unversioned npm imports for reproducibility.\n * These imports can break when packages update on esm.sh.\n */\nfunction warnUnversionedImport(specifier: string): void {\n // Only warn once per specifier to avoid spam\n if (unversionedImportsWarned.has(specifier)) {\n return;\n }\n unversionedImportsWarned.add(specifier);\n\n // Suggest a versioned import\n const suggestedVersion = \"x.y.z\"; // User needs to find actual version\n const packageName = specifier.split(\"/\")[0];\n const isScoped = specifier.startsWith(\"@\");\n const scopedPackage = isScoped ? specifier.split(\"/\").slice(0, 2).join(\"/\") : packageName;\n const subpath = isScoped\n ? specifier.split(\"/\").slice(2).join(\"/\")\n : specifier.split(\"/\").slice(1).join(\"/\");\n const versionedSpecifier = subpath\n ? `${scopedPackage}@${suggestedVersion}/${subpath}`\n : `${scopedPackage}@${suggestedVersion}`;\n\n logger.warn(\"[ESM] Unversioned import may cause reproducibility issues\", {\n import: specifier,\n suggestion: `Pin version: import '${versionedSpecifier}'`,\n help: \"Run 'npm info \" + (isScoped ? scopedPackage : packageName!) +\n \" version' to find current version\",\n });\n}\n\n/**\n * Normalize package specifier by stripping inline version specifiers.\n * This ensures all imports of a package use the same version from the import map.\n *\n * Examples:\n * \"tailwindcss@3.4.17/plugin\" -> \"tailwindcss/plugin\"\n * \"tailwindcss@^4.1.17/colors\" -> \"tailwindcss/colors\"\n * \"@tailwindcss/typography@0.5.16\" -> \"@tailwindcss/typography\"\n */\nfunction normalizeVersionedSpecifier(specifier: string): string {\n // Match package@version patterns and strip the version\n // Handles: pkg@1.2.3, pkg@^1.2.3, pkg@~1.2.3, pkg@1.x, @scope/pkg@1.2.3\n return specifier.replace(/@[\\d^~x][\\d.x^~-]*(?=\\/|$)/, \"\");\n}\n\nexport function rewriteBareImports(code: string, _moduleServerUrl?: string): Promise<string> {\n // Always use esm.sh URLs for React packages in browser mode\n // The _vendor/ path approach requires a handler to serve vendor modules,\n // which is not implemented. Using esm.sh ensures React is loaded correctly.\n // Packages that should be kept as bare specifiers for HTML import map to resolve\n // These need consistent module instances, so HTML import map handles them\n const htmlImportMapPackages = [\n \"@tanstack/react-query\",\n \"@tanstack/query-core\",\n \"next-themes\",\n \"framer-motion\",\n ];\n\n // Use ?target=es2022 to ensure identical builds between SSR (Deno) and browser\n // Without this, esm.sh auto-detects target and may serve different builds, causing hydration mismatches\n const importMap: Record<string, string> = {\n \"react\": `https://esm.sh/react@${REACT_DEFAULT_VERSION}?target=es2022`,\n \"react-dom\": `https://esm.sh/react-dom@${REACT_DEFAULT_VERSION}?target=es2022`,\n \"react-dom/client\": `https://esm.sh/react-dom@${REACT_DEFAULT_VERSION}/client?target=es2022`,\n \"react-dom/server\": `https://esm.sh/react-dom@${REACT_DEFAULT_VERSION}/server?target=es2022`,\n \"react/jsx-runtime\": `https://esm.sh/react@${REACT_DEFAULT_VERSION}/jsx-runtime?target=es2022`,\n \"react/jsx-dev-runtime\":\n `https://esm.sh/react@${REACT_DEFAULT_VERSION}/jsx-dev-runtime?target=es2022`,\n // NOTE: veryfront/ai/react is NOT rewritten here - it's handled by the HTML import map\n // which points to /_veryfront/lib/ai/react.js served from the local package\n };\n\n return Promise.resolve(replaceSpecifiers(code, (specifier) => {\n // Check known import map first\n if (importMap[specifier]) {\n return importMap[specifier]!;\n }\n\n // Skip if already absolute URL, relative path, or local module path\n if (\n specifier.startsWith(\"http://\") ||\n specifier.startsWith(\"https://\") ||\n specifier.startsWith(\"./\") ||\n specifier.startsWith(\"../\") ||\n specifier.startsWith(\"/\") ||\n specifier.startsWith(\"@/\") || // Project alias\n specifier.startsWith(\"veryfront\") // Veryfront packages\n ) {\n return null;\n }\n\n // Normalize: strip inline version specifiers (e.g., tailwindcss@3.4.17 -> tailwindcss)\n // This allows the import map in HTML to control the actual version\n const normalized = normalizeVersionedSpecifier(specifier);\n\n // Check if this package should be kept as a bare specifier for HTML import map\n // This ensures consistent module instances for context-dependent packages\n const matchesImportMapPackage = htmlImportMapPackages.some(\n (pkg) => normalized === pkg || normalized.startsWith(`${pkg}/`),\n );\n if (matchesImportMapPackage) {\n return null; // Keep as bare specifier - HTML import map will resolve it\n }\n\n // Pin tailwindcss to unified version to prevent multiple versions loading\n let finalSpecifier = normalized;\n if (normalized === \"tailwindcss\" || normalized.startsWith(\"tailwindcss/\")) {\n finalSpecifier = normalized.replace(/^tailwindcss/, `tailwindcss@${TAILWIND_VERSION}`);\n } else if (!hasVersionSpecifier(specifier)) {\n // Warn about unversioned imports for reproducibility\n // Skip warning for known packages that we pin versions for\n warnUnversionedImport(specifier);\n }\n\n // Convert remaining bare imports (npm packages) to esm.sh URLs\n // Use ?external=react,react-dom so esm.sh does NOT bundle React inside packages.\n // Instead, packages will import React from the browser's import map (shared instance).\n // Use ?target=es2022 to ensure identical builds between SSR and browser.\n return `https://esm.sh/${finalSpecifier}?external=react,react-dom&target=es2022`;\n }));\n}\n\nexport async function rewriteVendorImports(\n code: string,\n moduleServerUrl: string,\n vendorBundleHash: string,\n): Promise<string> {\n const vendorUrl = `${moduleServerUrl}/_vendor.js?v=${vendorBundleHash}`;\n\n const reactPackages = new Set([\n \"react\",\n \"react-dom\",\n \"react-dom/client\",\n \"react-dom/server\",\n \"react/jsx-runtime\",\n \"react/jsx-dev-runtime\",\n ]);\n\n // First, preserve export statements by only swapping the specifier\n let result = await rewriteImports(code, (imp, statement) => {\n if (!imp.n || !reactPackages.has(imp.n)) return null;\n const trimmed = statement.trimStart();\n if (!trimmed.startsWith(\"export\")) return null;\n\n const specStart = imp.s - imp.ss;\n const specEnd = imp.e - imp.ss;\n const before = statement.slice(0, specStart);\n const after = statement.slice(specEnd);\n return `${before}${vendorUrl}${after}`;\n });\n\n // Re-parse after export rewrites\n const baseSource = result;\n const imports = await parseImports(baseSource);\n\n // Process in reverse order to maintain indices\n for (let i = imports.length - 1; i >= 0; i--) {\n const imp = imports[i];\n if (!imp) continue;\n\n // Skip if not a vendor package\n if (!imp.n || !reactPackages.has(imp.n)) continue;\n\n const exportName = sanitizeVendorExportName(imp.n);\n\n if (imp.d > -1) {\n // Dynamic import: import('react') -> import('vendor').then(m => m.react)\n // imp.d is start of `import(`, imp.e is end of specifier content\n\n // Find closing paren after the specifier\n const afterSpecifier = baseSource.substring(imp.e);\n // Matches closing quote then closing paren\n const match = afterSpecifier.match(/^['\"]\\s*\\)/);\n\n if (!match) continue;\n\n const endOfCall = imp.e + match[0].length;\n\n const before = result.substring(0, imp.d);\n const after = result.substring(endOfCall);\n const replacement = `import('${vendorUrl}').then(m => m.${exportName})`;\n\n result = before + replacement + after;\n } else {\n // Static import\n // Extract the part between \"import\" and \"from\"\n const beforeSpecifier = baseSource.substring(imp.ss, imp.s);\n const fromIndex = beforeSpecifier.lastIndexOf(\"from\");\n\n if (fromIndex === -1) {\n // Side-effect import: import 'react'\n const before = result.substring(0, imp.ss);\n const after = result.substring(imp.se);\n result = before + `import '${vendorUrl}'` + after;\n continue;\n }\n\n // Extract the import clause (e.g., \"{ useState }\", \"React\", \"* as React\")\n // \"import \" is length 7\n const clause = beforeSpecifier.substring(6, fromIndex).trim();\n\n let replacement = \"\";\n if (clause.startsWith(\"*\")) {\n // import * as React from 'react'\n replacement = `import ${clause} from '${vendorUrl}'`;\n } else if (clause.startsWith(\"{\")) {\n // import { useState } from 'react'\n // -> import { react } from 'vendor'; const { useState } = react;\n replacement =\n `import { ${exportName} } from '${vendorUrl}'; const ${clause} = ${exportName}`;\n } else {\n // import React from 'react'\n // -> import { react as React } from 'vendor'\n replacement = `import { ${exportName} as ${clause} } from '${vendorUrl}'`;\n }\n\n const before = result.substring(0, imp.ss);\n const after = result.substring(imp.se);\n result = before + replacement + after;\n }\n }\n\n return result;\n}\n\nfunction sanitizeVendorExportName(pkg: string): string {\n return pkg\n .replace(/^@/, \"\") // Remove @ prefix\n .replace(/[\\/\\-]/g, \"_\") // Replace / and - with _\n .replace(/_([a-z])/g, (_, letter) => letter.toUpperCase()) // camelCase\n .replace(/^_/, \"\"); // Remove leading underscore\n}\n", "/**\n * Finalize stage - caching, HTTP bundling, final cleanup.\n *\n * Handles final processing steps:\n * - SSR: Bundle remaining HTTP imports that weren't in the import map\n * - Caching: Store results in transform cache\n */\n\nimport { bundleHttpImports } from \"../../esm/http-bundler.ts\";\nimport { cwd } from \"../../../../platform/compat/process.ts\";\nimport { join } from \"std/path/mod.ts\";\nimport { isSSR } from \"../context.ts\";\nimport { type TransformContext, type TransformPlugin, TransformStage } from \"../types.ts\";\n\n/**\n * Finalize plugin - performs final cleanup and SSR HTTP bundling.\n */\nexport const finalizePlugin: TransformPlugin = {\n name: \"finalize\",\n stage: TransformStage.FINALIZE,\n\n transform(ctx: TransformContext): string {\n let code = ctx.code;\n\n if (isSSR(ctx)) {\n // SSR: Process remaining HTTP imports (ones not in import map)\n // This bundles external esm.sh modules that couldn't be resolved via npm:\n const httpCacheDir = join(cwd(), \".cache\", \"veryfront-http-bundle\");\n code = bundleHttpImports(code, httpCacheDir, ctx.contentHash);\n }\n\n // Note: Caching is handled by the orchestrator after all stages complete\n\n return code;\n },\n};\n\nexport default finalizePlugin;\n", "/**\n * HTTP Import Handler for SSR.\n *\n * UNIFIED APPROACH: Both SSR and browser use esm.sh URLs for React.\n * This ensures identical module instances, preventing hydration mismatches.\n * Works across Deno, Node, and Bun since esm.sh URLs are standard HTTPS imports.\n */\n\nimport { rendererLogger as logger } from \"@veryfront/utils\";\nimport { getReactUrls, REACT_VERSION } from \"./package-registry.ts\";\n\nconst LOG_PREFIX = \"[HTTP-HANDLER]\";\n\n/** Check if code has HTTP imports */\nexport function hasHttpImports(code: string): boolean {\n return /['\"]https?:\\/\\/[^'\"]+['\"]/.test(code);\n}\n\n/**\n * Get React aliases for SSR bundling.\n *\n * UNIFIED APPROACH: Uses esm.sh URLs (same as browser) to ensure\n * SSR and browser use identical React instances, preventing hydration errors.\n *\n * Includes aliases for npm: specifiers (from Deno import map resolution)\n * so esbuild can resolve them to esm.sh URLs.\n */\nexport function getReactAliases(): Record<string, string> {\n const urls = getReactUrls();\n return {\n // Bare specifiers\n \"react\": urls.react,\n \"react-dom\": urls[\"react-dom\"],\n \"react/jsx-runtime\": urls[\"react/jsx-runtime\"],\n \"react/jsx-dev-runtime\": urls[\"react/jsx-dev-runtime\"],\n \"react-dom/server\": urls[\"react-dom/server\"],\n \"react-dom/client\": urls[\"react-dom/client\"],\n // npm: specifiers (Deno import map resolution produces these)\n \"npm:react\": urls.react,\n [`npm:react@${REACT_VERSION}`]: urls.react,\n [`npm:react@${REACT_VERSION}/jsx-runtime`]: urls[\"react/jsx-runtime\"],\n [`npm:react@${REACT_VERSION}/jsx-dev-runtime`]: urls[\"react/jsx-dev-runtime\"],\n \"npm:react-dom\": urls[\"react-dom\"],\n [`npm:react-dom@${REACT_VERSION}`]: urls[\"react-dom\"],\n [`npm:react-dom@${REACT_VERSION}/server`]: urls[\"react-dom/server\"],\n [`npm:react-dom@${REACT_VERSION}/client`]: urls[\"react-dom/client\"],\n };\n}\n\n/** Strip Deno shim from esm.sh bundles */\nexport function stripDenoShim(code: string): string {\n const isDeno = typeof Deno !== \"undefined\";\n if (!isDeno) return code;\n return code.replace(\n /globalThis\\.Deno\\s*=\\s*globalThis\\.Deno\\s*\\|\\|\\s*\\{[\\s\\S]*?env:\\s*\\{[\\s\\S]*?\\}\\s*\\};?/g,\n \"/* Deno shim stripped */\",\n );\n}\n\n/** Placeholder for esbuild plugin (used by MDX loader) */\nexport function createHTTPPlugin(): { name: string; setup: () => void } {\n return { name: \"vf-http-noop\", setup: () => {} };\n}\n\n/**\n * Process HTTP imports for SSR.\n *\n * For Deno: Pass through as-is. HTTP imports work natively when temp files\n * are outside node_modules (in .cache/).\n *\n * For Node/Bun: Would need esbuild bundling (see cross-platform support issue).\n */\nexport function bundleHttpImports(\n code: string,\n _tempDir: string,\n hash: string,\n): string {\n const has = hasHttpImports(code);\n logger.debug(`${LOG_PREFIX} Check: hasHttp=${has}, hash=${hash.slice(0, 8)}`);\n\n if (!has) return code;\n\n // Deno: Pass through - HTTP imports work natively\n // The temp files are now in .cache/ (outside node_modules), so Deno\n // uses native module resolution which supports https:// imports.\n const isDeno = typeof Deno !== \"undefined\";\n if (isDeno) {\n logger.debug(`${LOG_PREFIX} Deno detected - passing through HTTP imports`);\n return code;\n }\n\n // Node/Bun: Would need esbuild bundling here for cross-platform support\n logger.warn(`${LOG_PREFIX} Non-Deno runtime detected - HTTP imports may fail`);\n return code;\n}\n", "/**\n * SSR Browser Globals\n *\n * Provides minimal browser API stubs for SSR to prevent crashes when\n * third-party libraries check for browser features during server rendering.\n *\n * These are NOT full implementations - just enough to not throw errors.\n * Components should still use proper guards (typeof window !== 'undefined')\n * for any actual browser functionality.\n */\n\n// Track if globals have been set up\nlet ssrGlobalsInitialized = false;\n\n/**\n * Minimal document stub for SSR\n * Handles common feature detection patterns like:\n * - 'exitFullscreen' in document\n * - document.createElement\n * - document.querySelector\n */\nconst createDocumentStub = () => ({\n // Fullscreen API (video.js, etc.)\n exitFullscreen: undefined,\n webkitExitFullscreen: undefined,\n mozCancelFullScreen: undefined,\n msExitFullscreen: undefined,\n fullscreenElement: null,\n webkitFullscreenElement: null,\n mozFullScreenElement: null,\n msFullscreenElement: null,\n\n // DOM methods (return null/empty to indicate not found)\n createElement: () => createElementStub(),\n createElementNS: () => createElementStub(),\n createTextNode: () => ({ textContent: \"\" }),\n querySelector: () => null,\n querySelectorAll: () => [],\n getElementById: () => null,\n getElementsByClassName: () => [],\n getElementsByTagName: () => [],\n getElementsByName: () => [],\n\n // Document properties\n documentElement: {\n style: {},\n classList: { add: () => {}, remove: () => {}, contains: () => false },\n },\n body: {\n style: {},\n classList: { add: () => {}, remove: () => {}, contains: () => false },\n appendChild: () => {},\n },\n head: { appendChild: () => {}, removeChild: () => {} },\n readyState: \"complete\",\n cookie: \"\",\n domain: \"\",\n referrer: \"\",\n title: \"\",\n URL: \"\",\n location: { href: \"\", pathname: \"/\", search: \"\", hash: \"\" },\n\n // Event handling (no-op)\n addEventListener: () => {},\n removeEventListener: () => {},\n dispatchEvent: () => true,\n\n // Style/CSS\n styleSheets: [],\n adoptedStyleSheets: [],\n});\n\n/**\n * Minimal element stub\n */\nconst createElementStub = () => ({\n style: {},\n classList: { add: () => {}, remove: () => {}, contains: () => false, toggle: () => false },\n dataset: {},\n setAttribute: () => {},\n getAttribute: () => null,\n removeAttribute: () => {},\n hasAttribute: () => false,\n appendChild: () => {},\n removeChild: () => {},\n insertBefore: () => {},\n replaceChild: () => {},\n cloneNode: () => createElementStub(),\n addEventListener: () => {},\n removeEventListener: () => {},\n querySelector: () => null,\n querySelectorAll: () => [],\n getBoundingClientRect: () => ({ top: 0, left: 0, right: 0, bottom: 0, width: 0, height: 0 }),\n offsetWidth: 0,\n offsetHeight: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n clientWidth: 0,\n clientHeight: 0,\n innerHTML: \"\",\n outerHTML: \"\",\n textContent: \"\",\n innerText: \"\",\n children: [],\n childNodes: [],\n parentNode: null,\n parentElement: null,\n nextSibling: null,\n previousSibling: null,\n firstChild: null,\n lastChild: null,\n});\n\n/**\n * Minimal window stub for SSR\n */\nconst createWindowStub = () => ({\n // Common properties\n document: createDocumentStub(),\n navigator: {\n userAgent: \"SSR\",\n language: \"en-US\",\n languages: [\"en-US\"],\n platform: \"SSR\",\n vendor: \"\",\n onLine: true,\n cookieEnabled: false,\n mediaDevices: { getUserMedia: () => Promise.reject(new Error(\"SSR\")) },\n },\n location: {\n href: \"\",\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n origin: \"\",\n protocol: \"https:\",\n host: \"\",\n hostname: \"\",\n port: \"\",\n assign: () => {},\n replace: () => {},\n reload: () => {},\n },\n history: {\n length: 0,\n state: null,\n pushState: () => {},\n replaceState: () => {},\n go: () => {},\n back: () => {},\n forward: () => {},\n },\n\n // Dimensions (common for responsive checks)\n innerWidth: 1024,\n innerHeight: 768,\n outerWidth: 1024,\n outerHeight: 768,\n screenX: 0,\n screenY: 0,\n pageXOffset: 0,\n pageYOffset: 0,\n scrollX: 0,\n scrollY: 0,\n devicePixelRatio: 1,\n\n // Timers (use real implementations if available)\n setTimeout: globalThis.setTimeout,\n clearTimeout: globalThis.clearTimeout,\n setInterval: globalThis.setInterval,\n clearInterval: globalThis.clearInterval,\n requestAnimationFrame: (cb: () => void) => globalThis.setTimeout(cb, 16),\n cancelAnimationFrame: globalThis.clearTimeout,\n\n // Storage (no-op)\n localStorage: {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n clear: () => {},\n length: 0,\n key: () => null,\n },\n sessionStorage: {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n clear: () => {},\n length: 0,\n key: () => null,\n },\n\n // Events\n addEventListener: () => {},\n removeEventListener: () => {},\n dispatchEvent: () => true,\n\n // Media queries\n matchMedia: (query: string) => ({\n matches: false,\n media: query,\n onchange: null,\n addListener: () => {},\n removeListener: () => {},\n addEventListener: () => {},\n removeEventListener: () => {},\n dispatchEvent: () => true,\n }),\n\n // Misc\n getComputedStyle: () => ({\n getPropertyValue: () => \"\",\n }),\n getSelection: () => null,\n print: () => {},\n alert: () => {},\n confirm: () => false,\n prompt: () => null,\n open: () => null,\n close: () => {},\n focus: () => {},\n blur: () => {},\n scroll: () => {},\n scrollTo: () => {},\n scrollBy: () => {},\n resizeTo: () => {},\n resizeBy: () => {},\n moveTo: () => {},\n moveBy: () => {},\n\n // Crypto (basic stub)\n crypto: globalThis.crypto,\n\n // Performance\n performance: globalThis.performance,\n\n // fetch is available in Deno\n fetch: globalThis.fetch,\n\n // URL/URLSearchParams are available in Deno\n URL: globalThis.URL,\n URLSearchParams: globalThis.URLSearchParams,\n\n // TextEncoder/Decoder are available in Deno\n TextEncoder: globalThis.TextEncoder,\n TextDecoder: globalThis.TextDecoder,\n});\n\n/**\n * Create a stub class for DOM element types.\n * Used by libraries like framer-motion that check instanceof.\n */\n// deno-lint-ignore no-explicit-any\nfunction createElementClass(name: string): any {\n // Create a named class for better debugging\n const ElementClass = class {};\n Object.defineProperty(ElementClass, \"name\", { value: name });\n return ElementClass;\n}\n\n/**\n * Set up browser globals for SSR\n * Safe to call multiple times - only initializes once\n */\nexport function setupSSRGlobals(): void {\n if (ssrGlobalsInitialized) return;\n\n // Only set up if we're in a server environment (no existing window)\n if (typeof globalThis.window !== \"undefined\" && typeof globalThis.document !== \"undefined\") {\n // Already have browser globals, don't override\n return;\n }\n\n const windowStub = createWindowStub();\n\n // Set globals\n (globalThis as Record<string, unknown>).window = windowStub;\n (globalThis as Record<string, unknown>).document = windowStub.document;\n (globalThis as Record<string, unknown>).navigator = windowStub.navigator;\n (globalThis as Record<string, unknown>).location = windowStub.location;\n (globalThis as Record<string, unknown>).history = windowStub.history;\n (globalThis as Record<string, unknown>).localStorage = windowStub.localStorage;\n (globalThis as Record<string, unknown>).sessionStorage = windowStub.sessionStorage;\n (globalThis as Record<string, unknown>).matchMedia = windowStub.matchMedia;\n (globalThis as Record<string, unknown>).getComputedStyle = windowStub.getComputedStyle;\n (globalThis as Record<string, unknown>).requestAnimationFrame = windowStub.requestAnimationFrame;\n (globalThis as Record<string, unknown>).cancelAnimationFrame = windowStub.cancelAnimationFrame;\n\n // Self-reference\n (globalThis as Record<string, unknown>).self = windowStub;\n\n // DOM Element classes - needed by framer-motion and other animation libraries\n // These check `instanceof SVGElement` etc to determine element types\n if (typeof globalThis.Element === \"undefined\") {\n (globalThis as Record<string, unknown>).Element = createElementClass(\"Element\");\n }\n if (typeof globalThis.HTMLElement === \"undefined\") {\n (globalThis as Record<string, unknown>).HTMLElement = createElementClass(\"HTMLElement\");\n }\n if (typeof globalThis.SVGElement === \"undefined\") {\n (globalThis as Record<string, unknown>).SVGElement = createElementClass(\"SVGElement\");\n }\n if (typeof globalThis.Node === \"undefined\") {\n (globalThis as Record<string, unknown>).Node = createElementClass(\"Node\");\n }\n if (typeof globalThis.Text === \"undefined\") {\n (globalThis as Record<string, unknown>).Text = createElementClass(\"Text\");\n }\n if (typeof globalThis.Comment === \"undefined\") {\n (globalThis as Record<string, unknown>).Comment = createElementClass(\"Comment\");\n }\n if (typeof globalThis.DocumentFragment === \"undefined\") {\n (globalThis as Record<string, unknown>).DocumentFragment = createElementClass(\n \"DocumentFragment\",\n );\n }\n\n ssrGlobalsInitialized = true;\n}\n\n// Track SSR server port and project domain for fetch rewriting\nlet ssrServerPort: number | null = null;\nlet ssrProjectDomain: string | null = null;\nlet ssrClientOnlyFetching = false; // When true, API fetches don't complete during SSR\nconst originalFetch = globalThis.fetch;\n\n/**\n * Set the SSR server port for fetch URL rewriting.\n * Called by the dev server when starting.\n */\nexport function setSSRServerPort(port: number): void {\n ssrServerPort = port;\n}\n\n/**\n * Set the current project domain for fetch URL rewriting.\n * Called during SSR request handling.\n */\nexport function setSSRProjectDomain(domain: string | null): void {\n ssrProjectDomain = domain;\n}\n\n/**\n * Enable client-only fetching mode.\n * When enabled, API fetches (starting with /api/) during SSR return\n * promises that never resolve, causing React Query to suspend and\n * render fallbacks. This prevents hydration mismatches.\n */\nexport function enableSSRClientOnlyFetching(): void {\n ssrClientOnlyFetching = true;\n}\n\n/**\n * Disable client-only fetching mode.\n */\nexport function disableSSRClientOnlyFetching(): void {\n ssrClientOnlyFetching = false;\n}\n\n/**\n * Rewrite fetch URL for SSR.\n * - Handles relative URLs (starting with /) by prepending localhost\n * - Redirects requests to the project's own domain to the local server\n */\nfunction rewriteFetchUrlForSSR(url: string): string {\n if (!ssrServerPort) return url;\n\n // Handle relative URLs (e.g., \"/api/articles-2\")\n // These need an absolute base URL during SSR\n if (url.startsWith(\"/\")) {\n return `http://localhost:${ssrServerPort}${url}`;\n }\n\n try {\n const parsed = new URL(url);\n\n // Rewrite if hostname matches the current project domain (set via setSSRProjectDomain)\n // This handles all project domains dynamically without hardcoding specific domains\n if (ssrProjectDomain && parsed.hostname === ssrProjectDomain) {\n return `http://localhost:${ssrServerPort}${parsed.pathname}${parsed.search}`;\n }\n\n // Also check for www variant of the project domain\n if (ssrProjectDomain && parsed.hostname === `www.${ssrProjectDomain}`) {\n return `http://localhost:${ssrServerPort}${parsed.pathname}${parsed.search}`;\n }\n } catch {\n // Invalid URL, return as-is\n }\n\n return url;\n}\n\n/**\n * Check if a URL is an API endpoint that should be client-only.\n */\nfunction isClientOnlyApiUrl(url: string): boolean {\n // Match /api/* paths (both relative and absolute to localhost)\n if (url.startsWith(\"/api/\")) return true;\n try {\n const parsed = new URL(url);\n if (parsed.hostname === \"localhost\" && parsed.pathname.startsWith(\"/api/\")) {\n return true;\n }\n } catch {\n // Invalid URL\n }\n return false;\n}\n\n/**\n * Create SSR fetch wrapper that rewrites URLs for local development.\n * In client-only mode, API fetches return never-resolving promises\n * to allow React to render Suspense fallbacks.\n */\nfunction createSSRFetch(): typeof fetch {\n return (input: RequestInfo | URL, init?: RequestInit): Promise<Response> => {\n let url: string;\n if (typeof input === \"string\") {\n url = input;\n } else if (input instanceof URL) {\n url = input.toString();\n } else {\n url = input.url;\n }\n\n const rewrittenUrl = rewriteFetchUrlForSSR(url);\n\n // In client-only mode, API fetches return empty responses during SSR.\n // React Query will treat this as a successful fetch with empty data.\n // After hydration, the client will refetch with actual data.\n if (ssrClientOnlyFetching && isClientOnlyApiUrl(rewrittenUrl)) {\n // Return a mock empty response - this prevents the Invalid URL error\n // and allows SSR to complete. React Query will refetch client-side.\n return Promise.resolve(\n new Response(JSON.stringify({ data: [], _ssrSkipped: true }), {\n status: 200,\n headers: { \"Content-Type\": \"application/json\" },\n }),\n );\n }\n\n if (rewrittenUrl !== url) {\n // Create new request with rewritten URL\n if (typeof input === \"string\" || input instanceof URL) {\n return originalFetch(rewrittenUrl, init);\n } else {\n // Clone request with new URL\n return originalFetch(new Request(rewrittenUrl, input), init);\n }\n }\n\n return originalFetch(input, init);\n };\n}\n\n/**\n * Enable SSR fetch interception.\n * Replaces globalThis.fetch with a wrapper that rewrites URLs.\n */\nexport function enableSSRFetchInterception(): void {\n if (!ssrServerPort) return;\n (globalThis as Record<string, unknown>).fetch = createSSRFetch();\n}\n\n/**\n * Disable SSR fetch interception.\n * Restores the original fetch.\n */\nexport function disableSSRFetchInterception(): void {\n (globalThis as Record<string, unknown>).fetch = originalFetch;\n}\n\n/**\n * Check if SSR globals are active\n */\nexport function isSSRGlobalsActive(): boolean {\n return ssrGlobalsInitialized;\n}\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport type { MDXExports, MDXImportInfo, ParsedMDX } from \"./types.ts\";\nimport { extractFrontmatter, extractMetadata } from \"./module-loader/metadata-extractor.ts\";\n\nexport type { ParsedMDX };\n\nexport function parseMDXCode(compiledCode: string): ParsedMDX {\n logger.debug(\"Parsing MDX code, first 200 chars:\", compiledCode.substring(0, 200));\n const importRegex = /^\\s*import\\s+(?:{([^}]+)}|(\\w+))\\s+from\\s+['\"]([^'\"]+)['\"]\\s*;?\\s*$/gm;\n const imports = new Map<string, MDXImportInfo>();\n let match: RegExpExecArray | null;\n\n while ((match = importRegex.exec(compiledCode)) !== null) {\n if (match[1]) {\n const names = match[1].split(\",\").map((n: string) => n.trim());\n names.forEach((name: string) => {\n if (match?.[3]) {\n imports.set(name, { name, path: match[3], isDefault: false });\n }\n });\n } else if (match[2]) {\n if (match[2] && match[3]) {\n imports.set(match[2], {\n name: match[2],\n path: match[3],\n isDefault: true,\n });\n }\n }\n }\n\n const cleanedCode = compiledCode\n .replace(importRegex, \"\") // Remove top-level imports\n .replace(/^\\s*export\\s+\\{[\\s\\S]*?\\};?\\s*$/gm, \"\") // Remove named exports (including multi-line)\n .replace(/^\\s*export\\s+default\\s+function/gm, \"function\") // Convert default export function\n .replace(/^\\s*export\\s+default\\s+/gm, \"\") // Remove other default exports\n .replace(/^\\s*export\\s+const\\s+/gm, \"const \") // Convert export const to const\n .replace(/^\\s*export\\s+function\\s+/gm, \"function \") // Convert export function to function\n .replace(/^\\s*const\\s+React\\s*=.*?;?\\s*$/gm, \"\") // Remove React declarations\n .replace(/^\\s*import\\s+React\\s+from.*?;?\\s*$/gm, \"\") // Remove React imports\n .replace(/^\\s*const\\s+(Fragment|Fragment2)\\s*=.*?;?\\s*$/gm, \"\") // Remove Fragment declarations\n .replace(/^\\s*const\\s+(jsx|jsx2)\\s*=.*?;?\\s*$/gm, \"\") // Remove jsx declarations\n .replace(/^\\s*const\\s+(jsxs|jsxs2)\\s*=.*?;?\\s*$/gm, \"\"); // Remove jsxs declarations\n\n if (cleanedCode.includes(\"import React\")) {\n logger.warn(\"Import React still in cleaned code\");\n }\n if (cleanedCode.includes(\"const React\") || cleanedCode.includes(\"var React\")) {\n logger.warn(\"React declaration found in cleaned code\");\n logger.debug(\"Code snippet:\", cleanedCode.substring(0, 200));\n }\n\n const exports: MDXExports = {};\n\n const frontmatter = extractFrontmatter(cleanedCode);\n if (frontmatter) {\n exports.frontmatter = frontmatter;\n }\n\n const metadata = extractMetadata(cleanedCode);\n for (const [key, value] of Object.entries(metadata)) {\n if (value !== undefined) {\n (exports as Record<string, unknown>)[key] = value;\n }\n }\n\n return { code: cleanedCode, imports, exports };\n}\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport type { FrontmatterMetadata, LogContext, MDXModule } from \"./types.ts\";\nimport { extractBalancedBlock, parseJsonish } from \"./string-parser.ts\";\n\nexport function extractFrontmatter(moduleCode: string): FrontmatterMetadata | undefined {\n try {\n const fmIndex = moduleCode.search(/(?:export\\s+)?const\\s+frontmatter\\s*=\\s*/);\n if (fmIndex < 0) return undefined;\n\n const braceStart = moduleCode.indexOf(\"{\", fmIndex);\n if (braceStart < 0) return undefined;\n\n const raw = extractBalancedBlock(moduleCode, braceStart, \"{\", \"}\");\n if (!raw) return undefined;\n\n const jsonish = raw\n .replace(/([^\\s\"{[:,]+)\\s*:/g, '\"$1\":')\n .replace(/'([^']*)'/g, '\"$1\"');\n\n try {\n return JSON.parse(jsonish) as FrontmatterMetadata;\n } catch (e) {\n logger.debug(\"[mdx] frontmatter JSON parse failed\", e as LogContext);\n return undefined;\n }\n } catch (e) {\n logger.debug(\"[mdx] frontmatter extraction failed\", e as LogContext);\n return undefined;\n }\n}\n\ninterface MetadataPattern {\n regex: RegExp;\n key: string;\n}\n\nconst METADATA_PATTERNS: MetadataPattern[] = [\n { regex: /(?:export\\s+)?const\\s+title\\s*=\\s*[\"']([^\"']+)[\"']/, key: \"title\" },\n { regex: /(?:export\\s+)?const\\s+description\\s*=\\s*[\"']([^\"']+)[\"']/, key: \"description\" },\n { regex: /(?:export\\s+)?const\\s+layout\\s*=\\s*(true|false|[\"'][^\"']+[\"'])/, key: \"layout\" },\n { regex: /(?:export\\s+)?const\\s+headings\\s*=\\s*(\\[[\\s\\S]*?\\])/, key: \"headings\" },\n { regex: /(?:export\\s+)?const\\s+nested\\s*=\\s*({[\\s\\S]*?})/, key: \"nested\" },\n { regex: /(?:export\\s+)?const\\s+tags\\s*=\\s*(\\[[\\s\\S]*?\\])/, key: \"tags\" },\n { regex: /(?:export\\s+)?const\\s+date\\s*=\\s*[\"']([^\"']+)[\"']/, key: \"date\" },\n { regex: /(?:export\\s+)?const\\s+draft\\s*=\\s*(true|false)/, key: \"draft\" },\n];\n\nexport function extractMetadata(moduleCode: string): Partial<MDXModule> {\n const exports: Partial<MDXModule> = {};\n\n METADATA_PATTERNS.forEach(({ regex, key }) => {\n const match = moduleCode.match(regex);\n if (!match) return;\n\n const value = match[1] as string;\n\n switch (key) {\n case \"title\":\n case \"description\":\n case \"date\":\n exports[key] = value;\n break;\n\n case \"layout\":\n exports[key] = value === \"true\"\n ? true\n : value === \"false\"\n ? false\n : String(value).replace(/^\"|\"$/g, \"\");\n break;\n\n case \"headings\":\n case \"tags\":\n case \"nested\":\n try {\n exports[key] = parseJsonish(value) as never;\n } catch (e) {\n logger.warn(`Failed to parse ${key}`, e);\n }\n break;\n\n case \"draft\":\n exports[key] = value === \"true\";\n break;\n }\n });\n\n return exports;\n}\n\nexport function mergeFrontmatter(result: MDXModule): void {\n result.frontmatter = result.frontmatter || {};\n\n const keys = [\"title\", \"description\", \"layout\", \"headings\", \"tags\", \"date\", \"draft\", \"nested\"];\n for (const key of keys) {\n if (result[key] !== undefined && result.frontmatter[key] === undefined) {\n result.frontmatter[key] = result[key];\n }\n }\n}\n", "export function extractBalancedBlock(\n source: string,\n startIndex: number,\n open: \"{\" | \"[\" | \"(\",\n close?: \"}\" | \"]\" | \")\",\n): string {\n const closeCh = close || (open === \"{\" ? \"}\" : open === \"[\" ? \"]\" : \")\");\n let depth = 0;\n let i = startIndex;\n\n while (i < source.length) {\n const ch = source[i] as string;\n\n if (ch === '\"' || ch === \"'\") {\n const quote = ch;\n i++;\n while (i < source.length) {\n const q = source[i] as string;\n if (q === \"\\\\\") {\n i += 2;\n continue;\n }\n if (q === quote) {\n i++;\n break;\n }\n i++;\n }\n continue;\n }\n\n if (ch === open) depth++;\n if (ch === closeCh) {\n depth--;\n if (depth === 0) {\n return source.slice(startIndex, i + 1);\n }\n }\n i++;\n }\n\n return \"\";\n}\n\nexport function cleanModuleCode(moduleCode: string): string {\n return moduleCode\n .replace(/import\\s+.*?from\\s+['\"][^'\"]+['\"];?\\s*/gm, \"\")\n .replace(/export\\s+\\{[\\s\\S]*?\\};?$/gm, \"\")\n .replace(/export\\s+default\\s+/gm, \"\")\n .replace(/export\\s+const\\s+/gm, \"const \")\n .replace(/export\\s+function\\s+/gm, \"function \");\n}\n\nexport function parseJsonish(value: string): unknown {\n const jsonish = value\n .replace(/'([^']*)'/g, '\"$1\"')\n .replace(/([{,]\\s*)([A-Za-z_$][\\w$]*)\\s*:/g, '$1\"$2\":');\n return JSON.parse(jsonish);\n}\n", "import { rendererLogger as logger } from \"@veryfront/utils\";\nimport { wrapError as _wrapError } from \"@veryfront/errors\";\nimport {\n type BundleCode,\n type BundleMetadata,\n computeCodeHash,\n computeContentHash,\n getBundleManifestStore,\n getBundleManifestTTL,\n} from \"@veryfront/utils\";\nimport type { VeryfrontConfig } from \"@veryfront/config\";\nimport type { MdxBundle } from \"@veryfront/types\";\n\nexport interface MDXCompilationResult extends MdxBundle {\n headings?: Array<{ id: string; text: string; level: number }>;\n nodeMap?: Map<number, unknown>;\n}\n\nexport interface MDXCacheAdapterOptions {\n config: VeryfrontConfig;\n mode: \"development\" | \"production\";\n}\n\nexport class MDXCacheAdapter {\n private config: VeryfrontConfig;\n private mode: \"development\" | \"production\";\n private manifestStore = getBundleManifestStore();\n\n constructor(options: MDXCacheAdapterOptions) {\n this.config = options.config;\n this.mode = options.mode;\n }\n\n private getCacheKey(contentHash: string): string {\n return `mdx:${this.mode}:${contentHash}`;\n }\n\n private getTTL(): number | undefined {\n return getBundleManifestTTL(this.config, this.mode);\n }\n\n async computeHash(content: string): Promise<string> {\n return await computeContentHash(content);\n }\n\n async getCachedBundle(\n content: string,\n frontmatter?: Record<string, unknown>,\n filePath?: string,\n ): Promise<MDXCompilationResult | undefined> {\n try {\n const contentHash = await this.computeHash(content);\n const cacheKey = this.getCacheKey(contentHash);\n\n const metadata = await this.manifestStore.getBundleMetadata(cacheKey);\n if (!metadata) {\n return undefined;\n }\n\n const bundleCode = await this.manifestStore.getBundleCode(metadata.codeHash);\n if (!bundleCode) {\n logger.debug(\"[mdx-cache] Metadata found but code missing\", {\n filePath,\n codeHash: metadata.codeHash,\n });\n return undefined;\n }\n\n logger.debug(\"[mdx-cache] Cache hit for MDX compilation\", {\n filePath,\n codeHash: metadata.codeHash,\n size: metadata.size,\n });\n\n return {\n compiledCode: bundleCode.code,\n frontmatter: (frontmatter || {}) as Record<string, string | number | boolean | string[]>,\n headings: [],\n nodeMap: new Map(),\n };\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to retrieve cached bundle\", {\n error,\n filePath,\n });\n return undefined;\n }\n }\n\n async setCachedBundle(\n content: string,\n bundle: MDXCompilationResult,\n filePath?: string,\n ): Promise<void> {\n if (!bundle.compiledCode) {\n logger.debug(\"[mdx-cache] No compiled code to cache\", { filePath });\n return;\n }\n\n try {\n const contentHash = await this.computeHash(content);\n const cacheKey = this.getCacheKey(contentHash);\n\n const bundleCode: BundleCode = {\n code: bundle.compiledCode,\n };\n\n const codeHash = await computeCodeHash(bundleCode);\n\n const encoder = new TextEncoder();\n const size = encoder.encode(bundle.compiledCode).length;\n\n const metadata: BundleMetadata = {\n hash: contentHash,\n codeHash,\n size,\n compiledAt: Date.now(),\n source: filePath || \"unknown\",\n mode: this.mode,\n meta: {\n type: \"mdx\",\n reactVersion: (await import(\"react\")).version,\n },\n };\n\n const ttl = this.getTTL();\n\n await this.manifestStore.setBundleCode(codeHash, bundleCode, ttl);\n await this.manifestStore.setBundleMetadata(cacheKey, metadata, ttl);\n\n logger.debug(\"[mdx-cache] Cached compiled MDX\", {\n filePath,\n cacheKey,\n codeHash,\n size,\n ttl,\n });\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to cache bundle\", {\n error,\n filePath,\n });\n }\n }\n\n async invalidateBundle(content: string): Promise<void> {\n try {\n const contentHash = await this.computeHash(content);\n const cacheKey = this.getCacheKey(contentHash);\n await this.manifestStore.deleteBundle(cacheKey);\n logger.debug(\"[mdx-cache] Invalidated cached bundle\", { cacheKey });\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to invalidate bundle\", { error });\n }\n }\n\n async invalidateSource(source: string): Promise<number> {\n try {\n const count = await this.manifestStore.invalidateSource(source);\n logger.debug(\"[mdx-cache] Invalidated bundles for source\", {\n source,\n count,\n });\n return count;\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to invalidate source\", {\n error,\n source,\n });\n return 0;\n }\n }\n\n async clearAll(): Promise<void> {\n try {\n await this.manifestStore.clear();\n logger.debug(\"[mdx-cache] Cleared all cached bundles\");\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to clear cache\", { error });\n }\n }\n\n async getStats(): Promise<{\n totalBundles: number;\n totalSize: number;\n oldestBundle?: number;\n newestBundle?: number;\n }> {\n try {\n return await this.manifestStore.getStats();\n } catch (error) {\n logger.debug(\"[mdx-cache] Failed to get stats\", { error });\n return {\n totalBundles: 0,\n totalSize: 0,\n };\n }\n }\n}\n", "import type * as React from \"react\";\nimport { useMemo, useRef } from \"react\";\nimport { mdxRenderer } from \"@veryfront/transforms/mdx/index.ts\";\nimport type { MDXComponents } from \"@veryfront/types\";\nimport type { MdxBundle } from \"./LayoutComponent.tsx\";\nimport { rendererLogger as logger } from \"@veryfront/utils\";\n\nexport interface ProviderComponentProps {\n mdxBundle: MdxBundle;\n children: React.ReactNode;\n components?: MDXComponents;\n}\n\nfunction useStableFrontmatter(frontmatter: MdxBundle[\"frontmatter\"]): MdxBundle[\"frontmatter\"] {\n const ref = useRef(frontmatter);\n const serialized = JSON.stringify(frontmatter);\n const prevSerialized = useRef(serialized);\n\n if (prevSerialized.current !== serialized) {\n ref.current = frontmatter;\n prevSerialized.current = serialized;\n }\n\n return ref.current;\n}\n\nexport function ProviderComponent({\n mdxBundle,\n children,\n components = {},\n}: ProviderComponentProps) {\n const stableFrontmatter = useStableFrontmatter(mdxBundle.frontmatter);\n\n const element = useMemo(() => {\n try {\n return mdxRenderer.render(mdxBundle.compiledCode, {\n components,\n frontmatter: stableFrontmatter,\n globals: mdxBundle.globals,\n extractLayout: true,\n children,\n });\n } catch (error) {\n logger.error(\"[ProviderComponent] Render failed:\", error);\n return <>{children}</>;\n }\n }, [mdxBundle.compiledCode, stableFrontmatter, components, children, mdxBundle.globals]);\n\n if (!element) return <>{children}</>;\n return element as React.ReactElement;\n}\n", "import React, { useEffect, useRef } from \"react\";\n\n// Detect SSR vs browser environment\nconst isServer = typeof window === \"undefined\";\n\n/**\n * Head component for declaring head elements (title, meta, link, etc.)\n *\n * HYDRATION FIX: This component uses environment-aware rendering:\n *\n * SSR Phase:\n * 1. Renders hidden div with children: <div data-veryfront-head><link>...</div>\n * 2. extractHeadElements() moves children to actual <head>\n * 3. Leaves empty wrapper: <div data-veryfront-head></div>\n *\n * Client Phase:\n * 1. Initial render: empty wrapper (matches SSR cleaned output) - no hydration mismatch\n * 2. After mount: useEffect adds elements directly to document.head\n *\n * This ensures:\n * - Head elements are in <head> during SSR (SEO, preloading)\n * - Hydration succeeds (empty wrapper matches both sides)\n * - Client-side navigation works via applyHeadDirectives() in dom-utils.ts\n */\nexport function Head({ children }: { children: React.ReactNode }) {\n const mountedRef = useRef(false);\n\n // After mount, add head elements directly to document.head\n useEffect(() => {\n mountedRef.current = true;\n\n if (!children) return;\n\n // Convert children to DOM elements and add to head\n const childArray = React.Children.toArray(children);\n const addedElements: Element[] = [];\n\n childArray.forEach((child) => {\n if (!React.isValidElement(child)) return;\n\n const { type, props } = child;\n if (typeof type !== \"string\") return;\n\n // Skip body elements (invalid in head)\n if (type === \"body\") return;\n\n // Handle title specially\n if (type === \"title\") {\n document.title = props.children || \"\";\n return;\n }\n\n // Create DOM element\n const element = document.createElement(type);\n\n // Set attributes\n Object.entries(props).forEach(([key, value]) => {\n if (key === \"children\") return;\n if (key === \"className\") {\n element.setAttribute(\"class\", String(value));\n } else if (key === \"htmlFor\") {\n element.setAttribute(\"for\", String(value));\n } else if (typeof value === \"boolean\") {\n if (value) element.setAttribute(key, \"\");\n } else if (value != null) {\n element.setAttribute(key, String(value));\n }\n });\n\n // Set text content if any\n if (props.children && typeof props.children === \"string\") {\n element.textContent = props.children;\n }\n\n // Mark as managed by veryfront for cleanup\n element.setAttribute(\"data-veryfront-managed\", \"1\");\n\n document.head.appendChild(element);\n addedElements.push(element);\n });\n\n // Cleanup on unmount\n return () => {\n addedElements.forEach((el) => el.remove());\n };\n }, [children]);\n\n // SSR: Render wrapper WITH children (for extraction to <head>)\n // Client: Render EMPTY wrapper (matches SSR after extraction)\n // This ensures hydration sees matching empty wrappers on both sides\n return React.createElement(\n \"div\",\n {\n \"data-veryfront-head\": \"1\",\n style: { display: \"none\" },\n },\n isServer ? children : null,\n );\n}\n", "import React from \"react\";\n\nexport type LinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n prefetch?: boolean;\n};\n\nexport function Link({ prefetch = true, children, ...rest }: LinkProps) {\n const props: React.AnchorHTMLAttributes<HTMLAnchorElement> = {\n ...rest,\n ...(prefetch ? { \"data-prefetch\": \"true\" } : {}),\n };\n return <a {...props}>{children}</a>;\n}\n", "import type React from \"react\";\nimport { createContext, useContext } from \"react\";\nimport type { MDXComponents } from \"@veryfront/types\";\n\nconst MDXContext = createContext<MDXComponents>({});\n\nexport interface MDXProviderProps {\n components?: MDXComponents;\n children: React.ReactNode;\n}\n\nexport function MDXProvider({\n components = {},\n children,\n}: MDXProviderProps) {\n return <MDXContext.Provider value={components}>{children}</MDXContext.Provider>;\n}\n\nexport function useMDXComponents(components?: MDXComponents): MDXComponents {\n const contextComponents = useContext(MDXContext);\n return { ...contextComponents, ...components };\n}\n", "export { OptimizedImage } from \"./OptimizedImage.tsx\";\nexport type { OptimizedImageProps } from \"./OptimizedImage.tsx\";\nexport { SimpleOptimizedImage } from \"./SimpleOptimizedImage.tsx\";\nexport { OptimizedBackgroundImage } from \"./OptimizedBackgroundImage.tsx\";\nexport { useOptimizedImage } from \"./useOptimizedImage.ts\";\nexport { generateBlurDataURL, getAspectRatioPadding, ResponsiveImageContainer } from \"./utils.tsx\";\n", "import React from \"react\";\nimport { RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS } from \"@veryfront/utils\";\nimport { generateSrcSet, getExtension, getOptimizedPath } from \"./helpers.ts\";\n\nexport interface OptimizedImageProps {\n src: string;\n alt: string;\n width?: number;\n height?: number;\n sizes?: string;\n formats?: (\"avif\" | \"webp\" | \"jpeg\" | \"png\")[];\n quality?: number;\n loading?: \"lazy\" | \"eager\";\n priority?: boolean;\n className?: string;\n style?: React.CSSProperties;\n placeholder?: \"blur\" | \"empty\";\n blurDataURL?: string;\n onClick?: (event: React.MouseEvent<HTMLImageElement>) => void;\n onLoad?: (event: React.SyntheticEvent<HTMLImageElement>) => void;\n onError?: (event: React.SyntheticEvent<HTMLImageElement>) => void;\n}\n\nconst DEFAULT_SIZES = [...RESPONSIVE_IMAGE_WIDTHS];\nconst DEFAULT_FORMATS: (\"avif\" | \"webp\" | \"jpeg\")[] = [\"avif\", \"webp\", \"jpeg\"];\n\nexport function OptimizedImage({\n src,\n alt,\n width,\n height,\n sizes = \"100vw\",\n formats = DEFAULT_FORMATS,\n quality = 80,\n loading,\n priority = false,\n className,\n style,\n placeholder = \"empty\",\n blurDataURL,\n onClick,\n onLoad,\n onError,\n}: OptimizedImageProps) {\n const loadingStrategy = priority ? \"eager\" : loading || \"lazy\";\n\n const originalFormat = getExtension(src);\n\n const imgStyle: React.CSSProperties = {\n ...style,\n ...(placeholder === \"blur\" && blurDataURL\n ? { backgroundImage: `url(${blurDataURL})`, backgroundSize: \"cover\" }\n : {}),\n };\n\n return (\n <picture>\n {formats.map((format) => (\n <source\n key={format}\n type={`image/${format}`}\n srcSet={generateSrcSet(src, format, DEFAULT_SIZES, quality)}\n sizes={sizes}\n />\n ))}\n\n <img\n src={getOptimizedPath(src, originalFormat, width || RESPONSIVE_IMAGE_WIDTH_LG, quality)}\n alt={alt}\n width={width}\n height={height}\n loading={loadingStrategy}\n decoding=\"async\"\n className={className}\n style={imgStyle}\n onClick={onClick}\n onLoad={onLoad}\n onError={onError}\n />\n </picture>\n );\n}\n", "export function getOptimizedPath(\n src: string,\n format: string,\n size: number,\n _quality: number = 80,\n): string {\n const basePath = src.replace(/\\.[^.]+$/, \"\");\n const optimizedDir = \".veryfront/optimized-images\";\n\n return `/${optimizedDir}${basePath}-${size}w.${format}`;\n}\n\nexport function generateSrcSet(\n src: string,\n format: string,\n sizes: number[],\n quality: number,\n): string {\n return sizes\n .map((size) => {\n const path = getOptimizedPath(src, format, size, quality);\n return `${path} ${size}w`;\n })\n .join(\", \");\n}\n\nexport function getExtension(src: string): string {\n const match = src.match(/\\.([^.]+)$/);\n const extension = match?.[1];\n return extension ? extension.toLowerCase() : \"jpeg\";\n}\n", "import React from \"react\";\nimport type { OptimizedImageProps } from \"./OptimizedImage.tsx\";\nimport { RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS } from \"@veryfront/utils\";\nimport { generateSrcSet, getOptimizedPath } from \"./helpers.ts\";\n\nconst DEFAULT_SIZES = [...RESPONSIVE_IMAGE_WIDTHS];\n\nexport function SimpleOptimizedImage({\n src,\n alt,\n width,\n height,\n format = \"webp\",\n quality = 80,\n loading = \"lazy\",\n className,\n style,\n onClick,\n onLoad,\n onError,\n}: Omit<OptimizedImageProps, \"formats\" | \"sizes\" | \"priority\" | \"placeholder\" | \"blurDataURL\"> & {\n format?: \"webp\" | \"avif\" | \"jpeg\" | \"png\";\n}) {\n const srcSet = generateSrcSet(src, format, DEFAULT_SIZES, quality);\n\n return (\n <img\n src={getOptimizedPath(src, format, width || RESPONSIVE_IMAGE_WIDTH_LG, quality)}\n srcSet={srcSet}\n alt={alt}\n width={width}\n height={height}\n loading={loading}\n decoding=\"async\"\n className={className}\n style={style as React.CSSProperties}\n onClick={onClick}\n onLoad={onLoad}\n onError={onError}\n />\n );\n}\n", "import React from \"react\";\nimport { RESPONSIVE_IMAGE_WIDTH_LG } from \"@veryfront/utils/constants/network.ts\";\nimport { getOptimizedPath } from \"./helpers.ts\";\n\nexport function OptimizedBackgroundImage({\n src,\n children,\n format = \"webp\",\n quality = 80,\n size = RESPONSIVE_IMAGE_WIDTH_LG,\n className,\n style,\n}: {\n src: string;\n children?: React.ReactNode;\n format?: \"webp\" | \"avif\" | \"jpeg\" | \"png\";\n quality?: number;\n size?: number;\n className?: string;\n style?: React.CSSProperties;\n}) {\n const optimizedSrc = getOptimizedPath(src, format, size, quality);\n\n const bgStyle: React.CSSProperties = {\n backgroundImage: `url(${optimizedSrc})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n backgroundRepeat: \"no-repeat\",\n ...style,\n };\n\n return (\n <div className={className} style={bgStyle}>\n {children}\n </div>\n );\n}\n", "import { RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS } from \"@veryfront/utils\";\nimport { generateSrcSet, getExtension, getOptimizedPath } from \"./helpers.ts\";\n\nconst DEFAULT_SIZES = [...RESPONSIVE_IMAGE_WIDTHS];\nconst DEFAULT_FORMATS: (\"avif\" | \"webp\" | \"jpeg\")[] = [\"avif\", \"webp\", \"jpeg\"];\n\nexport function useOptimizedImage(\n src: string,\n options: {\n formats?: (\"avif\" | \"webp\" | \"jpeg\" | \"png\")[];\n quality?: number;\n } = {},\n) {\n const formats = options.formats || DEFAULT_FORMATS;\n const quality = options.quality || 80;\n\n const sources = formats.map((format) => ({\n format,\n srcSet: generateSrcSet(src, format, DEFAULT_SIZES, quality),\n type: `image/${format}`,\n }));\n\n const fallback = getOptimizedPath(\n src,\n getExtension(src),\n RESPONSIVE_IMAGE_WIDTH_LG,\n quality,\n );\n\n return {\n sources,\n fallback,\n };\n}\n", "import React from \"react\";\n\nexport function generateBlurDataURL(\n width: number = 10,\n height: number = 10,\n color: string = \"#cccccc\",\n): string {\n const svg = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${width} ${height}\">\n <rect width=\"${width}\" height=\"${height}\" fill=\"${color}\"/>\n </svg>\n `;\n\n return `data:image/svg+xml;base64,${btoa(svg)}`;\n}\n\nexport function getAspectRatioPadding(width: number, height: number): string {\n return `${(height / width) * 100}%`;\n}\n\nexport function ResponsiveImageContainer({\n width,\n height,\n children,\n className,\n style,\n}: {\n width: number;\n height: number;\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}) {\n const containerStyle = {\n position: \"relative\" as const,\n width: \"100%\",\n paddingBottom: getAspectRatioPadding(width, height),\n ...style,\n };\n\n const contentStyle = {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n } as const;\n\n return (\n <div className={className} style={containerStyle}>\n <div style={contentStyle}>{children}</div>\n </div>\n );\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["logger", "LogLevel", "init_logger", "hasNodeProcess", "init_env", "init_env", "simpleHash", "init_logger", "enabled", "init_logger", "res", "content", "init_logger", "simpleHash", "init_logger", "defaultConfig", "init_deno", "serverLogger", "join", "join", "path", "process", "serverLogger", "crypto", "init_node", "ErrorCode", "ErrorCode", "init_build_errors", "ErrorCode", "init_runtime_errors", "ErrorCode", "ErrorCode", "ErrorCode", "ErrorCode", "ErrorCode", "ErrorCode", "ErrorCode", "ErrorCode", "init_build_errors", "init_runtime_errors", "deno_exports", "init_deno", "node_exports", "blue", "bold", "colors", "cyan", "dim", "gray", "green", "italic", "magenta", "red", "reset", "strikethrough", "underline", "white", "yellow", "init_node", "init_filesystem_adapter", "join", "init_environment_adapter", "init_websocket_adapter", "init_http_server", "init_adapter", "init_filesystem_adapter", "init_environment_adapter", "init_websocket_adapter", "init_http_server", "init_adapter", "init_filesystem_adapter", "init_environment_adapter", "init_websocket_adapter", "init_http_server", "init_bun", "denoAdapter", "nodeAdapter", "bunAdapter", "createMockAdapter", "isDeno", "isBun", "isCloudflare", "denoAdapter", "bunAdapter", "nodeAdapter", "init_deno", "init_node", "init_bun", "dirname", "join", "getReactImportMap", "join", "shouldDisableInterval", "computeContentHash", "computeContentHash", "visit", "visit", "visit", "dirname", "join", "A", "E", "Q", "B", "g", "I", "w", "D", "K", "o", "C", "getReactImportMap", "extractPackageFromEsmSh", "before", "after", "isDeno", "join", "join", "join", "require", "HASH_SEED_FNV1A", "getAdapter", "join", "localFs", "result", "moduleCode", "vfModuleImportPattern", "nestedImports", "match", "relativeImportPattern", "relativeImports", "relMatch", "nestedResults", "relativeResults", "unresolvedPattern", "unresolvedMatches", "contentHash", "cachePath", "filePath", "transform", "extractFrontmatter", "extractFrontmatter", "getAdapter", "useMemo", "useRef", "Fragment", "jsx", "useRef", "useMemo", "jsx", "React", "useRef", "jsx", "jsx", "getExtension", "jsx", "getExtension", "jsx", "DEFAULT_SIZES", "jsx", "DEFAULT_SIZES", "DEFAULT_FORMATS", "getExtension", "jsx"]
7
7
  }