zod-config
Version:
Load configuration variables from multiple sources with flexible adapters, ensuring type safety with Zod.
2 lines (1 loc) • 908 B
JavaScript
function o(e){return!e||typeof e!="object"?!1:Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null}function i(e,t){let{regex:n}=t;return n?d(e,n):e}var d=(e,t)=>{if(e==null)return{};if(!o(e))throw new TypeError(`Cannot filter ${e} by regex as it is not a record-like object`);return Object.keys(e).filter(n=>t.test(n)).reduce((n,r)=>(n[r]=e[r],n),{})};import{ZodObject as w}from"zod/v3";import*as p from"zod/v4/core";var z={strict:f(e=>e),lenient:f(s)};function s(e){return e.replace(/[^a-z0-9]/gi,"").toLowerCase()}function f(e){return(t,n)=>e(t)===e(n)}import{readFile as c}from"fs/promises";var a="json adapter",E=({path:e,regex:t,silent:n})=>({name:a,read:async()=>{try{let r=await c(e,"utf-8"),u=JSON.parse(r)||{};return i(u,{regex:t})}catch(r){throw new Error(`Failed to parse / read JSON file at ${e}: ${r instanceof Error?r.message:r}`)}},silent:n});export{E as jsonAdapter};