UNPKG

zod-config

Version:

Load configuration variables from multiple sources with flexible adapters, ensuring type safety with Zod.

2 lines (1 loc) 4.98 kB
"use strict";var D=Object.create;var y=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var _=(e,n)=>{for(var r in n)y(e,r,{get:n[r],enumerable:!0})},S=(e,n,r,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of E(n))!I.call(e,o)&&o!==r&&y(e,o,{get:()=>n[o],enumerable:!(t=P(n,o))||t.enumerable});return e};var v=(e,n,r)=>(r=e!=null?D(K(e)):{},S(n||!e||!e.__esModule?y(r,"default",{value:e,enumerable:!0}):r,e)),L=e=>S(y({},"__esModule",{value:!0}),e);var W={};_(W,{loadConfig:()=>z,loadConfigSync:()=>M});module.exports=L(W);function p(e){return!e||typeof e!="object"?!1:Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null}function g(e,...n){if(!n.length)return e;let r=n.shift();return r===void 0?e:(p(e)&&p(r)&&Object.keys(r).forEach(t=>{if(r[t]===void 0)return;if(!p(r[t])){e[t]=r[t];return}let o=e[t];if(!p(o)){e[t]=g({},r[t]);return}g(o,r[t])}),g(e,...n))}var l=require("zod/v3"),d=v(require("zod/v4/core"));var V={strict:x(e=>e),lenient:x(H)},N=150;function b(e,n,r,t=0,o=N){if(t>=o||!e||!n||Object.keys(e).length===0||Object.keys(n).length===0)return e;let a=V[r];return Object.fromEntries(Object.entries(e).map(([c,i])=>{let f=Object.keys(n).find(R=>a(R,c))??c;if(!p(i))return[f,i];let u=n[f],s=T(u);return s?[f,b(i,s,r,t+1)]:[f,i]}))}function H(e){return e.replace(/[^a-z0-9]/gi,"").toLowerCase()}function C(e){return e instanceof d.$ZodObject}function B(e){return e instanceof d.$ZodDefault}function F(e){return e instanceof d.$ZodOptional}function Y(e){return e instanceof l.ZodObject}function J(e){return e instanceof l.ZodDefault}function U(e){return e instanceof l.ZodOptional}function X(e){return e instanceof d.$ZodPipe&&C(e._zod.def.in)}function q(e){return e instanceof d.$ZodPipe&&C(e._zod.def.out)}function x(e){return(n,r)=>e(n)===e(r)}function Z(e){if(B(e)||F(e))return Z(e._zod.def.innerType);if(C(e))return e._zod.def.shape;if(X(e))return e._zod.def.in._zod.def.shape;if(q(e))return e._zod.def.out._zod.def.shape}function j(e){if(J(e)||U(e))return j(e._def.innerType);if(Y(e))return e.shape}var T=e=>{if(e)return"_zod"in e?Z(e):j(e)};function O(e,n,r,t){if(!t){e[n]=r;return}let o=n.split(t),a=e;for(let c=0;c<o.length;c++){let i=o[c];if(c===o.length-1){if(i in a&&typeof a[i]=="object"&&a[i]!==null)throw new Error(`Nested key conflict: "${n}" cannot be assigned because "${o.slice(0,c+1).join(t)}" already exists as an object (created by another key)`);a[i]=r}else{if(i in a){if(typeof a[i]!="object"||a[i]===null){let f=o.slice(0,c+1).join(t);throw new Error(`Nested key conflict: Cannot create nested object at "${f}" because it already exists as a primitive value. Conflicting key: "${n}" and "${f}"`)}}else a[i]={};a=a[i]}}}var k=(e,n,r)=>!n&&!r?e:Object.entries(e).reduce((t,[o,a])=>{let c=o,i=a;if(n){let f=n({key:o,value:a});if(f===!1)return t;if(f&&typeof f=="object"&&"key"in f&&"value"in f)c=f.key,i=f.value;else throw new Error(`Invalid transform result for key "${o}": expected { key: string, value: unknown } or false, received: ${JSON.stringify(f)}`)}return r?O(t,c,i,r):t[c]=i,t},{});var m=(e,n,r,t,o)=>{let a=e;if((t||o)&&(a=k(a,t,o)),r==="strict")return a;let c=T(n);return c?b(a,c,r):a};var h=()=>typeof process<"u"?{...process.env}:{};var A=require("zod/v4/core");var w=(e,n,r,t)=>({keyMatching:e.keyMatching??n??"strict",silent:e.silent??r,transform:e.transform??t,nestingSeparator:e.nestingSeparator});var z=async e=>{let{schema:n,adapters:r,onError:t,onSuccess:o,keyMatching:a,silent:c,transform:i}=e,f=e.logger??console,u=await G(Array.isArray(r)?r:r?[r]:[],f,n,a,c,i),s;if("_zod"in n?s=await(0,A.safeParseAsync)(n,u):s=await n.safeParseAsync(u),!s.success){if(t)return t(s.error),{};throw s.error}return o&&o(s.data),s.data},G=async(e,n,r,t,o,a)=>{if(!e||e.length===0)return h();let c=await Promise.all(e.map(async i=>{let f=w(i,t,o,a),u;try{if(u=await i.read(),!u)return{}}catch(s){return f.silent||n.warn(`Cannot read data from ${i.name}: ${s instanceof Error?s.message:s}`),{}}return m(u,r,f.keyMatching,f.transform,f.nestingSeparator)}));return g({},...c)};var $=require("zod/v4/core");var M=e=>{let{schema:n,adapters:r,onError:t,onSuccess:o,keyMatching:a,silent:c,transform:i}=e,f=e.logger??console,u=Q(Array.isArray(r)?r:r?[r]:[],f,n,a,c,i),s;if("_zod"in n?s=(0,$.safeParse)(n,u):s=n.safeParse(u),!s.success){if(t)return t(s.error),{};throw s.error}return o&&o(s.data),s.data},Q=(e,n,r,t,o,a)=>{if(!e||e.length===0)return h();let c=e.map(i=>{let f=w(i,t,o,a),u;try{if(u=i.read(),!u)return{}}catch(s){return f.silent||n.warn(`Cannot read data from ${i.name}: ${s instanceof Error?s.message:s}`),{}}if(u instanceof Promise)throw new Error(`Data returned from ${i.name} is a Promise. Use loadConfig instead of loadConfigSync to use asynchronous adapters.`);return m(u,r,f.keyMatching,f.transform,f.nestingSeparator)});return g({},...c)};0&&(module.exports={loadConfig,loadConfigSync});