zod-config
Version:
Load configuration variables from multiple sources with flexible adapters, ensuring type safety with Zod.
2 lines (1 loc) • 1.45 kB
JavaScript
var i=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var d=(r,t)=>{for(var e in t)i(r,e,{get:t[e],enumerable:!0})},w=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of a(t))!l.call(r,o)&&o!==e&&i(r,o,{get:()=>t[o],enumerable:!(n=c(t,o))||n.enumerable});return r};var x=r=>w(i({},"__esModule",{value:!0}),r);var j={};d(j,{jsonAdapter:()=>P});module.exports=x(j);var g=(r,t)=>{if(r==null)return{};if(!s(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(t)).reduce((e,n)=>(e[n]=r[n],e),{})},b=(r,t)=>{if(r==null)return{};if(!s(r))throw new TypeError(`Cannot filter ${r} by regex as it is not a record-like object`);return Object.keys(r).filter(e=>t.test(e)).reduce((e,n)=>(e[n]=r[n],e),{})};function s(r){return!r||typeof r!="object"?!1:Object.getPrototypeOf(r)===Object.prototype||Object.getPrototypeOf(r)===null}function f(r,t){let{regex:e,prefixKey:n}=t;return e?b(r,e):n?g(r,n):r}var u=require("fs/promises"),y="json adapter",P=({path:r,prefixKey:t,regex:e,silent:n})=>({name:y,read:async()=>{try{let o=await(0,u.readFile)(r,"utf-8"),p=JSON.parse(o)||{};return f(p,{prefixKey:t,regex:e})}catch(o){throw new Error(`Failed to parse / read JSON file at ${r}: ${o instanceof Error?o.message:o}`)}},silent:n});0&&(module.exports={jsonAdapter});
;