veryfront 0.0.31 → 0.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/config.js CHANGED
@@ -200,7 +200,7 @@ function findUnknownTopLevelKeys(input) {
200
200
  }
201
201
 
202
202
  // src/core/config/loader.ts
203
- import { join } from "path";
203
+ import { join } from "node:path";
204
204
 
205
205
  // src/core/utils/runtime-guards.ts
206
206
  function hasDenoRuntime(global) {
@@ -551,14 +551,15 @@ function clearConfigCache() {
551
551
  cacheRevision++;
552
552
  }
553
553
 
554
- // src/platform/compat/process.ts
555
- import process from "node:process";
556
-
557
554
  // src/platform/compat/runtime.ts
558
555
  var isNode = typeof globalThis.process !== "undefined" && globalThis.process?.versions?.node !== void 0;
559
556
  var isBun = typeof globalThis.Bun !== "undefined";
560
557
  var isCloudflare = typeof globalThis !== "undefined" && "caches" in globalThis && "WebSocketPair" in globalThis;
561
558
 
559
+ // src/platform/compat/process.ts
560
+ var nodeProcess = globalThis.process;
561
+ var hasNodeProcess2 = !!nodeProcess?.versions?.node;
562
+
562
563
  // src/core/config/define-config.ts
563
564
  function defineConfig(config) {
564
565
  return config;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/core/config/schema.ts", "../../src/core/errors/veryfront-error.ts", "../../src/core/config/loader.ts", "../../src/core/utils/runtime-guards.ts", "../../src/core/utils/logger/env.ts", "../../src/core/utils/logger/logger.ts", "../../src/core/utils/constants/cdn.ts", "../../src/platform/compat/process.ts", "../../src/platform/compat/runtime.ts", "../../src/core/config/define-config.ts", "../../src/core/config/defaults.ts", "../../src/core/config/network-defaults.ts"],
4
- "sourcesContent": ["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", "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 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\";\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: \".veryfront/cache\",\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: 3002,\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 const errorMessage = error instanceof Error ? error.message : String(error);\n serverLogger.warn(`[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", "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 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", "import process from \"node:process\";\nimport { isDeno as IS_DENO } from \"./runtime.ts\";\n\nexport function getArgs(): string[] {\n if (IS_DENO) {\n return Deno.args;\n }\n return process.argv.slice(2);\n}\n\nexport function exit(code?: number): never {\n if (IS_DENO) {\n Deno.exit(code);\n }\n process.exit(code);\n}\n\nexport function cwd(): string {\n if (IS_DENO) {\n return Deno.cwd();\n }\n return process.cwd();\n}\n\nexport function chdir(directory: string): void {\n if (IS_DENO) {\n Deno.chdir(directory);\n } else {\n process.chdir(directory);\n }\n}\n\nexport function env(): Record<string, string> {\n if (IS_DENO) {\n return Deno.env.toObject();\n }\n return process.env as Record<string, string>;\n}\n\nexport function getEnv(key: string): string | undefined {\n if (IS_DENO) {\n return Deno.env.get(key);\n }\n return process.env[key];\n}\n\nexport function setEnv(key: string, value: string): void {\n if (IS_DENO) {\n Deno.env.set(key, value);\n } else {\n process.env[key] = value;\n }\n}\n\nexport function deleteEnv(key: string): void {\n if (IS_DENO) {\n Deno.env.delete(key);\n } else {\n delete process.env[key];\n }\n}\n\nexport function pid(): number {\n if (IS_DENO) {\n return Deno.pid;\n }\n return process.pid;\n}\n\nexport function ppid(): number {\n if (IS_DENO && \"ppid\" in Deno) {\n return Deno.ppid || 0;\n }\n return process.ppid || 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 const usage = process.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 return process.stdin.isTTY ?? 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 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 return `Node.js ${process.version}`;\n}\n", "export const isDeno = typeof Deno !== \"undefined\";\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", "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 DEFAULT_DEV_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_DEV_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", "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"],
5
- "mappings": "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",
6
- "names": ["logger", "defaultConfig"]
3
+ "sources": ["../../src/core/config/schema.ts", "../../src/core/errors/veryfront-error.ts", "../../src/core/config/loader.ts", "../../src/core/utils/runtime-guards.ts", "../../src/core/utils/logger/env.ts", "../../src/core/utils/logger/logger.ts", "../../src/core/utils/constants/cdn.ts", "../../src/platform/compat/runtime.ts", "../../src/platform/compat/process.ts", "../../src/core/config/define-config.ts", "../../src/core/config/defaults.ts", "../../src/core/config/network-defaults.ts"],
4
+ "sourcesContent": ["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", "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 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\";\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: \".veryfront/cache\",\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: 3002,\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 const errorMessage = error instanceof Error ? error.message : String(error);\n serverLogger.warn(`[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", "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 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", "export const isDeno = typeof Deno !== \"undefined\";\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 return typeof Deno === \"undefined\" && 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", "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 DEFAULT_DEV_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_DEV_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", "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"],
5
+ "mappings": "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",
6
+ "names": ["logger", "defaultConfig", "hasNodeProcess"]
7
7
  }
package/dist/data.js CHANGED
@@ -521,8 +521,15 @@ var BYTES_PER_MB = 1024 * 1024;
521
521
  // deno.json
522
522
  var deno_default = {
523
523
  name: "veryfront",
524
- version: "0.0.31",
525
- nodeModulesDir: "auto",
524
+ version: "0.0.32",
525
+ exclude: [
526
+ "npm/",
527
+ "dist/",
528
+ "coverage/",
529
+ "scripts/",
530
+ "examples/",
531
+ "tests/"
532
+ ],
526
533
  exports: {
527
534
  ".": "./src/index.ts",
528
535
  "./cli": "./src/cli/main.ts",
@@ -616,11 +623,13 @@ var deno_default = {
616
623
  unified: "https://esm.sh/unified@11.0.5?dts",
617
624
  ai: "https://esm.sh/ai@5.0.76?deps=react@18.3.1,react-dom@18.3.1",
618
625
  "ai/react": "https://esm.sh/@ai-sdk/react@2.0.59?deps=react@18.3.1,react-dom@18.3.1",
626
+ "@ai-sdk/react": "https://esm.sh/@ai-sdk/react@2.0.59?deps=react@18.3.1,react-dom@18.3.1",
619
627
  "@ai-sdk/openai": "https://esm.sh/@ai-sdk/openai@2.0.1",
620
628
  "@ai-sdk/anthropic": "https://esm.sh/@ai-sdk/anthropic@2.0.4",
621
629
  unocss: "https://esm.sh/unocss@0.59.0",
622
630
  "@unocss/core": "https://esm.sh/@unocss/core@0.59.0",
623
- "@unocss/preset-wind": "https://esm.sh/@unocss/preset-wind@0.59.0"
631
+ "@unocss/preset-wind": "https://esm.sh/@unocss/preset-wind@0.59.0",
632
+ redis: "npm:redis"
624
633
  },
625
634
  compilerOptions: {
626
635
  jsx: "react-jsx",
@@ -646,8 +655,6 @@ var deno_default = {
646
655
  test: "DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --unstable-worker-options --unstable-net",
647
656
  "test:unit": "DENO_JOBS=1 deno test --parallel --allow-all --v8-flags=--max-old-space-size=8192 --ignore=tests --unstable-worker-options --unstable-net",
648
657
  "test:integration": "DENO_JOBS=1 deno test --parallel --fail-fast --allow-all tests --unstable-worker-options --unstable-net",
649
- "test:batches": "deno run --allow-all scripts/test-batches.ts",
650
- "test:unsafe": "DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --coverage=coverage --unstable-worker-options --unstable-net",
651
658
  "test:coverage": "rm -rf coverage && DENO_JOBS=1 deno test --parallel --fail-fast --allow-all --coverage=coverage --unstable-worker-options --unstable-net || exit 1",
652
659
  "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",
653
660
  "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",
@@ -661,6 +668,7 @@ var deno_default = {
661
668
  "lint:ban-deep-imports": "deno run --allow-read scripts/ban-deep-imports.ts",
662
669
  "lint:ban-internal-root-imports": "deno run --allow-read scripts/ban-internal-root-imports.ts",
663
670
  "lint:check-awaits": "deno run --allow-read scripts/check-unawaited-promises.ts",
671
+ "lint:platform": "deno run --allow-read scripts/lint-platform-agnostic.ts",
664
672
  "check:circular": "deno run -A jsr:@cunarist/deno-circular-deps src/index.ts"
665
673
  },
666
674
  lint: {
@@ -706,9 +714,6 @@ var deno_default = {
706
714
  }
707
715
  };
708
716
 
709
- // src/platform/compat/process.ts
710
- import process2 from "node:process";
711
-
712
717
  // src/platform/compat/runtime.ts
713
718
  var isDeno = typeof Deno !== "undefined";
714
719
  var isNode = typeof globalThis.process !== "undefined" && globalThis.process?.versions?.node !== void 0;
@@ -716,11 +721,16 @@ var isBun = typeof globalThis.Bun !== "undefined";
716
721
  var isCloudflare = typeof globalThis !== "undefined" && "caches" in globalThis && "WebSocketPair" in globalThis;
717
722
 
718
723
  // src/platform/compat/process.ts
724
+ var nodeProcess = globalThis.process;
725
+ var hasNodeProcess2 = !!nodeProcess?.versions?.node;
719
726
  function getEnv(key) {
720
727
  if (isDeno) {
721
- return process2.env(key);
728
+ return process.env(key);
729
+ }
730
+ if (hasNodeProcess2) {
731
+ return nodeProcess.env[key];
722
732
  }
723
- return process2.env[key];
733
+ return void 0;
724
734
  }
725
735
 
726
736
  // src/core/utils/version.ts
@@ -911,7 +921,7 @@ function isLruIntervalDisabled() {
911
921
  return true;
912
922
  }
913
923
  try {
914
- return process.env.VF_DISABLE_LRU_INTERVAL === "1";
924
+ return getEnv("VF_DISABLE_LRU_INTERVAL") === "1";
915
925
  } catch {
916
926
  return false;
917
927
  }