UNPKG

zod-config

Version:

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

2 lines (1 loc) 1.62 kB
"use strict";var c=Object.create;var i=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var y=(r,t)=>{for(var e in t)i(r,e,{get:t[e],enumerable:!0})},f=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of w(t))!g.call(r,o)&&o!==e&&i(r,o,{get:()=>t[o],enumerable:!(n=d(t,o))||n.enumerable});return r};var b=(r,t,e)=>(e=r!=null?c(x(r)):{},f(t||!r||!r.__esModule?i(e,"default",{value:r,enumerable:!0}):e,r)),P=r=>f(i({},"__esModule",{value:!0}),r);var E={};y(E,{yamlAdapter:()=>R});module.exports=P(E);var m=(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),{})},A=(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 u(r,t){let{regex:e,prefixKey:n}=t;return e?A(r,e):n?m(r,n):r}var p=require("fs/promises"),a=b(require("yaml")),j="yaml adapter",R=({path:r,prefixKey:t,regex:e,silent:n})=>({name:j,read:async()=>{try{let o=await(0,p.readFile)(r,"utf-8"),l=a.default.parse(o)||{};return u(l,{prefixKey:t,regex:e})}catch(o){throw new Error(`Failed to parse / read YAML file at ${r}: ${o instanceof Error?o.message:o}`)}},silent:n});0&&(module.exports={yamlAdapter});