UNPKG

zod-config

Version:

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

2 lines (1 loc) 933 B
function o(e){return!e||typeof e!="object"?!1:Object.getPrototypeOf(e)===Object.prototype||Object.getPrototypeOf(e)===null}function i(e,t){let{regex:r}=t;return r?d(e,r):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(r=>t.test(r)).reduce((r,n)=>(r[n]=e[n],r),{})};import{ZodObject as w}from"zod/v3";import*as p from"zod/v4/core";var z={strict:f(e=>e),lenient:f(c)};function c(e){return e.replace(/[^a-z0-9]/gi,"").toLowerCase()}function f(e){return(t,r)=>e(t)===e(r)}import{readFile as s}from"fs/promises";import{parse as a}from"smol-toml";var l="toml adapter",k=({path:e,regex:t,silent:r})=>({name:l,read:async()=>{try{let n=await s(e,"utf-8"),u=a(n)||{};return i(u,{regex:t})}catch(n){throw new Error(`Failed to parse / read TOML file at ${e}: ${n instanceof Error?n.message:n}`)}},silent:r});export{k as tomlAdapter};