zod-config
Version:
Load configuration variables from multiple sources with flexible adapters, ensuring type safety with Zod.
2 lines (1 loc) • 1.36 kB
JavaScript
;var u=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var d=(r,t)=>{for(var e in t)u(r,e,{get:t[e],enumerable:!0})},w=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of g(t))!y.call(r,o)&&o!==e&&u(r,o,{get:()=>t[o],enumerable:!(n=a(t,o))||n.enumerable});return r};var x=r=>w(u({},"__esModule",{value:!0}),r);var m={};d(m,{loadConfig:()=>c});module.exports=x(m);function s(r,...t){if(!t.length)return r;let e=t.shift();return e===void 0?r:(f(r)&&f(e)&&Object.keys(e).forEach(n=>{if(e[n]===void 0)return;if(!f(e[n])){r[n]=e[n];return}let o=r[n];if(!f(o)){r[n]=s({},e[n]);return}s(o,e[n])}),s(r,...t))}function f(r){return!r||typeof r!="object"?!1:Object.getPrototypeOf(r)===Object.prototype||Object.getPrototypeOf(r)===null}var c=async r=>{let{schema:t,adapters:e,onError:n,onSuccess:o}=r,l=r.logger??console,p=await b(Array.isArray(e)?e:e?[e]:[],l),i=await t.safeParseAsync(p);if(!i.success){if(n)return n(i.error),{};throw i.error}return o&&o(i.data),i.data},b=async(r,t)=>{if(!r||r.length===0)return process.env;let e=await Promise.all(r.map(async n=>{try{return await n.read()}catch(o){return n.silent||t.warn(`Cannot read data from ${n.name}: ${o instanceof Error?o.message:o}`),{}}}));return s({},...e)};0&&(module.exports={loadConfig});