glassnode-api 0.1.3 → 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 +69 -31
- package/dist/errors.d.ts +6 -0
- package/dist/errors.js +25 -0
- package/dist/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/glassnode-api.js +50 -14
- package/dist/glassnode-api.umd.min.js +2 -0
- package/dist/glassnode-api.umd.min.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/types/config.d.ts +13 -14
- package/dist/types/config.js +20 -0
- package/dist/types/metadata.d.ts +129 -270
- package/dist/types/metadata.js +59 -6
- package/package.json +39 -28
package/README.md
CHANGED
|
@@ -1,11 +1,39 @@
|
|
|
1
1
|
# Glassnode API
|
|
2
2
|
|
|
3
|
-
A
|
|
3
|
+
A TypeScript client for the [Glassnode API](https://docs.glassnode.com/), supporting both Node.js and browser environments.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
|
+
### Node.js
|
|
8
|
+
|
|
7
9
|
```bash
|
|
10
|
+
# pnpm
|
|
11
|
+
pnpm add glassnode-api
|
|
12
|
+
|
|
13
|
+
# npm
|
|
8
14
|
npm install glassnode-api
|
|
15
|
+
|
|
16
|
+
# yarn
|
|
17
|
+
yarn add glassnode-api
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Browser (UMD)
|
|
21
|
+
|
|
22
|
+
```html
|
|
23
|
+
<script src="https://unpkg.com/glassnode-api/dist/glassnode-api.umd.min.js"></script>
|
|
24
|
+
<script>
|
|
25
|
+
const api = new GlassnodeAPI.GlassnodeAPI({ apiKey: 'YOUR_API_KEY' });
|
|
26
|
+
</script>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Browser (ESM)
|
|
30
|
+
|
|
31
|
+
```html
|
|
32
|
+
<script type="module">
|
|
33
|
+
import { GlassnodeAPI } from 'https://unpkg.com/glassnode-api/dist/glassnode-api.esm.min.js';
|
|
34
|
+
|
|
35
|
+
const api = new GlassnodeAPI({ apiKey: 'YOUR_API_KEY' });
|
|
36
|
+
</script>
|
|
9
37
|
```
|
|
10
38
|
|
|
11
39
|
## Usage
|
|
@@ -13,7 +41,6 @@ npm install glassnode-api
|
|
|
13
41
|
```typescript
|
|
14
42
|
import { GlassnodeAPI } from 'glassnode-api';
|
|
15
43
|
|
|
16
|
-
// Create an instance with your API key
|
|
17
44
|
const api = new GlassnodeAPI({
|
|
18
45
|
apiKey: 'YOUR_API_KEY',
|
|
19
46
|
// Optional: Override the API URL
|
|
@@ -21,52 +48,63 @@ const api = new GlassnodeAPI({
|
|
|
21
48
|
});
|
|
22
49
|
|
|
23
50
|
// Fetch asset metadata
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
const response = await api.getAssetMetadata();
|
|
27
|
-
console.log(response.data);
|
|
28
|
-
} catch (error) {
|
|
29
|
-
console.error('Error fetching asset metadata:', error);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
51
|
+
const assets = await api.getAssetMetadata();
|
|
32
52
|
|
|
33
53
|
// Fetch metric metadata
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
54
|
+
const metric = await api.getMetricMetadata('/distribution/balance_exchanges', { a: 'BTC' });
|
|
55
|
+
|
|
56
|
+
// Get list of all available metrics
|
|
57
|
+
const metrics = await api.getMetricList();
|
|
58
|
+
|
|
59
|
+
// Call a metric directly
|
|
60
|
+
const data = await api.callMetric('/market/price_usd_close', { a: 'BTC', s: '1609459200' });
|
|
42
61
|
```
|
|
43
62
|
|
|
63
|
+
## API
|
|
64
|
+
|
|
65
|
+
### `new GlassnodeAPI(config)`
|
|
66
|
+
|
|
67
|
+
| Parameter | Type | Required | Description |
|
|
68
|
+
| --------- | -------- | -------- | ------------------------------------------------------ |
|
|
69
|
+
| `apiKey` | `string` | Yes | Your Glassnode API key |
|
|
70
|
+
| `apiUrl` | `string` | No | API base URL (defaults to `https://api.glassnode.com`) |
|
|
71
|
+
|
|
72
|
+
### Methods
|
|
73
|
+
|
|
74
|
+
| Method | Returns | Description |
|
|
75
|
+
| ---------------------------------- | --------------------------------- | ----------------------------------- |
|
|
76
|
+
| `getAssetMetadata()` | `Promise<AssetMetadataResponse>` | Get metadata for all assets |
|
|
77
|
+
| `getMetricMetadata(path, params?)` | `Promise<MetricMetadataResponse>` | Get metadata for a specific metric |
|
|
78
|
+
| `getMetricList()` | `Promise<MetricListResponse>` | Get a list of all available metrics |
|
|
79
|
+
| `callMetric<T>(path, params?)` | `Promise<T>` | Call a metric endpoint directly |
|
|
80
|
+
|
|
44
81
|
## Examples
|
|
45
82
|
|
|
46
|
-
|
|
83
|
+
See the [examples directory](./examples/README.md) for detailed usage patterns.
|
|
47
84
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
85
|
+
```bash
|
|
86
|
+
cd examples
|
|
87
|
+
cp .env.example .env # add your API key
|
|
88
|
+
pnpm dlx ts-node metadata.validation.ts
|
|
89
|
+
```
|
|
52
90
|
|
|
53
91
|
## Development
|
|
54
92
|
|
|
55
93
|
```bash
|
|
56
94
|
# Install dependencies
|
|
57
|
-
|
|
95
|
+
pnpm install
|
|
58
96
|
|
|
59
|
-
# Build
|
|
60
|
-
|
|
97
|
+
# Build (Node.js + browser bundles)
|
|
98
|
+
pnpm run build && pnpm run build:browser
|
|
61
99
|
|
|
62
100
|
# Run tests
|
|
63
|
-
|
|
101
|
+
pnpm test
|
|
64
102
|
|
|
65
|
-
# Lint
|
|
66
|
-
|
|
103
|
+
# Lint
|
|
104
|
+
pnpm run lint
|
|
67
105
|
|
|
68
|
-
# Format
|
|
69
|
-
|
|
106
|
+
# Format
|
|
107
|
+
pnpm run format
|
|
70
108
|
```
|
|
71
109
|
|
|
72
110
|
## License
|
package/dist/errors.d.ts
ADDED
package/dist/errors.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GlassnodeApiError = void 0;
|
|
4
|
+
const STATUS_MESSAGES = {
|
|
5
|
+
400: 'Bad request',
|
|
6
|
+
401: 'Invalid or missing API key',
|
|
7
|
+
403: 'Access forbidden — check your API tier',
|
|
8
|
+
404: 'Endpoint or metric not found',
|
|
9
|
+
429: 'Rate limit exceeded',
|
|
10
|
+
};
|
|
11
|
+
class GlassnodeApiError extends Error {
|
|
12
|
+
status;
|
|
13
|
+
statusText;
|
|
14
|
+
constructor(status, statusText) {
|
|
15
|
+
const detail = STATUS_MESSAGES[status] ?? statusText;
|
|
16
|
+
super(`API request failed (${status}): ${detail}`);
|
|
17
|
+
this.name = 'GlassnodeApiError';
|
|
18
|
+
this.status = status;
|
|
19
|
+
this.statusText = statusText;
|
|
20
|
+
}
|
|
21
|
+
get isRetryable() {
|
|
22
|
+
return this.status === 429 || this.status >= 500;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.GlassnodeApiError = GlassnodeApiError;
|
package/dist/glassnode-api.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { GlassnodeConfig } from './types/config';
|
|
2
|
-
import { AssetMetadataResponse, MetricMetadataResponse, MetricListResponse } from './types/metadata';
|
|
2
|
+
import { AssetMetadataResponse, MetricMetadataResponse, MetricListResponse, BulkResponse } from './types/metadata';
|
|
3
3
|
/**
|
|
4
4
|
* Glassnode API client
|
|
5
5
|
*/
|
|
6
6
|
export declare class GlassnodeAPI {
|
|
7
7
|
private apiKey;
|
|
8
8
|
private apiUrl;
|
|
9
|
+
private logger?;
|
|
10
|
+
private fetchFn;
|
|
11
|
+
private maxRetries;
|
|
12
|
+
private retryDelay;
|
|
9
13
|
/**
|
|
10
14
|
* Create a new Glassnode API client
|
|
11
15
|
* @param config Configuration object
|
|
@@ -42,4 +46,11 @@ export declare class GlassnodeAPI {
|
|
|
42
46
|
* @returns Promise resolving to the response data
|
|
43
47
|
*/
|
|
44
48
|
callMetric<T>(metricPath: string, params?: Record<string, string>): Promise<T>;
|
|
49
|
+
/**
|
|
50
|
+
* Call a bulk metric endpoint (returns data for all assets at once)
|
|
51
|
+
* @param metricPath Path of the metric (e.g. /market/marketcap_usd)
|
|
52
|
+
* @param params Query parameters
|
|
53
|
+
* @returns Promise resolving to validated bulk response
|
|
54
|
+
*/
|
|
55
|
+
callBulkMetric(metricPath: string, params?: Record<string, string>): Promise<BulkResponse>;
|
|
45
56
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e,t,n,r){return new(n||(n=Promise))(function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(s,a)}c((r=r.apply(e,t||[])).next())})}function t(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:s,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);const o=s.prototype,i=Object.keys(o);for(let e=0;e<i.length;e++){const t=i[e];t in n||(n[t]=o[t].bind(n))}}const o=n?.Parent??Object;class i extends o{}function s(e){var t;const o=n?.Parent?new i:this;r(o,e),(t=o._zod).deferred??(t.deferred=[]);for(const e of o._zod.deferred)e();return o}return Object.defineProperty(i,"name",{value:e}),Object.defineProperty(s,"init",{value:r}),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 n 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 o={};function i(e){return o}function s(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 a(e,t){return"bigint"==typeof t?t.toString():t}function c(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function u(e){return null==e}function d(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}const p=Symbol("evaluating");function l(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==p)return void 0===r&&(r=p,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function f(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function h(...e){const t={};for(const n of e){const e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function m(e){return JSON.stringify(e)}const y="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function g(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}const v=c(()=>{if("undefined"!=typeof navigator&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function _(e){if(!1===g(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!==g(n)&&!1!==Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")}function z(e){return _(e)?{...e}:Array.isArray(e)?[...e]:e}const b=new Set(["string","number","symbol"]);function w(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function k(e,t,n){const r=new e._zod.constr(t??e._zod.def);return t&&!n?.parent||(r._zod.parent=e),r}function $(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 S(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 T(e,t,n){const r={...e,path:e.path??[]};if(!e.message){const o=Z(e.inst?._zod.def?.error?.(e))??Z(t?.error?.(e))??Z(n.customError?.(e))??Z(n.localeError?.(e))??"Invalid input";r.message=o}return delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function E(e){return Array.isArray(e)?"array":"string"==typeof e?"string":"unknown"}function I(...e){const[t,n,r]=e;return"string"==typeof t?{message:t,code:"custom",input:n,inst:r}:{...t}}const N=(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,a,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},P=t("$ZodError",N),A=t("$ZodError",N,{Parent:Error});const j=e=>(t,r,o,s)=>{const a=o?Object.assign(o,{async:!1}):{async:!1},c=t._zod.run({value:r,issues:[]},a);if(c instanceof Promise)throw new n;if(c.issues.length){const t=new(s?.Err??e)(c.issues.map(e=>T(e,a,i())));throw y(t,s?.callee),t}return c.value},F=j(A),R=e=>async(t,n,r,o)=>{const s=r?Object.assign(r,{async:!0}):{async:!0};let a=t._zod.run({value:n,issues:[]},s);if(a instanceof Promise&&(a=await a),a.issues.length){const t=new(o?.Err??e)(a.issues.map(e=>T(e,s,i())));throw y(t,o?.callee),t}return a.value},J=R(A),C=e=>(t,r,o)=>{const s=o?{...o,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new n;return a.issues.length?{success:!1,error:new(e??P)(a.issues.map(e=>T(e,s,i())))}:{success:!0,data:a.value}},U=C(A),D=e=>async(t,n,r)=>{const o=r?Object.assign(r,{async:!0}):{async:!0};let s=t._zod.run({value:n,issues:[]},o);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new e(s.issues.map(e=>T(e,o,i())))}:{success:!0,data:s.value}},M=D(A),V=e=>(t,n,r)=>{const o=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return j(e)(t,n,o)},L=e=>(t,n,r)=>j(e)(t,n,r),W=e=>async(t,n,r)=>{const o=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return R(e)(t,n,o)},q=e=>async(t,n,r)=>R(e)(t,n,r),G=e=>(t,n,r)=>{const o=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return C(e)(t,n,o)},B=e=>(t,n,r)=>C(e)(t,n,r),K=e=>async(t,n,r)=>{const o=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return D(e)(t,n,o)},Y=e=>async(t,n,r)=>D(e)(t,n,r),X=/^[cC][^\s-]{8,}$/,H=/^[0-9a-z]+$/,Q=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,ee=/^[0-9a-vA-V]{20}$/,te=/^[A-Za-z0-9]{27}$/,ne=/^[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)?)?)$/,oe=/^([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})$/,ie=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)$/,se=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;const ae=/^(?:(?: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])$/,ce=/^(([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}|:))$/,ue=/^((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])$/,de=/^(([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])$/,pe=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,le=/^[A-Za-z0-9_-]*$/,fe=/^\+[1-9]\d{6,14}$/,he="(?:(?:\\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])))",me=new RegExp(`^${he}$`);function ye(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 ge=/^-?\d+$/,ve=/^-?\d+(?:\.\d+)?$/,_e=/^(?:true|false)$/i,ze=/^[^A-Z]*$/,be=/^[^a-z]*$/,we=t("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),ke={number:"number",bigint:"bigint",object:"date"},$e=t("$ZodCheckLessThan",(e,t)=>{we.init(e,t);const n=ke[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:n,code:"too_big",maximum:"object"==typeof t.value?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Oe=t("$ZodCheckGreaterThan",(e,t)=>{we.init(e,t);const n=ke[typeof t.value];e._zod.onattach.push(e=>{const n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:"too_small",minimum:"object"==typeof t.value?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),xe=t("$ZodCheckMultipleOf",(e,t)=>{we.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,r=t.toString();let o=(r.split(".")[1]||"").length;if(0===o&&/\d?e-\d?/.test(r)){const e=r.match(/\d?e-(\d?)/);e?.[1]&&(o=Number.parseInt(e[1]))}const i=n>o?n:o;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})}}),Se=t("$ZodCheckNumberFormat",(e,t)=>{we.init(e,t),t.format=t.format||"float64";const n=t.format?.includes("int"),r=n?"int":"number",[o,i]=O[t.format];e._zod.onattach.push(e=>{const r=e._zod.bag;r.format=t.format,r.minimum=o,r.maximum=i,n&&(r.pattern=ge)}),e._zod.check=s=>{const a=s.value;if(n){if(!Number.isInteger(a))return void s.issues.push({expected:r,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:r,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:r,inclusive:!0,continue:!t.abort}))}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,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=t("$ZodCheckMaxLength",(e,t)=>{var n;we.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!u(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 r=n.value;if(r.length<=t.maximum)return;const o=E(r);n.issues.push({origin:o,code:"too_big",maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Te=t("$ZodCheckMinLength",(e,t)=>{var n;we.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!u(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 r=n.value;if(r.length>=t.minimum)return;const o=E(r);n.issues.push({origin:o,code:"too_small",minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Ee=t("$ZodCheckLengthEquals",(e,t)=>{var n;we.init(e,t),(n=e._zod.def).when??(n.when=e=>{const t=e.value;return!u(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 r=n.value,o=r.length;if(o===t.length)return;const i=E(r),s=o>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})}}),Ie=t("$ZodCheckStringFormat",(e,t)=>{var n,r;we.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})}):(r=e._zod).check??(r.check=()=>{})}),Ne=t("$ZodCheckRegex",(e,t)=>{Ie.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})}}),Pe=t("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=ze),Ie.init(e,t)}),Ae=t("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=be),Ie.init(e,t)}),je=t("$ZodCheckIncludes",(e,t)=>{we.init(e,t);const n=w(t.includes),r=new RegExp("number"==typeof t.position?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{const t=e._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(r)}),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=t("$ZodCheckStartsWith",(e,t)=>{we.init(e,t);const n=new RegExp(`^${w(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})}}),Re=t("$ZodCheckEndsWith",(e,t)=>{we.init(e,t);const n=new RegExp(`.*${w(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})}}),Je=t("$ZodCheckOverwrite",(e,t)=>{we.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)),r=t.map(e=>e.slice(n)).map(e=>" ".repeat(2*this.indent)+e);for(const e of r)this.content.push(e)}compile(){const e=Function,t=this?.args;return new e(...t,[...(this?.content??[""]).map(e=>` ${e}`)].join("\n"))}}const Ue={major:4,minor:3,patch:6},De=t("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Ue;const o=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&o.unshift(e);for(const t of o)for(const n of t._zod.onattach)n(e);if(0===o.length)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const t=(e,t,r)=>{let o,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===r?.async)throw new n;if(o||a instanceof Promise)o=(o??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 o?o.then(()=>e):e},r=(r,i,s)=>{if(x(r))return r.aborted=!0,r;const a=t(i,o,s);if(a instanceof Promise){if(!1===s.async)throw new n;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=>r(e,i,s)):r(t,i,s)}const a=e._zod.parse(i,s);if(a instanceof Promise){if(!1===s.async)throw new n;return a.then(e=>t(e,o,s))}return t(a,o,s)}}l(e,"~standard",()=>({validate:t=>{try{const n=U(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch(n){return M(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:"zod",version:1}))}),Me=t("$ZodString",(e,t)=>{var n;De.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,r)=>{if(t.coerce)try{n.value=String(n.value)}catch(r){}return"string"==typeof n.value||n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),Ve=t("$ZodStringFormat",(e,t)=>{Ie.init(e,t),Me.init(e,t)}),Le=t("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=oe),Ve.init(e,t)}),We=t("$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=ie(e))}else t.pattern??(t.pattern=ie());Ve.init(e,t)}),qe=t("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=se),Ve.init(e,t)}),Ge=t("$ZodURL",(e,t)=>{Ve.init(e,t),e._zod.check=n=>{try{const r=n.value.trim(),o=new URL(r);return t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(o.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(o.protocol.endsWith(":")?o.protocol.slice(0,-1):o.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=o.href:n.value=r)}catch(r){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),Be=t("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=new RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),Ve.init(e,t)}),Ke=t("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=ne),Ve.init(e,t)}),Ye=t("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=X),Ve.init(e,t)}),Xe=t("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=H),Ve.init(e,t)}),He=t("$ZodULID",(e,t)=>{t.pattern??(t.pattern=Q),Ve.init(e,t)}),Qe=t("$ZodXID",(e,t)=>{t.pattern??(t.pattern=ee),Ve.init(e,t)}),et=t("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=te),Ve.init(e,t)}),tt=t("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=function(e){const t=ye({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const r=`${t}(?:${n.join("|")})`;return new RegExp(`^${he}T(?:${r})$`)}(t)),Ve.init(e,t)}),nt=t("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=me),Ve.init(e,t)}),rt=t("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=new RegExp(`^${ye(t)}$`)),Ve.init(e,t)}),ot=t("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=re),Ve.init(e,t)}),it=t("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=ae),Ve.init(e,t),e._zod.bag.format="ipv4"}),st=t("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=ce),Ve.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})}}}),at=t("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=ue),Ve.init(e,t)}),ct=t("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=de),Ve.init(e,t),e._zod.check=n=>{const r=n.value.split("/");try{if(2!==r.length)throw new Error;const[e,t]=r;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 ut(e){if(""===e)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}const dt=t("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=pe),Ve.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=n=>{ut(n.value)||n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}});const pt=t("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=le),Ve.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=n=>{(function(e){if(!le.test(e))return!1;const t=e.replace(/[-_]/g,e=>"-"===e?"+":"/");return ut(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})}}),lt=t("$ZodE164",(e,t)=>{t.pattern??(t.pattern=fe),Ve.init(e,t)});const ft=t("$ZodJWT",(e,t)=>{Ve.init(e,t),e._zod.check=n=>{(function(e,t=null){try{const n=e.split(".");if(3!==n.length)return!1;const[r]=n;if(!r)return!1;const o=JSON.parse(atob(r));return!("typ"in o&&"JWT"!==o?.typ||!o.alg||t&&(!("alg"in o)||o.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})}}),ht=t("$ZodNumber",(e,t)=>{De.init(e,t),e._zod.pattern=e._zod.bag.pattern??ve,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch(e){}const o=n.value;if("number"==typeof o&&!Number.isNaN(o)&&Number.isFinite(o))return n;const i="number"==typeof o?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:"Infinity":void 0;return n.issues.push({expected:"number",code:"invalid_type",input:o,inst:e,...i?{received:i}:{}}),n}}),mt=t("$ZodNumberFormat",(e,t)=>{Se.init(e,t),ht.init(e,t)}),yt=t("$ZodBoolean",(e,t)=>{De.init(e,t),e._zod.pattern=_e,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Boolean(n.value)}catch(e){}const o=n.value;return"boolean"==typeof o||n.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:e}),n}}),gt=t("$ZodAny",(e,t)=>{De.init(e,t),e._zod.parse=e=>e}),vt=t("$ZodUnknown",(e,t)=>{De.init(e,t),e._zod.parse=e=>e}),_t=t("$ZodNever",(e,t)=>{De.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t)});function zt(e,t,n){e.issues.length&&t.issues.push(...S(n,e.issues)),t.value[n]=e.value}const bt=t("$ZodArray",(e,t)=>{De.init(e,t),e._zod.parse=(n,r)=>{const o=n.value;if(!Array.isArray(o))return n.issues.push({expected:"array",code:"invalid_type",input:o,inst:e}),n;n.value=Array(o.length);const i=[];for(let e=0;e<o.length;e++){const s=o[e],a=t.element._zod.run({value:s,issues:[]},r);a instanceof Promise?i.push(a.then(t=>zt(t,n,e))):zt(a,n,e)}return i.length?Promise.all(i).then(()=>n):n}});function wt(e,t,n,r,o){if(e.issues.length){if(o&&!(n in r))return;t.issues.push(...S(n,e.issues))}void 0===e.value?n in r&&(t.value[n]=void 0):t.value[n]=e.value}function kt(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=(r=e.shape,Object.keys(r).filter(e=>"optional"===r[e]._zod.optin&&"optional"===r[e]._zod.optout));var r;return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function $t(e,t,n,r,o,i){const s=[],a=o.keySet,c=o.catchall._zod,u=c.def.type,d="optional"===c.optout;for(const o in t){if(a.has(o))continue;if("never"===u){s.push(o);continue}const i=c.run({value:t[o],issues:[]},r);i instanceof Promise?e.push(i.then(e=>wt(e,n,o,t,d))):wt(i,n,o,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=t("$ZodObject",(e,t)=>{De.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 r=c(()=>kt(t));l(e._zod,"propValues",()=>{const e=t.shape,n={};for(const t in e){const r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(const e of r.values)n[t].add(e)}}return n});const o=g,i=t.catchall;let s;e._zod.parse=(t,n)=>{s??(s=r.value);const a=t.value;if(!o(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 r=u[e],o="optional"===r._zod.optout,i=r._zod.run({value:a[e],issues:[]},n);i instanceof Promise?c.push(i.then(n=>wt(n,t,e,a,o))):wt(i,t,e,a,o)}return i?$t(c,a,t,n,r.value,e):c.length?Promise.all(c).then(()=>t):t}}),xt=t("$ZodObjectJIT",(e,t)=>{Ot.init(e,t);const n=e._zod.parse,r=c(()=>kt(t));let i;const s=g,a=!o.jitless,u=a&&v.value,d=t.catchall;let p;e._zod.parse=(o,c)=>{p??(p=r.value);const l=o.value;return s(l)?a&&u&&!1===c?.async&&!0!==c.jitless?(i||(i=(e=>{const t=new Ce(["shape","payload","ctx"]),n=r.value,o=e=>{const t=m(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 r of n.keys){const n=i[r],s=m(r),a=e[r],c="optional"===a?._zod?.optout;t.write(`const ${n} = ${o(r)};`),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)),o=i(o,c),d?$t([],l,o,c,p,e):o):n(o,c):(o.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),o)}});function St(e,t,n,r){for(const n of e)if(0===n.issues.length)return t.value=n.value,t;const o=e.filter(e=>!x(e));return 1===o.length?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>T(e,r,i())))}),t)}const Zt=t("$ZodUnion",(e,t)=>{De.init(e,t),l(e._zod,"optin",()=>t.options.some(e=>"optional"===e._zod.optin)?"optional":void 0),l(e._zod,"optout",()=>t.options.some(e=>"optional"===e._zod.optout)?"optional":void 0),l(e._zod,"values",()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),l(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=>d(e.source)).join("|")})$`)}});const n=1===t.options.length,r=t.options[0]._zod.run;e._zod.parse=(o,i)=>{if(n)return r(o,i);let s=!1;const a=[];for(const e of t.options){const t=e._zod.run({value:o.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=>St(t,o,e,i)):St(a,o,e,i)}}),Tt=t("$ZodIntersection",(e,t)=>{De.init(e,t),e._zod.parse=(e,n)=>{const r=e.value,o=t.left._zod.run({value:r,issues:[]},n),i=t.right._zod.run({value:r,issues:[]},n);return o instanceof Promise||i instanceof Promise?Promise.all([o,i]).then(([t,n])=>It(e,t,n)):It(e,o,i)}});function Et(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(_(e)&&_(t)){const n=Object.keys(t),r=Object.keys(e).filter(e=>-1!==n.indexOf(e)),o={...e,...t};for(const n of r){const r=Et(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};o[n]=r.data}return{valid:!0,data:o}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const n=[];for(let r=0;r<e.length;r++){const o=Et(e[r],t[r]);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function It(e,t,n){const r=new Map;let o;for(const n of t.issues)if("unrecognized_keys"===n.code){o??(o=n);for(const e of n.keys)r.has(e)||r.set(e,{}),r.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)r.has(e)||r.set(e,{}),r.get(e).r=!0;else e.issues.push(t);const i=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(i.length&&o&&e.issues.push({...o,keys:i}),x(e))return e;const s=Et(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 Nt=t("$ZodTuple",(e,t)=>{De.init(e,t);const n=t.items;e._zod.parse=(r,o)=>{const i=r.value;if(!Array.isArray(i))return r.issues.push({input:i,inst:e,expected:"tuple",code:"invalid_type"}),r;r.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,o=i.length<c-1;if(t||o)return r.issues.push({...t?{code:"too_big",maximum:n.length,inclusive:!0}:{code:"too_small",minimum:n.length},input:i,inst:e,origin:"array"}),r}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:[]},o);t instanceof Promise?s.push(t.then(e=>Pt(e,r,u))):Pt(t,r,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:[]},o);e instanceof Promise?s.push(e.then(e=>Pt(e,r,u))):Pt(e,r,u)}}return s.length?Promise.all(s).then(()=>r):r}});function Pt(e,t,n){e.issues.length&&t.issues.push(...S(n,e.issues)),t.value[n]=e.value}const At=t("$ZodRecord",(e,t)=>{De.init(e,t),e._zod.parse=(n,r)=>{const o=n.value;if(!_(o))return n.issues.push({expected:"record",code:"invalid_type",input:o,inst:e}),n;const s=[],a=t.keyType._zod.values;if(a){n.value={};const i=new Set;for(const e of a)if("string"==typeof e||"number"==typeof e||"symbol"==typeof e){i.add("number"==typeof e?e.toString():e);const a=t.valueType._zod.run({value:o[e],issues:[]},r);a instanceof Promise?s.push(a.then(t=>{t.issues.length&&n.issues.push(...S(e,t.issues)),n.value[e]=t.value})):(a.issues.length&&n.issues.push(...S(e,a.issues)),n.value[e]=a.value)}let c;for(const e in o)i.has(e)||(c=c??[],c.push(e));c&&c.length>0&&n.issues.push({code:"unrecognized_keys",input:o,inst:e,keys:c})}else{n.value={};for(const a of Reflect.ownKeys(o)){if("__proto__"===a)continue;let c=t.keyType._zod.run({value:a,issues:[]},r);if(c instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if("string"==typeof a&&ve.test(a)&&c.issues.length){const e=t.keyType._zod.run({value:Number(a),issues:[]},r);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]=o[a]:n.issues.push({code:"invalid_key",origin:"record",issues:c.issues.map(e=>T(e,r,i())),input:a,path:[a],inst:e});continue}const u=t.valueType._zod.run({value:o[a],issues:[]},r);u instanceof Promise?s.push(u.then(e=>{e.issues.length&&n.issues.push(...S(a,e.issues)),n.value[c.value]=e.value})):(u.issues.length&&n.issues.push(...S(a,u.issues)),n.value[c.value]=u.value)}}return s.length?Promise.all(s).then(()=>n):n}}),jt=t("$ZodEnum",(e,t)=>{De.init(e,t);const n=s(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=new RegExp(`^(${n.filter(e=>b.has(typeof e)).map(e=>"string"==typeof e?w(e):e.toString()).join("|")})$`),e._zod.parse=(t,o)=>{const i=t.value;return r.has(i)||t.issues.push({code:"invalid_value",values:n,input:i,inst:e}),t}}),Ft=t("$ZodTransform",(e,t)=>{De.init(e,t),e._zod.parse=(o,i)=>{if("backward"===i.direction)throw new r(e.constructor.name);const s=t.transform(o.value,o);if(i.async){return(s instanceof Promise?s:Promise.resolve(s)).then(e=>(o.value=e,o))}if(s instanceof Promise)throw new n;return o.value=s,o}});function Rt(e,t){return e.issues.length&&void 0===t?{issues:[],value:void 0}:e}const Jt=t("$ZodOptional",(e,t)=>{De.init(e,t),e._zod.optin="optional",e._zod.optout="optional",l(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),l(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${d(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if("optional"===t.innerType._zod.optin){const r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(t=>Rt(t,e.value)):Rt(r,e.value)}return void 0===e.value?e:t.innerType._zod.run(e,n)}}),Ct=t("$ZodExactOptional",(e,t)=>{Jt.init(e,t),l(e._zod,"values",()=>t.innerType._zod.values),l(e._zod,"pattern",()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Ut=t("$ZodNullable",(e,t)=>{De.init(e,t),l(e._zod,"optin",()=>t.innerType._zod.optin),l(e._zod,"optout",()=>t.innerType._zod.optout),l(e._zod,"pattern",()=>{const e=t.innerType._zod.pattern;return e?new RegExp(`^(${d(e.source)}|null)$`):void 0}),l(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)}),Dt=t("$ZodDefault",(e,t)=>{De.init(e,t),e._zod.optin="optional",l(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 r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Mt(e,t)):Mt(r,t)}});function Mt(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}const Vt=t("$ZodPrefault",(e,t)=>{De.init(e,t),e._zod.optin="optional",l(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))}),Lt=t("$ZodNonOptional",(e,t)=>{De.init(e,t),l(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,r)=>{const o=t.innerType._zod.run(n,r);return o instanceof Promise?o.then(t=>Wt(t,e)):Wt(o,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=t("$ZodCatch",(e,t)=>{De.init(e,t),l(e._zod,"optin",()=>t.innerType._zod.optin),l(e._zod,"optout",()=>t.innerType._zod.optout),l(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>T(e,n,i()))},input:e.value}),e.issues=[]),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>T(e,n,i()))},input:e.value}),e.issues=[]),e)}}),Gt=t("$ZodPipe",(e,t)=>{De.init(e,t),l(e._zod,"values",()=>t.in._zod.values),l(e._zod,"optin",()=>t.in._zod.optin),l(e._zod,"optout",()=>t.out._zod.optout),l(e._zod,"propValues",()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if("backward"===n.direction){const r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>Bt(e,t.in,n)):Bt(r,t.in,n)}const r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Bt(e,t.out,n)):Bt(r,t.out,n)}});function Bt(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const Kt=t("$ZodReadonly",(e,t)=>{De.init(e,t),l(e._zod,"propValues",()=>t.innerType._zod.propValues),l(e._zod,"values",()=>t.innerType._zod.values),l(e._zod,"optin",()=>t.innerType?._zod?.optin),l(e._zod,"optout",()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if("backward"===n.direction)return t.innerType._zod.run(e,n);const r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Yt):Yt(r)}});function Yt(e){return e.value=Object.freeze(e.value),e}const Xt=t("$ZodFunction",(e,t)=>(De.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 r=e._def.input?F(e._def.input,n):n,o=Reflect.apply(t,this,r);return e._def.output?F(e._def.output,o):o}},e.implementAsync=t=>{if("function"!=typeof t)throw new Error("implementAsync() must be called with a function");return async function(...n){const r=e._def.input?await J(e._def.input,n):n,o=await Reflect.apply(t,this,r);return e._def.output?await J(e._def.output,o):o}},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 r=e._def.output&&"promise"===e._def.output._zod.def.type;return t.value=r?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 Nt({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)),Ht=t("$ZodCustom",(e,t)=>{we.init(e,t),De.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{const r=n.value,o=t.fn(r);if(o instanceof Promise)return o.then(t=>Qt(t,n,r,e));Qt(o,n,r,e)}});function Qt(e,t,n,r){if(!e){const e={code:"custom",input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(I(e))}}var en;class tn{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 r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}(en=globalThis).__zod_globalRegistry??(en.__zod_globalRegistry=new tn);const nn=globalThis.__zod_globalRegistry;function rn(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...$(t)})}function on(e,t){return new $e({check:"less_than",...$(t),value:e,inclusive:!1})}function sn(e,t){return new $e({check:"less_than",...$(t),value:e,inclusive:!0})}function an(e,t){return new Oe({check:"greater_than",...$(t),value:e,inclusive:!1})}function cn(e,t){return new Oe({check:"greater_than",...$(t),value:e,inclusive:!0})}function un(e,t){return new xe({check:"multiple_of",...$(t),value:e})}function dn(e,t){return new Ze({check:"max_length",...$(t),maximum:e})}function pn(e,t){return new Te({check:"min_length",...$(t),minimum:e})}function ln(e,t){return new Ee({check:"length_equals",...$(t),length:e})}function fn(e){return new Je({check:"overwrite",tx:e})}function hn(e){const t=function(e,t){const n=new we({check:"custom",...$(t)});return n._zod.check=e,n}(n=>(n.addIssue=e=>{if("string"==typeof e)n.issues.push(I(e,n.value,t._zod.def));else{const r=e;r.fatal&&(r.continue=!1),r.code??(r.code="custom"),r.input??(r.input=n.value),r.inst??(r.inst=t),r.continue??(r.continue=!t._zod.def.abort),n.issues.push(I(r))}},e(n.value,n)));return t}function mn(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??nn,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 yn(e,t,n={path:[],schemaPath:[]}){var r;const o=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 r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,s.schema,r);else{const n=s.schema,i=t.processors[o.type];if(!i)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${o.type}`);i(e,t,n,r)}const i=e._zod.parent;i&&(s.ref||(s.ref=i),yn(i,t,r),t.seen.get(i).isParent=!0)}const c=t.metadataRegistry.get(e);c&&Object.assign(s.schema,c),"input"===t.io&&_n(e)&&(delete s.schema.examples,delete s.schema.default),"input"===t.io&&s.schema._prefault&&((r=s.schema).default??(r.default=s.schema._prefault)),delete s.schema._prefault;return t.seen.get(e).schema}function gn(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=new Map;for(const t of e.seen.entries()){const n=e.metadataRegistry.get(t[0])?.id;if(n){const e=r.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.`);r.set(n,t[0])}}const o=t=>{if(t[1].schema.$ref)return;const r=t[1],{ref:o,defId:i}=(t=>{const r="draft-2020-12"===e.target?"$defs":"definitions";if(e.external){const n=e.external.registry.get(t[0])?.id,o=e.external.uri??(e=>e);if(n)return{ref:o(n)};const i=t[1].defId??t[1].schema.id??"schema"+e.counter++;return t[1].defId=i,{defId:i,ref:`${o("__shared")}#/${r}/${i}`}}if(t[1]===n)return{ref:"#"};const o=`#/${r}/`,i=t[1].schema.id??"__schema"+e.counter++;return{defId:i,ref:o+i}})(t);r.def={...r.schema},i&&(r.defId=i);const s=r.schema;for(const e in s)delete s[e];s.$ref=o};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 r=n[1];if(t===n[0]){o(n);continue}if(e.external){const r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){o(n);continue}}const i=e.metadataRegistry.get(n[0])?.id;i?o(n):(r.cycle||r.count>1&&"ref"===e.reused)&&o(n)}}function vn(e,t){const n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");const r=t=>{const n=e.seen.get(t);if(null===n.ref)return;const o=n.def??n.schema,i={...o},s=n.ref;if(n.ref=null,s){r(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(o,a):(o.allOf=o.allOf??[],o.allOf.push(a)),Object.assign(o,i);if(t._zod.parent===s)for(const e in o)"$ref"!==e&&"allOf"!==e&&(e in i||delete o[e]);if(a.$ref&&n.def)for(const e in o)"$ref"!==e&&"allOf"!==e&&e in n.def&&JSON.stringify(o[e])===JSON.stringify(n.def[e])&&delete o[e]}const a=t._zod.parent;if(a&&a!==s){r(a);const t=e.seen.get(a);if(t?.schema.$ref&&(o.$ref=t.schema.$ref,t.def))for(const e in o)"$ref"!==e&&"allOf"!==e&&e in t.def&&JSON.stringify(o[e])===JSON.stringify(t.def[e])&&delete o[e]}e.override({zodSchema:t,jsonSchema:o,path:n.path??[]})};for(const t of[...e.seen.entries()].reverse())r(t[0]);const o={};if("draft-2020-12"===e.target?o.$schema="https://json-schema.org/draft/2020-12/schema":"draft-07"===e.target?o.$schema="http://json-schema.org/draft-07/schema#":"draft-04"===e.target?o.$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");o.$id=e.external.uri(n)}Object.assign(o,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?o.$defs=i:o.definitions=i);try{const n=JSON.parse(JSON.stringify(o));return Object.defineProperty(n,"~standard",{value:{...t["~standard"],jsonSchema:{input:zn(t,"input",e.processors),output:zn(t,"output",e.processors)}},enumerable:!1,writable:!1}),n}catch(e){throw new Error("Error converting schema to JSON.")}}function _n(e,t){const n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);const r=e._zod.def;if("transform"===r.type)return!0;if("array"===r.type)return _n(r.element,n);if("set"===r.type)return _n(r.valueType,n);if("lazy"===r.type)return _n(r.getter(),n);if("promise"===r.type||"optional"===r.type||"nonoptional"===r.type||"nullable"===r.type||"readonly"===r.type||"default"===r.type||"prefault"===r.type)return _n(r.innerType,n);if("intersection"===r.type)return _n(r.left,n)||_n(r.right,n);if("record"===r.type||"map"===r.type)return _n(r.keyType,n)||_n(r.valueType,n);if("pipe"===r.type)return _n(r.in,n)||_n(r.out,n);if("object"===r.type){for(const e in r.shape)if(_n(r.shape[e],n))return!0;return!1}if("union"===r.type){for(const e of r.options)if(_n(e,n))return!0;return!1}if("tuple"===r.type){for(const e of r.items)if(_n(e,n))return!0;return!(!r.rest||!_n(r.rest,n))}return!1}const zn=(e,t,n={})=>r=>{const{libraryOptions:o,target:i}=r??{},s=mn({...o??{},target:i,io:t,processors:n});return yn(e,s),gn(s,e),vn(s,e)},bn={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},wn=(e,t,n,r)=>{const o=e._zod.def;yn(o.innerType,t,r);t.seen.get(e).ref=o.innerType},kn=t("ZodISODateTime",(e,t)=>{tt.init(e,t),Bn.init(e,t)});function $n(e){return function(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...$(t)})}(kn,e)}const On=t("ZodISODate",(e,t)=>{nt.init(e,t),Bn.init(e,t)});function xn(e){return function(e,t){return new e({type:"string",format:"date",check:"string_format",...$(t)})}(On,e)}const Sn=t("ZodISOTime",(e,t)=>{rt.init(e,t),Bn.init(e,t)});function Zn(e){return function(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...$(t)})}(Sn,e)}const Tn=t("ZodISODuration",(e,t)=>{ot.init(e,t),Bn.init(e,t)});function En(e){return function(e,t){return new e({type:"string",format:"duration",check:"string_format",...$(t)})}(Tn,e)}const In=t("ZodError",(e,t)=>{P.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:t=>function(e,t=e=>e.message){const n={_errors:[]},r=e=>{for(const o of e.issues)if("invalid_union"===o.code&&o.errors.length)o.errors.map(e=>r({issues:e}));else if("invalid_key"===o.code)r({issues:o.issues});else if("invalid_element"===o.code)r({issues:o.issues});else if(0===o.path.length)n._errors.push(t(o));else{let e=n,r=0;for(;r<o.path.length;){const n=o.path[r];r===o.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(o))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(e),n}(e,t)},flatten:{value:t=>function(e,t=e=>e.message){const n={},r=[];for(const o of e.issues)o.path.length>0?(n[o.path[0]]=n[o.path[0]]||[],n[o.path[0]].push(t(o))):r.push(t(o));return{formErrors:r,fieldErrors:n}}(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,a,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,a,2)}},isEmpty:{get:()=>0===e.issues.length}})},{Parent:Error}),Nn=j(In),Pn=R(In),An=C(In),jn=D(In),Fn=V(In),Rn=L(In),Jn=W(In),Cn=q(In),Un=G(In),Dn=B(In),Mn=K(In),Vn=Y(In),Ln=t("ZodType",(e,t)=>(De.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:zn(e,"input"),output:zn(e,"output")}}),e.toJSONSchema=((e,t={})=>n=>{const r=mn({...n,processors:t});return yn(e,r),gn(r,e),vn(r,e)})(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(h(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)=>k(e,t,n),e.brand=()=>e,e.register=(t,n)=>(t.add(e,n),e),e.parse=(t,n)=>Nn(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>An(e,t,n),e.parseAsync=async(t,n)=>Pn(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>jn(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>Fn(e,t,n),e.decode=(t,n)=>Rn(e,t,n),e.encodeAsync=async(t,n)=>Jn(e,t,n),e.decodeAsync=async(t,n)=>Cn(e,t,n),e.safeEncode=(t,n)=>Un(e,t,n),e.safeDecode=(t,n)=>Dn(e,t,n),e.safeEncodeAsync=async(t,n)=>Mn(e,t,n),e.safeDecodeAsync=async(t,n)=>Vn(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,...$(n)})}(Hr,e,t)}(t,n)),e.superRefine=t=>e.check(hn(t)),e.overwrite=t=>e.check(fn(t)),e.optional=()=>Cr(e),e.exactOptional=()=>new Ur({type:"optional",innerType:e}),e.nullable=()=>Mr(e),e.nullish=()=>Cr(Mr(e)),e.nonoptional=t=>function(e,t){return new Wr({type:"nonoptional",innerType:e,...$(t)})}(e,t),e.array=()=>xr(e),e.or=t=>{return new Tr({type:"union",options:[e,t],...$(n)});var n},e.and=t=>new Er({type:"intersection",left:e,right:t}),e.transform=t=>Br(e,new Rr({type:"transform",transform:t})),e.default=t=>{return n=t,new Vr({type:"default",innerType:e,get defaultValue(){return"function"==typeof n?n():z(n)}});var n},e.prefault=t=>{return n=t,new Lr({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof n?n():z(n)}});var n},e.catch=t=>{return new qr({type:"catch",innerType:e,catchValue:"function"==typeof(n=t)?n:()=>n});var n},e.pipe=t=>Br(e,t),e.readonly=()=>new Kr({type:"readonly",innerType:e}),e.describe=t=>{const n=e.clone();return nn.add(n,{description:t}),n},Object.defineProperty(e,"description",{get:()=>nn.get(e)?.description,configurable:!0}),e.meta=(...t)=>{if(0===t.length)return nn.get(e);const n=e.clone();return nn.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=t("_ZodString",(e,t)=>{Me.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n)=>{const r=n;r.type="string";const{minimum:o,maximum:i,format:s,patterns:a,contentEncoding:c}=e._zod.bag;if("number"==typeof o&&(r.minLength=o),"number"==typeof i&&(r.maxLength=i),s&&(r.format=bn[s]??s,""===r.format&&delete r.format,"time"===s&&delete r.format),c&&(r.contentEncoding=c),a&&a.size>0){const e=[...a];1===e.length?r.pattern=e[0].source:e.length>1&&(r.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 Ne({check:"string_format",format:"regex",...$(t),pattern:e})}(...t)),e.includes=(...t)=>e.check(function(e,t){return new je({check:"string_format",format:"includes",...$(t),includes:e})}(...t)),e.startsWith=(...t)=>e.check(function(e,t){return new Fe({check:"string_format",format:"starts_with",...$(t),prefix:e})}(...t)),e.endsWith=(...t)=>e.check(function(e,t){return new Re({check:"string_format",format:"ends_with",...$(t),suffix:e})}(...t)),e.min=(...t)=>e.check(pn(...t)),e.max=(...t)=>e.check(dn(...t)),e.length=(...t)=>e.check(ln(...t)),e.nonempty=(...t)=>e.check(pn(1,...t)),e.lowercase=t=>e.check(function(e){return new Pe({check:"string_format",format:"lowercase",...$(e)})}(t)),e.uppercase=t=>e.check(function(e){return new Ae({check:"string_format",format:"uppercase",...$(e)})}(t)),e.trim=()=>e.check(fn(e=>e.trim())),e.normalize=(...t)=>e.check(function(e){return fn(t=>t.normalize(e))}(...t)),e.toLowerCase=()=>e.check(fn(e=>e.toLowerCase())),e.toUpperCase=()=>e.check(fn(e=>e.toUpperCase())),e.slugify=()=>e.check(fn(e=>function(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}(e)))}),qn=t("ZodString",(e,t)=>{Me.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,...$(t)})}(Kn,t)),e.url=t=>e.check(function(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...$(t)})}(Hn,t)),e.jwt=t=>e.check(function(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...$(t)})}(fr,t)),e.emoji=t=>e.check(function(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...$(t)})}(Qn,t)),e.guid=t=>e.check(rn(Yn,t)),e.uuid=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...$(t)})}(Xn,t)),e.uuidv4=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...$(t)})}(Xn,t)),e.uuidv6=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...$(t)})}(Xn,t)),e.uuidv7=t=>e.check(function(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...$(t)})}(Xn,t)),e.nanoid=t=>e.check(function(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...$(t)})}(er,t)),e.guid=t=>e.check(rn(Yn,t)),e.cuid=t=>e.check(function(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...$(t)})}(tr,t)),e.cuid2=t=>e.check(function(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...$(t)})}(nr,t)),e.ulid=t=>e.check(function(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...$(t)})}(rr,t)),e.base64=t=>e.check(function(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...$(t)})}(dr,t)),e.base64url=t=>e.check(function(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...$(t)})}(pr,t)),e.xid=t=>e.check(function(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...$(t)})}(or,t)),e.ksuid=t=>e.check(function(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...$(t)})}(ir,t)),e.ipv4=t=>e.check(function(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...$(t)})}(sr,t)),e.ipv6=t=>e.check(function(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...$(t)})}(ar,t)),e.cidrv4=t=>e.check(function(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...$(t)})}(cr,t)),e.cidrv6=t=>e.check(function(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...$(t)})}(ur,t)),e.e164=t=>e.check(function(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...$(t)})}(lr,t)),e.datetime=t=>e.check($n(t)),e.date=t=>e.check(xn(t)),e.time=t=>e.check(Zn(t)),e.duration=t=>e.check(En(t))});function Gn(e){return function(e,t){return new e({type:"string",...$(t)})}(qn,e)}const Bn=t("ZodStringFormat",(e,t)=>{Ve.init(e,t),Wn.init(e,t)}),Kn=t("ZodEmail",(e,t)=>{qe.init(e,t),Bn.init(e,t)}),Yn=t("ZodGUID",(e,t)=>{Le.init(e,t),Bn.init(e,t)}),Xn=t("ZodUUID",(e,t)=>{We.init(e,t),Bn.init(e,t)}),Hn=t("ZodURL",(e,t)=>{Ge.init(e,t),Bn.init(e,t)}),Qn=t("ZodEmoji",(e,t)=>{Be.init(e,t),Bn.init(e,t)}),er=t("ZodNanoID",(e,t)=>{Ke.init(e,t),Bn.init(e,t)}),tr=t("ZodCUID",(e,t)=>{Ye.init(e,t),Bn.init(e,t)}),nr=t("ZodCUID2",(e,t)=>{Xe.init(e,t),Bn.init(e,t)}),rr=t("ZodULID",(e,t)=>{He.init(e,t),Bn.init(e,t)}),or=t("ZodXID",(e,t)=>{Qe.init(e,t),Bn.init(e,t)}),ir=t("ZodKSUID",(e,t)=>{et.init(e,t),Bn.init(e,t)}),sr=t("ZodIPv4",(e,t)=>{it.init(e,t),Bn.init(e,t)}),ar=t("ZodIPv6",(e,t)=>{st.init(e,t),Bn.init(e,t)}),cr=t("ZodCIDRv4",(e,t)=>{at.init(e,t),Bn.init(e,t)}),ur=t("ZodCIDRv6",(e,t)=>{ct.init(e,t),Bn.init(e,t)}),dr=t("ZodBase64",(e,t)=>{dt.init(e,t),Bn.init(e,t)}),pr=t("ZodBase64URL",(e,t)=>{pt.init(e,t),Bn.init(e,t)}),lr=t("ZodE164",(e,t)=>{lt.init(e,t),Bn.init(e,t)}),fr=t("ZodJWT",(e,t)=>{ft.init(e,t),Bn.init(e,t)}),hr=t("ZodNumber",(e,t)=>{ht.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n)=>{const r=n,{minimum:o,maximum:i,format:s,multipleOf:a,exclusiveMaximum:c,exclusiveMinimum:u}=e._zod.bag;"string"==typeof s&&s.includes("int")?r.type="integer":r.type="number","number"==typeof u&&("draft-04"===t.target||"openapi-3.0"===t.target?(r.minimum=u,r.exclusiveMinimum=!0):r.exclusiveMinimum=u),"number"==typeof o&&(r.minimum=o,"number"==typeof u&&"draft-04"!==t.target&&(u>=o?delete r.minimum:delete r.exclusiveMinimum)),"number"==typeof c&&("draft-04"===t.target||"openapi-3.0"===t.target?(r.maximum=c,r.exclusiveMaximum=!0):r.exclusiveMaximum=c),"number"==typeof i&&(r.maximum=i,"number"==typeof c&&"draft-04"!==t.target&&(c<=i?delete r.maximum:delete r.exclusiveMaximum)),"number"==typeof a&&(r.multipleOf=a)})(e,t,n),e.gt=(t,n)=>e.check(an(t,n)),e.gte=(t,n)=>e.check(cn(t,n)),e.min=(t,n)=>e.check(cn(t,n)),e.lt=(t,n)=>e.check(on(t,n)),e.lte=(t,n)=>e.check(sn(t,n)),e.max=(t,n)=>e.check(sn(t,n)),e.int=t=>e.check(gr(t)),e.safe=t=>e.check(gr(t)),e.positive=t=>e.check(an(0,t)),e.nonnegative=t=>e.check(cn(0,t)),e.negative=t=>e.check(on(0,t)),e.nonpositive=t=>e.check(sn(0,t)),e.multipleOf=(t,n)=>e.check(un(t,n)),e.step=(t,n)=>e.check(un(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 mr(e){return function(e,t){return new e({type:"number",checks:[],...$(t)})}(hr,e)}const yr=t("ZodNumberFormat",(e,t)=>{mt.init(e,t),hr.init(e,t)});function gr(e){return function(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...$(t)})}(yr,e)}const vr=t("ZodBoolean",(e,t)=>{yt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t,n)=>{n.type="boolean"})(0,0,t)});function _r(e){return function(e,t){return new e({type:"boolean",...$(t)})}(vr,e)}const zr=t("ZodAny",(e,t)=>{gt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(e,t,n)=>{}});const br=t("ZodUnknown",(e,t)=>{vt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(e,t,n)=>{}});function wr(){return new br({type:"unknown"})}const kr=t("ZodNever",(e,t)=>{_t.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(e,t,n)=>((e,t,n)=>{n.not={}})(0,0,t)});function $r(e){return function(e,t){return new e({type:"never",...$(t)})}(kr,e)}const Or=t("ZodArray",(e,t)=>{bt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=n,i=e._zod.def,{minimum:s,maximum:a}=e._zod.bag;"number"==typeof s&&(o.minItems=s),"number"==typeof a&&(o.maxItems=a),o.type="array",o.items=yn(i.element,t,{...r,path:[...r.path,"items"]})})(e,t,n,r),e.element=t.element,e.min=(t,n)=>e.check(pn(t,n)),e.nonempty=t=>e.check(pn(1,t)),e.max=(t,n)=>e.check(dn(t,n)),e.length=(t,n)=>e.check(ln(t,n)),e.unwrap=()=>e.element});function xr(e,t){return function(e,t,n){return new e({type:"array",element:t,...$(n)})}(Or,e,t)}const Sr=t("ZodObject",(e,t)=>{xt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=n,i=e._zod.def;o.type="object",o.properties={};const s=i.shape;for(const e in s)o.properties[e]=yn(s[e],t,{...r,path:[...r.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&&(o.required=Array.from(c)),"never"===i.catchall?._zod.def.type?o.additionalProperties=!1:i.catchall?i.catchall&&(o.additionalProperties=yn(i.catchall,t,{...r,path:[...r.path,"additionalProperties"]})):"output"===t.io&&(o.additionalProperties=!1)})(e,t,n,r),l(e,"shape",()=>t.shape),e.keyof=()=>Fr(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:wr()}),e.loose=()=>e.clone({...e._zod.def,catchall:wr()}),e.strict=()=>e.clone({...e._zod.def,catchall:$r()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>function(e,t){if(!_(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 r=h(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return f(this,"shape",n),n}});return k(e,r)}(e,t),e.safeExtend=t=>function(e,t){if(!_(t))throw new Error("Invalid input to safeExtend: expected a plain object");const n=h(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t};return f(this,"shape",n),n}});return k(e,n)}(e,t),e.merge=t=>function(e,t){const n=h(e._zod.def,{get shape(){const n={...e._zod.def.shape,...t._zod.def.shape};return f(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:[]});return k(e,n)}(e,t),e.pick=t=>function(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");return k(e,h(e._zod.def,{get shape(){const e={};for(const r in t){if(!(r in n.shape))throw new Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return f(this,"shape",e),e},checks:[]}))}(e,t),e.omit=t=>function(e,t){const n=e._zod.def,r=n.checks;if(r&&r.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const o=h(e._zod.def,{get shape(){const r={...e._zod.def.shape};for(const e in t){if(!(e in n.shape))throw new Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return f(this,"shape",r),r},checks:[]});return k(e,o)}(e,t),e.partial=(...t)=>function(e,t,n){const r=t._zod.def.checks;if(r&&r.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const o=h(t._zod.def,{get shape(){const r=t._zod.def.shape,o={...r};if(n)for(const t in n){if(!(t in r))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(o[t]=e?new e({type:"optional",innerType:r[t]}):r[t])}else for(const t in r)o[t]=e?new e({type:"optional",innerType:r[t]}):r[t];return f(this,"shape",o),o},checks:[]});return k(t,o)}(Jr,e,t[0]),e.required=(...t)=>function(e,t,n){const r=h(t._zod.def,{get shape(){const r=t._zod.def.shape,o={...r};if(n)for(const t in n){if(!(t in o))throw new Error(`Unrecognized key: "${t}"`);n[t]&&(o[t]=new e({type:"nonoptional",innerType:r[t]}))}else for(const t in r)o[t]=new e({type:"nonoptional",innerType:r[t]});return f(this,"shape",o),o}});return k(t,r)}(Wr,e,t[0])});function Zr(e,t){const n={type:"object",shape:e??{},...$(t)};return new Sr(n)}const Tr=t("ZodUnion",(e,t)=>{Zt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def,i=!1===o.inclusive,s=o.options.map((e,n)=>yn(e,t,{...r,path:[...r.path,i?"oneOf":"anyOf",n]}));i?n.oneOf=s:n.anyOf=s})(e,t,n,r),e.options=t.options});const Er=t("ZodIntersection",(e,t)=>{Tt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def,i=yn(o.left,t,{...r,path:[...r.path,"allOf",0]}),s=yn(o.right,t,{...r,path:[...r.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,r)});const Ir=t("ZodTuple",(e,t)=>{Nt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=n,i=e._zod.def;o.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)=>yn(e,t,{...r,path:[...r.path,s,n]})),u=i.rest?yn(i.rest,t,{...r,path:[...r.path,a,..."openapi-3.0"===t.target?[i.items.length]:[]]}):null;"draft-2020-12"===t.target?(o.prefixItems=c,u&&(o.items=u)):"openapi-3.0"===t.target?(o.items={anyOf:c},u&&o.items.anyOf.push(u),o.minItems=c.length,u||(o.maxItems=c.length)):(o.items=c,u&&(o.additionalItems=u));const{minimum:d,maximum:p}=e._zod.bag;"number"==typeof d&&(o.minItems=d),"number"==typeof p&&(o.maxItems=p)})(e,t,n,r),e.rest=t=>e.clone({...e._zod.def,rest:t})});function Nr(e,t,n){const r=t instanceof De;return new Ir({type:"tuple",items:e,rest:r?t:null,...$(r?n:t)})}const Pr=t("ZodRecord",(e,t)=>{At.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=n,i=e._zod.def;o.type="object";const s=i.keyType,a=s._zod.bag,c=a?.patterns;if("loose"===i.mode&&c&&c.size>0){const e=yn(i.valueType,t,{...r,path:[...r.path,"patternProperties","*"]});o.patternProperties={};for(const t of c)o.patternProperties[t.source]=e}else"draft-07"!==t.target&&"draft-2020-12"!==t.target||(o.propertyNames=yn(i.keyType,t,{...r,path:[...r.path,"propertyNames"]})),o.additionalProperties=yn(i.valueType,t,{...r,path:[...r.path,"additionalProperties"]});const u=s._zod.values;if(u){const e=[...u].filter(e=>"string"==typeof e||"number"==typeof e);e.length>0&&(o.required=e)}})(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function Ar(e,t,n){return new Pr({type:"record",keyType:e,valueType:t,...$(n)})}const jr=t("ZodEnum",(e,t)=>{jt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n)=>{const r=s(e._zod.def.entries);r.every(e=>"number"==typeof e)&&(n.type="number"),r.every(e=>"string"==typeof e)&&(n.type="string"),n.enum=r})(e,0,n),e.enum=t.entries,e.options=Object.values(t.entries);const n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{const o={};for(const r of e){if(!n.has(r))throw new Error(`Key ${r} not found in enum`);o[r]=t.entries[r]}return new jr({...t,checks:[],...$(r),entries:o})},e.exclude=(e,r)=>{const o={...t.entries};for(const t of e){if(!n.has(t))throw new Error(`Key ${t} not found in enum`);delete o[t]}return new jr({...t,checks:[],...$(r),entries:o})}});function Fr(e,t){const n=Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e;return new jr({type:"enum",entries:n,...$(t)})}const Rr=t("ZodTransform",(e,t)=>{Ft.init(e,t),Ln.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=r=>{if("string"==typeof r)n.issues.push(I(r,n.value,t));else{const t=r;t.fatal&&(t.continue=!1),t.code??(t.code="custom"),t.input??(t.input=n.value),t.inst??(t.inst=e),n.issues.push(I(t))}};const i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});const Jr=t("ZodOptional",(e,t)=>{Jt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wn(e,t,0,r),e.unwrap=()=>e._zod.def.innerType});function Cr(e){return new Jr({type:"optional",innerType:e})}const Ur=t("ZodExactOptional",(e,t)=>{Ct.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wn(e,t,0,r),e.unwrap=()=>e._zod.def.innerType});const Dr=t("ZodNullable",(e,t)=>{Ut.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def,i=yn(o.innerType,t,r),s=t.seen.get(e);"openapi-3.0"===t.target?(s.ref=o.innerType,n.nullable=!0):n.anyOf=[i,{type:"null"}]})(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Mr(e){return new Dr({type:"nullable",innerType:e})}const Vr=t("ZodDefault",(e,t)=>{Dt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def;yn(o.innerType,t,r),t.seen.get(e).ref=o.innerType,n.default=JSON.parse(JSON.stringify(o.defaultValue))})(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});const Lr=t("ZodPrefault",(e,t)=>{Vt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def;yn(o.innerType,t,r),t.seen.get(e).ref=o.innerType,"input"===t.io&&(n._prefault=JSON.parse(JSON.stringify(o.defaultValue)))})(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});const Wr=t("ZodNonOptional",(e,t)=>{Lt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def;yn(o.innerType,t,r),t.seen.get(e).ref=o.innerType})(e,t,0,r),e.unwrap=()=>e._zod.def.innerType});const qr=t("ZodCatch",(e,t)=>{qt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def;let i;yn(o.innerType,t,r),t.seen.get(e).ref=o.innerType;try{i=o.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=i})(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});const Gr=t("ZodPipe",(e,t)=>{Gt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def,i="input"===t.io?"transform"===o.in._zod.def.type?o.out:o.in:o.out;yn(i,t,r),t.seen.get(e).ref=i})(e,t,0,r),e.in=t.in,e.out=t.out});function Br(e,t){return new Gr({type:"pipe",in:e,out:t})}const Kr=t("ZodReadonly",(e,t)=>{Kt.init(e,t),Ln.init(e,t),e._zod.processJSONSchema=(t,n,r)=>((e,t,n,r)=>{const o=e._zod.def;yn(o.innerType,t,r),t.seen.get(e).ref=o.innerType,n.readOnly=!0})(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});const Yr=t("ZodFunction",(e,t)=>{Xt.init(e,t),Ln.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 Xr(e){return new Yr({type:"function",input:Array.isArray(e?.input)?Nr(e?.input):xr(wr()),output:wr()})}const Hr=t("ZodCustom",(e,t)=>{Ht.init(e,t),Ln.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 Qr=Zr({apiKey:Gn().min(1,"API key is required"),apiUrl:Gn().url().default("https://api.glassnode.com"),logger:Xr().optional(),fetch:Xr().optional(),maxRetries:mr().int().nonnegative().default(0),retryDelay:mr().int().positive().default(1e3)}),eo={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 to extends Error{constructor(e,t){var n;super(`API request failed (${e}): ${null!==(n=eo[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 no=Fr(["ccdata","coinmarketcap","coingecko"]),ro=Ar(no,Gn().optional()),oo=Zr({blockchain:Gn(),address:Gn(),decimals:mr().int().nonnegative(),on_chain_support:_r()}),io=Zr({id:Gn(),symbol:Gn(),name:Gn(),asset_type:Gn(),external_ids:ro,blockchains:xr(oo)}),so=xr(io),ao=Fr(["free","tier1","tier2","tier3","tier4","tier5"]),co=Fr(["average","sum","count","percentage","ratio"]),uo=Zr({name:Gn().optional(),short_name:Gn().optional(),group:Gn().optional(),tags:xr(Gn()).optional(),description:Ar(Gn(),Gn()).optional(),data_sharing_group:Gn().optional()}),po=Zr({path:Gn(),tier:mr().int().nonnegative(),modified:mr().optional().transform(e=>e?new Date(1e3*e):void 0),is_pit:_r().optional(),bulk_supported:_r().optional(),timerange:Zr({min:mr(),max:mr()}).optional(),refs:Zr({docs:Gn().optional(),studio:Gn().optional(),metric_variant:Zr({base:Gn().optional(),bulk:Gn().optional(),pit:Gn().optional()}).optional()}),queried:Ar(Gn(),new zr({type:"any"})),parameters:Ar(Gn(),xr(Gn())),descriptors:uo.optional()}),lo=po,fo=xr(Gn().startsWith("/")),ho=Zr({a:Gn(),v:mr(),network:Gn().optional()}),mo=xr(Zr({t:mr(),bulk:xr(ho)}));class yo{constructor(e){var t;const n=Qr.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(t){return e(this,arguments,void 0,function*(e,t={}){var n,r;const o=new URLSearchParams(Object.assign(Object.assign({},t),{api_key:this.apiKey})),i=`${this.apiUrl}${e}?${o}`;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===(r=this.logger)||void 0===r||r.call(this,"API call:",i);try{const t=yield this.fetchFn(i);if(!t.ok){const n=new to(t.status,t.statusText);if(n.isRetryable&&e<this.maxRetries){s=n;continue}throw n}return yield t.json()}catch(t){if(t instanceof to)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 e(this,void 0,void 0,function*(){const e=yield this.request("/v1/metadata/assets");return so.parse(e.data)})}getMetricMetadata(t){return e(this,arguments,void 0,function*(e,t={}){const n=yield this.request("/v1/metadata/metric",Object.assign({path:e},t));return lo.parse(n)})}getMetricList(){return e(this,void 0,void 0,function*(){const e=yield this.request("/v1/metadata/metrics");return fo.parse(e)})}callMetric(t){return e(this,arguments,void 0,function*(e,t={}){return yield this.request("/v1/metrics"+e,Object.assign(Object.assign({},t),{f:"json"}))})}callBulkMetric(t){return e(this,arguments,void 0,function*(e,t={}){const n=yield this.request("/v1/metrics"+e+"/bulk",Object.assign(Object.assign({},t),{f:"json"}));return mo.parse(n.data)})}}export{oo as AssetBlockchainSchema,so as AssetMetadataResponseSchema,io as AssetMetadataSchema,ho as BulkEntrySchema,mo as BulkResponseSchema,no as ExternalIdSourceSchema,ro as ExternalIdsSchema,yo as GlassnodeAPI,to as GlassnodeApiError,Qr as GlassnodeConfigSchema,co as MetricDataTypeSchema,uo as MetricDescriptorsSchema,fo as MetricListResponseSchema,lo as MetricMetadataResponseSchema,po as MetricMetadataSchema,ao as MetricTierSchema};
|
|
2
|
+
//# sourceMappingURL=glassnode-api.esm.min.js.map
|