@catgirls/env
Version:
Nyaa~! Environment variables, but make them type-safe! •⩊•
2 lines • 1.47 kB
JavaScript
;var zod=require('zod');var f=class extends Error{constructor(n,r){super(n);this.errors=r;this.name="EnvValidationError";}};var g=e=>{let i={},n=[];for(let[r,o]of Object.entries(e)){let t=`NEXT_PUBLIC_${r}`,s=process.env[t];if(s===void 0&&!o.schema.isOptional()){n.push({key:r,message:`Missing environment variable: ${t}`});continue}try{let a=o.transform?o.transform(s):s,d=o.schema.parse(a);i[r]=d;}catch(a){a instanceof zod.z.ZodError&&n.push({key:r,message:`Invalid value for ${t}: ${a.errors[0].message}`});}}if(n.length>0)throw new f("Client environment validation failed",n);return i};var T=e=>{if(typeof window<"u")throw new Error("Server env accessed on client side!");let i={},n=[];for(let[r,o]of Object.entries(e)){let t=process.env[r];if(t===void 0&&!o.schema.isOptional()){n.push({key:r,message:`Missing environment variable: ${r}`});continue}try{let s=o.transform?o.transform(t):t,a=o.schema.parse(s);i[r]=a;}catch(s){s instanceof zod.z.ZodError&&n.push({key:r,message:`Invalid value for ${r}: ${s.errors[0].message}`});}}if(n.length>0)throw new f("Server environment validation failed",n);return i};var w={number:e=>parseInt(e,10),optionalNumber:e=>e===void 0?void 0:parseInt(e,10),boolean:e=>e==="true",optionalBoolean:e=>e===void 0?void 0:e==="true",json:e=>JSON.parse(e)};exports.EnvValidationError=f;exports.createClientEnv=g;exports.createServerEnv=T;exports.transformers=w;//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map