zod-config
Version:
Load configuration variables from multiple sources with flexible adapters, ensuring type safety with Zod.
2 lines (1 loc) • 905 B
JavaScript
var s=(r,n)=>{if(r==null)return{};if(!i(r))throw new TypeError(`Cannot filter ${r} by prefix key as it is not a record-like object`);return Object.keys(r).filter(e=>e.startsWith(n)).reduce((e,t)=>(e[t]=r[t],e),{})},u=(r,n)=>{if(r==null)return{};if(!i(r))throw new TypeError(`Cannot filter ${r} by regex as it is not a record-like object`);return Object.keys(r).filter(e=>n.test(e)).reduce((e,t)=>(e[t]=r[t],e),{})};function i(r){return!r||typeof r!="object"?!1:Object.getPrototypeOf(r)===Object.prototype||Object.getPrototypeOf(r)===null}function f(r,n){let{regex:e,prefixKey:t}=n;return e?u(r,e):t?s(r,t):r}var p="script adapter",a=({path:r,prefixKey:n,regex:e,silent:t})=>({name:p,read:async()=>{try{let{default:o}=await import(r);return f(o,{prefixKey:n,regex:e})}catch(o){throw new Error(`Failed to import() script at ${r}: ${o instanceof Error?o.message:o}`)}},silent:t});export{a as scriptAdapter};