veryfront 0.0.4 → 0.0.5

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.
@@ -0,0 +1,7 @@
1
+ {
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/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 })\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 ]);\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};\n\nconst configCacheByProject = new Map<string, VeryfrontConfig>();\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 } 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()}`;\n const configModule = await import(configUrl);\n const userConfig = configModule.default || configModule;\n\n validateCorsConfig(userConfig);\n validateConfigShape(userConfig);\n\n const merged = mergeConfigs(userConfig);\n configCacheByProject.set(projectDir, 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) return cached;\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, defaultConfig);\n return defaultConfig;\n}\n\nexport function clearConfigCache() {\n configCacheByProject.clear();\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 (error) {\n // Note: Can't use logger here due to circular dependency (logger imports env.ts)\n console.debug(`Failed to get environment variable ${name}:`, error);\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 type { VeryfrontConfig } from \"./types.ts\";\nimport { createError, toError } from \"../../core/errors/veryfront-error.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 = Deno.env.get(\"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; // 60 seconds\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": ";AAAA,SAAS,SAAS;;;AC0DX,SAAS,YAAY,OAAuC;AACjE,SAAO;AACT;AA4CO,SAAS,QAAQ,gBAAuC;AAC7D,QAAM,QAAQ,IAAI,MAAM,eAAe,OAAO;AAC9C,QAAM,OAAO,kBAAkB,eAAe,IAAI;AAClD,SAAO,eAAe,OAAO,WAAW;AAAA,IACtC,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,cAAc;AAAA,EAChB,CAAC;AACD,SAAO;AACT;;;AD7GA,IAAM,aAAa,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAEvF,IAAM,wBAAwB,EAClC,OAAO;AAAA,EACN,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,cAAc,EAAE,OAAO;AAAA,IACrB,YAAY,EAAE,QAAQ,EAAE,SAAS;AAAA,IACjC,eAAe,EAAE,QAAQ,EAAE,SAAS;AAAA,EACtC,CAAC,EAAE,QAAQ,EAAE,SAAS;AAAA,EACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,OAAO,CAAC,EAAE,SAAS;AAAA,EAC1C,eAAe,EAAE,OAAO,EAAE,SAAS;AAAA,EACnC,OAAO,EACJ,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,EAClD,QAAQ,EACR,SAAS;AAAA,EACZ,OAAO,EACJ,OAAO;AAAA,IACN,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,IAC5B,eAAe,EAAE,QAAQ,EAAE,SAAS;AAAA,IACpC,SAAS,EACN,OAAO;AAAA,MACN,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,MACnC,QAAQ,EAAE,QAAQ,EAAE,SAAS;AAAA,IAC/B,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACd,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACZ,OAAO,EACJ,OAAO;AAAA,IACN,KAAK,EAAE,OAAO,EAAE,SAAS;AAAA,IACzB,gBAAgB,EACb,OAAO;AAAA,MACN,MAAM,EAAE,KAAK,CAAC,SAAS,MAAM,QAAQ,CAAC,EAAE,SAAS;AAAA,MACjD,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,MAC9B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,MAC/B,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,MAC1C,SAAS,EAAE,QAAQ,EAAE,SAAS;AAAA,IAChC,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACd,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACZ,KAAK,EACF,OAAO;AAAA,IACN,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,IAC3C,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,MAAM,EAAE,QAAQ,EAAE,SAAS;AAAA,IAC3B,KAAK,EAAE,QAAQ,EAAE,SAAS;AAAA,IAC1B,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC3C,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACZ,SAAS,EACN,OAAO;AAAA,IACN,WAAW,EACR,OAAO;AAAA,MACN,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MACvC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IAClD,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACd,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACZ,UAAU,EACP,OAAO;AAAA,IACN,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IAC5C,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,IAChD,MAAM,WAAW,SAAS;AAAA,IAC1B,MAAM,EAAE,KAAK,CAAC,eAAe,4BAA4B,aAAa,CAAC,EAAE,SAAS;AAAA,IAClF,MAAM,EAAE,KAAK,CAAC,eAAe,aAAa,cAAc,CAAC,EAAE,SAAS;AAAA,IACpE,MAAM,EAAE,KAAK,CAAC,gBAAgB,aAAa,CAAC,EAAE,SAAS;AAAA,EACzD,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACZ,YAAY,EACT,OAAO;AAAA,IACN,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS;AAAA,EACzC,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACZ,SAAS,EACN,OAAO;AAAA,IACN,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACZ,eAAe,EACZ,OAAO;AAAA,IACN,QAAQ,EACL,OAAO;AAAA,MACN,SAAS,EAAE,QAAQ,EAAE,SAAS;AAAA,MAC9B,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,QAAQ,QAAQ,KAAK,CAAC,CAAC,EAAE,SAAS;AAAA,MACnE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,SAAS;AAAA,MACrD,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,MACnD,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,MAC9B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,MAC/B,kBAAkB,EAAE,QAAQ,EAAE,SAAS;AAAA,IACzC,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,IACZ,KAAK,EACF,OAAO;AAAA,MACN,SAAS,EAAE,QAAQ,EAAE,SAAS;AAAA,MAC9B,QAAQ,EAAE,QAAQ,EAAE,SAAS;AAAA,MAC7B,cAAc,EAAE,QAAQ,EAAE,SAAS;AAAA,MACnC,OAAO,EAAE,QAAQ,EAAE,SAAS;AAAA,MAC5B,aAAa,EAAE,QAAQ,EAAE,SAAS;AAAA,MAClC,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,MAC9B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,MAC/B,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MACvC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MAC3C,WAAW,EAAE,QAAQ,EAAE,SAAS;AAAA,IAClC,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACd,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACZ,eAAe,EACZ,OAAO;AAAA,IACN,SAAS,EACN,OAAO;AAAA,MACN,SAAS,EAAE,QAAQ,EAAE,SAAS;AAAA,MAC9B,UAAU,EAAE,KAAK,CAAC,UAAU,UAAU,QAAQ,SAAS,CAAC,EAAE,SAAS;AAAA,MACnE,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,MAC9B,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,MACjC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,IAChD,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,IACZ,SAAS,EACN,OAAO;AAAA,MACN,SAAS,EAAE,QAAQ,EAAE,SAAS;AAAA,MAC9B,UAAU,EAAE,KAAK,CAAC,cAAc,QAAQ,SAAS,CAAC,EAAE,SAAS;AAAA,MAC7D,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,MAC9B,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,MAC5B,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,IACxD,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACd,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACZ,IAAI,EACD,OAAO;AAAA,IACN,MAAM,EAAE,KAAK,CAAC,SAAS,iBAAiB,QAAQ,CAAC,EAAE,SAAS;AAAA,IAC5D,OAAO,EACJ,OAAO;AAAA,MACN,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,IACZ,WAAW,EACR,OAAO;AAAA,MACN,YAAY,EAAE,OAAO,EAAE,IAAI;AAAA,MAC3B,UAAU,EAAE,OAAO;AAAA,MACnB,aAAa,EAAE,OAAO;AAAA,MACtB,OAAO,EACJ,OAAO;AAAA,QACN,SAAS,EAAE,QAAQ,EAAE,SAAS;AAAA,QAC9B,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,QAC1C,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,MAChD,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,MACZ,OAAO,EACJ,OAAO;AAAA,QACN,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,QAC7C,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,QACnD,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,MACjD,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,IACd,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,IACZ,QAAQ,EACL,OAAO;AAAA,MACN,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,WAAW,UAAU,CAAC,CAAC,CAAC,EAAE,SAAS;AAAA,IAC5E,CAAC,EACA,QAAQ,EACR,SAAS;AAAA,EACd,CAAC,EACA,QAAQ,EACR,SAAS;AACd,CAAC,EACA,QAAQ;AAIJ,SAAS,wBAAwB,OAAiC;AACvE,QAAM,SAAS,sBAAsB,UAAU,KAAK;AACpD,MAAI,CAAC,OAAO,SAAS;AACnB,UAAM,QAAQ,OAAO,MAAM,OAAO,CAAC;AACnC,UAAM,OAAO,OAAO,MAAM,SAAS,MAAM,KAAK,KAAK,GAAG,IAAI;AAC1D,UAAM,WAAW,OAAO,WAAW,OAAO,KAAK;AAC/C,QAAI,OAAO;AACX,QAAI,OAAO,IAAI,EAAE,SAAS,eAAe,GAAG;AAC1C,aAAO;AAAA,IACT;AAEA,UAAM,UAAyB;AAAA,MAC7B,OAAO;AAAA,MACP,UAAU,WAAW;AAAA,MACrB,OAAO;AAAA,IACT;AAEA,UAAM;AAAA,MACJ,YAAY;AAAA,QACV,MAAM;AAAA,QACN,SAAS,+BAA+B,IAAI,KAAK,QAAQ,IAAI,IAAI;AAAA,QACjE;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO,OAAO;AAChB;AAEO,SAAS,wBAAwB,OAA0C;AAChF,QAAM,QAAQ,oBAAI,IAAI;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,SAAO,OAAO,KAAK,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;AACvD;;;AEtPA,SAAS,YAAY;;;ACoBd,SAAS,eAAe,QAA2C;AACxE,SACE,OAAO,WAAW,YAClB,WAAW,QACX,UAAU,UACV,OAAQ,OAA0B,MAAM,KAAK,QAAQ;AAEzD;AAEO,SAAS,eAAe,QAA8C;AAC3E,SACE,OAAO,WAAW,YAClB,WAAW,QACX,aAAa,UACb,OAAQ,OAA6B,SAAS,QAAQ;AAE1D;;;ACnCO,SAAS,uBAAuB,MAAkC;AACvE,MAAI;AACF,QAAI,OAAO,SAAS,eAAe,eAAe,UAAU,GAAG;AAC7D,YAAM,QAAS,WAA8B,MAAM,IAAI,IAAI,IAAI;AAC/D,aAAO,UAAU,KAAK,SAAY;AAAA,IACpC;AACA,QAAI,eAAe,UAAU,GAAG;AAC9B,YAAM,QAAS,WAAiC,SAAS,IAAI,IAAI;AACjE,aAAO,UAAU,KAAK,SAAY;AAAA,IACpC;AAAA,EACF,SAAS,OAAO;AAEd,YAAQ,MAAM,sCAAsC,IAAI,KAAK,KAAK;AAClE,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;ACKA,IAAI;AAEJ,SAAS,gBAAgB,QAAQ,OAAiB;AAChD,MAAI,SAAS,mBAAmB,QAAW;AACzC,qBAAiB,gBAAgB;AAAA,EACnC;AACA,SAAO;AACT;AAEA,IAAM,gBAAN,MAAsC;AAAA,EACpC,YACU,QACA,QAAkB,gBAAgB,GAC1C;AAFQ;AACA;AAAA,EACP;AAAA,EAEH,SAAS,OAAuB;AAC9B,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,WAAqB;AACnB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,YAAoB,MAAuB;AAC/C,QAAI,KAAK,SAAS,eAAgB;AAChC,cAAQ,MAAM,IAAI,KAAK,MAAM,YAAY,OAAO,IAAI,GAAG,IAAI;AAAA,IAC7D;AAAA,EACF;AAAA,EAEA,KAAK,YAAoB,MAAuB;AAC9C,QAAI,KAAK,SAAS,cAAe;AAC/B,cAAQ,IAAI,IAAI,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG,IAAI;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,KAAK,YAAoB,MAAuB;AAC9C,QAAI,KAAK,SAAS,cAAe;AAC/B,cAAQ,KAAK,IAAI,KAAK,MAAM,WAAW,OAAO,IAAI,GAAG,IAAI;AAAA,IAC3D;AAAA,EACF;AAAA,EAEA,MAAM,YAAoB,MAAuB;AAC/C,QAAI,KAAK,SAAS,eAAgB;AAChC,cAAQ,MAAM,IAAI,KAAK,MAAM,YAAY,OAAO,IAAI,GAAG,IAAI;AAAA,IAC7D;AAAA,EACF;AAAA,EAEA,MAAM,KAAQ,OAAe,IAAkC;AAC7D,UAAM,QAAQ,YAAY,IAAI;AAC9B,QAAI;AACF,YAAM,SAAS,MAAM,GAAG;AACxB,YAAM,MAAM,YAAY,IAAI;AAC5B,WAAK,MAAM,GAAG,KAAK,kBAAkB,MAAM,OAAO,QAAQ,CAAC,CAAC,IAAI;AAChE,aAAO;AAAA,IACT,SAAS,QAAQ;AACf,YAAM,MAAM,YAAY,IAAI;AAC5B,WAAK,MAAM,GAAG,KAAK,kBAAkB,MAAM,OAAO,QAAQ,CAAC,CAAC,MAAM,MAAM;AACxE,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,cAAc,aAAuD;AAC5E,MAAI,CAAC;AAAa,WAAO;AACzB,QAAM,QAAQ,YAAY,YAAY;AACtC,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,IAAM,kBAAkB,MAAgB;AACtC,QAAM,WAAW,uBAAuB,WAAW;AACnD,QAAM,cAAc,cAAc,QAAQ;AAC1C,MAAI,gBAAgB;AAAW,WAAO;AAEtC,QAAM,YAAY,uBAAuB,iBAAiB;AAC1D,MAAI,cAAc,OAAO,cAAc;AAAQ,WAAO;AAEtD,SAAO;AACT;AAEA,IAAM,iBAAiB,oBAAI,IAAmB;AAE9C,SAAS,aAAa,QAA+B;AACnD,QAAMA,UAAS,IAAI,cAAc,MAAM;AACvC,iBAAe,IAAIA,OAAM;AACzB,SAAOA;AACT;AAEO,IAAM,YAAY,aAAa,KAAK;AACpC,IAAM,eAAe,aAAa,QAAQ;AAC1C,IAAM,iBAAiB,aAAa,UAAU;AAC9C,IAAM,gBAAgB,aAAa,SAAS;AAC5C,IAAM,cAAc,aAAa,OAAO;AAExC,IAAM,SAAS,aAAa,WAAW;;;AChIvC,IAAM,eAAe;AAQrB,IAAM,qBAAqB;AAI3B,IAAM,wBAAwB;AAE9B,SAAS,eAAe,UAAkB,uBAA+B;AAC9E,SAAO,GAAG,YAAY,UAAU,OAAO;AACzC;AAEO,SAAS,kBAAkB,UAAkB,uBAA+B;AACjF,SAAO,GAAG,YAAY,cAAc,OAAO;AAC7C;AAEO,SAAS,wBAAwB,UAAkB,uBAA+B;AACvF,SAAO,GAAG,YAAY,cAAc,OAAO;AAC7C;AAEO,SAAS,wBAAwB,UAAkB,uBAA+B;AACvF,SAAO,GAAG,YAAY,cAAc,OAAO;AAC7C;AAEO,SAAS,yBAAyB,UAAkB,uBAA+B;AACxF,SAAO,GAAG,YAAY,UAAU,OAAO;AACzC;AAEO,SAAS,4BAA4B,UAAkB,uBAA+B;AAC3F,SAAO,GAAG,YAAY,UAAU,OAAO;AACzC;AAEO,SAAS,kBAAkB,UAAkB,uBAA+C;AACjG,SAAO;AAAA,IACL,OAAO,eAAe,OAAO;AAAA,IAC7B,aAAa,kBAAkB,OAAO;AAAA,IACtC,oBAAoB,wBAAwB,OAAO;AAAA,IACnD,oBAAoB,wBAAwB,OAAO;AAAA,IACnD,qBAAqB,yBAAyB,OAAO;AAAA,IACrD,yBAAyB,4BAA4B,OAAO;AAAA,EAC9D;AACF;;;AJtCA,SAAS,+BAA+B;AACtC,SAAO,EAAE,SAAS,kBAAkB,qBAAqB,EAAE;AAC7D;AAEA,IAAM,iBAA2C;AAAA,EAC/C,OAAO;AAAA,EACP,aAAa;AAAA,EACb,cAAc;AAAA,IACZ,YAAY;AAAA,EACd;AAAA,EACA,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,SAAS;AAAA,MACP,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,KAAK;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,gBAAgB;AAAA,IAClB;AAAA,EACF;AAAA,EACA,KAAK;AAAA,IACH,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,SAAS;AAAA,IACP,WAAW,6BAA6B;AAAA,EAC1C;AACF;AAEA,IAAM,uBAAuB,oBAAI,IAA6B;AAE9D,SAAS,mBAAmB,YAA2B;AACrD,MAAI,CAAC,cAAc,OAAO,eAAe,UAAU;AACjD;AAAA,EACF;AACA,QAAM,SAAS;AACf,QAAM,WAAW,OAAO;AACxB,QAAM,OAAO,UAAU;AACvB,MAAI,CAAC,QAAQ,OAAO,SAAS,YAAY,MAAM,QAAQ,IAAI,GAAG;AAC5D;AAAA,EACF;AAEA,QAAM,UAAU;AAChB,QAAM,SAAS,QAAQ;AACvB,MAAI,WAAW,UAAa,OAAO,WAAW,UAAU;AACtD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,oBAAoB,YAA2B;AACtD,0BAAwB,UAAU;AAClC,QAAM,UAAU,OAAO,eAAe,YAAY,aAC9C,wBAAwB,UAAqC,IAC7D,CAAC;AACL,MAAI,QAAQ,SAAS,GAAG;AACtB,iBAAa,KAAK,wBAAwB,QAAQ,KAAK,IAAI,CAAC,0BAA0B;AAAA,EACxF;AACF;AAEA,SAAS,aAAa,YAAuD;AAC3E,QAAM,SAA0B;AAAA,IAC9B,GAAG;AAAA,IACH,GAAG;AAAA,IACH,KAAK;AAAA,MACH,GAAG,eAAe;AAAA,MAClB,GAAG,WAAW;AAAA,IAChB;AAAA,IACA,OAAO;AAAA,MACL,GAAG,eAAe;AAAA,MAClB,GAAG,WAAW;AAAA,IAChB;AAAA,IACA,OAAO;AAAA,MACL,GAAG,eAAe;AAAA,MAClB,GAAG,WAAW;AAAA,IAChB;AAAA,IACA,OAAO;AAAA,MACL,GAAG,eAAe;AAAA,MAClB,GAAG,WAAW;AAAA,IAChB;AAAA,IACA,SAAS;AAAA,MACP,GAAG,eAAe;AAAA,MAClB,GAAG,WAAW;AAAA,IAChB;AAAA,EACF;AAEA,MAAI,OAAO,SAAS;AAClB,UAAM,aAAa,eAAe,SAAS;AAC3C,UAAM,UAAU,WAAW,SAAS;AAEpC,QAAI,cAAc,SAAS;AACzB,aAAO,QAAQ,YAAY;AAAA,QACzB,SAAS;AAAA,UACP,GAAI,YAAY,WAAW,CAAC;AAAA,UAC5B,GAAI,SAAS,WAAW,CAAC;AAAA,QAC3B;AAAA,QACA,QAAQ;AAAA,UACN,GAAI,YAAY,UAAU,CAAC;AAAA,UAC3B,GAAI,SAAS,UAAU,CAAC;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,wBAAN,cAAoC,MAAM;AAAA,EACxC,YAAY,SAAiB;AAC3B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EACd;AACF;AAEA,eAAe,mBACb,YACA,YACiC;AACjC,MAAI;AACF,UAAM,YAAY,UAAU,UAAU,MAAM,KAAK,IAAI,CAAC;AACtD,UAAM,eAAe,MAAM,OAAO;AAClC,UAAM,aAAa,aAAa,WAAW;AAE3C,uBAAmB,UAAU;AAC7B,wBAAoB,UAAU;AAE9B,UAAM,SAAS,aAAa,UAAU;AACtC,yBAAqB,IAAI,YAAY,MAAM;AAC3C,WAAO;AAAA,EACT,SAAS,OAAO;AACd,QAAI,iBAAiB,uBAAuB;AAC1C,YAAM;AAAA,IACR;AAEA,QAAI,iBAAiB,SAAS,MAAM,QAAQ,WAAW,0BAA0B,GAAG;AAClF,YAAM;AAAA,IACR;AAEA,UAAM;AAAA,EACR;AACF;AAEA,eAAsB,UACpB,YACA,SAC0B;AAC1B,QAAM,SAAS,qBAAqB,IAAI,UAAU;AAClD,MAAI;AAAQ,WAAO;AAEnB,QAAM,cAAc,CAAC,uBAAuB,uBAAuB,sBAAsB;AAEzF,aAAW,cAAc,aAAa;AACpC,UAAM,aAAa,KAAK,YAAY,UAAU;AAE9C,UAAM,SAAS,MAAM,QAAQ,GAAG,OAAO,UAAU;AACjD,QAAI,CAAC;AAAQ;AAEb,QAAI;AACF,YAAM,SAAS,MAAM,mBAAmB,YAAY,UAAU;AAC9D,UAAI;AAAQ,eAAO;AAAA,IACrB,SAAS,OAAO;AACd,UAAI,iBAAiB,uBAAuB;AAC1C,cAAM;AAAA,MACR;AAEA,UAAI,iBAAiB,SAAS,MAAM,QAAQ,WAAW,0BAA0B,GAAG;AAClF,cAAM;AAAA,MACR;AAEA,YAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC1E,mBAAa,KAAK,2BAA2B,UAAU,8BAA8B;AAAA,QACnF,OAAO;AAAA,MACT,CAAC;AAED;AAAA,IACF;AAAA,EACF;AAEA,QAAMC,iBAAgB;AACtB,uBAAqB,IAAI,YAAYA,cAAa;AAClD,SAAOA;AACT;AAEO,SAAS,mBAAmB;AACjC,uBAAqB,MAAM;AAC7B;;;AKjNO,SAAS,aAAa,QAA0C;AACrE,SAAO;AACT;;;ACLO,IAAM,mBAAmB;AAEzB,IAAM,qBAAqB;AAE3B,IAAM,iBAAiB;AAEvB,IAAM,qBAAqB;AAE3B,IAAM,yBAAyB;AAE/B,IAAM,gBAAgB;AAAA,EAC3B,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EAEA,UAAU;AAAA,IACR,SAAS;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,SAAS;AAAA,EACX;AAAA,EAEA,OAAO;AAAA,IACL,KAAK;AAAA,MACH,SAAS;AAAA,MACT,eAAe;AAAA,IACjB;AAAA,EACF;AAAA,EAEA,SAAS;AAAA,IACP,eAAe,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAM,MAAM,KAAM,MAAM,GAAK;AAAA,EACtF;AACF;AAEO,IAAM,4BAA4B;AAElC,IAAM,sCAAsC;AAE5C,IAAM,mCAAmC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,+BAA+B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,2BAA2B;AAEjC,IAAM,kCAAkC;AAExC,IAAM,2BAA2B;;;AC5EjC,IAAM,YAAY;AAAA,EACvB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AACZ;AAEO,IAAM,gBAAgB;AAAA,EAC3B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW;AACb;AAEO,IAAM,iBAAiB;AAAA,EAC5B,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AACR;AAEO,IAAM,wBAAwB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,oBAAoB;AAAA,EAC/B,IAAI;AAAA,EACJ,MAAM;AACR;AAEO,IAAM,iBAAiB;AAAA,EAC5B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AACd;AAEO,SAAS,kBACd,MACA,WAA6B,QACrB;AACR,SAAO,GAAG,QAAQ,MAAM,UAAU,QAAQ,IAAI,IAAI;AACpD;AAEO,SAAS,aACd,MACA,WAA6B,QACrB;AACR,SAAO,GAAG,QAAQ,MAAM,UAAU,IAAI,IAAI,IAAI;AAChD;",
6
+ "names": ["logger", "defaultConfig"]
7
+ }