@skedulo/pulse-solution-services 0.0.9 → 0.0.10

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/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.0.10] - 2025-02-03
4
+ ### Changed
5
+ - Minor changes
6
+
3
7
  ## [v0.0.9] - 2025-02-28
4
8
  ### Added
5
9
  - Lock Service, Unique Batch
@@ -1 +1 @@
1
- "use strict";var __decorate=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},__metadata=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__awaiter=this&&this.__awaiter||function(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())}))};Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseClient=void 0;const request_header_constants_1=require("../core/request-header-constants"),logging_1=require("../logging");class BaseClient{constructor(e,t={}){this.config=e,this.executionOptions=t}performRequest(e){return __awaiter(this,arguments,void 0,(function*({method:e="GET",endpoint:t,headers:n={},body:r,queryParams:o},i=this.executionOptions){try{const s=Object.assign(Object.assign({},this.getHeaders(i)),n),a=this.buildUrl(t,o),c=yield fetch(a,{method:e,headers:s,body:r&&"GET"!==e?JSON.stringify(r):void 0});let u;const d=c.headers.get("content-type");if(d&&d.includes("application/json")?(u=yield c.json(),u.result&&(u=u.result)):u=yield c.text(),!c.ok)throw new Error(`HTTP error! Status: ${c.status}. Response: ${JSON.stringify(u)}`);return u}catch(e){throw this.handleException(e),e}}))}getHeaders(e){var t,n;const r={Authorization:`Bearer ${this.config.apiToken}`,"Content-Type":"application/json"},o=e.requestSource||(null===(t=this.executionOptions)||void 0===t?void 0:t.requestSource),i=e.userAgent||(null===(n=this.executionOptions)||void 0===n?void 0:n.userAgent);return o&&(r[request_header_constants_1.REQUEST_HEADERS.X_SKEDULO_SOURCE]=o),i&&(r[request_header_constants_1.REQUEST_HEADERS.USER_AGENT]=i),r}buildUrl(e,t){const n=new URL(`${this.config.apiServer}/${e}`);return t&&Object.entries(t).forEach((([e,t])=>{n.searchParams.append(e,t)})),n.toString()}handleException(e){}}exports.BaseClient=BaseClient,__decorate([(0,logging_1.LogMethod)(),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,Object]),__metadata("design:returntype",Promise)],BaseClient.prototype,"performRequest",null);
1
+ "use strict";var __decorate=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},__metadata=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__awaiter=this&&this.__awaiter||function(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())}))};Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseClient=void 0;const request_header_constants_1=require("../core/request-header-constants"),logging_1=require("../logging");class BaseClient{constructor(e,t={}){this.config=e,this.executionOptions=t}performRequest(e){return __awaiter(this,arguments,void 0,(function*({method:e="GET",endpoint:t,headers:n={},body:r,queryParams:o},i=this.executionOptions){try{const s=Object.assign(Object.assign({},this.getHeaders(i)),n),a=this.buildUrl(t,o),c=yield fetch(a,{method:e,headers:s,body:r&&"GET"!==e?JSON.stringify(r):void 0});let u;const d=c.headers.get("content-type");if(d&&d.includes("application/json")?(u=yield c.json(),u.result&&(u=u.result)):u=yield c.text(),!c.ok)throw new Error(`HTTP error! Status: ${c.status}. Response: ${JSON.stringify(u)}`);return this.handleResponseData(u),u}catch(e){throw this.handleException(e),e}}))}handleResponseData(e){}getHeaders(e){var t,n;const r={Authorization:`Bearer ${this.config.apiToken}`,"Content-Type":"application/json"},o=e.requestSource||(null===(t=this.executionOptions)||void 0===t?void 0:t.requestSource),i=e.userAgent||(null===(n=this.executionOptions)||void 0===n?void 0:n.userAgent);return o&&(r[request_header_constants_1.REQUEST_HEADERS.X_SKEDULO_SOURCE]=o),i&&(r[request_header_constants_1.REQUEST_HEADERS.USER_AGENT]=i),r}buildUrl(e,t){const n=e.startsWith("http")?new URL(e):new URL(`${this.config.apiServer}/${e}`);return t&&Object.entries(t).forEach((([e,t])=>{n.searchParams.append(e,t)})),n.toString()}handleException(e){}}exports.BaseClient=BaseClient,__decorate([(0,logging_1.LogMethod)(),__metadata("design:type",Function),__metadata("design:paramtypes",[Object,Object]),__metadata("design:returntype",Promise)],BaseClient.prototype,"performRequest",null);
@@ -1 +1 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(i,s){function a(t){try{c(r.next(t))}catch(t){s(t)}}function o(t){try{c(r.throw(t))}catch(t){s(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,o)}c((r=r.apply(t,e||[])).next())}))};Object.defineProperty(exports,"__esModule",{value:!0}),exports.GraphQLClient=void 0;const constants_1=require("../constants"),http_1=require("../constants/http"),base_client_1=require("./base-client");class GraphQLClient extends base_client_1.BaseClient{execute(t){return __awaiter(this,arguments,void 0,(function*(t,e={}){return yield this.performRequest({method:http_1.HttpMethod.POST,endpoint:constants_1.TENANT_ENDPOINTS.GRAPHQL,body:{query:t},headers:e})}))}}exports.GraphQLClient=GraphQLClient;
1
+ "use strict";var __awaiter=this&&this.__awaiter||function(t,e,n,r){return new(n||(n=Promise))((function(i,a){function s(t){try{c(r.next(t))}catch(t){a(t)}}function o(t){try{c(r.throw(t))}catch(t){a(t)}}function c(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(s,o)}c((r=r.apply(t,e||[])).next())}))};Object.defineProperty(exports,"__esModule",{value:!0}),exports.GraphQLClient=void 0;const constants_1=require("../constants"),http_1=require("../constants/http"),base_client_1=require("./base-client");class GraphQLClient extends base_client_1.BaseClient{execute(t){return __awaiter(this,arguments,void 0,(function*(t,e={}){return yield this.performRequest({method:http_1.HttpMethod.POST,endpoint:constants_1.TENANT_ENDPOINTS.GRAPHQL,body:{query:t},headers:e})}))}handleResponseData(t){if(!t.data&&t.errors)throw new Error(`GraphQL error: ${JSON.stringify(t.errors)}`)}}exports.GraphQLClient=GraphQLClient;
package/dist/index.d.ts CHANGED
@@ -1,7 +1,5 @@
1
1
  // Generated by dts-bundle-generator v9.5.1
2
2
 
3
- import { z } from 'zod';
4
-
5
3
  /**
6
4
  * Interface representing the structure of metadata for an object.
7
5
  */
@@ -112,7 +110,8 @@ export declare class BaseClient {
112
110
  * @returns {Promise<T>} - The parsed response data.
113
111
  * @throws {Error} - If the request fails or the response is not OK.
114
112
  */
115
- protected performRequest<T = any>({ method, endpoint, headers, body, queryParams }: RequestParams, executionOptions?: Partial<ExecutionOptions>): Promise<T>;
113
+ performRequest<T = any>({ method, endpoint, headers, body, queryParams }: RequestParams, executionOptions?: Partial<ExecutionOptions>): Promise<T>;
114
+ protected handleResponseData(response: Response): void;
116
115
  /**
117
116
  * Constructs the headers for API requests.
118
117
  * @returns {Record<string, string>} - The headers including authorization and content type.
@@ -423,6 +422,7 @@ export declare class GraphQLClient extends BaseClient {
423
422
  * @throws {Error} - If the request fails or if there are errors in the response.
424
423
  */
425
424
  execute(graphqlQuery: string, headers?: Record<string, string>): Promise<GraphQlResponse>;
425
+ protected handleResponseData(responseData: any): void;
426
426
  }
427
427
  /**
428
428
  * OrgPreferencesClient class to handle API requests related to organization preferences.
@@ -1366,28 +1366,14 @@ export declare enum PaginationStrategy {
1366
1366
  */
1367
1367
  export declare const DEFAULT_GRAPH_BATCH_CONFIG: GraphBatchConfig;
1368
1368
  /**
1369
- * Schema validation using `zod`
1369
+ * Configuration options for `GraphBatch`.
1370
1370
  */
1371
- export declare const GraphBatchConfigSchema: z.ZodObject<{
1372
- strategy: z.ZodNativeEnum<typeof PaginationStrategy>;
1373
- batchSize: z.ZodDefault<z.ZodNumber>;
1374
- maxBatches: z.ZodDefault<z.ZodNumber>;
1375
- delaySeconds: z.ZodDefault<z.ZodNumber>;
1376
- }, "strip", z.ZodTypeAny, {
1371
+ export interface GraphBatchConfig {
1377
1372
  strategy: PaginationStrategy;
1378
1373
  batchSize: number;
1379
1374
  maxBatches: number;
1380
1375
  delaySeconds: number;
1381
- }, {
1382
- strategy: PaginationStrategy;
1383
- batchSize?: number | undefined;
1384
- maxBatches?: number | undefined;
1385
- delaySeconds?: number | undefined;
1386
- }>;
1387
- /**
1388
- * Configuration options for `GraphBatch`.
1389
- */
1390
- export type GraphBatchConfig = z.infer<typeof GraphBatchConfigSchema>;
1376
+ }
1391
1377
  /**
1392
1378
  * Merges user-provided config with default values.
1393
1379
  */
@@ -1396,36 +1382,13 @@ export declare function initializeConfig(config: Partial<GraphBatchConfig> | und
1396
1382
  * Default configuration values for `UniqueGraphBatchConfig`.
1397
1383
  */
1398
1384
  export declare const DEFAULT_UNIQUE_GRAPH_BATCH_CONFIG: UniqueGraphBatchConfig;
1399
- /**
1400
- * Schema validation for `UniqueGraphBatchConfig`
1401
- */
1402
- export declare const UniqueGraphBatchConfigSchema: z.ZodObject<z.objectUtil.extendShape<{
1403
- strategy: z.ZodNativeEnum<typeof PaginationStrategy>;
1404
- batchSize: z.ZodDefault<z.ZodNumber>;
1405
- maxBatches: z.ZodDefault<z.ZodNumber>;
1406
- delaySeconds: z.ZodDefault<z.ZodNumber>;
1407
- }, {
1408
- name: z.ZodOptional<z.ZodString>;
1409
- lockTtl: z.ZodOptional<z.ZodNumber>;
1410
- }>, "strip", z.ZodTypeAny, {
1411
- strategy: PaginationStrategy;
1412
- batchSize: number;
1413
- maxBatches: number;
1414
- delaySeconds: number;
1415
- name?: string | undefined;
1416
- lockTtl?: number | undefined;
1417
- }, {
1418
- strategy: PaginationStrategy;
1419
- name?: string | undefined;
1420
- batchSize?: number | undefined;
1421
- maxBatches?: number | undefined;
1422
- delaySeconds?: number | undefined;
1423
- lockTtl?: number | undefined;
1424
- }>;
1425
1385
  /**
1426
1386
  * Configuration options for `UniqueGraphBatch`.
1427
1387
  */
1428
- export type UniqueGraphBatchConfig = z.infer<typeof UniqueGraphBatchConfigSchema>;
1388
+ export interface UniqueGraphBatchConfig extends GraphBatchConfig {
1389
+ name?: string;
1390
+ lockTtl?: number;
1391
+ }
1429
1392
  /**
1430
1393
  * Merges user-provided config with default values for `UniqueGraphBatch`.
1431
1394
  */
@@ -1,32 +1,17 @@
1
- import { z } from "zod";
2
1
  import { PaginationStrategy } from "../pagination-strategy";
3
2
  /**
4
3
  * Default configuration values for `GraphBatchConfig`.
5
4
  */
6
5
  export declare const DEFAULT_GRAPH_BATCH_CONFIG: GraphBatchConfig;
7
6
  /**
8
- * Schema validation using `zod`
7
+ * Configuration options for `GraphBatch`.
9
8
  */
10
- export declare const GraphBatchConfigSchema: z.ZodObject<{
11
- strategy: z.ZodNativeEnum<typeof PaginationStrategy>;
12
- batchSize: z.ZodDefault<z.ZodNumber>;
13
- maxBatches: z.ZodDefault<z.ZodNumber>;
14
- delaySeconds: z.ZodDefault<z.ZodNumber>;
15
- }, "strip", z.ZodTypeAny, {
9
+ export interface GraphBatchConfig {
16
10
  strategy: PaginationStrategy;
17
11
  batchSize: number;
18
12
  maxBatches: number;
19
13
  delaySeconds: number;
20
- }, {
21
- strategy: PaginationStrategy;
22
- batchSize?: number | undefined;
23
- maxBatches?: number | undefined;
24
- delaySeconds?: number | undefined;
25
- }>;
26
- /**
27
- * Configuration options for `GraphBatch`.
28
- */
29
- export type GraphBatchConfig = z.infer<typeof GraphBatchConfigSchema>;
14
+ }
30
15
  /**
31
16
  * Merges user-provided config with default values.
32
17
  */
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.GraphBatchConfigSchema=exports.DEFAULT_GRAPH_BATCH_CONFIG=void 0,exports.initializeConfig=initializeConfig;const zod_1=require("zod"),pagination_strategy_1=require("../pagination-strategy");function initializeConfig(e){return exports.GraphBatchConfigSchema.parse(Object.assign(Object.assign({},exports.DEFAULT_GRAPH_BATCH_CONFIG),e))}exports.DEFAULT_GRAPH_BATCH_CONFIG={strategy:pagination_strategy_1.PaginationStrategy.NONE,batchSize:200,maxBatches:100,delaySeconds:0},exports.GraphBatchConfigSchema=zod_1.z.object({strategy:zod_1.z.nativeEnum(pagination_strategy_1.PaginationStrategy),batchSize:zod_1.z.number().min(1).max(200).default(200),maxBatches:zod_1.z.number().min(1).max(500).default(100),delaySeconds:zod_1.z.number().min(0).max(15).default(0)});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_GRAPH_BATCH_CONFIG=void 0,exports.initializeConfig=initializeConfig;const pagination_strategy_1=require("../pagination-strategy");function initializeConfig(t){var a,e,i,n;return{strategy:null!==(a=null==t?void 0:t.strategy)&&void 0!==a?a:exports.DEFAULT_GRAPH_BATCH_CONFIG.strategy,batchSize:Math.min(Math.max(null!==(e=null==t?void 0:t.batchSize)&&void 0!==e?e:exports.DEFAULT_GRAPH_BATCH_CONFIG.batchSize,1),200),maxBatches:Math.min(Math.max(null!==(i=null==t?void 0:t.maxBatches)&&void 0!==i?i:exports.DEFAULT_GRAPH_BATCH_CONFIG.maxBatches,1),500),delaySeconds:Math.min(Math.max(null!==(n=null==t?void 0:t.delaySeconds)&&void 0!==n?n:exports.DEFAULT_GRAPH_BATCH_CONFIG.delaySeconds,0),15)}}exports.DEFAULT_GRAPH_BATCH_CONFIG={strategy:pagination_strategy_1.PaginationStrategy.NONE,batchSize:200,maxBatches:100,delaySeconds:0};
@@ -1,38 +1,15 @@
1
- import { z } from "zod";
1
+ import { GraphBatchConfig } from "./graph-batch-config";
2
2
  /**
3
3
  * Default configuration values for `UniqueGraphBatchConfig`.
4
4
  */
5
5
  export declare const DEFAULT_UNIQUE_GRAPH_BATCH_CONFIG: UniqueGraphBatchConfig;
6
- /**
7
- * Schema validation for `UniqueGraphBatchConfig`
8
- */
9
- export declare const UniqueGraphBatchConfigSchema: z.ZodObject<z.objectUtil.extendShape<{
10
- strategy: z.ZodNativeEnum<typeof import("..").PaginationStrategy>;
11
- batchSize: z.ZodDefault<z.ZodNumber>;
12
- maxBatches: z.ZodDefault<z.ZodNumber>;
13
- delaySeconds: z.ZodDefault<z.ZodNumber>;
14
- }, {
15
- name: z.ZodOptional<z.ZodString>;
16
- lockTtl: z.ZodOptional<z.ZodNumber>;
17
- }>, "strip", z.ZodTypeAny, {
18
- strategy: import("..").PaginationStrategy;
19
- batchSize: number;
20
- maxBatches: number;
21
- delaySeconds: number;
22
- name?: string | undefined;
23
- lockTtl?: number | undefined;
24
- }, {
25
- strategy: import("..").PaginationStrategy;
26
- name?: string | undefined;
27
- batchSize?: number | undefined;
28
- maxBatches?: number | undefined;
29
- delaySeconds?: number | undefined;
30
- lockTtl?: number | undefined;
31
- }>;
32
6
  /**
33
7
  * Configuration options for `UniqueGraphBatch`.
34
8
  */
35
- export type UniqueGraphBatchConfig = z.infer<typeof UniqueGraphBatchConfigSchema>;
9
+ export interface UniqueGraphBatchConfig extends GraphBatchConfig {
10
+ name?: string;
11
+ lockTtl?: number;
12
+ }
36
13
  /**
37
14
  * Merges user-provided config with default values for `UniqueGraphBatch`.
38
15
  */
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UniqueGraphBatchConfigSchema=exports.DEFAULT_UNIQUE_GRAPH_BATCH_CONFIG=void 0,exports.initializeUniqueConfig=initializeUniqueConfig;const zod_1=require("zod"),graph_batch_config_1=require("./graph-batch-config");function initializeUniqueConfig(e){return exports.UniqueGraphBatchConfigSchema.parse(Object.assign(Object.assign({},exports.DEFAULT_UNIQUE_GRAPH_BATCH_CONFIG),e))}exports.DEFAULT_UNIQUE_GRAPH_BATCH_CONFIG=Object.assign(Object.assign({},graph_batch_config_1.DEFAULT_GRAPH_BATCH_CONFIG),{lockTtl:96e4,name:"UNIQUE-BATCH"}),exports.UniqueGraphBatchConfigSchema=graph_batch_config_1.GraphBatchConfigSchema.extend({name:zod_1.z.string().optional(),lockTtl:zod_1.z.number().min(1e3).optional()});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_UNIQUE_GRAPH_BATCH_CONFIG=void 0,exports.initializeUniqueConfig=initializeUniqueConfig;const graph_batch_config_1=require("./graph-batch-config");function initializeUniqueConfig(i){return Object.assign(Object.assign(Object.assign({},exports.DEFAULT_UNIQUE_GRAPH_BATCH_CONFIG),i),{lockTtl:void 0!==(null==i?void 0:i.lockTtl)?Math.max(i.lockTtl,1e3):exports.DEFAULT_UNIQUE_GRAPH_BATCH_CONFIG.lockTtl})}exports.DEFAULT_UNIQUE_GRAPH_BATCH_CONFIG=Object.assign(Object.assign({},graph_batch_config_1.DEFAULT_GRAPH_BATCH_CONFIG),{lockTtl:96e4,name:"UNIQUE-BATCH"});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skedulo/pulse-solution-services",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "description": "A collection of services and utilities to support solution development on the Pulse platform.",
5
5
  "author": "Skedulo",
6
6
  "license": "MIT",
@@ -44,7 +44,6 @@
44
44
  "typescript": "~5.6.3",
45
45
  "utc": "^0.1.0",
46
46
  "uuid": "8",
47
- "winston": "^3.17.0",
48
- "zod": "^3.24.2"
47
+ "winston": "^3.17.0"
49
48
  }
50
49
  }
package/yarn.lock CHANGED
@@ -3039,9 +3039,9 @@ type-fest@^0.21.3:
3039
3039
  integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
3040
3040
 
3041
3041
  typescript@>=5.0.2:
3042
- version "5.7.3"
3043
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e"
3044
- integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==
3042
+ version "5.8.2"
3043
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4"
3044
+ integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==
3045
3045
 
3046
3046
  typescript@~5.5.2:
3047
3047
  version "5.5.4"
@@ -3225,8 +3225,3 @@ yocto-queue@^0.1.0:
3225
3225
  version "0.1.0"
3226
3226
  resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
3227
3227
  integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
3228
-
3229
- zod@^3.24.2:
3230
- version "3.24.2"
3231
- resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.2.tgz#8efa74126287c675e92f46871cfc8d15c34372b3"
3232
- integrity sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==