@arkenv/standard 1.0.0-alpha.3 → 1.0.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- const e=e=>{if(typeof e==`number`||typeof e!=`string`||!e.trim())return e;if(e.trim()===`NaN`)return NaN;let t=Number(e);return Number.isNaN(t)?e:t},t=e=>e===`true`?!0:e===`false`?!1:e,n=e=>{if(typeof e!=`string`)return e;let t=e.trim();if(t[0]!==`{`&&t[0]!==`[`)return e;try{return JSON.parse(t)}catch{return e}},r=e=>{if(e instanceof Date||typeof e!=`string`||!e.trim())return e;let t=new Date(e);return Number.isNaN(t.getTime())?e:t},i=e=>{let t={};for(let n in e){let r=e[n];r!==``&&(t[n]=r)}return t},a=(e,t=[])=>{let n=[];if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=e;if(`const`in r){let e=typeof r.const;(e===`number`||e===`boolean`)&&n.push({path:[...t],type:`primitive`})}`enum`in r&&Array.isArray(r.enum)&&r.enum.some(e=>typeof e==`number`||typeof e==`boolean`)&&n.push({path:[...t],type:`primitive`});let i=r.type;if(i===`number`||i===`integer`||i===`boolean`)n.push({path:[...t],type:`primitive`});else if(i===`string`&&`format`in r&&(r.format===`date-time`||r.format===`date`))n.push({path:[...t],type:`date`});else if(i===`object`){if(r.properties&&Object.keys(r.properties).length>0){n.push({path:[...t],type:`object`});for(let e in r.properties)n.push(...a(r.properties[e],[...t,e]))}}else i===`array`&&(n.push({path:[...t],type:`array`}),r.items&&(Array.isArray(r.items)?r.items.forEach((e,r)=>{n.push(...a(e,[...t,String(r)]))}):n.push(...a(r.items,[...t,`*`]))));for(let e of[`anyOf`,`allOf`,`oneOf`])if(r[e]&&Array.isArray(r[e]))for(let i of r[e])n.push(...a(i,t));let o=new Set;return n.filter(e=>{let t=e.path.join(`/`)+`:`+e.type;return o.has(t)?!1:o.add(t)})},o=(i,a,o={})=>{let{arrayFormat:s=`comma`}=o,c=e=>{if(s===`json`)try{return JSON.parse(e)}catch{return e}return e.trim()?e.split(`,`).map(e=>e.trim()):[]},l=(i,a)=>{if(a===`array`&&typeof i==`string`)return c(i);if(a===`object`&&typeof i==`string`)return n(i);if(a===`date`&&typeof i==`string`)return r(i);if(a===`primitive`){if(Array.isArray(i))return i.map(n=>{if(typeof n!=`string`)return n;let r=e(n);return typeof r==`number`?r:t(n)});if(typeof i!=`string`)return i;let n=e(i);return typeof n==`number`?n:t(i)}return i};if(typeof i!=`object`||!i){let e=a.find(e=>e.path.length===0);return e?l(i,e.type):i}let u=[...a].sort((e,t)=>e.path.length-t.path.length),d=(e,t,n)=>{if(t.length===0)return n(e);let[r,...i]=t;if(r===`*`){if(Array.isArray(e)){let t=!1,r=e.map(e=>{let r=d(e,i,n);return r!==e&&(t=!0),r});return t?r:e}return e}if(!e||typeof e!=`object`)return e;if(Array.isArray(e)){let t=Number(r);if(!Number.isNaN(t)&&t>=0&&t<e.length){let r=d(e[t],i,n);if(r!==e[t]){let n=[...e];return n[t]=r,n}}return e}if(Object.hasOwn(e,r)){let t=d(e[r],i,n);if(t!==e[r])return{...e,[r]:t}}return e},f=i;for(let e of u)e.path.length>0&&(f=d(f,e.path,t=>l(t,e.type)));return f};function s(e,t,n,r){let s=t?i(e):e,c={...s},l=[];if(r){let e=r();l.push(...e.missingKeys||[]),e.hasSchema&&(c=o(c,a(e.schema),{arrayFormat:n}))}return{processedEnv:s,coercedEnv:c,missingKeys:l}}const c=(e,t=2,{dontDetectNewlines:n=!1}={})=>n?`${` `.repeat(t)}${e}`:e.split(`
1
+ const e=`ArkEnvError`,t=e=>{if(typeof e==`number`||typeof e!=`string`||!e.trim())return e;if(e.trim()===`NaN`)return NaN;let t=Number(e);return Number.isNaN(t)?e:t},n=e=>e===`true`?!0:e===`false`?!1:e,r=e=>{if(typeof e!=`string`)return e;let t=e.trim();if(t[0]!==`{`&&t[0]!==`[`)return e;try{return JSON.parse(t)}catch{return e}},i=e=>{if(e instanceof Date||typeof e!=`string`||!e.trim())return e;let t=new Date(e);return Number.isNaN(t.getTime())?e:t},a=e=>{let t={};for(let n in e){let r=e[n];r!==``&&(t[n]=r)}return t},o=(e,t=[])=>{let n=[];if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=e;if(`const`in r){let e=typeof r.const;(e===`number`||e===`boolean`)&&n.push({path:[...t],type:`primitive`})}`enum`in r&&Array.isArray(r.enum)&&r.enum.some(e=>typeof e==`number`||typeof e==`boolean`)&&n.push({path:[...t],type:`primitive`});let i=r.type;if(i===`number`||i===`integer`||i===`boolean`)n.push({path:[...t],type:`primitive`});else if(i===`string`&&`format`in r&&(r.format===`date-time`||r.format===`date`))n.push({path:[...t],type:`date`});else if(i===`object`){if(r.properties&&Object.keys(r.properties).length>0){n.push({path:[...t],type:`object`});for(let e in r.properties)n.push(...o(r.properties[e],[...t,e]))}}else i===`array`&&(n.push({path:[...t],type:`array`}),r.items&&(Array.isArray(r.items)?r.items.forEach((e,r)=>{n.push(...o(e,[...t,String(r)]))}):n.push(...o(r.items,[...t,`*`]))));for(let e of[`anyOf`,`allOf`,`oneOf`])if(r[e]&&Array.isArray(r[e]))for(let i of r[e])n.push(...o(i,t));let a=new Set;return n.filter(e=>{let t=e.path.join(`/`)+`:`+e.type;return a.has(t)?!1:a.add(t)})},s=(e,a,o={})=>{let{arrayFormat:s=`comma`}=o,c=e=>{if(s===`json`)try{return JSON.parse(e)}catch{return e}return e.trim()?e.split(`,`).map(e=>e.trim()):[]},l=(e,a)=>{if(a===`array`&&typeof e==`string`)return c(e);if(a===`object`&&typeof e==`string`)return r(e);if(a===`date`&&typeof e==`string`)return i(e);if(a===`primitive`){if(Array.isArray(e))return e.map(e=>{if(typeof e!=`string`)return e;let r=t(e);return typeof r==`number`?r:n(e)});if(typeof e!=`string`)return e;let r=t(e);return typeof r==`number`?r:n(e)}return e};if(typeof e!=`object`||!e){let t=a.find(e=>e.path.length===0);return t?l(e,t.type):e}let u=[...a].sort((e,t)=>e.path.length-t.path.length),d=(e,t,n)=>{if(t.length===0)return n(e);let[r,...i]=t;if(r===`*`){if(Array.isArray(e)){let t=!1,r=e.map(e=>{let r=d(e,i,n);return r!==e&&(t=!0),r});return t?r:e}return e}if(!e||typeof e!=`object`)return e;if(Array.isArray(e)){let t=Number(r);if(!Number.isNaN(t)&&t>=0&&t<e.length){let r=d(e[t],i,n);if(r!==e[t]){let n=[...e];return n[t]=r,n}}return e}if(Object.hasOwn(e,r)){let t=d(e[r],i,n);if(t!==e[r])return{...e,[r]:t}}return e},f=e;for(let e of u)e.path.length>0&&(f=d(f,e.path,t=>l(t,e.type)));return f};function c(e,t,n,r){let i=t?a(e):e,c={...i},l=[];if(r){let e=r();l.push(...e.missingKeys||[]),e.hasSchema&&(c=s(c,o(e.schema),{arrayFormat:n}))}return{processedEnv:i,coercedEnv:c,missingKeys:l}}const l=(e,t=2,{dontDetectNewlines:n=!1}={})=>n?`${` `.repeat(t)}${e}`:e.split(`
2
2
  `).map(e=>`${` `.repeat(t)}${e}`).join(`
3
- `),l={red:`\x1B[31m`,yellow:`\x1B[33m`,cyan:`\x1B[36m`,reset:`\x1B[0m`},u=()=>typeof process<`u`&&process.versions!=null&&process.versions.node!=null,d=()=>!!(!u()||process.env.NO_COLOR!==void 0||process.env.CI!==void 0||process.stdout&&!process.stdout.isTTY),f=(e,t)=>u()&&!d()?`${l[e]}${t}${l.reset}`:t;function p(e){return e.map(e=>`${f(`yellow`,e.path)} ${e.message.trimStart()}`).join(`
4
- `)}var m=class extends Error{constructor(e,t=`Errors found while validating environment variables`){let n=p(e);super(`${f(`red`,t)}\n${c(n)}\n`),this.name=`ArkEnvError`,this.issues=e}};Object.defineProperty(m,`name`,{value:`ArkEnvError`});function h(e,t){if(typeof t==`string`)throw new m([{path:e,message:`ArkType DSL strings are not supported in "standard" mode. Use a Standard Schema validator (e.g., Zod, Valibot) or import from "arkenv" for ArkType schemas.`,code:`INVALID_SCHEMA`}])}function g(e,t){let n=t&&typeof t==`object`&&`~standard`in t&&t[`~standard`];if(!n||typeof n!=`object`||!(`validate`in n)||typeof n.validate!=`function`)throw new m([{path:e,message:`Invalid validator: expected a Standard Schema 1.0 validator (must have "~standard" property). Import from "arkenv" to use ArkType schemas.`,code:`INVALID_SCHEMA`}])}function _(e){if(!e||typeof e!=`object`||Array.isArray(e))throw new m([{path:``,message:`Invalid schema: expected an object mapping in "standard" mode.`,code:`INVALID_SCHEMA`}])}const v=/secret|(_|^)key(_|$)|token|(_|^)password(_|$)|(_|^)pass(_|$)|(_|^)auth(_|$)|jwt|cert|credential|database_url|db_url/i;function y(e){if(e!==void 0)return e;if(typeof process>`u`)return!1;let t=process.env.ARKENV_DEBUG_SECRETS;return t===`true`||t===`1`}function b(e){return v.test(e)&&!/public/i.test(e)}function x(e,t,n){let r=y(n?.debugSecrets);if(e===void 0)return`missing`;if(e===null)return`null`;if(!r&&b(t))return`[REDACTED]`;if(typeof e==`string`)return JSON.stringify(e);if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);if(typeof e==`symbol`)return e.toString();if(typeof e==`function`)return`[Function]`;if(e&&typeof e==`object`)try{if(Array.isArray(e)){let r=e.slice(0,3).map(e=>x(e,t,n));return e.length>3&&r.push(`...(+${e.length-3} more)`),`[${r.join(`, `)}]`}let r=Object.keys(e),i=r.slice(0,3).map(r=>`${r}: ${x(e[r],t,n)}`);return r.length>3&&i.push(`...(+${r.length-3} more)`),`{ ${i.join(`, `)} }`}catch{return Object.prototype.toString.call(e)}return String(e)}const S={too_small:`VALUE_TOO_SMALL`,too_big:`VALUE_TOO_LARGE`,invalid_string:`INVALID_FORMAT`,invalid_date:`INVALID_FORMAT`,custom:`INVALID_FORMAT`};function C(e,t,n){let r=t.toLowerCase();return e===`invalid_type`&&(n===void 0||n===`undefined`)||r===`required`?`MISSING_VARIABLE`:e in S?S[e]:/regex|pattern|match/.test(r)?`PATTERN_MISMATCH`:`INVALID_TYPE`}function w(e){let t=e.minimum??e.min,n=e.maximum??e.max;return{...typeof t==`number`?{min:t}:{},...typeof n==`number`?{max:n}:{}}}function T(e){try{return{success:!0,data:e()}}catch(e){if(e instanceof m)return{success:!1,issues:e.issues};throw e}}function E(e,t,n,r,i,a){let o={path:e,message:t,code:n,meta:r??{}};return i&&(o.expected=i),a!==void 0&&(o.received=a),o}function D(e,t,n,r,i,a){if(t===`MISSING_VARIABLE`)return n?`must be ${n} (was missing)`:`is required`;if(e.includes(`(was `))return e;let o=`(was ${f(`cyan`,!y(a?.debugSecrets)&&b(i)?`[REDACTED]`:x(r,i,a))})`;return n&&!e.includes(`Expected`)?`must be ${n} ${o}`:`${e} ${o}`}function O(e){let t={type:`object`,properties:{}},n=!1,r=[];for(let i in e){let a=e[i];if(!a){r.push(i);continue}let o=a[`~standard`];if(typeof o?.jsonSchema?.input==`function`)try{let e=o.jsonSchema.input({target:`draft-07`});if(e){t.properties[i]=e,n=!0;continue}}catch{}if(typeof a.jsonSchema?.input==`function`)try{let e=a.jsonSchema.input({target:`draft-07`});if(e){t.properties[i]=e,n=!0;continue}}catch{}if(typeof a.toJSONSchema==`function`)try{let e=a.toJSONSchema();if(e){t.properties[i]=e,n=!0;continue}}catch{}if(typeof a.toStandardJSONSchema?.v1==`function`)try{let e=a.toStandardJSONSchema.v1();if(e){t.properties[i]=e,n=!0;continue}}catch{}r.push(i)}return{jsonSchema:t,hasJsonSchema:n,missingKeys:r}}function k(e){return typeof e==`object`&&e&&`key`in e?String(e.key):String(e)}function A(e,t){return!t||t.length===0?e:[e,...t.map(k)].join(`.`)}function j(e,t){let n=e,r;try{let i=e,a=e.trim();if(a[0]===`{`||a[0]===`[`)try{i=JSON.parse(e)}catch(e){r=`[Unparseable JSON: ${e.message}]`}if(!r){for(let e of t)i=i?.[k(e)];n=i}}catch(e){r=`[Traversal error: ${e.message}]`}return{receivedVal:n,traversalError:r}}function M(e,t){let{env:n=process.env,onUndeclaredKey:r=`delete`,coerce:i=!0,arrayFormat:a=`comma`,emptyAsUndefined:o=!1}=t,c={},l=[],{processedEnv:u,coercedEnv:d,missingKeys:f}=s(n,o,a,i?()=>{let{jsonSchema:t,hasJsonSchema:n,missingKeys:r}=O(e);return{schema:t,hasSchema:n,missingKeys:r}}:void 0),p=new Set(Object.keys(u));for(let n in e){let r=e[n],a=d[n];if(!r||typeof r!=`object`||!(`~standard`in r))throw new m([E(n,`Invalid schema: expected a Standard Schema 1.0 validator (e.g. Zod, Valibot) in 'standard' mode.`,`INVALID_SCHEMA`)]);let o=r[`~standard`].validate(a);if(o instanceof Promise)throw new m([E(n,`Async validation is not supported. ArkEnv is synchronous.`,`INVALID_SCHEMA`)]);if(o.issues)for(let e of o.issues){let r=A(n,e.path),a,o;if(n in u){let t=u[n];if(typeof t==`string`&&e.path?.length){let n=j(t,e.path);a=n.receivedVal,o=n.traversalError}else a=t}else a=e.received;let s=C(e.code||`invalid_type`,e.message||``,a),c=e.expected||void 0,d={...w(e)},p=e;p.validation!==void 0&&(d.validation=p.validation),o!==void 0&&(d.traversalError=o);let m=D(e.message||``,s,c,a,r,t);i&&f.includes(n)&&(m+=` (Hint: coercion is enabled by default, but the validator for '${n}' lacks Standard JSON Schema support.)`),l.push(E(r,m,s,d,c,a))}else c[n]=o.value;p.delete(n)}if(r!==`delete`)for(let e of p)r===`reject`?l.push(E(e,`Undeclared key`,`UNDECLARED_KEY`)):r===`ignore`&&(c[e]=d[e]);if(l.length>0)throw new m(l);return c}function N(e){if(!e||typeof e!=`object`&&typeof e!=`function`)return[];if(e.json&&typeof e.json==`object`&&e.json.domain===`object`){let t=[];if(Array.isArray(e.json.required))for(let n of e.json.required)n&&typeof n==`object`&&`key`in n&&t.push(n.key);if(Array.isArray(e.json.optional))for(let n of e.json.optional)n&&typeof n==`object`&&`key`in n&&t.push(n.key);return t}let t=e[`~standard`],n=typeof t?.jsonSchema?.input==`function`&&t.jsonSchema.input||typeof e.jsonSchema?.input==`function`&&e.jsonSchema.input;if(n)try{let e=n({target:`draft-07`});if(e&&typeof e==`object`&&e.properties)return Object.keys(e.properties)}catch{}if(typeof e.toJSONSchema==`function`)try{let t=e.toJSONSchema();if(t&&typeof t==`object`&&t.properties)return Object.keys(t.properties)}catch{}if(typeof e.toStandardJSONSchema?.v1==`function`)try{let t=e.toStandardJSONSchema.v1();if(t&&typeof t==`object`&&t.properties)return Object.keys(t.properties)}catch{}return Object.keys(e)}function P(e,t={}){_(e);for(let t in e){let n=e[t];h(t,n),g(t,n)}return t.safe?T(()=>M(e,t)):M(e,t)}export{m as ArkEnvError,P as arkenv,P as default,p as formatIssues,N as getSchemaKeys};
3
+ `),u={red:`\x1B[31m`,yellow:`\x1B[33m`,cyan:`\x1B[36m`,reset:`\x1B[0m`},d=()=>typeof process<`u`&&process.versions!=null&&process.versions.node!=null,f=()=>!!(!d()||process.env.NO_COLOR!==void 0||process.env.CI!==void 0||process.stdout&&!process.stdout.isTTY),p=(e,t)=>d()&&!f()?`${u[e]}${t}${u.reset}`:t;function m(e){return e.map(e=>`${p(`yellow`,e.path)} ${e.message.trimStart()}`).join(`
4
+ `)}var h=class extends Error{constructor(t,n=`Errors found while validating environment variables`){let r=m(t);super(`${p(`red`,n)}\n${l(r)}\n`),this.name=e,this.issues=t}};Object.defineProperty(h,`name`,{value:e});function g(e,t){if(typeof t==`string`)throw new h([{path:e,message:`ArkType DSL strings are not supported in "standard" mode. Use a Standard Schema validator (e.g., Zod, Valibot) or import from "arkenv" for ArkType schemas.`,code:`INVALID_SCHEMA`}])}function _(e,t){let n=t&&typeof t==`object`&&`~standard`in t&&t[`~standard`];if(!n||typeof n!=`object`||!(`validate`in n)||typeof n.validate!=`function`)throw new h([{path:e,message:`Invalid validator: expected a Standard Schema 1.0 validator (must have "~standard" property). Import from "arkenv" to use ArkType schemas.`,code:`INVALID_SCHEMA`}])}function v(e){if(!e||typeof e!=`object`||Array.isArray(e))throw new h([{path:``,message:`Invalid schema: expected an object mapping in "standard" mode.`,code:`INVALID_SCHEMA`}])}const y=/secret|(_|^)key(_|$)|token|(_|^)password(_|$)|(_|^)pass(_|$)|(_|^)auth(_|$)|jwt|cert|credential|database_url|db_url/i;function b(e){if(e!==void 0)return e;if(typeof process>`u`)return!1;let t=process.env.ARKENV_DEBUG_SECRETS;return t===`true`||t===`1`}function x(e){return y.test(e)&&!/public/i.test(e)}function S(e,t,n){let r=b(n?.debugSecrets);if(e===void 0)return`missing`;if(e===null)return`null`;if(!r&&x(t))return`[REDACTED]`;if(typeof e==`string`)return JSON.stringify(e);if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);if(typeof e==`symbol`)return e.toString();if(typeof e==`function`)return`[Function]`;if(e&&typeof e==`object`)try{if(Array.isArray(e)){let r=e.slice(0,3).map(e=>S(e,t,n));return e.length>3&&r.push(`...(+${e.length-3} more)`),`[${r.join(`, `)}]`}let r=Object.keys(e),i=r.slice(0,3).map(r=>`${r}: ${S(e[r],t,n)}`);return r.length>3&&i.push(`...(+${r.length-3} more)`),`{ ${i.join(`, `)} }`}catch{return Object.prototype.toString.call(e)}return String(e)}const C={too_small:`VALUE_TOO_SMALL`,too_big:`VALUE_TOO_LARGE`,invalid_string:`INVALID_FORMAT`,invalid_date:`INVALID_FORMAT`,custom:`INVALID_FORMAT`};function w(e,t,n){let r=t.toLowerCase();return e===`invalid_type`&&(n===void 0||n===`undefined`)||r===`required`?`MISSING_VARIABLE`:e in C?C[e]:/regex|pattern|match/.test(r)?`PATTERN_MISMATCH`:`INVALID_TYPE`}function T(e){let t=e.minimum??e.min,n=e.maximum??e.max;return{...typeof t==`number`?{min:t}:{},...typeof n==`number`?{max:n}:{}}}function E(e){try{return{success:!0,data:e()}}catch(e){if(e instanceof h)return{success:!1,issues:e.issues};throw e}}function D(e,t,n,r,i,a){let o={path:e,message:t,code:n,meta:r??{}};return i&&(o.expected=i),a!==void 0&&(o.received=a),o}function O(e,t,n,r,i,a){if(t===`MISSING_VARIABLE`)return n?`must be ${n} (was missing)`:`is required`;if(e.includes(`(was `))return e;let o=`(was ${p(`cyan`,!b(a?.debugSecrets)&&x(i)?`[REDACTED]`:S(r,i,a))})`;return n&&!e.includes(`Expected`)?`must be ${n} ${o}`:`${e} ${o}`}function k(e){return Object.prototype.toString.call(e)===`[object Object]`}function A(e,t){let n={type:`object`,properties:{}},r=!1,i=[];for(let a in e){let o=e[a];if(!o){i.push(a);continue}let s=o[`~standard`];if(typeof s?.jsonSchema?.input==`function`)try{let e=s.jsonSchema.input({target:`draft-07`});if(e){n.properties[a]=e,r=!0;continue}}catch{}if(typeof o.jsonSchema?.input==`function`)try{let e=o.jsonSchema.input({target:`draft-07`});if(e){n.properties[a]=e,r=!0;continue}}catch{}if(typeof o.toJSONSchema==`function`)try{let e=o.toJSONSchema();if(e){n.properties[a]=e,r=!0;continue}}catch{}if(typeof o.toStandardJSONSchema?.v1==`function`)try{let e=o.toStandardJSONSchema.v1();if(e){n.properties[a]=e,r=!0;continue}}catch{}if(t){let e;try{e=t(o)}catch(e){throw new h([D(a,`toJsonSchema failed for '${a}': ${e instanceof Error?e.message:String(e)}`,`INVALID_SCHEMA`)])}if(!e){i.push(a);continue}if(!k(e))throw new h([D(a,`toJsonSchema must return a plain object or undefined for '${a}'.`,`INVALID_SCHEMA`)]);n.properties[a]=e,r=!0;continue}i.push(a)}return{jsonSchema:n,hasJsonSchema:r,missingKeys:i}}function j(e){return typeof e==`object`&&e&&`key`in e?String(e.key):String(e)}function M(e,t){return!t||t.length===0?e:[e,...t.map(j)].join(`.`)}function N(e,t){let n=e,r;try{let i=e,a=e.trim();if(a[0]===`{`||a[0]===`[`)try{i=JSON.parse(e)}catch(e){r=`[Unparseable JSON: ${e.message}]`}if(!r){for(let e of t)i=i?.[j(e)];n=i}}catch(e){r=`[Traversal error: ${e.message}]`}return{receivedVal:n,traversalError:r}}function P(e,t){let{env:n=process.env,onUndeclaredKey:r=`delete`,coerce:i=!0,arrayFormat:a=`comma`,emptyAsUndefined:o=!1,toJsonSchema:s}=t,l={},u=[],{processedEnv:d,coercedEnv:f,missingKeys:p}=c(n,o,a,i?()=>{let{jsonSchema:t,hasJsonSchema:n,missingKeys:r}=A(e,s);return{schema:t,hasSchema:n,missingKeys:r}}:void 0),m=new Set(Object.keys(d));for(let n in e){let r=e[n],a=f[n];if(!r||typeof r!=`object`||!(`~standard`in r))throw new h([D(n,`Invalid schema: expected a Standard Schema 1.0 validator (e.g. Zod, Valibot) in 'standard' mode.`,`INVALID_SCHEMA`)]);let o=r[`~standard`].validate(a);if(o instanceof Promise)throw new h([D(n,`Async validation is not supported. ArkEnv is synchronous.`,`INVALID_SCHEMA`)]);if(o.issues)for(let e of o.issues){let r=M(n,e.path),a,o;if(n in d){let t=d[n];if(typeof t==`string`&&e.path?.length){let n=N(t,e.path);a=n.receivedVal,o=n.traversalError}else a=t}else a=e.received;let s=w(e.code||`invalid_type`,e.message||``,a),c=e.expected||void 0,l={...T(e)},f=e;f.validation!==void 0&&(l.validation=f.validation),o!==void 0&&(l.traversalError=o);let m=O(e.message||``,s,c,a,r,t);i&&p.includes(n)&&(m+=` (Hint: coercion is enabled by default, but the validator for '${n}' lacks Standard JSON Schema support.)`),u.push(D(r,m,s,l,c,a))}else l[n]=o.value;m.delete(n)}if(r!==`delete`)for(let e of m)r===`reject`?u.push(D(e,`Undeclared key`,`UNDECLARED_KEY`)):r===`ignore`&&(l[e]=f[e]);if(u.length>0)throw new h(u);return l}function F(e){if(!e||typeof e!=`object`&&typeof e!=`function`)return[];if(e.json&&typeof e.json==`object`&&e.json.domain===`object`){let t=[];if(Array.isArray(e.json.required))for(let n of e.json.required)n&&typeof n==`object`&&`key`in n&&t.push(n.key);if(Array.isArray(e.json.optional))for(let n of e.json.optional)n&&typeof n==`object`&&`key`in n&&t.push(n.key);return t}let t=e[`~standard`],n=typeof t?.jsonSchema?.input==`function`&&t.jsonSchema.input||typeof e.jsonSchema?.input==`function`&&e.jsonSchema.input;if(n)try{let e=n({target:`draft-07`});if(e&&typeof e==`object`&&e.properties)return Object.keys(e.properties)}catch{}if(typeof e.toJSONSchema==`function`)try{let t=e.toJSONSchema();if(t&&typeof t==`object`&&t.properties)return Object.keys(t.properties)}catch{}if(typeof e.toStandardJSONSchema?.v1==`function`)try{let t=e.toStandardJSONSchema.v1();if(t&&typeof t==`object`&&t.properties)return Object.keys(t.properties)}catch{}return Object.keys(e)}function I(e,t){let n=t??{};v(e);for(let t in e){let n=e[t];g(t,n),_(t,n)}return n.safe?E(()=>P(e,n)):P(e,n)}export{h as ArkEnvError,I as arkenv,I as default,m as formatIssues,F as getSchemaKeys};
5
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["safeExecute","parseStandard"],"sources":["../../internal/utils/dist/index.js","../src/index.ts"],"sourcesContent":["const e=e=>{if(typeof e==`number`||typeof e!=`string`||!e.trim())return e;if(e.trim()===`NaN`)return NaN;let t=Number(e);return Number.isNaN(t)?e:t},t=e=>e===`true`?!0:e===`false`?!1:e,n=e=>{if(typeof e!=`string`)return e;let t=e.trim();if(t[0]!==`{`&&t[0]!==`[`)return e;try{return JSON.parse(t)}catch{return e}},r=e=>{if(e instanceof Date||typeof e!=`string`||!e.trim())return e;let t=new Date(e);return Number.isNaN(t.getTime())?e:t},i=e=>{let t={};for(let n in e){let r=e[n];r!==``&&(t[n]=r)}return t},a=`*`,o=(e,t=[])=>{let n=[];if(!e||typeof e!=`object`||Array.isArray(e))return n;let r=e;if(`const`in r){let e=typeof r.const;(e===`number`||e===`boolean`)&&n.push({path:[...t],type:`primitive`})}`enum`in r&&Array.isArray(r.enum)&&r.enum.some(e=>typeof e==`number`||typeof e==`boolean`)&&n.push({path:[...t],type:`primitive`});let i=r.type;if(i===`number`||i===`integer`||i===`boolean`)n.push({path:[...t],type:`primitive`});else if(i===`string`&&`format`in r&&(r.format===`date-time`||r.format===`date`))n.push({path:[...t],type:`date`});else if(i===`object`){if(r.properties&&Object.keys(r.properties).length>0){n.push({path:[...t],type:`object`});for(let e in r.properties)n.push(...o(r.properties[e],[...t,e]))}}else i===`array`&&(n.push({path:[...t],type:`array`}),r.items&&(Array.isArray(r.items)?r.items.forEach((e,r)=>{n.push(...o(e,[...t,String(r)]))}):n.push(...o(r.items,[...t,`*`]))));for(let e of[`anyOf`,`allOf`,`oneOf`])if(r[e]&&Array.isArray(r[e]))for(let i of r[e])n.push(...o(i,t));let a=new Set;return n.filter(e=>{let t=e.path.join(`/`)+`:`+e.type;return a.has(t)?!1:a.add(t)})},s=(i,a,o={})=>{let{arrayFormat:s=`comma`}=o,c=e=>{if(s===`json`)try{return JSON.parse(e)}catch{return e}return e.trim()?e.split(`,`).map(e=>e.trim()):[]},l=(i,a)=>{if(a===`array`&&typeof i==`string`)return c(i);if(a===`object`&&typeof i==`string`)return n(i);if(a===`date`&&typeof i==`string`)return r(i);if(a===`primitive`){if(Array.isArray(i))return i.map(n=>{if(typeof n!=`string`)return n;let r=e(n);return typeof r==`number`?r:t(n)});if(typeof i!=`string`)return i;let n=e(i);return typeof n==`number`?n:t(i)}return i};if(typeof i!=`object`||!i){let e=a.find(e=>e.path.length===0);return e?l(i,e.type):i}let u=[...a].sort((e,t)=>e.path.length-t.path.length),d=(e,t,n)=>{if(t.length===0)return n(e);let[r,...i]=t;if(r===`*`){if(Array.isArray(e)){let t=!1,r=e.map(e=>{let r=d(e,i,n);return r!==e&&(t=!0),r});return t?r:e}return e}if(!e||typeof e!=`object`)return e;if(Array.isArray(e)){let t=Number(r);if(!Number.isNaN(t)&&t>=0&&t<e.length){let r=d(e[t],i,n);if(r!==e[t]){let n=[...e];return n[t]=r,n}}return e}if(Object.hasOwn(e,r)){let t=d(e[r],i,n);if(t!==e[r])return{...e,[r]:t}}return e},f=i;for(let e of u)e.path.length>0&&(f=d(f,e.path,t=>l(t,e.type)));return f};function c(e,t,n,r){let a=t?i(e):e,c={...a},l=[];if(r){let e=r();l.push(...e.missingKeys||[]),e.hasSchema&&(c=s(c,o(e.schema),{arrayFormat:n}))}return{processedEnv:a,coercedEnv:c,missingKeys:l}}const l=(e,t=2,{dontDetectNewlines:n=!1}={})=>n?`${` `.repeat(t)}${e}`:e.split(`\n`).map(e=>`${` `.repeat(t)}${e}`).join(`\n`),u={red:`\\x1B[31m`,yellow:`\\x1B[33m`,cyan:`\\x1B[36m`,reset:`\\x1B[0m`},d=()=>typeof process<`u`&&process.versions!=null&&process.versions.node!=null,f=()=>!!(!d()||process.env.NO_COLOR!==void 0||process.env.CI!==void 0||process.stdout&&!process.stdout.isTTY),p=(e,t)=>d()&&!f()?`${u[e]}${t}${u.reset}`:t;function m(e){return e.map(e=>`${p(`yellow`,e.path)} ${e.message.trimStart()}`).join(`\n`)}var h=class extends Error{constructor(e,t=`Errors found while validating environment variables`){let n=m(e);super(`${p(`red`,t)}\\n${l(n)}\\n`),this.name=`ArkEnvError`,this.issues=e}};Object.defineProperty(h,`name`,{value:`ArkEnvError`});function g(e,t){if(typeof t==`string`)throw new h([{path:e,message:`ArkType DSL strings are not supported in \"standard\" mode. Use a Standard Schema validator (e.g., Zod, Valibot) or import from \"arkenv\" for ArkType schemas.`,code:`INVALID_SCHEMA`}])}function _(e,t){let n=t&&typeof t==`object`&&`~standard`in t&&t[`~standard`];if(!n||typeof n!=`object`||!(`validate`in n)||typeof n.validate!=`function`)throw new h([{path:e,message:`Invalid validator: expected a Standard Schema 1.0 validator (must have \"~standard\" property). Import from \"arkenv\" to use ArkType schemas.`,code:`INVALID_SCHEMA`}])}function v(e){if(!e||typeof e!=`object`||Array.isArray(e))throw new h([{path:``,message:`Invalid schema: expected an object mapping in \"standard\" mode.`,code:`INVALID_SCHEMA`}])}const y=/secret|(_|^)key(_|$)|token|(_|^)password(_|$)|(_|^)pass(_|$)|(_|^)auth(_|$)|jwt|cert|credential|database_url|db_url/i;function b(e){if(e!==void 0)return e;if(typeof process>`u`)return!1;let t=process.env.ARKENV_DEBUG_SECRETS;return t===`true`||t===`1`}function x(e){return y.test(e)&&!/public/i.test(e)}function S(e,t,n){let r=b(n?.debugSecrets);if(e===void 0)return`missing`;if(e===null)return`null`;if(!r&&x(t))return`[REDACTED]`;if(typeof e==`string`)return JSON.stringify(e);if(typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`)return String(e);if(typeof e==`symbol`)return e.toString();if(typeof e==`function`)return`[Function]`;if(e&&typeof e==`object`)try{if(Array.isArray(e)){let r=e.slice(0,3).map(e=>S(e,t,n));return e.length>3&&r.push(`...(+${e.length-3} more)`),`[${r.join(`, `)}]`}let r=Object.keys(e),i=r.slice(0,3).map(r=>`${r}: ${S(e[r],t,n)}`);return r.length>3&&i.push(`...(+${r.length-3} more)`),`{ ${i.join(`, `)} }`}catch{return Object.prototype.toString.call(e)}return String(e)}const C={too_small:`VALUE_TOO_SMALL`,too_big:`VALUE_TOO_LARGE`,invalid_string:`INVALID_FORMAT`,invalid_date:`INVALID_FORMAT`,custom:`INVALID_FORMAT`};function w(e,t,n){let r=t.toLowerCase();return e===`invalid_type`&&(n===void 0||n===`undefined`)||r===`required`?`MISSING_VARIABLE`:e in C?C[e]:/regex|pattern|match/.test(r)?`PATTERN_MISMATCH`:`INVALID_TYPE`}function T(e){let t=e.minimum??e.min,n=e.maximum??e.max;return{...typeof t==`number`?{min:t}:{},...typeof n==`number`?{max:n}:{}}}function E(e){try{return{success:!0,data:e()}}catch(e){if(e instanceof h)return{success:!1,issues:e.issues};throw e}}function D(e,t,n,r,i,a){let o={path:e,message:t,code:n,meta:r??{}};return i&&(o.expected=i),a!==void 0&&(o.received=a),o}function O(e,t,n,r,i,a){if(t===`MISSING_VARIABLE`)return n?`must be ${n} (was missing)`:`is required`;if(e.includes(`(was `))return e;let o=`(was ${p(`cyan`,!b(a?.debugSecrets)&&x(i)?`[REDACTED]`:S(r,i,a))})`;return n&&!e.includes(`Expected`)?`must be ${n} ${o}`:`${e} ${o}`}function k(e){let t={type:`object`,properties:{}},n=!1,r=[];for(let i in e){let a=e[i];if(!a){r.push(i);continue}let o=a[`~standard`];if(typeof o?.jsonSchema?.input==`function`)try{let e=o.jsonSchema.input({target:`draft-07`});if(e){t.properties[i]=e,n=!0;continue}}catch{}if(typeof a.jsonSchema?.input==`function`)try{let e=a.jsonSchema.input({target:`draft-07`});if(e){t.properties[i]=e,n=!0;continue}}catch{}if(typeof a.toJSONSchema==`function`)try{let e=a.toJSONSchema();if(e){t.properties[i]=e,n=!0;continue}}catch{}if(typeof a.toStandardJSONSchema?.v1==`function`)try{let e=a.toStandardJSONSchema.v1();if(e){t.properties[i]=e,n=!0;continue}}catch{}r.push(i)}return{jsonSchema:t,hasJsonSchema:n,missingKeys:r}}function A(e){return typeof e==`object`&&e&&`key`in e?String(e.key):String(e)}function j(e,t){return!t||t.length===0?e:[e,...t.map(A)].join(`.`)}function M(e,t){let n=e,r;try{let i=e,a=e.trim();if(a[0]===`{`||a[0]===`[`)try{i=JSON.parse(e)}catch(e){r=`[Unparseable JSON: ${e.message}]`}if(!r){for(let e of t)i=i?.[A(e)];n=i}}catch(e){r=`[Traversal error: ${e.message}]`}return{receivedVal:n,traversalError:r}}function N(e,t){let{env:n=process.env,onUndeclaredKey:r=`delete`,coerce:i=!0,arrayFormat:a=`comma`,emptyAsUndefined:o=!1}=t,s={},l=[],{processedEnv:u,coercedEnv:d,missingKeys:f}=c(n,o,a,i?()=>{let{jsonSchema:t,hasJsonSchema:n,missingKeys:r}=k(e);return{schema:t,hasSchema:n,missingKeys:r}}:void 0),p=new Set(Object.keys(u));for(let n in e){let r=e[n],a=d[n];if(!r||typeof r!=`object`||!(`~standard`in r))throw new h([D(n,`Invalid schema: expected a Standard Schema 1.0 validator (e.g. Zod, Valibot) in 'standard' mode.`,`INVALID_SCHEMA`)]);let o=r[`~standard`].validate(a);if(o instanceof Promise)throw new h([D(n,`Async validation is not supported. ArkEnv is synchronous.`,`INVALID_SCHEMA`)]);if(o.issues)for(let e of o.issues){let r=j(n,e.path),a,o;if(n in u){let t=u[n];if(typeof t==`string`&&e.path?.length){let n=M(t,e.path);a=n.receivedVal,o=n.traversalError}else a=t}else a=e.received;let s=w(e.code||`invalid_type`,e.message||``,a),c=e.expected||void 0,d={...T(e)},p=e;p.validation!==void 0&&(d.validation=p.validation),o!==void 0&&(d.traversalError=o);let m=O(e.message||``,s,c,a,r,t);i&&f.includes(n)&&(m+=` (Hint: coercion is enabled by default, but the validator for '${n}' lacks Standard JSON Schema support.)`),l.push(D(r,m,s,d,c,a))}else s[n]=o.value;p.delete(n)}if(r!==`delete`)for(let e of p)r===`reject`?l.push(D(e,`Undeclared key`,`UNDECLARED_KEY`)):r===`ignore`&&(s[e]=d[e]);if(l.length>0)throw new h(l);return s}function P(e){if(!e||typeof e!=`object`&&typeof e!=`function`)return[];if(e.json&&typeof e.json==`object`&&e.json.domain===`object`){let t=[];if(Array.isArray(e.json.required))for(let n of e.json.required)n&&typeof n==`object`&&`key`in n&&t.push(n.key);if(Array.isArray(e.json.optional))for(let n of e.json.optional)n&&typeof n==`object`&&`key`in n&&t.push(n.key);return t}let t=e[`~standard`],n=typeof t?.jsonSchema?.input==`function`&&t.jsonSchema.input||typeof e.jsonSchema?.input==`function`&&e.jsonSchema.input;if(n)try{let e=n({target:`draft-07`});if(e&&typeof e==`object`&&e.properties)return Object.keys(e.properties)}catch{}if(typeof e.toJSONSchema==`function`)try{let t=e.toJSONSchema();if(t&&typeof t==`object`&&t.properties)return Object.keys(t.properties)}catch{}if(typeof e.toStandardJSONSchema?.v1==`function`)try{let t=e.toStandardJSONSchema.v1();if(t&&typeof t==`object`&&t.properties)return Object.keys(t.properties)}catch{}return Object.keys(e)}export{a as ARRAY_ITEM_MARKER,h as ArkEnvError,s as applyCoercion,g as assertNotArkTypeDsl,_ as assertStandardSchema,v as assertStandardSchemaMap,D as buildEnvIssue,t as coerceBoolean,r as coerceDate,c as coerceEnvironment,n as coerceJson,e as coerceNumber,k as extractJsonSchema,o as findCoercionPaths,j as formatIssuePath,m as formatIssues,O as formatStandardIssueMessage,A as getProp,P as getSchemaKeys,T as getStandardMeta,l as indent,b as isDebugSecrets,w as mapStandardCode,N as parseStandard,E as safeExecute,S as safeStringify,x as shouldRedact,i as stripEmptyStrings,p as styleText,M as traverseReceivedValue};\n//# sourceMappingURL=index.js.map","import type { StandardSchemaV1 } from \"@repo/types\";\nimport {\n\tArkEnvError,\n\tassertNotArkTypeDsl,\n\tassertStandardSchema,\n\tassertStandardSchemaMap,\n\ttype EnvIssue,\n\tformatIssues,\n\tgetSchemaKeys,\n\ttype ParseStandardConfig,\n\tparseStandard,\n\ttype SafeArkEnvResult,\n\tsafeExecute,\n} from \"@repo/utils\";\n\nexport {\n\tArkEnvError,\n\ttype EnvIssue,\n\tformatIssues,\n\tgetSchemaKeys,\n\ttype SafeArkEnvResult,\n};\n\n/**\n * Configuration options for the `arkenv/standard` entry's `arkenv`.\n */\nexport type StandardEnvConfig = ParseStandardConfig;\n\n/**\n * Parse and validate environment variables using Standard Schema 1.0 validators (e.g. Zod, Valibot).\n *\n * This entry is ArkType-free - ArkType is never imported, even transitively.\n * Use this when your project must not depend on ArkType.\n *\n * @param def An object mapping variable names to Standard Schema validators\n * @param config Optional configuration\n * @returns The validated environment variables, or a SafeArkEnvResult if `{ safe: true }` is configured\n * @throws An {@link ArkEnvError} if validation fails and `safe` is not enabled\n *\n * @example\n * ```ts\n * import arkenv from \"@arkenv/standard\";\n * import { z } from \"zod\";\n *\n * const env = arkenv({\n * PORT: z.coerce.number(),\n * HOST: z.string(),\n * });\n * ```\n */\nexport function arkenv<const T extends Record<string, StandardSchemaV1>>(\n\tdef: T,\n\tconfig?: StandardEnvConfig & { safe?: false },\n): { [K in keyof T]: StandardSchemaV1.InferOutput<T[K]> };\nexport function arkenv<const T extends Record<string, StandardSchemaV1>>(\n\tdef: T,\n\tconfig: StandardEnvConfig & { safe: true },\n): SafeArkEnvResult<{ [K in keyof T]: StandardSchemaV1.InferOutput<T[K]> }>;\nexport function arkenv<const T extends Record<string, StandardSchemaV1>>(\n\tdef: T,\n\tconfig: StandardEnvConfig = {},\n):\n\t| { [K in keyof T]: StandardSchemaV1.InferOutput<T[K]> }\n\t| SafeArkEnvResult<{ [K in keyof T]: StandardSchemaV1.InferOutput<T[K]> }> {\n\tassertStandardSchemaMap(def);\n\n\tfor (const key in def) {\n\t\tconst validator = (def as Record<string, unknown>)[key];\n\t\tassertNotArkTypeDsl(key, validator);\n\t\tassertStandardSchema(key, validator);\n\t}\n\n\tif (config.safe) {\n\t\treturn safeExecute(\n\t\t\t() =>\n\t\t\t\tparseStandard(def as Record<string, unknown>, config) as {\n\t\t\t\t\t[K in keyof T]: StandardSchemaV1.InferOutput<T[K]>;\n\t\t\t\t},\n\t\t);\n\t}\n\n\treturn parseStandard(def as Record<string, unknown>, config) as {\n\t\t[K in keyof T]: StandardSchemaV1.InferOutput<T[K]>;\n\t};\n}\n\nexport default arkenv;\n"],"mappings":"AAAA,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,UAAU,OAAO,GAAG,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,MAAO,KAAI,IAAI,EAAE,OAAO,EAAE,CAAC,OAAO,OAAO,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG,CAAC,GAAG,aAAa,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,OAAO,OAAO,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,KAAK,EAAE,GAAG,GAAG,OAAO,GAAS,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,UAAU,MAAM,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,UAAU,IAAI,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,YAAY,CAAC,CAAC,SAAS,GAAG,MAAM,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,KAAK,GAAG,OAAO,GAAG,UAAU,OAAO,GAAG,UAAU,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,GAAG,IAAI,UAAU,IAAI,WAAW,IAAI,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,YAAY,CAAC,SAAS,IAAI,UAAU,WAAW,IAAI,EAAE,SAAS,aAAa,EAAE,SAAS,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,SAAS,IAAI,aAAa,EAAE,YAAY,OAAO,KAAK,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,WAAW,EAAE,KAAK,GAAG,EAAE,EAAE,WAAW,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,QAAQ,MAAM,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,SAAS,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,QAAQ,QAAQ,CAAC,GAAG,EAAE,IAAI,MAAM,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,OAAO,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,IAAI,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,SAAS,OAAO,GAAG,SAAS,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,UAAU,OAAO,GAAG,SAAS,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,QAAQ,OAAO,GAAG,SAAS,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,MAAM,QAAQ,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,GAAG,OAAO,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,OAAO,GAAG,GAAG,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,MAAM,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,MAAM,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,MAAM,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,MAAO,GAAE,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,KAAK,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM;EACz+F,CAAC,IAAI,GAAG,GAAG,IAAI,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK;EACrC,CAAC,EAAE,CAAC,IAAI,WAAW,OAAO,WAAW,KAAK,WAAW,MAAM,UAAU,CAAC,MAAM,OAAO,QAAQ,KAAK,QAAQ,UAAU,MAAM,QAAQ,SAAS,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,IAAI,WAAW,IAAK,IAAG,QAAQ,IAAI,KAAK,IAAK,IAAG,QAAQ,QAAQ,CAAC,QAAQ,OAAO,OAAO,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,WAAW,GAAG,CAAC,KAAK;EACpY,CAAC,IAAI,EAAE,cAAc,KAAK,CAAC,YAAY,EAAE,EAAE,sDAAsD,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,cAAc,KAAK,OAAO,IAAI,OAAO,eAAe,EAAE,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,GAAG,SAAS,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,8JAA8J,KAAK,iBAAiB,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,OAAO,GAAG,UAAU,cAAc,GAAG,EAAE,aAAa,GAAG,CAAC,GAAG,OAAO,GAAG,UAAU,EAAE,aAAa,IAAI,OAAO,EAAE,UAAU,WAAW,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,6IAA6I,KAAK,iBAAiB,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,UAAU,MAAM,QAAQ,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,GAAG,QAAQ,iEAAiE,KAAK,iBAAiB,CAAC,CAAC,CAAC,MAAM,EAAE,uHAAuH,SAAS,EAAE,EAAE,CAAC,GAAG,IAAI,IAAK,GAAE,OAAO,EAAE,GAAG,OAAO,QAAQ,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,IAAI,qBAAqB,OAAO,IAAI,QAAQ,IAAI,IAAI,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,CAAC,GAAG,IAAI,IAAK,GAAE,MAAM,UAAU,GAAG,IAAI,KAAK,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,OAAO,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,GAAG,UAAU,OAAO,GAAG,WAAW,OAAO,GAAG,SAAS,OAAO,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,SAAS,OAAO,EAAE,UAAU,CAAC,GAAG,OAAO,GAAG,WAAW,MAAM,aAAa,GAAG,GAAG,OAAO,GAAG,SAAS,GAAG,CAAC,GAAG,MAAM,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,KAAK,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,KAAK,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,OAAO,OAAO,UAAU,SAAS,KAAK,EAAE,CAAC,OAAO,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,kBAAkB,QAAQ,kBAAkB,eAAe,iBAAiB,aAAa,iBAAiB,OAAO,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,OAAO,IAAI,iBAAiB,IAAI,IAAK,IAAG,IAAI,cAAc,IAAI,WAAW,mBAAmB,KAAK,EAAE,EAAE,GAAG,sBAAsB,KAAK,EAAE,CAAC,mBAAmB,eAAe,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,MAAM,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE,SAAS,GAAG,IAAI,IAAK,KAAI,EAAE,SAAS,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,mBAAmB,OAAO,EAAE,WAAW,EAAE,gBAAgB,cAAc,GAAG,EAAE,SAAS,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,GAAG,aAAa,EAAE,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,SAAS,WAAW,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAS,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,GAAG,OAAO,GAAG,YAAY,OAAO,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,GAAG,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,YAAY,OAAO,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,MAAM,CAAC,OAAO,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,GAAG,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,cAAc,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,GAAG,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE,GAAG,OAAO,EAAE,sBAAsB,IAAI,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE,qBAAqB,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,WAAW,GAAG,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,OAAO,GAAG,UAAU,GAAG,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,sBAAsB,EAAE,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,qBAAqB,EAAE,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,IAAI,gBAAgB,EAAE,SAAS,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,YAAY,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,IAAK,GAAE,CAAC,EAAE,IAAI,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,OAAO,GAAG,UAAU,EAAE,cAAc,GAAG,MAAM,IAAI,EAAE,CAAC,EAAE,EAAE,mGAAmG,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,aAAa,SAAS,EAAE,CAAC,GAAG,aAAa,QAAQ,MAAM,IAAI,EAAE,CAAC,EAAE,EAAE,4DAA4D,iBAAiB,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,IAAI,IAAI,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,OAAO,GAAG,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,SAAS,IAAI,EAAE,EAAE,EAAE,MAAM,eAAe,EAAE,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,IAAK,GAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,IAAK,KAAI,EAAE,WAAW,EAAE,YAAY,IAAI,IAAK,KAAI,EAAE,eAAe,GAAG,IAAI,EAAE,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,kEAAkE,EAAE,yCAAyC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,SAAS,IAAI,IAAI,KAAK,EAAE,IAAI,SAAS,EAAE,KAAK,EAAE,EAAE,iBAAiB,iBAAiB,CAAC,CAAC,IAAI,WAAW,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,UAAU,OAAO,GAAG,WAAW,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,OAAO,EAAE,MAAM,UAAU,EAAE,KAAK,SAAS,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,QAAQ,EAAE,KAAK,SAAS,CAAC,IAAI,IAAI,KAAK,EAAE,KAAK,SAAS,GAAG,OAAO,GAAG,UAAU,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,QAAQ,EAAE,KAAK,SAAS,CAAC,IAAI,IAAI,KAAK,EAAE,KAAK,SAAS,GAAG,OAAO,GAAG,UAAU,QAAQ,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,GAAG,YAAY,OAAO,YAAY,EAAE,WAAW,OAAO,OAAO,EAAE,YAAY,OAAO,YAAY,EAAE,WAAW,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,WAAW,CAAC,CAAC,GAAG,GAAG,OAAO,GAAG,UAAU,EAAE,WAAW,OAAO,OAAO,KAAK,EAAE,WAAW,MAAM,EAAE,GAAG,OAAO,EAAE,cAAc,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,GAAG,GAAG,OAAO,GAAG,UAAU,EAAE,WAAW,OAAO,OAAO,KAAK,EAAE,WAAW,MAAM,EAAE,GAAG,OAAO,EAAE,sBAAsB,IAAI,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE,qBAAqB,IAAI,CAAC,GAAG,GAAG,OAAO,GAAG,UAAU,EAAE,WAAW,OAAO,OAAO,KAAK,EAAE,WAAW,MAAM,EAAE,OAAO,OAAO,KAAK,EAAE,CCuD55M,SAAgB,EACf,EACA,EAA4B,EAAE,CAG6C,CAC3E,EAAwB,EAAI,CAE5B,IAAK,IAAM,KAAO,EAAK,CACtB,IAAM,EAAa,EAAgC,GACnD,EAAoB,EAAK,EAAU,CACnC,EAAqB,EAAK,EAAU,CAYrC,OATI,EAAO,KACHA,MAELC,EAAc,EAAgC,EAAO,CAGtD,CAGKA,EAAc,EAAgC,EAAO"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../internal/utils/dist/boundary-access-error.js","../../internal/utils/dist/index.js","../src/index.ts"],"sourcesContent":["//#region src/utils/boundary-access-error.ts\n/**\n* `error.name` for the validation class {@link ArkEnvError}.\n*/\nconst ARKENV_ERROR_NAME = \"ArkEnvError\";\n/**\n* Build the message for a client read of a server-only env key.\n*\n* Native `Error` (name stays `\"Error\"`). Next.js taint voice\n* (`Do not … since it will leak`) plus a last-place breadcrumb\n* (`(prevented by ArkEnv)`) so agents can attribute the throw.\n* No trailing period. Shared across Next, Nuxt, Vite, and Bun —\n* \"on the client\", not \"Client Components\".\n*\n* @param key The server-only environment variable name\n* @returns The boundary access error message\n*/\nfunction boundaryAccessErrorMessage(key) {\n\treturn `Do not access server-only key '${key}' on the client since it will leak sensitive data (prevented by ArkEnv)`;\n}\n\n//#endregion\nexport { ARKENV_ERROR_NAME, boundaryAccessErrorMessage };\n//# sourceMappingURL=boundary-access-error.js.map","import { ARKENV_ERROR_NAME, boundaryAccessErrorMessage } from \"./boundary-access-error.js\";\n\n//#region src/coercion/morphs.ts\n/**\n* Attempt to coerce a value to a number.\n*\n* If the input is already a number, returns it unchanged.\n* If the input is a string that can be parsed as a number, returns the parsed number.\n* Otherwise, returns the original value unchanged.\n*\n* @internal\n* @param s - The value to coerce\n* @returns The coerced number or the original value\n*/\nconst coerceNumber = (s) => {\n\tif (typeof s === \"number\") return s;\n\tif (typeof s !== \"string\" || !s.trim()) return s;\n\tif (s.trim() === \"NaN\") return NaN;\n\tconst n = Number(s);\n\treturn Number.isNaN(n) ? s : n;\n};\n/**\n* Attempt to coerce a value to a boolean.\n*\n* Convert the strings \"true\" and \"false\" to their boolean equivalents.\n* All other values are returned unchanged.\n*\n* @internal\n* @param s - The value to coerce\n* @returns The coerced boolean or the original value\n*/\nconst coerceBoolean = (s) => {\n\tif (s === \"true\") return true;\n\tif (s === \"false\") return false;\n\treturn s;\n};\n/**\n* Attempt to parse a value as JSON.\n*\n* If the input is a string that starts with `{` or `[` and can be parsed as JSON,\n* returns the parsed object or array. Otherwise, returns the original value unchanged.\n*\n* @internal\n* @param s - The value to parse\n* @returns The parsed JSON or the original value\n*/\nconst coerceJson = (s) => {\n\tif (typeof s !== \"string\") return s;\n\tconst trimmed = s.trim();\n\tif (trimmed[0] !== \"{\" && trimmed[0] !== \"[\") return s;\n\ttry {\n\t\treturn JSON.parse(trimmed);\n\t} catch {\n\t\treturn s;\n\t}\n};\n/**\n* Attempt to coerce a value to a Date.\n*\n* If the input is already a Date, returns it unchanged.\n* If the input is a valid date string, returns a Date object.\n* Otherwise, returns the original value unchanged.\n*\n* @internal\n* @param s - The value to coerce\n* @returns The coerced Date or the original value\n*/\nconst coerceDate = (s) => {\n\tif (s instanceof Date) return s;\n\tif (typeof s !== \"string\" || !s.trim()) return s;\n\tconst d = new Date(s);\n\treturn Number.isNaN(d.getTime()) ? s : d;\n};\n\n//#endregion\n//#region src/coercion/shared.ts\n/**\n* Remove keys with empty string values from an environment record.\n*\n* When a key is set to `\"\"` (e.g. `PORT=` in a `.env` file), deleting it\n* allows the validator to treat it as missing so that defaults apply.\n*\n* @param env The environment variables record\n* @returns A new record with empty string keys removed\n*/\nconst stripEmptyStrings = (env) => {\n\tconst result = {};\n\tfor (const key in env) {\n\t\tconst value = env[key];\n\t\tif (value !== \"\") result[key] = value;\n\t}\n\treturn result;\n};\n/**\n* A marker used in the coercion path to indicate that the target\n* is the *elements* of an array, rather than the array property itself.\n*/\nconst ARRAY_ITEM_MARKER = \"*\";\n/**\n* Find all paths in a JSON Schema that require coercion.\n*\n* Prioritize \"number\", \"integer\", \"boolean\", \"array\", \"object\", and \"date\" types.\n*\n* @param node The JSON Schema node to traverse\n* @param path The current path segments in the schema tree\n* @returns An array of coercion targets containing their path and type\n*/\nconst findCoercionPaths = (node, path = []) => {\n\tconst results = [];\n\tif (!node || typeof node !== \"object\" || Array.isArray(node)) return results;\n\tconst n = node;\n\tif (\"const\" in n) {\n\t\tconst t = typeof n.const;\n\t\tif (t === \"number\" || t === \"boolean\") results.push({\n\t\t\tpath: [...path],\n\t\t\ttype: \"primitive\"\n\t\t});\n\t}\n\tif (\"enum\" in n && Array.isArray(n.enum)) {\n\t\tif (n.enum.some((v) => typeof v === \"number\" || typeof v === \"boolean\")) results.push({\n\t\t\tpath: [...path],\n\t\t\ttype: \"primitive\"\n\t\t});\n\t}\n\tconst type = n.type;\n\tif (type === \"number\" || type === \"integer\" || type === \"boolean\") results.push({\n\t\tpath: [...path],\n\t\ttype: \"primitive\"\n\t});\n\telse if (type === \"string\" && \"format\" in n && (n.format === \"date-time\" || n.format === \"date\")) results.push({\n\t\tpath: [...path],\n\t\ttype: \"date\"\n\t});\n\telse if (type === \"object\") {\n\t\tif (n.properties && Object.keys(n.properties).length > 0) {\n\t\t\tresults.push({\n\t\t\t\tpath: [...path],\n\t\t\t\ttype: \"object\"\n\t\t\t});\n\t\t\tfor (const key in n.properties) results.push(...findCoercionPaths(n.properties[key], [...path, key]));\n\t\t}\n\t} else if (type === \"array\") {\n\t\tresults.push({\n\t\t\tpath: [...path],\n\t\t\ttype: \"array\"\n\t\t});\n\t\tif (n.items) if (Array.isArray(n.items)) n.items.forEach((item, index) => {\n\t\t\tresults.push(...findCoercionPaths(item, [...path, String(index)]));\n\t\t});\n\t\telse results.push(...findCoercionPaths(n.items, [...path, \"*\"]));\n\t}\n\tfor (const comb of [\n\t\t\"anyOf\",\n\t\t\"allOf\",\n\t\t\"oneOf\"\n\t]) if (n[comb] && Array.isArray(n[comb])) for (const branch of n[comb]) results.push(...findCoercionPaths(branch, path));\n\tconst seen = /* @__PURE__ */ new Set();\n\treturn results.filter((t) => {\n\t\tconst key = t.path.join(\"/\") + \":\" + t.type;\n\t\treturn seen.has(key) ? false : seen.add(key);\n\t});\n};\n/**\n* Apply coercion to a data object based on identified paths.\n*\n* @param data The input environment data object to coerce\n* @param targets The coercion targets mapping paths to types\n* @param options The coercion options, including array parsing format\n* @returns The coerced data object\n*/\nconst applyCoercion = (data, targets, options = {}) => {\n\tconst { arrayFormat = \"comma\" } = options;\n\tconst splitString = (val) => {\n\t\tif (arrayFormat === \"json\") try {\n\t\t\treturn JSON.parse(val);\n\t\t} catch {\n\t\t\treturn val;\n\t\t}\n\t\treturn val.trim() ? val.split(\",\").map((s) => s.trim()) : [];\n\t};\n\tconst coerceValue = (val, type) => {\n\t\tif (type === \"array\" && typeof val === \"string\") return splitString(val);\n\t\tif (type === \"object\" && typeof val === \"string\") return coerceJson(val);\n\t\tif (type === \"date\" && typeof val === \"string\") return coerceDate(val);\n\t\tif (type === \"primitive\") {\n\t\t\tif (Array.isArray(val)) return val.map((item) => {\n\t\t\t\tif (typeof item !== \"string\") return item;\n\t\t\t\tconst n = coerceNumber(item);\n\t\t\t\treturn typeof n === \"number\" ? n : coerceBoolean(item);\n\t\t\t});\n\t\t\tif (typeof val !== \"string\") return val;\n\t\t\tconst n = coerceNumber(val);\n\t\t\treturn typeof n === \"number\" ? n : coerceBoolean(val);\n\t\t}\n\t\treturn val;\n\t};\n\tif (typeof data !== \"object\" || data === null) {\n\t\tconst root = targets.find((t) => t.path.length === 0);\n\t\tif (root) return coerceValue(data, root.type);\n\t\treturn data;\n\t}\n\tconst sorted = [...targets].sort((a, b) => a.path.length - b.path.length);\n\tconst updateAtPath = (current, path, fn) => {\n\t\tif (path.length === 0) return fn(current);\n\t\tconst [key, ...rest] = path;\n\t\tif (key === \"*\") {\n\t\t\tif (Array.isArray(current)) {\n\t\t\t\tlet changed = false;\n\t\t\t\tconst nextArr = current.map((item) => {\n\t\t\t\t\tconst nextVal = updateAtPath(item, rest, fn);\n\t\t\t\t\tif (nextVal !== item) changed = true;\n\t\t\t\t\treturn nextVal;\n\t\t\t\t});\n\t\t\t\treturn changed ? nextArr : current;\n\t\t\t}\n\t\t\treturn current;\n\t\t}\n\t\tif (!current || typeof current !== \"object\") return current;\n\t\tif (Array.isArray(current)) {\n\t\t\tconst index = Number(key);\n\t\t\tif (!Number.isNaN(index) && index >= 0 && index < current.length) {\n\t\t\t\tconst nextVal = updateAtPath(current[index], rest, fn);\n\t\t\t\tif (nextVal !== current[index]) {\n\t\t\t\t\tconst copy = [...current];\n\t\t\t\t\tcopy[index] = nextVal;\n\t\t\t\t\treturn copy;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn current;\n\t\t}\n\t\tif (Object.hasOwn(current, key)) {\n\t\t\tconst nextVal = updateAtPath(current[key], rest, fn);\n\t\t\tif (nextVal !== current[key]) return {\n\t\t\t\t...current,\n\t\t\t\t[key]: nextVal\n\t\t\t};\n\t\t}\n\t\treturn current;\n\t};\n\tlet result = data;\n\tfor (const t of sorted) if (t.path.length > 0) result = updateAtPath(result, t.path, (val) => coerceValue(val, t.type));\n\treturn result;\n};\n\n//#endregion\n//#region src/coercion/environment.ts\n/**\n* Prepare an environment record by optionally stripping empty strings and applying coercion.\n*\n* @param env The raw environment variables\n* @param emptyAsUndefined Whether to strip empty string values before processing\n* @param arrayFormat The format to use for array coercion\n* @param getSchema Optional callback that returns a JSON Schema and whether it exists,\n* used to determine coercion targets. When omitted, no coercion is performed.\n* @returns The processed environment, the coerced environment, and any missing schema keys\n*/\nfunction coerceEnvironment(env, emptyAsUndefined, arrayFormat, getSchema) {\n\tconst processedEnv = emptyAsUndefined ? stripEmptyStrings(env) : env;\n\tlet coercedEnv = { ...processedEnv };\n\tconst missingKeys = [];\n\tif (getSchema) {\n\t\tconst result = getSchema();\n\t\tmissingKeys.push(...result.missingKeys || []);\n\t\tif (result.hasSchema) coercedEnv = applyCoercion(coercedEnv, findCoercionPaths(result.schema), { arrayFormat });\n\t}\n\treturn {\n\t\tprocessedEnv,\n\t\tcoercedEnv,\n\t\tmissingKeys\n\t};\n}\n\n//#endregion\n//#region src/utils/indent.ts\n/**\n* Indent a string by a given amount\n* @param str - The string to indent\n* @param amt - The amount to indent by, defaults to 2\n* @param options - {@link IndentOptions}\n* @returns The indented string\n*/\nconst indent = (str, amt = 2, { dontDetectNewlines = false } = {}) => {\n\tif (!dontDetectNewlines) return str.split(\"\\n\").map((line) => `${\" \".repeat(amt)}${line}`).join(\"\\n\");\n\treturn `${\" \".repeat(amt)}${str}`;\n};\n\n//#endregion\n//#region src/utils/style-text.ts\n/**\n* Cross-platform text styling utility\n* Uses ANSI colors in Node environments, plain text in browsers\n* Respects NO_COLOR, CI environment variables, and TTY detection\n*/\nconst colors = {\n\tred: \"\\x1B[31m\",\n\tyellow: \"\\x1B[33m\",\n\tcyan: \"\\x1B[36m\",\n\treset: \"\\x1B[0m\"\n};\n/**\n* Check if we're in a Node environment (not browser)\n* Checked dynamically to allow for testing with mocked globals\n*/\nconst isNode = () => typeof process !== \"undefined\" && process.versions != null && process.versions.node != null;\n/**\n* Check if colors should be disabled based on environment\n* Respects NO_COLOR, CI environment variables, and TTY detection\n*/\nconst shouldDisableColors = () => {\n\tif (!isNode()) return true;\n\tif (process.env.NO_COLOR !== void 0) return true;\n\tif (process.env.CI !== void 0) return true;\n\tif (process.stdout && !process.stdout.isTTY) return true;\n\treturn false;\n};\n/**\n* Style text with color. Uses ANSI codes in Node, plain text in browsers.\n* @param color - The color to apply\n* @param text - The text to style\n* @returns Styled text in Node (if colors enabled), plain text otherwise\n*/\nconst styleText = (color, text) => {\n\tif (isNode() && !shouldDisableColors()) return `${colors[color]}${text}${colors.reset}`;\n\treturn text;\n};\n\n//#endregion\n//#region src/core.ts\n/**\n* Format a list of normalized environment issues into a single styled string.\n*\n* @param issues - The array of normalized issues to format\n* @returns The formatted and styled error report string\n*/\nfunction formatIssues(issues) {\n\treturn issues.map((issue) => {\n\t\treturn `${styleText(\"yellow\", issue.path)} ${issue.message.trimStart()}`;\n\t}).join(\"\\n\");\n}\n/**\n* Error thrown when environment variable validation fails.\n*\n* This error extends the native `Error` class and provides formatted error messages\n* that clearly indicate which environment variables are invalid and why.\n*\n* @example\n* ```ts\n* try {\n* const env = arkenv({\n* PORT: 'number.port',\n* HOST: 'string.host',\n* });\n* } catch (error) {\n* if (error instanceof ArkEnvError) {\n* console.error('Environment validation failed:', error.message);\n* }\n* }\n* ```\n*/\nvar ArkEnvError = class extends Error {\n\tconstructor(issues, message = \"Errors found while validating environment variables\") {\n\t\tconst formattedIssues = formatIssues(issues);\n\t\tsuper(`${styleText(\"red\", message)}\\n${indent(formattedIssues)}\\n`);\n\t\tthis.name = ARKENV_ERROR_NAME;\n\t\tthis.issues = issues;\n\t}\n};\nObject.defineProperty(ArkEnvError, \"name\", { value: ARKENV_ERROR_NAME });\n\n//#endregion\n//#region src/guards.ts\n/**\n* Throws if the given value is a string (ArkType DSL) in standard mode.\n* @internal\n*/\nfunction assertNotArkTypeDsl(key, value) {\n\tif (typeof value === \"string\") throw new ArkEnvError([{\n\t\tpath: key,\n\t\tmessage: \"ArkType DSL strings are not supported in \\\"standard\\\" mode. Use a Standard Schema validator (e.g., Zod, Valibot) or import from \\\"arkenv\\\" for ArkType schemas.\",\n\t\tcode: \"INVALID_SCHEMA\"\n\t}]);\n}\n/**\n* Throws if the given value is not a well-formed Standard Schema validator\n* (must have a `~standard` property whose `validate` field is a function).\n* @internal\n*/\nfunction assertStandardSchema(key, value) {\n\tconst std = value && typeof value === \"object\" && \"~standard\" in value && value[\"~standard\"];\n\tif (!std || typeof std !== \"object\" || !(\"validate\" in std) || typeof std.validate !== \"function\") throw new ArkEnvError([{\n\t\tpath: key,\n\t\tmessage: \"Invalid validator: expected a Standard Schema 1.0 validator (must have \\\"~standard\\\" property). Import from \\\"arkenv\\\" to use ArkType schemas.\",\n\t\tcode: \"INVALID_SCHEMA\"\n\t}]);\n}\n/**\n* Throws if `def` is not a plain object (i.e. not a valid schema map).\n* @internal\n*/\nfunction assertStandardSchemaMap(def) {\n\tif (!def || typeof def !== \"object\" || Array.isArray(def)) throw new ArkEnvError([{\n\t\tpath: \"\",\n\t\tmessage: \"Invalid schema: expected an object mapping in \\\"standard\\\" mode.\",\n\t\tcode: \"INVALID_SCHEMA\"\n\t}]);\n}\n\n//#endregion\n//#region src/utils/redact.ts\n/**\n* Regex pattern matching sensitive environment variable names.\n*\n* Matches keywords commonly associated with secrets (e.g. secret, key, token,\n* password, pass, auth, jwt, cert, credential, db_url). Excludes public keys\n* via the `shouldRedact` helper.\n*\n* @see {@link shouldRedact}\n*/\nconst SENSITIVE_PATTERN = /secret|(_|^)key(_|$)|token|(_|^)password(_|$)|(_|^)pass(_|$)|(_|^)auth(_|$)|jwt|cert|credential|database_url|db_url/i;\n/**\n* Check if debug secrets mode is enabled.\n*\n* Debug secrets mode can be enabled programmatically via the `debugSecrets` config option,\n* or globally by setting the `ARKENV_DEBUG_SECRETS` environment variable to `\"true\"` or `\"1\"`.\n*\n* @param configSecrets Programmatic override option for debugging secrets\n* @returns A boolean indicating if debug secrets mode is active\n*/\nfunction isDebugSecrets(configSecrets) {\n\tif (configSecrets !== void 0) return configSecrets;\n\tif (typeof process === \"undefined\") return false;\n\tconst val = process.env.ARKENV_DEBUG_SECRETS;\n\treturn val === \"true\" || val === \"1\";\n}\n/**\n* Determine if an environment variable path matches sensitive keyword patterns.\n*\n* By default, environment variables that contain sensitive keywords (e.g. 'secret', 'key',\n* 'token', 'password', 'auth', 'jwt', 'cert', 'credential', 'db_url') are flagged for redaction,\n* unless they are explicitly marked as public (e.g., matching 'public').\n*\n* Redaction prevents sensitive values from being logged or printed to the terminal\n* when environment validation fails.\n*\n* @param path The environment variable name/path under validation\n* @returns A boolean indicating if the path is sensitive and should be redacted\n*/\nfunction shouldRedact(path) {\n\treturn SENSITIVE_PATTERN.test(path) && !/public/i.test(path);\n}\n/**\n* Safely format and serialize an environment value for error reporting.\n*\n* Serializes primitive values and objects while redacting sensitive values if debugSecrets is disabled.\n* Limits object and array serialization to the first 3 keys/elements to prevent excessively large log outputs.\n*\n* @param val The raw received environment variable value\n* @param path The variable name/path under validation\n* @param options Configuration options, including debugSecrets override\n* @returns The formatted string representation of the value\n*/\nfunction safeStringify(val, path, options) {\n\tconst debug = isDebugSecrets(options?.debugSecrets);\n\tif (val === void 0) return \"missing\";\n\tif (val === null) return \"null\";\n\tif (!debug && shouldRedact(path)) return \"[REDACTED]\";\n\tif (typeof val === \"string\") return JSON.stringify(val);\n\tif (typeof val === \"number\" || typeof val === \"boolean\" || typeof val === \"bigint\") return String(val);\n\tif (typeof val === \"symbol\") return val.toString();\n\tif (typeof val === \"function\") return \"[Function]\";\n\tif (val && typeof val === \"object\") try {\n\t\tif (Array.isArray(val)) {\n\t\t\tconst res = val.slice(0, 3).map((x) => safeStringify(x, path, options));\n\t\t\tif (val.length > 3) res.push(`...(+${val.length - 3} more)`);\n\t\t\treturn `[${res.join(\", \")}]`;\n\t\t}\n\t\tconst keys = Object.keys(val);\n\t\tconst res = keys.slice(0, 3).map((k) => `${k}: ${safeStringify(val[k], path, options)}`);\n\t\tif (keys.length > 3) res.push(`...(+${keys.length - 3} more)`);\n\t\treturn `{ ${res.join(\", \")} }`;\n\t} catch {\n\t\treturn Object.prototype.toString.call(val);\n\t}\n\treturn String(val);\n}\n\n//#endregion\n//#region src/utils/errors.ts\n/**\n* Mapping of Standard Schema validation issue codes to normalized EnvIssueCode classification codes.\n*\n* This serves as an internal translation map specifically for Standard Schema validators\n* (such as Zod or Valibot) to map their engine-specific error keys to our unified union type.\n* It is not a duplicate Source of Truth for the allowed issue codes themselves, which are\n* defined solely by the `EnvIssueCode` type in `core.ts`.\n*\n* @internal\n*/\nconst STANDARD_CODE_MAP = {\n\ttoo_small: \"VALUE_TOO_SMALL\",\n\ttoo_big: \"VALUE_TOO_LARGE\",\n\tinvalid_string: \"INVALID_FORMAT\",\n\tinvalid_date: \"INVALID_FORMAT\",\n\tcustom: \"INVALID_FORMAT\"\n};\n/**\n* Map a Standard Schema validation issue to a normalized EnvIssueCode.\n*\n* @param engineCode The raw issue code from the Standard Schema engine\n* @param message The error message associated with the issue\n* @param receivedVal The raw value received by the validator\n* @returns The normalized EnvIssueCode classification\n* @internal\n*/\nfunction mapStandardCode(engineCode, message, receivedVal) {\n\tconst msg = message.toLowerCase();\n\tif (engineCode === \"invalid_type\" && (receivedVal === void 0 || receivedVal === \"undefined\") || msg === \"required\") return \"MISSING_VARIABLE\";\n\tif (engineCode in STANDARD_CODE_MAP) return STANDARD_CODE_MAP[engineCode];\n\tif (/regex|pattern|match/.test(msg)) return \"PATTERN_MISMATCH\";\n\treturn \"INVALID_TYPE\";\n}\n/**\n* Extract validation boundary metadata from a Standard Schema issue.\n*\n* @param issue The raw issue from Standard Schema\n* @returns An object containing normalized min and/or max values if present\n* @internal\n*/\nfunction getStandardMeta(issue) {\n\tconst min = issue.minimum ?? issue.min;\n\tconst max = issue.maximum ?? issue.max;\n\treturn {\n\t\t...typeof min === \"number\" ? { min } : {},\n\t\t...typeof max === \"number\" ? { max } : {}\n\t};\n}\n/**\n* Execute a parser function and return a SafeArkEnvResult.\n*\n* @param parseFn The function that parses the environment variables and might throw an ArkEnvError\n* @returns A SafeArkEnvResult containing either the parsed data or the caught ArkEnvError\n* @internal\n*/\nfunction safeExecute(parseFn) {\n\ttry {\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tdata: parseFn()\n\t\t};\n\t} catch (error) {\n\t\tif (error instanceof ArkEnvError) return {\n\t\t\tsuccess: false,\n\t\t\tissues: error.issues\n\t\t};\n\t\tthrow error;\n\t}\n}\n/**\n* Build a normalized {@link EnvIssue}.\n*\n* @param path The dot-separated property path/name of the environment variable\n* @param message The descriptive, user-friendly error message\n* @param code The normalized classification code for the issue\n* @param meta Additional validation metadata and engine codes\n* @param expected The expected type or value shape description\n* @param received The raw value received (redacted in string formatting if sensitive)\n* @returns A fully populated EnvIssue\n* @internal\n*/\nfunction buildEnvIssue(path, message, code, meta, expected, received) {\n\tconst issue = {\n\t\tpath,\n\t\tmessage,\n\t\tcode,\n\t\tmeta: meta ?? {}\n\t};\n\tif (expected) issue.expected = expected;\n\tif (received !== void 0) issue.received = received;\n\treturn issue;\n}\n/**\n* Format a Standard Schema validation issue message, appending a `(was …)` substring\n* and redacting sensitive values when appropriate.\n*\n* @param baseMessage The raw message from the Standard Schema validator\n* @param code The normalized issue code\n* @param expected The expected type description, if any\n* @param receivedVal The raw value received by the validator\n* @param path The environment variable name/path under validation\n* @param config Optional config containing the debugSecrets override\n* @returns The formatted message string\n* @internal\n*/\nfunction formatStandardIssueMessage(baseMessage, code, expected, receivedVal, path, config) {\n\tif (code === \"MISSING_VARIABLE\") return expected ? `must be ${expected} (was missing)` : \"is required\";\n\tif (baseMessage.includes(\"(was \")) return baseMessage;\n\tconst suffix = `(was ${styleText(\"cyan\", !isDebugSecrets(config?.debugSecrets) && shouldRedact(path) ? \"[REDACTED]\" : safeStringify(receivedVal, path, config))})`;\n\treturn expected && !baseMessage.includes(\"Expected\") ? `must be ${expected} ${suffix}` : `${baseMessage} ${suffix}`;\n}\n\n//#endregion\n//#region src/utils/standard-helpers.ts\n/**\n* Whether `value` is a plain object (`{}` / Object.create(null) style).\n* Rejects arrays, `Date`, functions, boxed primitives, etc.\n* @internal\n*/\nfunction isPlainObject(value) {\n\treturn Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n* Extract JSON Schema definitions from standard schema validators.\n*\n* @param def The schema dictionary mapping keys to validators\n* @param toJsonSchema Optional fallback converter when a key has no Standard JSON Schema on the value\n* @returns The generated JSON Schema, a flag indicating if any JSON Schema was found,\n* and a list of keys that do not support JSON Schema\n* @throws {ArkEnvError} When `toJsonSchema` throws or returns a non-plain object for a key\n*/\nfunction extractJsonSchema(def, toJsonSchema) {\n\tconst jsonSchema = {\n\t\ttype: \"object\",\n\t\tproperties: {}\n\t};\n\tlet hasJsonSchema = false;\n\tconst missingKeys = [];\n\tfor (const key in def) {\n\t\tconst validator = def[key];\n\t\tif (!validator) {\n\t\t\tmissingKeys.push(key);\n\t\t\tcontinue;\n\t\t}\n\t\tconst std = validator[\"~standard\"];\n\t\tif (typeof std?.jsonSchema?.input === \"function\") try {\n\t\t\tconst schema = std.jsonSchema.input({ target: \"draft-07\" });\n\t\t\tif (schema) {\n\t\t\t\tjsonSchema.properties[key] = schema;\n\t\t\t\thasJsonSchema = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t} catch {}\n\t\tif (typeof validator.jsonSchema?.input === \"function\") try {\n\t\t\tconst schema = validator.jsonSchema.input({ target: \"draft-07\" });\n\t\t\tif (schema) {\n\t\t\t\tjsonSchema.properties[key] = schema;\n\t\t\t\thasJsonSchema = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t} catch {}\n\t\tif (typeof validator.toJSONSchema === \"function\") try {\n\t\t\tconst schema = validator.toJSONSchema();\n\t\t\tif (schema) {\n\t\t\t\tjsonSchema.properties[key] = schema;\n\t\t\t\thasJsonSchema = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t} catch {}\n\t\tif (typeof validator.toStandardJSONSchema?.v1 === \"function\") try {\n\t\t\tconst schema = validator.toStandardJSONSchema.v1();\n\t\t\tif (schema) {\n\t\t\t\tjsonSchema.properties[key] = schema;\n\t\t\t\thasJsonSchema = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t} catch {}\n\t\tif (toJsonSchema) {\n\t\t\tlet converted;\n\t\t\ttry {\n\t\t\t\tconverted = toJsonSchema(validator);\n\t\t\t} catch (error) {\n\t\t\t\tthrow new ArkEnvError([buildEnvIssue(key, `toJsonSchema failed for '${key}': ${error instanceof Error ? error.message : String(error)}`, \"INVALID_SCHEMA\")]);\n\t\t\t}\n\t\t\tif (!converted) {\n\t\t\t\tmissingKeys.push(key);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!isPlainObject(converted)) throw new ArkEnvError([buildEnvIssue(key, `toJsonSchema must return a plain object or undefined for '${key}'.`, \"INVALID_SCHEMA\")]);\n\t\t\tjsonSchema.properties[key] = converted;\n\t\t\thasJsonSchema = true;\n\t\t\tcontinue;\n\t\t}\n\t\tmissingKeys.push(key);\n\t}\n\treturn {\n\t\tjsonSchema,\n\t\thasJsonSchema,\n\t\tmissingKeys\n\t};\n}\n/**\n* Get the property key from a path segment.\n*\n* @param s The path segment which can be a key or a segment object\n* @returns The string representation of the property key\n*/\nfunction getProp(s) {\n\treturn typeof s === \"object\" && s !== null && \"key\" in s ? String(s.key) : String(s);\n}\n/**\n* Format standard schema validation issue path.\n*\n* @param key The base key of the environment variable\n* @param path The relative path segments of the issue\n* @returns The formatted dot-separated path string\n*/\nfunction formatIssuePath(key, path) {\n\tif (!path || path.length === 0) return key;\n\treturn [key, ...path.map(getProp)].join(\".\");\n}\n/**\n* Traverse the raw string value (attempting to parse as JSON if it represents an object/array)\n* to extract the nested value targeted by the issue path.\n*\n* @param rawVal The raw string value of the environment variable\n* @param path The path segments of the validation issue\n* @returns An object containing the resolved nested value and an optional traversal error string\n*/\nfunction traverseReceivedValue(rawVal, path) {\n\tlet receivedVal = rawVal;\n\tlet traversalError;\n\ttry {\n\t\tlet current = rawVal;\n\t\tconst trimmed = rawVal.trim();\n\t\tif (trimmed[0] === \"{\" || trimmed[0] === \"[\") try {\n\t\t\tcurrent = JSON.parse(rawVal);\n\t\t} catch (e) {\n\t\t\ttraversalError = `[Unparseable JSON: ${e.message}]`;\n\t\t}\n\t\tif (!traversalError) {\n\t\t\tfor (const seg of path) current = current?.[getProp(seg)];\n\t\t\treceivedVal = current;\n\t\t}\n\t} catch (e) {\n\t\ttraversalError = `[Traversal error: ${e.message}]`;\n\t}\n\treturn {\n\t\treceivedVal,\n\t\ttraversalError\n\t};\n}\n\n//#endregion\n//#region src/parse-standard.ts\n/**\n* Parse and validate environment variables using Standard Schema 1.0 validators.\n*\n* @param def An object mapping environment variable keys to Standard Schema 1.0 validators\n* @param config Parsing options, including environment source, undeclared key handling, and coercion config\n* @returns The parsed and validated environment variables\n* @throws An ArkEnvError if validation fails\n*/\nfunction parseStandard(def, config) {\n\tconst { env = process.env, onUndeclaredKey = \"delete\", coerce = true, arrayFormat = \"comma\", emptyAsUndefined = false, toJsonSchema } = config;\n\tconst output = {};\n\tconst errors = [];\n\tconst { processedEnv, coercedEnv, missingKeys: missingJsonSchemaKeys } = coerceEnvironment(env, emptyAsUndefined, arrayFormat, coerce ? () => {\n\t\tconst { jsonSchema, hasJsonSchema, missingKeys } = extractJsonSchema(def, toJsonSchema);\n\t\treturn {\n\t\t\tschema: jsonSchema,\n\t\t\thasSchema: hasJsonSchema,\n\t\t\tmissingKeys\n\t\t};\n\t} : void 0);\n\tconst envKeys = new Set(Object.keys(processedEnv));\n\tfor (const key in def) {\n\t\tconst validator = def[key];\n\t\tconst value = coercedEnv[key];\n\t\tif (!validator || typeof validator !== \"object\" || !(\"~standard\" in validator)) throw new ArkEnvError([buildEnvIssue(key, `Invalid schema: expected a Standard Schema 1.0 validator (e.g. Zod, Valibot) in 'standard' mode.`, \"INVALID_SCHEMA\")]);\n\t\tconst result = validator[\"~standard\"].validate(value);\n\t\tif (result instanceof Promise) throw new ArkEnvError([buildEnvIssue(key, \"Async validation is not supported. ArkEnv is synchronous.\", \"INVALID_SCHEMA\")]);\n\t\tif (result.issues) for (const issue of result.issues) {\n\t\t\tconst issuePath = formatIssuePath(key, issue.path);\n\t\t\tlet receivedVal;\n\t\t\tlet traversalError;\n\t\t\tif (key in processedEnv) {\n\t\t\t\tconst rawVal = processedEnv[key];\n\t\t\t\tif (typeof rawVal === \"string\" && issue.path?.length) {\n\t\t\t\t\tconst traversed = traverseReceivedValue(rawVal, issue.path);\n\t\t\t\t\treceivedVal = traversed.receivedVal;\n\t\t\t\t\ttraversalError = traversed.traversalError;\n\t\t\t\t} else receivedVal = rawVal;\n\t\t\t} else receivedVal = issue.received;\n\t\t\tconst code = mapStandardCode(issue.code || \"invalid_type\", issue.message || \"\", receivedVal);\n\t\t\tconst expected = issue.expected || void 0;\n\t\t\tconst meta = { ...getStandardMeta(issue) };\n\t\t\tconst iss = issue;\n\t\t\tif (iss.validation !== void 0) meta.validation = iss.validation;\n\t\t\tif (traversalError !== void 0) meta.traversalError = traversalError;\n\t\t\tlet message = formatStandardIssueMessage(issue.message || \"\", code, expected, receivedVal, issuePath, config);\n\t\t\tif (coerce && missingJsonSchemaKeys.includes(key)) message += ` (Hint: coercion is enabled by default, but the validator for '${key}' lacks Standard JSON Schema support.)`;\n\t\t\terrors.push(buildEnvIssue(issuePath, message, code, meta, expected, receivedVal));\n\t\t}\n\t\telse output[key] = result.value;\n\t\tenvKeys.delete(key);\n\t}\n\tif (onUndeclaredKey !== \"delete\") {\n\t\tfor (const key of envKeys) if (onUndeclaredKey === \"reject\") errors.push(buildEnvIssue(key, \"Undeclared key\", \"UNDECLARED_KEY\"));\n\t\telse if (onUndeclaredKey === \"ignore\") output[key] = coercedEnv[key];\n\t}\n\tif (errors.length > 0) throw new ArkEnvError(errors);\n\treturn output;\n}\n\n//#endregion\n//#region src/schema.ts\n/**\n* Extract the keys from a schema definition.\n* Supports plain objects, ArkType schemas, and Standard Schema validators.\n*\n* @param schema The schema definition to extract keys from\n* @returns An array of extracted key names\n*/\nfunction getSchemaKeys(schema) {\n\tif (!schema || typeof schema !== \"object\" && typeof schema !== \"function\") return [];\n\tif (schema.json && typeof schema.json === \"object\" && schema.json.domain === \"object\") {\n\t\tconst keys = [];\n\t\tif (Array.isArray(schema.json.required)) {\n\t\t\tfor (const r of schema.json.required) if (r && typeof r === \"object\" && \"key\" in r) keys.push(r.key);\n\t\t}\n\t\tif (Array.isArray(schema.json.optional)) {\n\t\t\tfor (const o of schema.json.optional) if (o && typeof o === \"object\" && \"key\" in o) keys.push(o.key);\n\t\t}\n\t\treturn keys;\n\t}\n\tconst std = schema[\"~standard\"];\n\tconst jsonSchemaInput = typeof std?.jsonSchema?.input === \"function\" && std.jsonSchema.input || typeof schema.jsonSchema?.input === \"function\" && schema.jsonSchema.input;\n\tif (jsonSchemaInput) try {\n\t\tconst json = jsonSchemaInput({ target: \"draft-07\" });\n\t\tif (json && typeof json === \"object\" && json.properties) return Object.keys(json.properties);\n\t} catch {}\n\tif (typeof schema.toJSONSchema === \"function\") try {\n\t\tconst json = schema.toJSONSchema();\n\t\tif (json && typeof json === \"object\" && json.properties) return Object.keys(json.properties);\n\t} catch {}\n\tif (typeof schema.toStandardJSONSchema?.v1 === \"function\") try {\n\t\tconst json = schema.toStandardJSONSchema.v1();\n\t\tif (json && typeof json === \"object\" && json.properties) return Object.keys(json.properties);\n\t} catch {}\n\treturn Object.keys(schema);\n}\n\n//#endregion\n//#region src/utils/format-build-error.ts\n/**\n* Standard prefix for ArkEnv build-time log messages.\n*/\nconst BUILD_PREFIX = \"[ArkEnv]\";\n/**\n* Format an error message with the standard build prefix.\n*/\nfunction formatBuildError(message) {\n\treturn `${BUILD_PREFIX} ${message}`;\n}\n\n//#endregion\nexport { ARKENV_ERROR_NAME, ARRAY_ITEM_MARKER, ArkEnvError, BUILD_PREFIX, applyCoercion, assertNotArkTypeDsl, assertStandardSchema, assertStandardSchemaMap, boundaryAccessErrorMessage, buildEnvIssue, coerceBoolean, coerceDate, coerceEnvironment, coerceJson, coerceNumber, extractJsonSchema, findCoercionPaths, formatBuildError, formatIssuePath, formatIssues, formatStandardIssueMessage, getProp, getSchemaKeys, getStandardMeta, indent, isDebugSecrets, mapStandardCode, parseStandard, safeExecute, safeStringify, shouldRedact, stripEmptyStrings, styleText, traverseReceivedValue };\n//# sourceMappingURL=index.js.map","import type { StandardSchemaV1 } from \"@repo/types\";\nimport {\n\tArkEnvError,\n\tassertNotArkTypeDsl,\n\tassertStandardSchema,\n\tassertStandardSchemaMap,\n\ttype EnvIssue,\n\tformatIssues,\n\tgetSchemaKeys,\n\ttype ParseStandardConfig,\n\tparseStandard,\n\ttype SafeArkEnvResult,\n\tsafeExecute,\n} from \"@repo/utils\";\n\nexport {\n\tArkEnvError,\n\ttype EnvIssue,\n\tformatIssues,\n\tgetSchemaKeys,\n\ttype SafeArkEnvResult,\n};\n\n/**\n * Configuration options for `arkenv` from `@arkenv/standard`.\n */\nexport type StandardEnvConfig = ParseStandardConfig;\n\ntype StandardEnvOutput<T extends Record<string, StandardSchemaV1>> = {\n\t[K in keyof T]: StandardSchemaV1.InferOutput<T[K]>;\n};\n\n/**\n * Parse and validate environment variables using Standard Schema 1.0 validators (e.g. Zod, Valibot).\n *\n * This entry is ArkType-free - ArkType is never imported, even transitively.\n * Use this when your project must not depend on ArkType.\n *\n * @param def An object mapping variable names to Standard Schema validators\n * @param config Optional configuration\n * @returns The validated environment variables, or a SafeArkEnvResult if `{ safe: true }` is configured\n * @throws An {@link ArkEnvError} if validation fails and `safe` is not enabled\n *\n * @example\n * ```ts\n * import arkenv from \"@arkenv/standard\";\n * import { z } from \"zod\";\n *\n * const env = arkenv({\n * PORT: z.coerce.number(),\n * HOST: z.string(),\n * });\n * ```\n */\nexport function arkenv<\n\tconst T extends Record<string, StandardSchemaV1>,\n\tconst Safe extends boolean | undefined = undefined,\n>(\n\tdef: T,\n\tconfig?: Omit<StandardEnvConfig, \"safe\"> & { safe?: Safe },\n): [Safe] extends [true]\n\t? SafeArkEnvResult<StandardEnvOutput<T>>\n\t: StandardEnvOutput<T> {\n\tconst resolved = (config ?? {}) as StandardEnvConfig;\n\tassertStandardSchemaMap(def);\n\n\tfor (const key in def) {\n\t\tconst validator = (def as Record<string, unknown>)[key];\n\t\tassertNotArkTypeDsl(key, validator);\n\t\tassertStandardSchema(key, validator);\n\t}\n\n\tif (resolved.safe) {\n\t\treturn safeExecute(\n\t\t\t() =>\n\t\t\t\tparseStandard(\n\t\t\t\t\tdef as Record<string, unknown>,\n\t\t\t\t\tresolved,\n\t\t\t\t) as StandardEnvOutput<T>,\n\t\t) as [Safe] extends [true]\n\t\t\t? SafeArkEnvResult<StandardEnvOutput<T>>\n\t\t\t: StandardEnvOutput<T>;\n\t}\n\n\treturn parseStandard(def as Record<string, unknown>, resolved) as [\n\t\tSafe,\n\t] extends [true]\n\t\t? SafeArkEnvResult<StandardEnvOutput<T>>\n\t\t: StandardEnvOutput<T>;\n}\n\nexport default arkenv;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@arkenv/standard",
3
3
  "type": "module",
4
- "version": "1.0.0-alpha.3",
4
+ "version": "1.0.0-alpha.5",
5
5
  "description": "Dependency-free, typesafe environment variables validation based on Standard Schema",
6
6
  "main": "./dist/index.cjs",
7
7
  "module": "./dist/index.js",
@@ -17,14 +17,17 @@
17
17
  "dist"
18
18
  ],
19
19
  "keywords": [
20
- "pnpm",
21
- "standard-schema",
22
- "zod",
23
- "valibot",
20
+ "env",
21
+ "environment-variables",
24
22
  "environment",
25
23
  "variables",
24
+ "dotenv",
25
+ "config",
26
+ "validation",
26
27
  "typesafe",
27
- "validation"
28
+ "standard-schema",
29
+ "zod",
30
+ "valibot"
28
31
  ],
29
32
  "license": "MIT",
30
33
  "homepage": "https://arkenv.js.org",
@@ -41,10 +44,15 @@
41
44
  "@size-limit/esbuild-why": "12.1.0",
42
45
  "@size-limit/preset-small-lib": "12.1.0",
43
46
  "@types/node": "24.12.2",
47
+ "@valibot/to-json-schema": "1.6.0",
44
48
  "rimraf": "6.1.3",
45
49
  "size-limit": "12.1.0",
46
50
  "tsdown": "0.21.10",
47
51
  "typescript": "6.0.3",
52
+ "valibot": "1.3.1",
53
+ "vitest": "4.1.5",
54
+ "zod": "4.4.1",
55
+ "zod-to-json-schema": "3.25.2",
48
56
  "@repo/types": "0.1.0",
49
57
  "@repo/utils": "0.1.3"
50
58
  },
@@ -52,13 +60,15 @@
52
60
  {
53
61
  "name": "@arkenv/standard",
54
62
  "path": "dist/index.js",
55
- "limit": "3.6 kB",
63
+ "limit": "3.7 kB",
56
64
  "import": "*"
57
65
  }
58
66
  ],
59
67
  "scripts": {
60
68
  "build": "tsdown",
61
69
  "size": "size-limit --json > .size-limit.json",
70
+ "test": "vitest",
71
+ "test:once": "vitest run",
62
72
  "typecheck": "tsc --noEmit",
63
73
  "clean": "rimraf dist node_modules",
64
74
  "fix": "pnpm -w run fix"