glassnode-api 0.1.4 → 0.7.1
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/README.md +68 -36
- package/dist/errors.d.ts +6 -0
- package/dist/errors.js +25 -0
- package/dist/{src/glassnode-api.d.ts → glassnode-api.d.ts} +12 -1
- package/dist/glassnode-api.esm.min.js +2 -0
- package/dist/glassnode-api.esm.min.js.map +1 -0
- package/dist/{src/glassnode-api.js → glassnode-api.js} +49 -14
- package/dist/glassnode-api.umd.min.js +2 -0
- package/dist/glassnode-api.umd.min.js.map +1 -0
- package/dist/{src/index.d.ts → index.d.ts} +1 -0
- package/dist/{src/index.js → index.js} +1 -0
- package/dist/types/config.d.ts +24 -0
- package/dist/types/config.js +38 -0
- package/dist/types/metadata.d.ts +242 -0
- package/dist/{src/types → types}/metadata.js +55 -5
- package/package.json +39 -28
- package/dist/examples/metadata.validation.d.ts +0 -1
- package/dist/examples/metadata.validation.js +0 -126
- package/dist/examples/metric.dump.d.ts +0 -1
- package/dist/examples/metric.dump.js +0 -28
- package/dist/src/types/config.d.ts +0 -25
- package/dist/src/types/config.js +0 -18
- package/dist/src/types/metadata.d.ts +0 -383
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GlassnodeAPI = void 0;
|
|
4
4
|
const config_1 = require("./types/config");
|
|
5
|
+
const errors_1 = require("./errors");
|
|
5
6
|
const metadata_1 = require("./types/metadata");
|
|
6
7
|
/**
|
|
7
8
|
* Glassnode API client
|
|
@@ -9,6 +10,10 @@ const metadata_1 = require("./types/metadata");
|
|
|
9
10
|
class GlassnodeAPI {
|
|
10
11
|
apiKey;
|
|
11
12
|
apiUrl;
|
|
13
|
+
logger;
|
|
14
|
+
fetchFn;
|
|
15
|
+
maxRetries;
|
|
16
|
+
retryDelay;
|
|
12
17
|
/**
|
|
13
18
|
* Create a new Glassnode API client
|
|
14
19
|
* @param config Configuration object
|
|
@@ -18,6 +23,10 @@ class GlassnodeAPI {
|
|
|
18
23
|
const validatedConfig = config_1.GlassnodeConfigSchema.parse(config);
|
|
19
24
|
this.apiKey = validatedConfig.apiKey;
|
|
20
25
|
this.apiUrl = validatedConfig.apiUrl;
|
|
26
|
+
this.logger = validatedConfig.logger;
|
|
27
|
+
this.fetchFn = validatedConfig.fetch ?? globalThis.fetch;
|
|
28
|
+
this.maxRetries = validatedConfig.maxRetries;
|
|
29
|
+
this.retryDelay = validatedConfig.retryDelay;
|
|
21
30
|
}
|
|
22
31
|
/**
|
|
23
32
|
* Make an API request
|
|
@@ -26,29 +35,45 @@ class GlassnodeAPI {
|
|
|
26
35
|
* @returns Promise resolving to the response data
|
|
27
36
|
*/
|
|
28
37
|
async request(endpoint, params = {}) {
|
|
29
|
-
// Add API key to params
|
|
30
38
|
const queryParams = new URLSearchParams({
|
|
31
39
|
...params,
|
|
32
40
|
api_key: this.apiKey,
|
|
33
41
|
});
|
|
34
42
|
const url = `${this.apiUrl}${endpoint}?${queryParams}`;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
43
|
+
let lastError;
|
|
44
|
+
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
45
|
+
if (attempt > 0) {
|
|
46
|
+
const delay = this.retryDelay * 2 ** (attempt - 1);
|
|
47
|
+
this.logger?.(`Retry ${attempt}/${this.maxRetries} after ${delay}ms`);
|
|
48
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
49
|
+
}
|
|
50
|
+
this.logger?.('API call:', url);
|
|
51
|
+
try {
|
|
52
|
+
const response = await this.fetchFn(url);
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
const error = new errors_1.GlassnodeApiError(response.status, response.statusText);
|
|
55
|
+
if (error.isRetryable && attempt < this.maxRetries) {
|
|
56
|
+
lastError = error;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
41
60
|
}
|
|
42
|
-
|
|
61
|
+
return await response.json();
|
|
43
62
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (error instanceof errors_1.GlassnodeApiError) {
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
if (error instanceof Error) {
|
|
68
|
+
lastError = error;
|
|
69
|
+
if (attempt < this.maxRetries)
|
|
70
|
+
continue;
|
|
71
|
+
throw new Error(`Glassnode API error: ${error.message}`, { cause: error });
|
|
72
|
+
}
|
|
73
|
+
throw new Error('Unknown error occurred', { cause: error });
|
|
49
74
|
}
|
|
50
|
-
throw new Error('Unknown error occurred');
|
|
51
75
|
}
|
|
76
|
+
throw lastError;
|
|
52
77
|
}
|
|
53
78
|
/**
|
|
54
79
|
* Get metadata for all assets
|
|
@@ -89,5 +114,15 @@ class GlassnodeAPI {
|
|
|
89
114
|
const response = await this.request('/v1/metrics' + metricPath, { ...params, f: 'json' });
|
|
90
115
|
return response;
|
|
91
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Call a bulk metric endpoint (returns data for all assets at once)
|
|
119
|
+
* @param metricPath Path of the metric (e.g. /market/marketcap_usd)
|
|
120
|
+
* @param params Query parameters
|
|
121
|
+
* @returns Promise resolving to validated bulk response
|
|
122
|
+
*/
|
|
123
|
+
async callBulkMetric(metricPath, params = {}) {
|
|
124
|
+
const response = await this.request('/v1/metrics' + metricPath + '/bulk', { ...params, f: 'json' });
|
|
125
|
+
return metadata_1.BulkResponseSchema.parse(response.data);
|
|
126
|
+
}
|
|
92
127
|
}
|
|
93
128
|
exports.GlassnodeAPI = GlassnodeAPI;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).GlassnodeAPI={})}(this,function(e){"use strict";function t(e,t,n,o){return new(n||(n=Promise))(function(r,i){function s(e){try{c(o.next(e))}catch(e){i(e)}}function a(e){try{c(o.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}c((o=o.apply(e,t||[])).next())})}function n(e,t,n){function o(n,o){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:o,constr:s,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,o);const r=s.prototype,i=Object.keys(r);for(let e=0;e<i.length;e++){const t=i[e];t in n||(n[t]=r[t].bind(n))}}const r=n?.Parent??Object;class i extends r{}function s(e){var t;const r=n?.Parent?new i:this;o(r,e),(t=r._zod).deferred??(t.deferred=[]);for(const e of r._zod.deferred)e();return r}return Object.defineProperty(i,"name",{value:e}),Object.defineProperty(s,"init",{value:o}),Object.defineProperty(s,Symbol.hasInstance,{value:t=>!!(n?.Parent&&t instanceof n.Parent)||t?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}"function"==typeof SuppressedError&&SuppressedError;class o extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class r extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name="ZodEncodeError"}}const i={};function s(e){return i}function a(e){const t=Object.values(e).filter(e=>"number"==typeof e);return Object.entries(e).filter(([e,n])=>-1===t.indexOf(+e)).map(([e,t])=>t)}function c(e,t){return"bigint"==typeof t?t.toString():t}function u(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function d(e){return null==e}function p(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}const l=Symbol("evaluating");function f(e,t,n){let o;Object.defineProperty(e,t,{get(){if(o!==l)return void 0===o&&(o=l,o=n()),o},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function h(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function m(...e){const t={};for(const n of e){const e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function y(e){return JSON.stringify(e)}const g="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function v(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}const _=u(()=>{if("undefined"!=typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function z(e){if(!1===v(e))return!1;const t=e.constructor;if(void 0===t)return!0;if("function"!=typeof t)return!0;const n=t.prototype;return!1!==v(n)&&!1!==Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")}function b(e){return z(e)?{...e}:Array.isArray(e)?[...e]:e}const w=new Set(["string","number","symbol"]);function k(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function $(e,t,n){const o=new e._zod.constr(t??e._zod.def);return t&&!n?.parent||(o._zod.parent=e),o}function S(e){const t=e;if(!t)return{};if("string"==typeof t)return{error:()=>t};if(void 0!==t?.message){if(void 0!==t?.error)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,"string"==typeof t.error?{...t,error:()=>t.error}:t}const O={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function x(e,t=0){if(!0===e.aborted)return!0;for(let n=t;n<e.issues.length;n++)if(!0!==e.issues[n]?.continue)return!0;return!1}function T(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Z(e){return"string"==typeof e?e:e?.message}function E(e,t,n){const o={...e,path:e.path??[]};if(!e.message){const r=Z(e.inst?._zod.def?.error?.(e))??Z(t?.error?.(e))??Z(n.customError?.(e))??Z(n.localeError?.(e))??"Invalid input";o.message=r}return delete o.inst,delete o.continue,t?.reportInput||delete o.input,o}function I(e){return Array.isArray(e)?"array":"string"==typeof e?"string":"unknown"}function N(...e){const[t,n,o]=e;return"string"==typeof t?{message:t,code:"custom",input:n,inst:o}:{...t}}const P=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,c,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},A=n("$ZodError",P),j=n("$ZodError",P,{Parent:Error});const R=e=>(t,n,r,i)=>{const a=r?Object.assign(r,{async:!1}):{async:!1},c=t._zod.run({value:n,issues:[]},a);if(c instanceof Promise)throw new o;if(c.issues.length){const t=new(i?.Err??e)(c.issues.map(e=>E(e,a,s())));throw g(t,i?.callee),t}return c.value},F=R(j),J=e=>async(t,n,o,r)=>{const i=o?Object.assign(o,{async:!0}):{async:!0};let a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise&&(a=await a),a.issues.length){const t=new(r?.Err??e)(a.issues.map(e=>E(e,i,s())));throw g(t,r?.callee),t}return a.value},M=J(j),C=e=>(t,n,r)=>{const i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new o;return a.issues.length?{success:!1,error:new(e??A)(a.issues.map(e=>E(e,i,s())))}:{success:!0,data:a.value}},D=C(j),U=e=>async(t,n,o)=>{const r=o?Object.assign(o,{async:!0}):{async:!0};let i=t._zod.run({value:n,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(e=>E(e,r,s())))}:{success:!0,data:i.value}},V=U(j),L=e=>(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return R(e)(t,n,r)},G=e=>(t,n,o)=>R(e)(t,n,o),W=e=>async(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return J(e)(t,n,r)},q=e=>async(t,n,o)=>J(e)(t,n,o),B=e=>(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return C(e)(t,n,r)},K=e=>(t,n,o)=>C(e)(t,n,o),Y=e=>async(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return U(e)(t,n,r)},X=e=>async(t,n,o)=>U(e)(t,n,o),H=/^[cC][^\s-]{8,}$/,Q=/^[0-9a-z]+$/,ee=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,te=/^[0-9a-vA-V]{20}$/,ne=/^[A-Za-z0-9]{27}$/,oe=/^[a-zA-Z0-9_-]{21}$/,re=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,ie=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,se=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,ae=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;const ce=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ue=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,de=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,pe=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,le=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,fe=/^[A-Za-z0-9_-]*$/,he=/^\+[1-9]\d{6,14}$/,me="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",ye=new RegExp(`^${me}$`);function ge(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"==typeof e.precision?-1===e.precision?`${t}`:0===e.precision?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}const ve=/^-?\d+$/,_e=/^-?\d+(?:\.\d+)?$/,ze=/^(?:true|false)$/i,be=/^[^A-Z]*$/,we=/^[^a-z]*$/,ke=n("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),$e={number:"number",bigint:"bigint",object:"date"},Se=n("$ZodCheckLessThan",(e,t)=>{ke.init(e,t);const n=$e[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,o=(t.inclusive?n.maximum:n.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<o&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=o=>{(t.inclusive?o.value<=t.value:o.value<t.value)||o.issues.push({origin:n,code:"too_big",maximum:"object"==typeof t.value?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Oe=n("$ZodCheckGreaterThan",(e,t)=>{ke.init(e,t);const n=$e[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,o=(t.inclusive?n.minimum:n.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>o&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=o=>{(t.inclusive?o.value>=t.value:o.value>t.value)||o.issues.push({origin:n,code:"too_small",minimum:"object"==typeof t.value?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),xe=n("$ZodCheckMultipleOf",(e,t)=>{ke.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof n.value?n.value%t.value===BigInt(0):0===function(e,t){const n=(e.toString().split(".")[1]||"").length,o=t.toString();let r=(o.split(".")[1]||"").length;if(0===r&&/\d?e-\d?/.test(o)){const e=o.match(/\d?e-(\d?)/);e?.[1]&&(r=Number.parseInt(e[1]))}const i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(".",""))%Number.parseInt(t.toFixed(i).replace(".",""))/10**i}(n.value,t.value))||n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Te=n("$ZodCheckNumberFormat",(e,t)=>{ke.init(e,t),t.format=t.format||"float64";const n=t.format?.includes("int"),o=n?"int":"number",[r,i]=O[t.format];e._zod.onattach.push(e=>{const o=e._zod.bag;o.format=t.format,o.minimum=r,o.maximum=i,n&&(o.pattern=ve)}),e._zod.check=s=>{const a=s.value;if(n){if(!Number.isInteger(a))return void s.issues.push({expected:o,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});if(!Number.isSafeInteger(a))return void(a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort}))}a<r&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}}),Ze=n("$ZodCheckMaxLength",(e,t)=>{var n;ke.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!d(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{const o=n.value;if(o.length<=t.maximum)return;const r=I(o);n.issues.push({origin:r,code:"too_big",maximum:t.maximum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),Ee=n("$ZodCheckMinLength",(e,t)=>{var n;ke.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!d(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{const o=n.value;if(o.length>=t.minimum)return;const r=I(o);n.issues.push({origin:r,code:"too_small",minimum:t.minimum,inclusive:!0,input:o,inst:e,continue:!t.abort})}}),Ie=n("$ZodCheckLengthEquals",(e,t)=>{var n;ke.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!d(t)&&void 0!==t.length}),e._zod.onattach.push(e=>{const n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{const o=n.value,r=o.length;if(r===t.length)return;const i=I(o),s=r>t.length;n.issues.push({origin:i,...s?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Ne=n("$ZodCheckStringFormat",(e,t)=>{var n,o;ke.init(e,t),e._zod.onattach.push(e=>{const n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??(n.patterns=new Set),n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:"string",code:"invalid_format",format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(o=e._zod).check??(o.check=()=>{})}),Pe=n("$ZodCheckRegex",(e,t)=>{Ne.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Ae=n("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=be),Ne.init(e,t)}),je=n("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=we),Ne.init(e,t)}),Re=n("$ZodCheckIncludes",(e,t)=>{ke.init(e,t);const n=k(t.includes),o=new RegExp("number"==typeof t.position?`^.{${t.position}}${n}`:n);t.pattern=o,e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(o)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Fe=n("$ZodCheckStartsWith",(e,t)=>{ke.init(e,t);const n=new RegExp(`^${k(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Je=n("$ZodCheckEndsWith",(e,t)=>{ke.init(e,t);const n=new RegExp(`.*${k(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Me=n("$ZodCheckOverwrite",(e,t)=>{ke.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});class Ce{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if("function"==typeof e)return e(this,{execution:"sync"}),void e(this,{execution:"async"});const t=e.split("\n").filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),o=t.map(e=>e.slice(n)).map(e=>" ".repeat(2*this.indent)+e);for(const e of o)this.content.push(e)}compile(){const e=Function,t=this?.args;return new e(...t,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}}const De={major:4,minor:3,patch:6},Ue=n("$ZodType",(e,t)=>{var n;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=De;const r=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&r.unshift(e);for(const t of r)for(const n of t._zod.onattach)n(e);if(0===r.length)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const t=(e,t,n)=>{let r,i=x(e);for(const s of t){if(s._zod.def.when){if(!s._zod.def.when(e))continue}else if(i)continue;const t=e.issues.length,a=s._zod.check(e);if(a instanceof Promise&&!1===n?.async)throw new o;if(r||a instanceof Promise)r=(r??Promise.resolve()).then(async()=>{await a;e.issues.length!==t&&(i||(i=x(e,t)))});else{if(e.issues.length===t)continue;i||(i=x(e,t))}}return r?r.then(()=>e):e},n=(n,i,s)=>{if(x(n))return n.aborted=!0,n;const a=t(i,r,s);if(a instanceof Promise){if(!1===s.async)throw new o;return a.then(t=>e._zod.parse(t,s))}return e._zod.parse(a,s)};e._zod.run=(i,s)=>{if(s.skipChecks)return e._zod.parse(i,s);if("backward"===s.direction){const t=e._zod.parse({value:i.value,issues:[]},{...s,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,s)):n(t,i,s)}const a=e._zod.parse(i,s);if(a instanceof Promise){if(!1===s.async)throw new o;return a.then(e=>t(e,r,s))}return t(a,r,s)}}f(e,"~standard",()=>({validate:t=>{try{const n=D(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch(n){return V(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}))}),Ve=n("$ZodString",(e,t)=>{var n;Ue.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??(n=e._zod.bag,new RegExp(`^${n?`[\\s\\S]{${n?.minimum??0},${n?.maximum??""}}`:"[\\s\\S]*"}$`)),e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=String(n.value)}catch(o){}return"string"==typeof n.value||n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),Le=n("$ZodStringFormat",(e,t)=>{Ne.init(e,t),Ve.init(e,t)}),Ge=n("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=ie),Le.init(e,t)}),We=n("$ZodUUID",(e,t)=>{if(t.version){const e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(void 0===e)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=se(e))}else t.pattern??(t.pattern=se());Le.init(e,t)}),qe=n("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=ae),Le.init(e,t)}),Be=n("$ZodURL",(e,t)=>{Le.init(e,t),e._zod.check=n=>{try{const o=n.value.trim(),r=new URL(o);return t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(r.hostname)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(r.protocol.endsWith(":")?r.protocol.slice(0,-1):r.protocol)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),void(t.normalize?n.value=r.href:n.value=o)}catch(o){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),Ke=n("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=new RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),Le.init(e,t)}),Ye=n("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=oe),Le.init(e,t)}),Xe=n("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=H),Le.init(e,t)}),He=n("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Q),Le.init(e,t)}),Qe=n("$ZodULID",(e,t)=>{t.pattern??(t.pattern=ee),Le.init(e,t)}),et=n("$ZodXID",(e,t)=>{t.pattern??(t.pattern=te),Le.init(e,t)}),tt=n("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=ne),Le.init(e,t)}),nt=n("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=function(e){const t=ge({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const o=`${t}(?:${n.join("|")})`;return new RegExp(`^${me}T(?:${o})$`)}(t)),Le.init(e,t)}),ot=n("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=ye),Le.init(e,t)}),rt=n("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=new RegExp(`^${ge(t)}$`)),Le.init(e,t)}),it=n("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=re),Le.init(e,t)}),st=n("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=ce),Le.init(e,t),e._zod.bag.format="ipv4"}),at=n("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=ue),Le.init(e,t),e._zod.bag.format="ipv6",e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}}}),ct=n("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=de),Le.init(e,t)}),ut=n("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=pe),Le.init(e,t),e._zod.check=n=>{const o=n.value.split("/");try{if(2!==o.length)throw new Error;const[e,t]=o;if(!t)throw new Error;const n=Number(t);if(`${n}`!==t)throw new Error;if(n<0||n>128)throw new Error;new URL(`http://[${e}]`)}catch{n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}}});function dt(e){if(""===e)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}const pt=n("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=le),Le.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=n=>{dt(n.value)||n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}});const lt=n("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=fe),Le.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=n=>{(function(e){if(!fe.test(e))return!1;const t=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return dt(t.padEnd(4*Math.ceil(t.length/4),"="))})(n.value)||n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),ft=n("$ZodE164",(e,t)=>{t.pattern??(t.pattern=he),Le.init(e,t)});const ht=n("$ZodJWT",(e,t)=>{Le.init(e,t),e._zod.check=n=>{(function(e,t=null){try{const n=e.split(".");if(3!==n.length)return!1;const[o]=n;if(!o)return!1;const r=JSON.parse(atob(o));return!("typ"in r&&"JWT"!==r?.typ||!r.alg||t&&(!("alg"in r)||r.alg!==t))}catch{return!1}})(n.value,t.alg)||n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}}),mt=n("$ZodNumber",(e,t)=>{Ue.init(e,t),e._zod.pattern=e._zod.bag.pattern??_e,e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=Number(n.value)}catch(e){}const r=n.value;if("number"==typeof r&&!Number.isNaN(r)&&Number.isFinite(r))return n;const i="number"==typeof r?Number.isNaN(r)?"NaN":Number.isFinite(r)?void 0:"Infinity":void 0;return n.issues.push({expected:"number",code:"invalid_type",input:r,inst:e,...i?{received:i}:{}}),n}}),yt=n("$ZodNumberFormat",(e,t)=>{Te.init(e,t),mt.init(e,t)}),gt=n("$ZodBoolean",(e,t)=>{Ue.init(e,t),e._zod.pattern=ze,e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=Boolean(n.value)}catch(e){}const r=n.value;return"boolean"==typeof r||n.issues.push({expected:"boolean",code:"invalid_type",input:r,inst:e}),n}}),vt=n("$ZodAny",(e,t)=>{Ue.init(e,t),e._zod.parse=e=>e}),_t=n("$ZodUnknown",(e,t)=>{Ue.init(e,t),e._zod.parse=e=>e}),zt=n("$ZodNever",(e,t)=>{Ue.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t)});function bt(e,t,n){e.issues.length&&t.issues.push(...T(n,e.issues)),t.value[n]=e.value}const wt=n("$ZodArray",(e,t)=>{Ue.init(e,t),e._zod.parse=(n,o)=>{const r=n.value;if(!Array.isArray(r))return n.issues.push({expected:"array",code:"invalid_type",input:r,inst:e}),n;n.value=Array(r.length);const i=[];for(let e=0;e<r.length;e++){const s=r[e],a=t.element._zod.run({value:s,issues:[]},o);a instanceof Promise?i.push(a.then(t=>bt(t,n,e))):bt(a,n,e)}return i.length?Promise.all(i).then(()=>n):n}});function kt(e,t,n,o,r){if(e.issues.length){if(r&&!(n in o))return;t.issues.push(...T(n,e.issues))}void 0===e.value?n in o&&(t.value[n]=void 0):t.value[n]=e.value}function $t(e){const t=Object.keys(e.shape);for(const n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${n}": expected a Zod schema`);const n=(o=e.shape,Object.keys(o).filter(e=>"optional"===o[e]._zod.optin&&"optional"===o[e]._zod.optout));var o;return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function St(e,t,n,o,r,i){const s=[],a=r.keySet,c=r.catchall._zod,u=c.def.type,d="optional"===c.optout;for(const r in t){if(a.has(r))continue;if("never"===u){s.push(r);continue}const i=c.run({value:t[r],issues:[]},o);i instanceof Promise?e.push(i.then(e=>kt(e,n,r,t,d))):kt(i,n,r,t,d)}return s.length&&n.issues.push({code:"unrecognized_keys",keys:s,input:t,inst:i}),e.length?Promise.all(e).then(()=>n):n}const Ot=n("$ZodObject",(e,t)=>{Ue.init(e,t);const n=Object.getOwnPropertyDescriptor(t,"shape");if(!n?.get){const e=t.shape;Object.defineProperty(t,"shape",{get:()=>{const n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}const o=u(()=>$t(t));f(e._zod,"propValues",()=>{const e=t.shape,n={};for(const t in e){const o=e[t]._zod;if(o.values){n[t]??(n[t]=new Set);for(const e of o.values)n[t].add(e)}}return n});const r=v,i=t.catchall;let s;e._zod.parse=(t,n)=>{s??(s=o.value);const a=t.value;if(!r(a))return t.issues.push({expected:"object",code:"invalid_type",input:a,inst:e}),t;t.value={};const c=[],u=s.shape;for(const e of s.keys){const o=u[e],r="optional"===o._zod.optout,i=o._zod.run({value:a[e],issues:[]},n);i instanceof Promise?c.push(i.then(n=>kt(n,t,e,a,r))):kt(i,t,e,a,r)}return i?St(c,a,t,n,o.value,e):c.length?Promise.all(c).then(()=>t):t}}),xt=n("$ZodObjectJIT",(e,t)=>{Ot.init(e,t);const n=e._zod.parse,o=u(()=>$t(t));let r;const s=v,a=!i.jitless,c=a&&_.value,d=t.catchall;let p;e._zod.parse=(i,u)=>{p??(p=o.value);const l=i.value;return s(l)?a&&c&&!1===u?.async&&!0!==u.jitless?(r||(r=(e=>{const t=new Ce(["shape","payload","ctx"]),n=o.value,r=e=>{const t=y(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write("const input = payload.value;");const i=Object.create(null);let s=0;for(const e of n.keys)i[e]="key_"+s++;t.write("const newResult = {};");for(const o of n.keys){const n=i[o],s=y(o),a=e[o],c="optional"===a?._zod?.optout;t.write(`const ${n} = ${r(o)};`),c?t.write(`\n if (${n}.issues.length) {\n if (${s} in input) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${s}, ...iss.path] : [${s}]\n })));\n }\n }\n \n if (${n}.value === undefined) {\n if (${s} in input) {\n newResult[${s}] = undefined;\n }\n } else {\n newResult[${s}] = ${n}.value;\n }\n \n `):t.write(`\n if (${n}.issues.length) {\n payload.issues = payload.issues.concat(${n}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${s}, ...iss.path] : [${s}]\n })));\n }\n \n if (${n}.value === undefined) {\n if (${s} in input) {\n newResult[${s}] = undefined;\n }\n } else {\n newResult[${s}] = ${n}.value;\n }\n \n `)}t.write("payload.value = newResult;"),t.write("return payload;");const a=t.compile();return(t,n)=>a(e,t,n)})(t.shape)),i=r(i,u),d?St([],l,i,u,p,e):i):n(i,u):(i.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),i)}});function Tt(e,t,n,o){for(const n of e)if(0===n.issues.length)return t.value=n.value,t;const r=e.filter(e=>!x(e));return 1===r.length?(t.value=r[0].value,r[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>E(e,o,s())))}),t)}const Zt=n("$ZodUnion",(e,t)=>{Ue.init(e,t),f(e._zod,"optin",()=>t.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),f(e._zod,"optout",()=>t.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),f(e._zod,"values",()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),f(e._zod,"pattern",()=>{if(t.options.every(e=>e._zod.pattern)){const e=t.options.map(e=>e._zod.pattern);return new RegExp(`^(${e.map(e=>p(e.source)).join("|")})$`)}});const n=1===t.options.length,o=t.options[0]._zod.run;e._zod.parse=(r,i)=>{if(n)return o(r,i);let s=!1;const a=[];for(const e of t.options){const t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)a.push(t),s=!0;else{if(0===t.issues.length)return t;a.push(t)}}return s?Promise.all(a).then(t=>Tt(t,r,e,i)):Tt(a,r,e,i)}}),Et=n("$ZodIntersection",(e,t)=>{Ue.init(e,t),e._zod.parse=(e,n)=>{const o=e.value,r=t.left._zod.run({value:o,issues:[]},n),i=t.right._zod.run({value:o,issues:[]},n);return r instanceof Promise||i instanceof Promise?Promise.all([r,i]).then(([t,n])=>Nt(e,t,n)):Nt(e,r,i)}});function It(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(z(e)&&z(t)){const n=Object.keys(t),o=Object.keys(e).filter(e=>-1!==n.indexOf(e)),r={...e,...t};for(const n of o){const o=It(e[n],t[n]);if(!o.valid)return{valid:!1,mergeErrorPath:[n,...o.mergeErrorPath]};r[n]=o.data}return{valid:!0,data:r}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let o=0;o<e.length;o++){const r=It(e[o],t[o]);if(!r.valid)return{valid:!1,mergeErrorPath:[o,...r.mergeErrorPath]};n.push(r.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Nt(e,t,n){const o=new Map;let r;for(const n of t.issues)if("unrecognized_keys"===n.code){r??(r=n);for(const e of n.keys)o.has(e)||o.set(e,{}),o.get(e).l=!0}else e.issues.push(n);for(const t of n.issues)if("unrecognized_keys"===t.code)for(const e of t.keys)o.has(e)||o.set(e,{}),o.get(e).r=!0;else e.issues.push(t);const i=[...o].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(i.length&&r&&e.issues.push({...r,keys:i}),x(e))return e;const s=It(t.value,n.value);if(!s.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(s.mergeErrorPath)}`);return e.value=s.data,e}const Pt=n("$ZodTuple",(e,t)=>{Ue.init(e,t);const n=t.items;e._zod.parse=(o,r)=>{const i=o.value;if(!Array.isArray(i))return o.issues.push({input:i,inst:e,expected:"tuple",code:"invalid_type"}),o;o.value=[];const s=[],a=[...n].reverse().findIndex(e=>"optional"!==e._zod.optin),c=-1===a?0:n.length-a;if(!t.rest){const t=i.length>n.length,r=i.length<c-1;if(t||r)return o.issues.push({...t?{code:"too_big",maximum:n.length,inclusive:!0}:{code:"too_small",minimum:n.length},input:i,inst:e,origin:"array"}),o}let u=-1;for(const e of n){if(u++,u>=i.length&&u>=c)continue;const t=e._zod.run({value:i[u],issues:[]},r);t instanceof Promise?s.push(t.then(e=>At(e,o,u))):At(t,o,u)}if(t.rest){const e=i.slice(n.length);for(const n of e){u++;const e=t.rest._zod.run({value:n,issues:[]},r);e instanceof Promise?s.push(e.then(e=>At(e,o,u))):At(e,o,u)}}return s.length?Promise.all(s).then(()=>o):o}});function At(e,t,n){e.issues.length&&t.issues.push(...T(n,e.issues)),t.value[n]=e.value}const jt=n("$ZodRecord",(e,t)=>{Ue.init(e,t),e._zod.parse=(n,o)=>{const r=n.value;if(!z(r))return n.issues.push({expected:"record",code:"invalid_type",input:r,inst:e}),n;const i=[],a=t.keyType._zod.values;if(a){n.value={};const s=new Set;for(const e of a)if("string"==typeof e||"number"==typeof e||"symbol"==typeof e){s.add("number"==typeof e?e.toString():e);const a=t.valueType._zod.run({value:r[e],issues:[]},o);a instanceof Promise?i.push(a.then(t=>{t.issues.length&&n.issues.push(...T(e,t.issues)),n.value[e]=t.value})):(a.issues.length&&n.issues.push(...T(e,a.issues)),n.value[e]=a.value)}let c;for(const e in r)s.has(e)||(c=c??[],c.push(e));c&&c.length>0&&n.issues.push({code:"unrecognized_keys",input:r,inst:e,keys:c})}else{n.value={};for(const a of Reflect.ownKeys(r)){if("__proto__"===a)continue;let c=t.keyType._zod.run({value:a,issues:[]},o);if(c instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if("string"==typeof a&&_e.test(a)&&c.issues.length){const e=t.keyType._zod.run({value:Number(a),issues:[]},o);if(e instanceof Promise)throw new Error("Async schemas not supported in object keys currently");0===e.issues.length&&(c=e)}if(c.issues.length){"loose"===t.mode?n.value[a]=r[a]:n.issues.push({code:"invalid_key",origin:"record",issues:c.issues.map(e=>E(e,o,s())),input:a,path:[a],inst:e});continue}const u=t.valueType._zod.run({value:r[a],issues:[]},o);u instanceof Promise?i.push(u.then(e=>{e.issues.length&&n.issues.push(...T(a,e.issues)),n.value[c.value]=e.value})):(u.issues.length&&n.issues.push(...T(a,u.issues)),n.value[c.value]=u.value)}}return i.length?Promise.all(i).then(()=>n):n}}),Rt=n("$ZodEnum",(e,t)=>{Ue.init(e,t);const n=a(t.entries),o=new Set(n);e._zod.values=o,e._zod.pattern=new RegExp(`^(${n.filter(e=>w.has(typeof e)).map(e=>"string"==typeof e?k(e):e.toString()).join("|")})$`),e._zod.parse=(t,r)=>{const i=t.value;return o.has(i)||t.issues.push({code:"invalid_value",values:n,input:i,inst:e}),t}}),Ft=n("$ZodTransform",(e,t)=>{Ue.init(e,t),e._zod.parse=(n,i)=>{if("backward"===i.direction)throw new r(e.constructor.name);const s=t.transform(n.value,n);if(i.async){return(s instanceof Promise?s:Promise.resolve(s)).then(e=>(n.value=e,n))}if(s instanceof Promise)throw new o;return n.value=s,n}});function Jt(e,t){return e.issues.length&&void 0===t?{issues:[],value:void 0}:e}const Mt=n("$ZodOptional",(e,t)=>{Ue.init(e,t),e._zod.optin="optional",e._zod.optout="optional",f(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),f(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${p(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if("optional"===t.innerType._zod.optin){const o=t.innerType._zod.run(e,n);return o instanceof Promise?o.then(t=>Jt(t,e.value)):Jt(o,e.value)}return void 0===e.value?e:t.innerType._zod.run(e,n)}}),Ct=n("$ZodExactOptional",(e,t)=>{Mt.init(e,t),f(e._zod,"values",()=>t.innerType._zod.values),f(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Dt=n("$ZodNullable",(e,t)=>{Ue.init(e,t),f(e._zod,"optin",()=>t.innerType._zod.optin),f(e._zod,"optout",()=>t.innerType._zod.optout),f(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${p(e.source)}|null)$`):void 0}),f(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>null===e.value?e:t.innerType._zod.run(e,n)}),Ut=n("$ZodDefault",(e,t)=>{Ue.init(e,t),e._zod.optin="optional",f(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);if(void 0===e.value)return e.value=t.defaultValue,e;const o=t.innerType._zod.run(e,n);return o instanceof Promise?o.then(e=>Vt(e,t)):Vt(o,t)}});function Vt(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}const Lt=n("$ZodPrefault",(e,t)=>{Ue.init(e,t),e._zod.optin="optional",f(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>("backward"===n.direction||void 0===e.value&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Gt=n("$ZodNonOptional",(e,t)=>{Ue.init(e,t),f(e._zod,"values",()=>{const e=t.innerType._zod.values;return e?new Set([...e].filter(e=>void 0!==e)):void 0}),e._zod.parse=(n,o)=>{const r=t.innerType._zod.run(n,o);return r instanceof Promise?r.then(t=>Wt(t,e)):Wt(r,e)}});function Wt(e,t){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}const qt=n("$ZodCatch",(e,t)=>{Ue.init(e,t),f(e._zod,"optin",()=>t.innerType._zod.optin),f(e._zod,"optout",()=>t.innerType._zod.optout),f(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const o=t.innerType._zod.run(e,n);return o instanceof Promise?o.then(o=>(e.value=o.value,o.issues.length&&(e.value=t.catchValue({...e,error:{issues:o.issues.map(e=>E(e,n,s()))},input:e.value}),e.issues=[]),e)):(e.value=o.value,o.issues.length&&(e.value=t.catchValue({...e,error:{issues:o.issues.map(e=>E(e,n,s()))},input:e.value}),e.issues=[]),e)}}),Bt=n("$ZodPipe",(e,t)=>{Ue.init(e,t),f(e._zod,"values",()=>t.in._zod.values),f(e._zod,"optin",()=>t.in._zod.optin),f(e._zod,"optout",()=>t.out._zod.optout),f(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if("backward"===n.direction){const o=t.out._zod.run(e,n);return o instanceof Promise?o.then(e=>Kt(e,t.in,n)):Kt(o,t.in,n)}const o=t.in._zod.run(e,n);return o instanceof Promise?o.then(e=>Kt(e,t.out,n)):Kt(o,t.out,n)}});function Kt(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const Yt=n("$ZodReadonly",(e,t)=>{Ue.init(e,t),f(e._zod,"propValues",()=>t.innerType._zod.propValues),f(e._zod,"values",()=>t.innerType._zod.values),f(e._zod,"optin",()=>t.innerType?._zod?.optin),f(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const o=t.innerType._zod.run(e,n);return o instanceof Promise?o.then(Xt):Xt(o)}});function Xt(e){return e.value=Object.freeze(e.value),e}const Ht=n("$ZodFunction",(e,t)=>(Ue.init(e,t),e._def=t,e._zod.def=t,e.implement=t=>{if("function"!=typeof t)throw new Error("implement() must be called with a function");return function(...n){const o=e._def.input?F(e._def.input,n):n,r=Reflect.apply(t,this,o);return e._def.output?F(e._def.output,r):r}},e.implementAsync=t=>{if("function"!=typeof t)throw new Error("implementAsync() must be called with a function");return async function(...n){const o=e._def.input?await M(e._def.input,n):n,r=await Reflect.apply(t,this,o);return e._def.output?await M(e._def.output,r):r}},e._zod.parse=(t,n)=>{if("function"!=typeof t.value)return t.issues.push({code:"invalid_type",expected:"function",input:t.value,inst:e}),t;const o=e._def.output&&"promise"===e._def.output._zod.def.type;return t.value=o?e.implementAsync(t.value):e.implement(t.value),t},e.input=(...t)=>{const n=e.constructor;return Array.isArray(t[0])?new n({type:"function",input:new Pt({type:"tuple",items:t[0],rest:t[1]}),output:e._def.output}):new n({type:"function",input:t[0],output:e._def.output})},e.output=t=>new(0,e.constructor)({type:"function",input:e._def.input,output:t}),e)),Qt=n("$ZodCustom",(e,t)=>{ke.init(e,t),Ue.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{const o=n.value,r=t.fn(o);if(r instanceof Promise)return r.then(t=>en(t,n,o,e));en(r,n,o,e)}});function en(e,t,n,o){if(!e){const e={code:"custom",input:n,inst:o,path:[...o._zod.def.path??[]],continue:!o._zod.def.abort};o._zod.def.params&&(e.params=o._zod.def.params),t.issues.push(N(e))}}var tn;class nn{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){const n=t[0];return this._map.set(e,n),n&&"object"==typeof n&&"id"in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){const t=this._map.get(e);return t&&"object"==typeof t&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){const t=e._zod.parent;if(t){const n={...this.get(t)??{}};delete n.id;const o={...n,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}(tn=globalThis).__zod_globalRegistry??(tn.__zod_globalRegistry=new nn);const on=globalThis.__zod_globalRegistry;function rn(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...S(t)})}function sn(e,t){return new Se({check:"less_than",...S(t),value:e,inclusive:!1})}function an(e,t){return new Se({check:"less_than",...S(t),value:e,inclusive:!0})}function cn(e,t){return new Oe({check:"greater_than",...S(t),value:e,inclusive:!1})}function un(e,t){return new Oe({check:"greater_than",...S(t),value:e,inclusive:!0})}function dn(e,t){return new xe({check:"multiple_of",...S(t),value:e})}function pn(e,t){return new Ze({check:"max_length",...S(t),maximum:e})}function ln(e,t){return new Ee({check:"min_length",...S(t),minimum:e})}function fn(e,t){return new Ie({check:"length_equals",...S(t),length:e})}function hn(e){return new Me({check:"overwrite",tx:e})}function mn(e){const t=function(e,t){const n=new ke({check:"custom",...S(t)});return n._zod.check=e,n}(n=>(n.addIssue=e=>{if("string"==typeof e)n.issues.push(N(e,n.value,t._zod.def));else{const o=e;o.fatal&&(o.continue=!1),o.code??(o.code="custom"),o.input??(o.input=n.value),o.inst??(o.inst=t),o.continue??(o.continue=!t._zod.def.abort),n.issues.push(N(o))}},e(n.value,n)));return t}function yn(e){let t=e?.target??"draft-2020-12";return"draft-4"===t&&(t="draft-04"),"draft-7"===t&&(t="draft-07"),{processors:e.processors??{},metadataRegistry:e?.metadata??on,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,cycles:e?.cycles??"ref",reused:e?.reused??"inline",external:e?.external??void 0}}function gn(e,t,n={path:[],schemaPath:[]}){var o;const r=e._zod.def,i=t.seen.get(e);if(i){i.count++;return n.schemaPath.includes(e)&&(i.cycle=n.path),i.schema}const s={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,s);const a=e._zod.toJSONSchema?.();if(a)s.schema=a;else{const o={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,s.schema,o);else{const n=s.schema,i=t.processors[r.type];if(!i)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${r.type}`);i(e,t,n,o)}const i=e._zod.parent;i&&(s.ref||(s.ref=i),gn(i,t,o),t.seen.get(i).isParent=!0)}const c=t.metadataRegistry.get(e);c&&Object.assign(s.schema,c),"input"===t.io&&zn(e)&&(delete s.schema.examples,delete s.schema.default),"input"===t.io&&s.schema._prefault&&((o=s.schema).default??(o.default=s.schema._prefault)),delete s.schema._prefault;return t.seen.get(e).schema}function vn(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const o=new Map;for(const t of e.seen.entries()){const n=e.metadataRegistry.get(t[0])?.id;if(n){const e=o.get(n);if(e&&e!==t[0])throw new Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);o.set(n,t[0])}}const r=t=>{if(t[1].schema.$ref)return;const o=t[1],{ref:r,defId:i}=(t=>{const o="draft-2020-12"===e.target?"$defs":"definitions";if(e.external){const n=e.external.registry.get(t[0])?.id,r=e.external.uri??(e=>e);if(n)return{ref:r(n)};const i=t[1].defId??t[1].schema.id??"schema"+e.counter++;return t[1].defId=i,{defId:i,ref:`${r("__shared")}#/${o}/${i}`}}if(t[1]===n)return{ref:"#"};const r=`#/${o}/`,i=t[1].schema.id??"__schema"+e.counter++;return{defId:i,ref:r+i}})(t);o.def={...o.schema},i&&(o.defId=i);const s=o.schema;for(const e in s)delete s[e];s.$ref=r};if("throw"===e.cycles)for(const t of e.seen.entries()){const e=t[1];if(e.cycle)throw new Error(`Cycle detected: #/${e.cycle?.join("/")}/<root>\n\nSet the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(const n of e.seen.entries()){const o=n[1];if(t===n[0]){r(n);continue}if(e.external){const o=e.external.registry.get(n[0])?.id;if(t!==n[0]&&o){r(n);continue}}const i=e.metadataRegistry.get(n[0])?.id;i?r(n):(o.cycle||o.count>1&&"ref"===e.reused)&&r(n)}}function _n(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const o=t=>{const n=e.seen.get(t);if(null===n.ref)return;const r=n.def??n.schema,i={...r},s=n.ref;if(n.ref=null,s){o(s);const n=e.seen.get(s),a=n.schema;!a.$ref||"draft-07"!==e.target&&"draft-04"!==e.target&&"openapi-3.0"!==e.target?Object.assign(r,a):(r.allOf=r.allOf??[],r.allOf.push(a)),Object.assign(r,i);if(t._zod.parent===s)for(const e in r)"$ref"!==e&&"allOf"!==e&&(e in i||delete r[e]);if(a.$ref&&n.def)for(const e in r)"$ref"!==e&&"allOf"!==e&&e in n.def&&JSON.stringify(r[e])===JSON.stringify(n.def[e])&&delete r[e]}const a=t._zod.parent;if(a&&a!==s){o(a);const t=e.seen.get(a);if(t?.schema.$ref&&(r.$ref=t.schema.$ref,t.def))for(const e in r)"$ref"!==e&&"allOf"!==e&&e in t.def&&JSON.stringify(r[e])===JSON.stringify(t.def[e])&&delete r[e]}e.override({zodSchema:t,jsonSchema:r,path:n.path??[]})};for(const t of[...e.seen.entries()].reverse())o(t[0]);const r={};if("draft-2020-12"===e.target?r.$schema="https://json-schema.org/draft/2020-12/schema":"draft-07"===e.target?r.$schema="http://json-schema.org/draft-07/schema#":"draft-04"===e.target?r.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){const n=e.external.registry.get(t)?.id;if(!n)throw new Error("Schema is missing an `id` property");r.$id=e.external.uri(n)}Object.assign(r,n.def??n.schema);const i=e.external?.defs??{};for(const t of e.seen.entries()){const e=t[1];e.def&&e.defId&&(i[e.defId]=e.def)}e.external||Object.keys(i).length>0&&("draft-2020-12"===e.target?r.$defs=i:r.definitions=i);try{const n=JSON.parse(JSON.stringify(r));return Object.defineProperty(n,"~standard",{value:{...t["~standard"],jsonSchema:{input:bn(t,"input",e.processors),output:bn(t,"output",e.processors)}},enumerable:!1,writable:!1}),n}catch(e){throw new Error("Error converting schema to JSON.")}}function zn(e,t){const n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);const o=e._zod.def;if("transform"===o.type)return!0;if("array"===o.type)return zn(o.element,n);if("set"===o.type)return zn(o.valueType,n);if("lazy"===o.type)return zn(o.getter(),n);if("promise"===o.type||"optional"===o.type||"nonoptional"===o.type||"nullable"===o.type||"readonly"===o.type||"default"===o.type||"prefault"===o.type)return zn(o.innerType,n);if("intersection"===o.type)return zn(o.left,n)||zn(o.right,n);if("record"===o.type||"map"===o.type)return zn(o.keyType,n)||zn(o.valueType,n);if("pipe"===o.type)return zn(o.in,n)||zn(o.out,n);if("object"===o.type){for(const e in o.shape)if(zn(o.shape[e],n))return!0;return!1}if("union"===o.type){for(const e of o.options)if(zn(e,n))return!0;return!1}if("tuple"===o.type){for(const e of o.items)if(zn(e,n))return!0;return!(!o.rest||!zn(o.rest,n))}return!1}const bn=(e,t,n={})=>o=>{const{libraryOptions:r,target:i}=o??{},s=yn({...r??{},target:i,io:t,processors:n});return gn(e,s),vn(s,e),_n(s,e)},wn={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},kn=(e,t,n,o)=>{const r=e._zod.def;gn(r.innerType,t,o);t.seen.get(e).ref=r.innerType},$n=n("ZodISODateTime",(e,t)=>{nt.init(e,t),Kn.init(e,t)});function Sn(e){return function(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...S(t)})}($n,e)}const On=n("ZodISODate",(e,t)=>{ot.init(e,t),Kn.init(e,t)});function xn(e){return function(e,t){return new e({type:"string",format:"date",check:"string_format",...S(t)})}(On,e)}const Tn=n("ZodISOTime",(e,t)=>{rt.init(e,t),Kn.init(e,t)});function Zn(e){return function(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...S(t)})}(Tn,e)}const En=n("ZodISODuration",(e,t)=>{it.init(e,t),Kn.init(e,t)});function In(e){return function(e,t){return new e({type:"string",format:"duration",check:"string_format",...S(t)})}(En,e)}const Nn=n("ZodError",(e,t)=>{A.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:t=>function(e,t=e=>e.message){const n={_errors:[]},o=e=>{for(const r of e.issues)if("invalid_union"===r.code&&r.errors.length)r.errors.map(e=>o({issues:e}));else if("invalid_key"===r.code)o({issues:r.issues});else if("invalid_element"===r.code)o({issues:r.issues});else if(0===r.path.length)n._errors.push(t(r));else{let e=n,o=0;for(;o<r.path.length;){const n=r.path[o];o===r.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(r))):e[n]=e[n]||{_errors:[]},e=e[n],o++}}};return o(e),n}(e,t)},flatten:{value:t=>function(e,t=e=>e.message){const n={},o=[];for(const r of e.issues)r.path.length>0?(n[r.path[0]]=n[r.path[0]]||[],n[r.path[0]].push(t(r))):o.push(t(r));return{formErrors:o,fieldErrors:n}}(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,c,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,c,2)}},isEmpty:{get:()=>0===e.issues.length}})},{Parent:Error}),Pn=R(Nn),An=J(Nn),jn=C(Nn),Rn=U(Nn),Fn=L(Nn),Jn=G(Nn),Mn=W(Nn),Cn=q(Nn),Dn=B(Nn),Un=K(Nn),Vn=Y(Nn),Ln=X(Nn),Gn=n("ZodType",(e,t)=>(Ue.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:bn(e,"input"),output:bn(e,"output")}}),e.toJSONSchema=((e,t={})=>n=>{const o=yn({...n,processors:t});return gn(e,o),vn(o,e),_n(o,e)})(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(m(t,{checks:[...t.checks??[],...n.map(e=>"function"==typeof e?{_zod:{check:e,def:{check:"custom"},onattach:[]}}:e)]}),{parent:!0}),e.with=e.check,e.clone=(t,n)=>$(e,t,n),e.brand=()=>e,e.register=(t,n)=>(t.add(e,n),e),e.parse=(t,n)=>Pn(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>jn(e,t,n),e.parseAsync=async(t,n)=>An(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>Rn(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>Fn(e,t,n),e.decode=(t,n)=>Jn(e,t,n),e.encodeAsync=async(t,n)=>Mn(e,t,n),e.decodeAsync=async(t,n)=>Cn(e,t,n),e.safeEncode=(t,n)=>Dn(e,t,n),e.safeDecode=(t,n)=>Un(e,t,n),e.safeEncodeAsync=async(t,n)=>Vn(e,t,n),e.safeDecodeAsync=async(t,n)=>Ln(e,t,n),e.refine=(t,n)=>e.check(function(e,t={}){return function(e,t,n){return new e({type:"custom",check:"custom",fn:t,...S(n)})}(er,e,t)}(t,n)),e.superRefine=t=>e.check(mn(t)),e.overwrite=t=>e.check(hn(t)),e.optional=()=>Do(e),e.exactOptional=()=>new Uo({type:"optional",innerType:e}),e.nullable=()=>Lo(e),e.nullish=()=>Do(Lo(e)),e.nonoptional=t=>function(e,t){return new qo({type:"nonoptional",innerType:e,...S(t)})}(e,t),e.array=()=>To(e),e.or=t=>{return new Io({type:"union",options:[e,t],...S(n)});var n},e.and=t=>new No({type:"intersection",left:e,right:t}),e.transform=t=>Yo(e,new Mo({type:"transform",transform:t})),e.default=t=>{return n=t,new Go({type:"default",innerType:e,get defaultValue(){return"function"==typeof n?n():b(n)}});var n},e.prefault=t=>{return n=t,new Wo({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof n?n():b(n)}});var n},e.catch=t=>{return new Bo({type:"catch",innerType:e,catchValue:"function"==typeof(n=t)?n:()=>n});var n},e.pipe=t=>Yo(e,t),e.readonly=()=>new Xo({type:"readonly",innerType:e}),e.describe=t=>{const n=e.clone();return on.add(n,{description:t}),n},Object.defineProperty(e,"description",{get:()=>on.get(e)?.description,configurable:!0}),e.meta=(...t)=>{if(0===t.length)return on.get(e);const n=e.clone();return on.add(n,t[0]),n},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=t=>t(e),e)),Wn=n("_ZodString",(e,t)=>{Ve.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n)=>{const o=n;o.type="string";const{minimum:r,maximum:i,format:s,patterns:a,contentEncoding:c}=e._zod.bag;if("number"==typeof r&&(o.minLength=r),"number"==typeof i&&(o.maxLength=i),s&&(o.format=wn[s]??s,""===o.format&&delete o.format,"time"===s&&delete o.format),c&&(o.contentEncoding=c),a&&a.size>0){const e=[...a];1===e.length?o.pattern=e[0].source:e.length>1&&(o.allOf=[...e.map(e=>({..."draft-07"===t.target||"draft-04"===t.target||"openapi-3.0"===t.target?{type:"string"}:{},pattern:e.source}))])}})(e,t,n);const n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...t)=>e.check(function(e,t){return new Pe({check:"string_format",format:"regex",...S(t),pattern:e})}(...t)),e.includes=(...t)=>e.check(function(e,t){return new Re({check:"string_format",format:"includes",...S(t),includes:e})}(...t)),e.startsWith=(...t)=>e.check(function(e,t){return new Fe({check:"string_format",format:"starts_with",...S(t),prefix:e})}(...t)),e.endsWith=(...t)=>e.check(function(e,t){return new Je({check:"string_format",format:"ends_with",...S(t),suffix:e})}(...t)),e.min=(...t)=>e.check(ln(...t)),e.max=(...t)=>e.check(pn(...t)),e.length=(...t)=>e.check(fn(...t)),e.nonempty=(...t)=>e.check(ln(1,...t)),e.lowercase=t=>e.check(function(e){return new Ae({check:"string_format",format:"lowercase",...S(e)})}(t)),e.uppercase=t=>e.check(function(e){return new je({check:"string_format",format:"uppercase",...S(e)})}(t)),e.trim=()=>e.check(hn(e=>e.trim())),e.normalize=(...t)=>e.check(function(e){return hn(t=>t.normalize(e))}(...t)),e.toLowerCase=()=>e.check(hn(e=>e.toLowerCase())),e.toUpperCase=()=>e.check(hn(e=>e.toUpperCase())),e.slugify=()=>e.check(hn(e=>function(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}(e)))}),qn=n("ZodString",(e,t)=>{Ve.init(e,t),Wn.init(e,t),e.email=t=>e.check(function(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...S(t)})}(Yn,t)),e.url=t=>e.check(function(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...S(t)})}(Qn,t)),e.jwt=t=>e.check(function(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...S(t)})}(mo,t)),e.emoji=t=>e.check(function(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...S(t)})}(eo,t)),e.guid=t=>e.check(rn(Xn,t)),e.uuid=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...S(t)})}(Hn,t)),e.uuidv4=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...S(t)})}(Hn,t)),e.uuidv6=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...S(t)})}(Hn,t)),e.uuidv7=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...S(t)})}(Hn,t)),e.nanoid=t=>e.check(function(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...S(t)})}(to,t)),e.guid=t=>e.check(rn(Xn,t)),e.cuid=t=>e.check(function(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...S(t)})}(no,t)),e.cuid2=t=>e.check(function(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...S(t)})}(oo,t)),e.ulid=t=>e.check(function(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...S(t)})}(ro,t)),e.base64=t=>e.check(function(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...S(t)})}(lo,t)),e.base64url=t=>e.check(function(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...S(t)})}(fo,t)),e.xid=t=>e.check(function(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...S(t)})}(io,t)),e.ksuid=t=>e.check(function(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...S(t)})}(so,t)),e.ipv4=t=>e.check(function(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...S(t)})}(ao,t)),e.ipv6=t=>e.check(function(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...S(t)})}(co,t)),e.cidrv4=t=>e.check(function(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...S(t)})}(uo,t)),e.cidrv6=t=>e.check(function(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...S(t)})}(po,t)),e.e164=t=>e.check(function(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...S(t)})}(ho,t)),e.datetime=t=>e.check(Sn(t)),e.date=t=>e.check(xn(t)),e.time=t=>e.check(Zn(t)),e.duration=t=>e.check(In(t))});function Bn(e){return function(e,t){return new e({type:"string",...S(t)})}(qn,e)}const Kn=n("ZodStringFormat",(e,t)=>{Le.init(e,t),Wn.init(e,t)}),Yn=n("ZodEmail",(e,t)=>{qe.init(e,t),Kn.init(e,t)}),Xn=n("ZodGUID",(e,t)=>{Ge.init(e,t),Kn.init(e,t)}),Hn=n("ZodUUID",(e,t)=>{We.init(e,t),Kn.init(e,t)}),Qn=n("ZodURL",(e,t)=>{Be.init(e,t),Kn.init(e,t)}),eo=n("ZodEmoji",(e,t)=>{Ke.init(e,t),Kn.init(e,t)}),to=n("ZodNanoID",(e,t)=>{Ye.init(e,t),Kn.init(e,t)}),no=n("ZodCUID",(e,t)=>{Xe.init(e,t),Kn.init(e,t)}),oo=n("ZodCUID2",(e,t)=>{He.init(e,t),Kn.init(e,t)}),ro=n("ZodULID",(e,t)=>{Qe.init(e,t),Kn.init(e,t)}),io=n("ZodXID",(e,t)=>{et.init(e,t),Kn.init(e,t)}),so=n("ZodKSUID",(e,t)=>{tt.init(e,t),Kn.init(e,t)}),ao=n("ZodIPv4",(e,t)=>{st.init(e,t),Kn.init(e,t)}),co=n("ZodIPv6",(e,t)=>{at.init(e,t),Kn.init(e,t)}),uo=n("ZodCIDRv4",(e,t)=>{ct.init(e,t),Kn.init(e,t)}),po=n("ZodCIDRv6",(e,t)=>{ut.init(e,t),Kn.init(e,t)}),lo=n("ZodBase64",(e,t)=>{pt.init(e,t),Kn.init(e,t)}),fo=n("ZodBase64URL",(e,t)=>{lt.init(e,t),Kn.init(e,t)}),ho=n("ZodE164",(e,t)=>{ft.init(e,t),Kn.init(e,t)}),mo=n("ZodJWT",(e,t)=>{ht.init(e,t),Kn.init(e,t)}),yo=n("ZodNumber",(e,t)=>{mt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n)=>{const o=n,{minimum:r,maximum:i,format:s,multipleOf:a,exclusiveMaximum:c,exclusiveMinimum:u}=e._zod.bag;"string"==typeof s&&s.includes("int")?o.type="integer":o.type="number","number"==typeof u&&("draft-04"===t.target||"openapi-3.0"===t.target?(o.minimum=u,o.exclusiveMinimum=!0):o.exclusiveMinimum=u),"number"==typeof r&&(o.minimum=r,"number"==typeof u&&"draft-04"!==t.target&&(u>=r?delete o.minimum:delete o.exclusiveMinimum)),"number"==typeof c&&("draft-04"===t.target||"openapi-3.0"===t.target?(o.maximum=c,o.exclusiveMaximum=!0):o.exclusiveMaximum=c),"number"==typeof i&&(o.maximum=i,"number"==typeof c&&"draft-04"!==t.target&&(c<=i?delete o.maximum:delete o.exclusiveMaximum)),"number"==typeof a&&(o.multipleOf=a)})(e,t,n),e.gt=(t,n)=>e.check(cn(t,n)),e.gte=(t,n)=>e.check(un(t,n)),e.min=(t,n)=>e.check(un(t,n)),e.lt=(t,n)=>e.check(sn(t,n)),e.lte=(t,n)=>e.check(an(t,n)),e.max=(t,n)=>e.check(an(t,n)),e.int=t=>e.check(_o(t)),e.safe=t=>e.check(_o(t)),e.positive=t=>e.check(cn(0,t)),e.nonnegative=t=>e.check(un(0,t)),e.negative=t=>e.check(sn(0,t)),e.nonpositive=t=>e.check(an(0,t)),e.multipleOf=(t,n)=>e.check(dn(t,n)),e.step=(t,n)=>e.check(dn(t,n)),e.finite=()=>e;const n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function go(e){return function(e,t){return new e({type:"number",checks:[],...S(t)})}(yo,e)}const vo=n("ZodNumberFormat",(e,t)=>{yt.init(e,t),yo.init(e,t)});function _o(e){return function(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...S(t)})}(vo,e)}const zo=n("ZodBoolean",(e,t)=>{gt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t,n)=>{n.type="boolean"})(0,0,t)});function bo(e){return function(e,t){return new e({type:"boolean",...S(t)})}(zo,e)}const wo=n("ZodAny",(e,t)=>{vt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(e,t,n)=>{}});const ko=n("ZodUnknown",(e,t)=>{_t.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(e,t,n)=>{}});function $o(){return new ko({type:"unknown"})}const So=n("ZodNever",(e,t)=>{zt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t,n)=>{n.not={}})(0,0,t)});function Oo(e){return function(e,t){return new e({type:"never",...S(t)})}(So,e)}const xo=n("ZodArray",(e,t)=>{wt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=n,i=e._zod.def,{minimum:s,maximum:a}=e._zod.bag;"number"==typeof s&&(r.minItems=s),"number"==typeof a&&(r.maxItems=a),r.type="array",r.items=gn(i.element,t,{...o,path:[...o.path,"items"]})})(e,t,n,o),e.element=t.element,e.min=(t,n)=>e.check(ln(t,n)),e.nonempty=t=>e.check(ln(1,t)),e.max=(t,n)=>e.check(pn(t,n)),e.length=(t,n)=>e.check(fn(t,n)),e.unwrap=()=>e.element});function To(e,t){return function(e,t,n){return new e({type:"array",element:t,...S(n)})}(xo,e,t)}const Zo=n("ZodObject",(e,t)=>{xt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=n,i=e._zod.def;r.type="object",r.properties={};const s=i.shape;for(const e in s)r.properties[e]=gn(s[e],t,{...o,path:[...o.path,"properties",e]});const a=new Set(Object.keys(s)),c=new Set([...a].filter(e=>{const n=i.shape[e]._zod;return"input"===t.io?void 0===n.optin:void 0===n.optout}));c.size>0&&(r.required=Array.from(c)),"never"===i.catchall?._zod.def.type?r.additionalProperties=!1:i.catchall?i.catchall&&(r.additionalProperties=gn(i.catchall,t,{...o,path:[...o.path,"additionalProperties"]})):"output"===t.io&&(r.additionalProperties=!1)})(e,t,n,o),f(e,"shape",()=>t.shape),e.keyof=()=>Jo(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:$o()}),e.loose=()=>e.clone({...e._zod.def,catchall:$o()}),e.strict=()=>e.clone({...e._zod.def,catchall:Oo()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>function(e,t){if(!z(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const n=e._zod.def.shape;for(const e in t)if(void 0!==Object.getOwnPropertyDescriptor(n,e))throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const o=m(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return h(this,"shape",n),n}});return $(e,o)}(e,t),e.safeExtend=t=>function(e,t){if(!z(t))throw new Error("Invalid input to safeExtend: expected a plain object");const n=m(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return h(this,"shape",n),n}});return $(e,n)}(e,t),e.merge=t=>function(e,t){const n=m(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t._zod.def.shape};return h(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:[]});return $(e,n)}(e,t),e.pick=t=>function(e,t){const n=e._zod.def,o=n.checks;if(o&&o.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");return $(e,m(e._zod.def,{get shape(){const e={};for(const o in t){if(!(o in n.shape))throw new Error(`Unrecognized key: "${o}"`);t[o]&&(e[o]=n.shape[o])}return h(this,"shape",e),e},checks:[]}))}(e,t),e.omit=t=>function(e,t){const n=e._zod.def,o=n.checks;if(o&&o.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const r=m(e._zod.def,{get shape(){const o={...e._zod.def.shape};for(const e in t){if(!(e in n.shape))throw new Error(`Unrecognized key: "${e}"`);t[e]&&delete o[e]}return h(this,"shape",o),o},checks:[]});return $(e,r)}(e,t),e.partial=(...t)=>function(e,t,n){const o=t._zod.def.checks;if(o&&o.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const r=m(t._zod.def,{get shape(){const o=t._zod.def.shape,r={...o};if(n)for(const t in n){if(!(t in o))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(r[t]=e?new e({type:"optional",innerType:o[t]}):o[t])}else for(const t in o)r[t]=e?new e({type:"optional",innerType:o[t]}):o[t];return h(this,"shape",r),r},checks:[]});return $(t,r)}(Co,e,t[0]),e.required=(...t)=>function(e,t,n){const o=m(t._zod.def,{get shape(){const o=t._zod.def.shape,r={...o};if(n)for(const t in n){if(!(t in r))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(r[t]=new e({type:"nonoptional",innerType:o[t]}))}else for(const t in o)r[t]=new e({type:"nonoptional",innerType:o[t]});return h(this,"shape",r),r}});return $(t,o)}(qo,e,t[0])});function Eo(e,t){const n={type:"object",shape:e??{},...S(t)};return new Zo(n)}const Io=n("ZodUnion",(e,t)=>{Zt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=e._zod.def,i=!1===r.inclusive,s=r.options.map((e,n)=>gn(e,t,{...o,path:[...o.path,i?"oneOf":"anyOf",n]}));i?n.oneOf=s:n.anyOf=s})(e,t,n,o),e.options=t.options});const No=n("ZodIntersection",(e,t)=>{Et.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=e._zod.def,i=gn(r.left,t,{...o,path:[...o.path,"allOf",0]}),s=gn(r.right,t,{...o,path:[...o.path,"allOf",1]}),a=e=>"allOf"in e&&1===Object.keys(e).length,c=[...a(i)?i.allOf:[i],...a(s)?s.allOf:[s]];n.allOf=c})(e,t,n,o)});const Po=n("ZodTuple",(e,t)=>{Pt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=n,i=e._zod.def;r.type="array";const s="draft-2020-12"===t.target?"prefixItems":"items",a="draft-2020-12"===t.target||"openapi-3.0"===t.target?"items":"additionalItems",c=i.items.map((e,n)=>gn(e,t,{...o,path:[...o.path,s,n]})),u=i.rest?gn(i.rest,t,{...o,path:[...o.path,a,..."openapi-3.0"===t.target?[i.items.length]:[]]}):null;"draft-2020-12"===t.target?(r.prefixItems=c,u&&(r.items=u)):"openapi-3.0"===t.target?(r.items={anyOf:c},u&&r.items.anyOf.push(u),r.minItems=c.length,u||(r.maxItems=c.length)):(r.items=c,u&&(r.additionalItems=u));const{minimum:d,maximum:p}=e._zod.bag;"number"==typeof d&&(r.minItems=d),"number"==typeof p&&(r.maxItems=p)})(e,t,n,o),e.rest=t=>e.clone({...e._zod.def,rest:t})});function Ao(e,t,n){const o=t instanceof Ue;return new Po({type:"tuple",items:e,rest:o?t:null,...S(o?n:t)})}const jo=n("ZodRecord",(e,t)=>{jt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=n,i=e._zod.def;r.type="object";const s=i.keyType,a=s._zod.bag,c=a?.patterns;if("loose"===i.mode&&c&&c.size>0){const e=gn(i.valueType,t,{...o,path:[...o.path,"patternProperties","*"]});r.patternProperties={};for(const t of c)r.patternProperties[t.source]=e}else"draft-07"!==t.target&&"draft-2020-12"!==t.target||(r.propertyNames=gn(i.keyType,t,{...o,path:[...o.path,"propertyNames"]})),r.additionalProperties=gn(i.valueType,t,{...o,path:[...o.path,"additionalProperties"]});const u=s._zod.values;if(u){const e=[...u].filter(e=>"string"==typeof e||"number"==typeof e);e.length>0&&(r.required=e)}})(e,t,n,o),e.keyType=t.keyType,e.valueType=t.valueType});function Ro(e,t,n){return new jo({type:"record",keyType:e,valueType:t,...S(n)})}const Fo=n("ZodEnum",(e,t)=>{Rt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n)=>{const o=a(e._zod.def.entries);o.every(e=>"number"==typeof e)&&(n.type="number"),o.every(e=>"string"==typeof e)&&(n.type="string"),n.enum=o})(e,0,n),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(e,o)=>{const r={};for(const o of e){if(!n.has(o))throw new Error(`Key ${o} not found in enum`);r[o]=t.entries[o]}return new Fo({...t,checks:[],...S(o),entries:r})},e.exclude=(e,o)=>{const r={...t.entries};for(const t of e){if(!n.has(t))throw new Error(`Key ${t} not found in enum`);delete r[t]}return new Fo({...t,checks:[],...S(o),entries:r})}});function Jo(e,t){const n=Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e;return new Fo({type:"enum",entries:n,...S(t)})}const Mo=n("ZodTransform",(e,t)=>{Ft.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t)=>{if("throw"===t.unrepresentable)throw new Error("Transforms cannot be represented in JSON Schema")})(0,e),e._zod.parse=(n,o)=>{if("backward"===o.direction)throw new r(e.constructor.name);n.addIssue=o=>{if("string"==typeof o)n.issues.push(N(o,n.value,t));else{const t=o;t.fatal&&(t.continue=!1),t.code??(t.code="custom"),t.input??(t.input=n.value),t.inst??(t.inst=e),n.issues.push(N(t))}};const i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});const Co=n("ZodOptional",(e,t)=>{Mt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>kn(e,t,0,o),e.unwrap=()=>e._zod.def.innerType});function Do(e){return new Co({type:"optional",innerType:e})}const Uo=n("ZodExactOptional",(e,t)=>{Ct.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>kn(e,t,0,o),e.unwrap=()=>e._zod.def.innerType});const Vo=n("ZodNullable",(e,t)=>{Dt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=e._zod.def,i=gn(r.innerType,t,o),s=t.seen.get(e);"openapi-3.0"===t.target?(s.ref=r.innerType,n.nullable=!0):n.anyOf=[i,{type:"null"}]})(e,t,n,o),e.unwrap=()=>e._zod.def.innerType});function Lo(e){return new Vo({type:"nullable",innerType:e})}const Go=n("ZodDefault",(e,t)=>{Ut.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=e._zod.def;gn(r.innerType,t,o),t.seen.get(e).ref=r.innerType,n.default=JSON.parse(JSON.stringify(r.defaultValue))})(e,t,n,o),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});const Wo=n("ZodPrefault",(e,t)=>{Lt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=e._zod.def;gn(r.innerType,t,o),t.seen.get(e).ref=r.innerType,"input"===t.io&&(n._prefault=JSON.parse(JSON.stringify(r.defaultValue)))})(e,t,n,o),e.unwrap=()=>e._zod.def.innerType});const qo=n("ZodNonOptional",(e,t)=>{Gt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=e._zod.def;gn(r.innerType,t,o),t.seen.get(e).ref=r.innerType})(e,t,0,o),e.unwrap=()=>e._zod.def.innerType});const Bo=n("ZodCatch",(e,t)=>{qt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=e._zod.def;let i;gn(r.innerType,t,o),t.seen.get(e).ref=r.innerType;try{i=r.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=i})(e,t,n,o),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});const Ko=n("ZodPipe",(e,t)=>{Bt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=e._zod.def,i="input"===t.io?"transform"===r.in._zod.def.type?r.out:r.in:r.out;gn(i,t,o),t.seen.get(e).ref=i})(e,t,0,o),e.in=t.in,e.out=t.out});function Yo(e,t){return new Ko({type:"pipe",in:e,out:t})}const Xo=n("ZodReadonly",(e,t)=>{Yt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(t,n,o)=>((e,t,n,o)=>{const r=e._zod.def;gn(r.innerType,t,o),t.seen.get(e).ref=r.innerType,n.readOnly=!0})(e,t,n,o),e.unwrap=()=>e._zod.def.innerType});const Ho=n("ZodFunction",(e,t)=>{Ht.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t)=>{if("throw"===t.unrepresentable)throw new Error("Function types cannot be represented in JSON Schema")})(0,e)});function Qo(e){return new Ho({type:"function",input:Array.isArray(e?.input)?Ao(e?.input):To($o()),output:$o()})}const er=n("ZodCustom",(e,t)=>{Qt.init(e,t),Gn.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t)=>{if("throw"===t.unrepresentable)throw new Error("Custom types cannot be represented in JSON Schema")})(0,e)});const tr=Eo({apiKey:Bn().min(1,"API key is required"),apiUrl:Bn().url().default("https://api.glassnode.com"),logger:Qo().optional(),fetch:Qo().optional(),maxRetries:go().int().nonnegative().default(0),retryDelay:go().int().positive().default(1e3)}),nr={400:"Bad request",401:"Invalid or missing API key",403:"Access forbidden — check your API tier",404:"Endpoint or metric not found",429:"Rate limit exceeded"};class or extends Error{constructor(e,t){var n;super(`API request failed (${e}): ${null!==(n=nr[e])&&void 0!==n?n:t}`),this.name="GlassnodeApiError",this.status=e,this.statusText=t}get isRetryable(){return 429===this.status||this.status>=500}}const rr=Jo(["ccdata","coinmarketcap","coingecko"]),ir=Ro(rr,Bn().optional()),sr=Eo({blockchain:Bn(),address:Bn(),decimals:go().int().nonnegative(),on_chain_support:bo()}),ar=Eo({id:Bn(),symbol:Bn(),name:Bn(),asset_type:Bn(),external_ids:ir,blockchains:To(sr)}),cr=To(ar),ur=Jo(["free","tier1","tier2","tier3","tier4","tier5"]),dr=Jo(["average","sum","count","percentage","ratio"]),pr=Eo({name:Bn().optional(),short_name:Bn().optional(),group:Bn().optional(),tags:To(Bn()).optional(),description:Ro(Bn(),Bn()).optional(),data_sharing_group:Bn().optional()}),lr=Eo({path:Bn(),tier:go().int().nonnegative(),modified:go().optional().transform(e=>e?new Date(1e3*e):void 0),is_pit:bo().optional(),bulk_supported:bo().optional(),timerange:Eo({min:go(),max:go()}).optional(),refs:Eo({docs:Bn().optional(),studio:Bn().optional(),metric_variant:Eo({base:Bn().optional(),bulk:Bn().optional(),pit:Bn().optional()}).optional()}),queried:Ro(Bn(),new wo({type:"any"})),parameters:Ro(Bn(),To(Bn())),descriptors:pr.optional()}),fr=lr,hr=To(Bn().startsWith("/")),mr=Eo({a:Bn(),v:go(),network:Bn().optional()}),yr=To(Eo({t:go(),bulk:To(mr)}));e.AssetBlockchainSchema=sr,e.AssetMetadataResponseSchema=cr,e.AssetMetadataSchema=ar,e.BulkEntrySchema=mr,e.BulkResponseSchema=yr,e.ExternalIdSourceSchema=rr,e.ExternalIdsSchema=ir,e.GlassnodeAPI=class{constructor(e){var t;const n=tr.parse(e);this.apiKey=n.apiKey,this.apiUrl=n.apiUrl,this.logger=n.logger,this.fetchFn=null!==(t=n.fetch)&&void 0!==t?t:globalThis.fetch,this.maxRetries=n.maxRetries,this.retryDelay=n.retryDelay}request(e){return t(this,arguments,void 0,function*(e,t={}){var n,o;const r=new URLSearchParams(Object.assign(Object.assign({},t),{api_key:this.apiKey})),i=`${this.apiUrl}${e}?${r}`;let s;for(let e=0;e<=this.maxRetries;e++){if(e>0){const t=this.retryDelay*Math.pow(2,e-1);null===(n=this.logger)||void 0===n||n.call(this,`Retry ${e}/${this.maxRetries} after ${t}ms`),yield new Promise(e=>setTimeout(e,t))}null===(o=this.logger)||void 0===o||o.call(this,"API call:",i);try{const t=yield this.fetchFn(i);if(!t.ok){const n=new or(t.status,t.statusText);if(n.isRetryable&&e<this.maxRetries){s=n;continue}throw n}return yield t.json()}catch(t){if(t instanceof or)throw t;if(t instanceof Error){if(s=t,e<this.maxRetries)continue;throw new Error(`Glassnode API error: ${t.message}`,{cause:t})}throw new Error("Unknown error occurred",{cause:t})}}throw s})}getAssetMetadata(){return t(this,void 0,void 0,function*(){const e=yield this.request("/v1/metadata/assets");return cr.parse(e.data)})}getMetricMetadata(e){return t(this,arguments,void 0,function*(e,t={}){const n=yield this.request("/v1/metadata/metric",Object.assign({path:e},t));return fr.parse(n)})}getMetricList(){return t(this,void 0,void 0,function*(){const e=yield this.request("/v1/metadata/metrics");return hr.parse(e)})}callMetric(e){return t(this,arguments,void 0,function*(e,t={}){return yield this.request("/v1/metrics"+e,Object.assign(Object.assign({},t),{f:"json"}))})}callBulkMetric(e){return t(this,arguments,void 0,function*(e,t={}){const n=yield this.request("/v1/metrics"+e+"/bulk",Object.assign(Object.assign({},t),{f:"json"}));return yr.parse(n.data)})}},e.GlassnodeApiError=or,e.GlassnodeConfigSchema=tr,e.MetricDataTypeSchema=dr,e.MetricDescriptorsSchema=pr,e.MetricListResponseSchema=hr,e.MetricMetadataResponseSchema=fr,e.MetricMetadataSchema=lr,e.MetricTierSchema=ur});
|
|
2
|
+
//# sourceMappingURL=glassnode-api.umd.min.js.map
|