{"version":3,"file":"load.mjs","names":["viteLoadEnv"],"sources":["../src/load.ts"],"sourcesContent":["import type { EnvPreset, StandardEnvDefinition } from \"./types\";\nimport type { z } from \"zod\";\nimport process from \"node:process\";\nimport path from \"node:path\";\nimport { loadEnv as viteLoadEnv } from \"vite\";\nimport { isStandardEnvDefinition, validateStandardEnv } from \"./standard\";\nimport { validateEnv } from \"./schema\";\n\nexport type LoadEnvOptions = {\n  mode?: string;\n  envDir?: string;\n};\n\ntype ZodShape = z.ZodRawShape;\n\ntype KnownKeys<T> = keyof { [K in keyof T as string extends K ? never : K]: T[K] };\ntype StripIndex<T extends ZodShape> = Pick<T, KnownKeys<T>>;\n\ntype InferShape<TServer extends ZodShape, TClient extends ZodShape> = {\n  server: z.infer<z.ZodObject<StripIndex<TServer> & StripIndex<TClient>>>;\n  client: z.infer<z.ZodObject<StripIndex<TClient>>>;\n  all: z.infer<z.ZodObject<StripIndex<TServer> & StripIndex<TClient>>>;\n};\n\nexport async function loadEnv<\n  TServer extends ZodShape = Record<never, never>,\n  TClient extends ZodShape = Record<never, never>,\n>(\n  config: { server?: TServer; client?: TClient; presets?: EnvPreset[] },\n  options?: LoadEnvOptions,\n): Promise<InferShape<TServer, TClient>>;\n\nexport async function loadEnv(\n  config: StandardEnvDefinition,\n  options?: LoadEnvOptions,\n): Promise<{\n  server: Record<string, unknown>;\n  client: Record<string, unknown>;\n  all: Record<string, unknown>;\n}>;\n\nexport async function loadEnv(\n  config: { server?: ZodShape; client?: ZodShape; presets?: EnvPreset[] } | StandardEnvDefinition,\n  options: LoadEnvOptions = {},\n): Promise<{\n  server: Record<string, unknown>;\n  client: Record<string, unknown>;\n  all: Record<string, unknown>;\n}> {\n  const mode = options.mode ?? process.env[\"NODE_ENV\"] ?? \"development\";\n  const envDir = options.envDir ? path.resolve(options.envDir) : process.cwd();\n\n  const fileEnv = viteLoadEnv(mode, envDir, \"\");\n  const rawEnv: Record<string, string> = {\n    ...fileEnv,\n    ...filterStrings(process.env),\n  };\n\n  if (isStandardEnvDefinition(config)) {\n    const result = await validateStandardEnv(config, rawEnv);\n    if (!result.success) throwValidationError(result.errors.map((e) => e.message));\n\n    const server = Object.freeze(result.data);\n    const clientKeys = new Set(Object.keys(config.client ?? {}));\n    const client = Object.freeze(filterByKeys(server, clientKeys));\n\n    return { server, client, all: server };\n  }\n\n  const result = validateEnv(config, rawEnv);\n  if (!result.success) throwValidationError(result.errors.map((e) => e.message));\n\n  const server = Object.freeze(result.data);\n  const clientKeys = new Set(Object.keys(config.client ?? {}));\n  const client = Object.freeze(filterByKeys(server, clientKeys));\n\n  return { server, client, all: server };\n}\n\nfunction filterByKeys(data: Record<string, unknown>, keys: Set<string>): Record<string, unknown> {\n  return Object.fromEntries(Object.entries(data).filter(([k]) => keys.has(k)));\n}\n\nfunction filterStrings(env: NodeJS.ProcessEnv): Record<string, string> {\n  return Object.fromEntries(\n    Object.entries(env).filter((e): e is [string, string] => typeof e[1] === \"string\"),\n  );\n}\n\nfunction throwValidationError(messages: string[]): never {\n  const lines = messages.map((m) => \"  - \" + m).join(\"\\n\");\n  throw new Error(\"[vite-env] Validation failed:\\n\" + lines);\n}\n"],"mappings":";;;;;;AAyCA,eAAsB,QACpB,QACA,UAA0B,EAAE,EAK3B;CAKD,MAAM,SAAiC;EACrC,GAFcA,UAHH,QAAQ,QAAQ,QAAQ,IAAI,eAAe,eACzC,QAAQ,SAAS,KAAK,QAAQ,QAAQ,OAAO,GAAG,QAAQ,KAAK,EAElC,GAE9B;EACV,GAAG,cAAc,QAAQ,IAAI;EAC9B;AAED,KAAI,wBAAwB,OAAO,EAAE;EACnC,MAAM,SAAS,MAAM,oBAAoB,QAAQ,OAAO;AACxD,MAAI,CAAC,OAAO,QAAS,sBAAqB,OAAO,OAAO,KAAK,MAAM,EAAE,QAAQ,CAAC;EAE9E,MAAM,SAAS,OAAO,OAAO,OAAO,KAAK;EACzC,MAAM,aAAa,IAAI,IAAI,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,CAAC;AAG5D,SAAO;GAAE;GAAQ,QAFF,OAAO,OAAO,aAAa,QAAQ,WAAW,CAEtC;GAAE,KAAK;GAAQ;;CAGxC,MAAM,SAAS,YAAY,QAAQ,OAAO;AAC1C,KAAI,CAAC,OAAO,QAAS,sBAAqB,OAAO,OAAO,KAAK,MAAM,EAAE,QAAQ,CAAC;CAE9E,MAAM,SAAS,OAAO,OAAO,OAAO,KAAK;CACzC,MAAM,aAAa,IAAI,IAAI,OAAO,KAAK,OAAO,UAAU,EAAE,CAAC,CAAC;AAG5D,QAAO;EAAE;EAAQ,QAFF,OAAO,OAAO,aAAa,QAAQ,WAAW,CAEtC;EAAE,KAAK;EAAQ;;AAGxC,SAAS,aAAa,MAA+B,MAA4C;AAC/F,QAAO,OAAO,YAAY,OAAO,QAAQ,KAAK,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC;;AAG9E,SAAS,cAAc,KAAgD;AACrE,QAAO,OAAO,YACZ,OAAO,QAAQ,IAAI,CAAC,QAAQ,MAA6B,OAAO,EAAE,OAAO,SAAS,CACnF;;AAGH,SAAS,qBAAqB,UAA2B;CACvD,MAAM,QAAQ,SAAS,KAAK,MAAM,SAAS,EAAE,CAAC,KAAK,KAAK;AACxD,OAAM,IAAI,MAAM,oCAAoC,MAAM"}