@llmgateway/ai-sdk-provider 2.5.0 → 3.0.0
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 +2 -1
- package/dist/index.d.mts +24 -45
- package/dist/index.d.ts +24 -45
- package/dist/index.js +1456 -171
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1456 -169
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.d.mts +25 -46
- package/dist/internal/index.d.ts +25 -46
- package/dist/internal/index.js +1484 -189
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +1484 -187
- package/dist/internal/index.mjs.map +1 -1
- package/package.json +5 -5
package/dist/index.mjs
CHANGED
|
@@ -17,12 +17,25 @@ var __spreadValues = (a, b) => {
|
|
|
17
17
|
return a;
|
|
18
18
|
};
|
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __objRest = (source, exclude) => {
|
|
21
|
+
var target = {};
|
|
22
|
+
for (var prop in source)
|
|
23
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
24
|
+
target[prop] = source[prop];
|
|
25
|
+
if (source != null && __getOwnPropSymbols)
|
|
26
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
27
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
28
|
+
target[prop] = source[prop];
|
|
29
|
+
}
|
|
30
|
+
return target;
|
|
31
|
+
};
|
|
20
32
|
|
|
21
|
-
// node_modules/.pnpm/@ai-sdk+provider@
|
|
33
|
+
// node_modules/.pnpm/@ai-sdk+provider@3.0.2/node_modules/@ai-sdk/provider/dist/index.mjs
|
|
22
34
|
var marker = "vercel.ai.error";
|
|
23
35
|
var symbol = Symbol.for(marker);
|
|
24
36
|
var _a;
|
|
25
|
-
var
|
|
37
|
+
var _b;
|
|
38
|
+
var AISDKError = class _AISDKError extends (_b = Error, _a = symbol, _b) {
|
|
26
39
|
/**
|
|
27
40
|
* Creates an AI SDK Error.
|
|
28
41
|
*
|
|
@@ -32,13 +45,13 @@ var _AISDKError = class _AISDKError2 extends Error {
|
|
|
32
45
|
* @param {unknown} [params.cause] - The underlying cause of the error.
|
|
33
46
|
*/
|
|
34
47
|
constructor({
|
|
35
|
-
name:
|
|
48
|
+
name: name142,
|
|
36
49
|
message,
|
|
37
50
|
cause
|
|
38
51
|
}) {
|
|
39
52
|
super(message);
|
|
40
53
|
this[_a] = true;
|
|
41
|
-
this.name =
|
|
54
|
+
this.name = name142;
|
|
42
55
|
this.cause = cause;
|
|
43
56
|
}
|
|
44
57
|
/**
|
|
@@ -47,20 +60,19 @@ var _AISDKError = class _AISDKError2 extends Error {
|
|
|
47
60
|
* @returns {boolean} True if the error is an AI SDK Error, false otherwise.
|
|
48
61
|
*/
|
|
49
62
|
static isInstance(error) {
|
|
50
|
-
return
|
|
63
|
+
return _AISDKError.hasMarker(error, marker);
|
|
51
64
|
}
|
|
52
|
-
static hasMarker(error,
|
|
53
|
-
const markerSymbol = Symbol.for(
|
|
65
|
+
static hasMarker(error, marker152) {
|
|
66
|
+
const markerSymbol = Symbol.for(marker152);
|
|
54
67
|
return error != null && typeof error === "object" && markerSymbol in error && typeof error[markerSymbol] === "boolean" && error[markerSymbol] === true;
|
|
55
68
|
}
|
|
56
69
|
};
|
|
57
|
-
_a = symbol;
|
|
58
|
-
var AISDKError = _AISDKError;
|
|
59
70
|
var name = "AI_APICallError";
|
|
60
71
|
var marker2 = `vercel.ai.error.${name}`;
|
|
61
72
|
var symbol2 = Symbol.for(marker2);
|
|
62
73
|
var _a2;
|
|
63
|
-
var
|
|
74
|
+
var _b2;
|
|
75
|
+
var APICallError = class extends (_b2 = AISDKError, _a2 = symbol2, _b2) {
|
|
64
76
|
constructor({
|
|
65
77
|
message,
|
|
66
78
|
url,
|
|
@@ -90,12 +102,12 @@ var APICallError = class extends AISDKError {
|
|
|
90
102
|
return AISDKError.hasMarker(error, marker2);
|
|
91
103
|
}
|
|
92
104
|
};
|
|
93
|
-
_a2 = symbol2;
|
|
94
105
|
var name2 = "AI_EmptyResponseBodyError";
|
|
95
106
|
var marker3 = `vercel.ai.error.${name2}`;
|
|
96
107
|
var symbol3 = Symbol.for(marker3);
|
|
97
108
|
var _a3;
|
|
98
|
-
var
|
|
109
|
+
var _b3;
|
|
110
|
+
var EmptyResponseBodyError = class extends (_b3 = AISDKError, _a3 = symbol3, _b3) {
|
|
99
111
|
// used in isInstance
|
|
100
112
|
constructor({ message = "Empty response body" } = {}) {
|
|
101
113
|
super({ name: name2, message });
|
|
@@ -105,7 +117,6 @@ var EmptyResponseBodyError = class extends AISDKError {
|
|
|
105
117
|
return AISDKError.hasMarker(error, marker3);
|
|
106
118
|
}
|
|
107
119
|
};
|
|
108
|
-
_a3 = symbol3;
|
|
109
120
|
function getErrorMessage(error) {
|
|
110
121
|
if (error == null) {
|
|
111
122
|
return "unknown error";
|
|
@@ -122,7 +133,8 @@ var name3 = "AI_InvalidArgumentError";
|
|
|
122
133
|
var marker4 = `vercel.ai.error.${name3}`;
|
|
123
134
|
var symbol4 = Symbol.for(marker4);
|
|
124
135
|
var _a4;
|
|
125
|
-
var
|
|
136
|
+
var _b4;
|
|
137
|
+
var InvalidArgumentError = class extends (_b4 = AISDKError, _a4 = symbol4, _b4) {
|
|
126
138
|
constructor({
|
|
127
139
|
message,
|
|
128
140
|
cause,
|
|
@@ -136,12 +148,12 @@ var InvalidArgumentError = class extends AISDKError {
|
|
|
136
148
|
return AISDKError.hasMarker(error, marker4);
|
|
137
149
|
}
|
|
138
150
|
};
|
|
139
|
-
_a4 = symbol4;
|
|
140
151
|
var name4 = "AI_InvalidPromptError";
|
|
141
152
|
var marker5 = `vercel.ai.error.${name4}`;
|
|
142
153
|
var symbol5 = Symbol.for(marker5);
|
|
143
154
|
var _a5;
|
|
144
|
-
var
|
|
155
|
+
var _b5;
|
|
156
|
+
var InvalidPromptError = class extends (_b5 = AISDKError, _a5 = symbol5, _b5) {
|
|
145
157
|
constructor({
|
|
146
158
|
prompt,
|
|
147
159
|
message,
|
|
@@ -155,12 +167,12 @@ var InvalidPromptError = class extends AISDKError {
|
|
|
155
167
|
return AISDKError.hasMarker(error, marker5);
|
|
156
168
|
}
|
|
157
169
|
};
|
|
158
|
-
_a5 = symbol5;
|
|
159
170
|
var name5 = "AI_InvalidResponseDataError";
|
|
160
171
|
var marker6 = `vercel.ai.error.${name5}`;
|
|
161
172
|
var symbol6 = Symbol.for(marker6);
|
|
162
173
|
var _a6;
|
|
163
|
-
var
|
|
174
|
+
var _b6;
|
|
175
|
+
var InvalidResponseDataError = class extends (_b6 = AISDKError, _a6 = symbol6, _b6) {
|
|
164
176
|
constructor({
|
|
165
177
|
data,
|
|
166
178
|
message = `Invalid response data: ${JSON.stringify(data)}.`
|
|
@@ -173,12 +185,12 @@ var InvalidResponseDataError = class extends AISDKError {
|
|
|
173
185
|
return AISDKError.hasMarker(error, marker6);
|
|
174
186
|
}
|
|
175
187
|
};
|
|
176
|
-
_a6 = symbol6;
|
|
177
188
|
var name6 = "AI_JSONParseError";
|
|
178
189
|
var marker7 = `vercel.ai.error.${name6}`;
|
|
179
190
|
var symbol7 = Symbol.for(marker7);
|
|
180
191
|
var _a7;
|
|
181
|
-
var
|
|
192
|
+
var _b7;
|
|
193
|
+
var JSONParseError = class extends (_b7 = AISDKError, _a7 = symbol7, _b7) {
|
|
182
194
|
constructor({ text, cause }) {
|
|
183
195
|
super({
|
|
184
196
|
name: name6,
|
|
@@ -193,12 +205,12 @@ Error message: ${getErrorMessage(cause)}`,
|
|
|
193
205
|
return AISDKError.hasMarker(error, marker7);
|
|
194
206
|
}
|
|
195
207
|
};
|
|
196
|
-
_a7 = symbol7;
|
|
197
208
|
var name7 = "AI_LoadAPIKeyError";
|
|
198
209
|
var marker8 = `vercel.ai.error.${name7}`;
|
|
199
210
|
var symbol8 = Symbol.for(marker8);
|
|
200
211
|
var _a8;
|
|
201
|
-
var
|
|
212
|
+
var _b8;
|
|
213
|
+
var LoadAPIKeyError = class extends (_b8 = AISDKError, _a8 = symbol8, _b8) {
|
|
202
214
|
// used in isInstance
|
|
203
215
|
constructor({ message }) {
|
|
204
216
|
super({ name: name7, message });
|
|
@@ -208,32 +220,86 @@ var LoadAPIKeyError = class extends AISDKError {
|
|
|
208
220
|
return AISDKError.hasMarker(error, marker8);
|
|
209
221
|
}
|
|
210
222
|
};
|
|
211
|
-
_a8 = symbol8;
|
|
212
223
|
var name8 = "AI_LoadSettingError";
|
|
213
224
|
var marker9 = `vercel.ai.error.${name8}`;
|
|
214
225
|
var symbol9 = Symbol.for(marker9);
|
|
215
226
|
var _a9;
|
|
216
|
-
|
|
227
|
+
var _b9;
|
|
228
|
+
var LoadSettingError = class extends (_b9 = AISDKError, _a9 = symbol9, _b9) {
|
|
229
|
+
// used in isInstance
|
|
230
|
+
constructor({ message }) {
|
|
231
|
+
super({ name: name8, message });
|
|
232
|
+
this[_a9] = true;
|
|
233
|
+
}
|
|
234
|
+
static isInstance(error) {
|
|
235
|
+
return AISDKError.hasMarker(error, marker9);
|
|
236
|
+
}
|
|
237
|
+
};
|
|
217
238
|
var name9 = "AI_NoContentGeneratedError";
|
|
218
239
|
var marker10 = `vercel.ai.error.${name9}`;
|
|
219
240
|
var symbol10 = Symbol.for(marker10);
|
|
220
241
|
var _a10;
|
|
221
|
-
|
|
242
|
+
var _b10;
|
|
243
|
+
var NoContentGeneratedError = class extends (_b10 = AISDKError, _a10 = symbol10, _b10) {
|
|
244
|
+
// used in isInstance
|
|
245
|
+
constructor({
|
|
246
|
+
message = "No content generated."
|
|
247
|
+
} = {}) {
|
|
248
|
+
super({ name: name9, message });
|
|
249
|
+
this[_a10] = true;
|
|
250
|
+
}
|
|
251
|
+
static isInstance(error) {
|
|
252
|
+
return AISDKError.hasMarker(error, marker10);
|
|
253
|
+
}
|
|
254
|
+
};
|
|
222
255
|
var name10 = "AI_NoSuchModelError";
|
|
223
256
|
var marker11 = `vercel.ai.error.${name10}`;
|
|
224
257
|
var symbol11 = Symbol.for(marker11);
|
|
225
258
|
var _a11;
|
|
226
|
-
|
|
259
|
+
var _b11;
|
|
260
|
+
var NoSuchModelError = class extends (_b11 = AISDKError, _a11 = symbol11, _b11) {
|
|
261
|
+
constructor({
|
|
262
|
+
errorName = name10,
|
|
263
|
+
modelId,
|
|
264
|
+
modelType,
|
|
265
|
+
message = `No such ${modelType}: ${modelId}`
|
|
266
|
+
}) {
|
|
267
|
+
super({ name: errorName, message });
|
|
268
|
+
this[_a11] = true;
|
|
269
|
+
this.modelId = modelId;
|
|
270
|
+
this.modelType = modelType;
|
|
271
|
+
}
|
|
272
|
+
static isInstance(error) {
|
|
273
|
+
return AISDKError.hasMarker(error, marker11);
|
|
274
|
+
}
|
|
275
|
+
};
|
|
227
276
|
var name11 = "AI_TooManyEmbeddingValuesForCallError";
|
|
228
277
|
var marker12 = `vercel.ai.error.${name11}`;
|
|
229
278
|
var symbol12 = Symbol.for(marker12);
|
|
230
279
|
var _a12;
|
|
231
|
-
|
|
280
|
+
var _b12;
|
|
281
|
+
var TooManyEmbeddingValuesForCallError = class extends (_b12 = AISDKError, _a12 = symbol12, _b12) {
|
|
282
|
+
constructor(options) {
|
|
283
|
+
super({
|
|
284
|
+
name: name11,
|
|
285
|
+
message: `Too many values for a single embedding call. The ${options.provider} model "${options.modelId}" can only embed up to ${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`
|
|
286
|
+
});
|
|
287
|
+
this[_a12] = true;
|
|
288
|
+
this.provider = options.provider;
|
|
289
|
+
this.modelId = options.modelId;
|
|
290
|
+
this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;
|
|
291
|
+
this.values = options.values;
|
|
292
|
+
}
|
|
293
|
+
static isInstance(error) {
|
|
294
|
+
return AISDKError.hasMarker(error, marker12);
|
|
295
|
+
}
|
|
296
|
+
};
|
|
232
297
|
var name12 = "AI_TypeValidationError";
|
|
233
298
|
var marker13 = `vercel.ai.error.${name12}`;
|
|
234
299
|
var symbol13 = Symbol.for(marker13);
|
|
235
300
|
var _a13;
|
|
236
|
-
var
|
|
301
|
+
var _b13;
|
|
302
|
+
var TypeValidationError = class _TypeValidationError extends (_b13 = AISDKError, _a13 = symbol13, _b13) {
|
|
237
303
|
constructor({ value, cause }) {
|
|
238
304
|
super({
|
|
239
305
|
name: name12,
|
|
@@ -261,16 +327,15 @@ Error message: ${getErrorMessage(cause)}`,
|
|
|
261
327
|
value,
|
|
262
328
|
cause
|
|
263
329
|
}) {
|
|
264
|
-
return
|
|
330
|
+
return _TypeValidationError.isInstance(cause) && cause.value === value ? cause : new _TypeValidationError({ value, cause });
|
|
265
331
|
}
|
|
266
332
|
};
|
|
267
|
-
_a13 = symbol13;
|
|
268
|
-
var TypeValidationError = _TypeValidationError;
|
|
269
333
|
var name13 = "AI_UnsupportedFunctionalityError";
|
|
270
334
|
var marker14 = `vercel.ai.error.${name13}`;
|
|
271
335
|
var symbol14 = Symbol.for(marker14);
|
|
272
336
|
var _a14;
|
|
273
|
-
var
|
|
337
|
+
var _b14;
|
|
338
|
+
var UnsupportedFunctionalityError = class extends (_b14 = AISDKError, _a14 = symbol14, _b14) {
|
|
274
339
|
constructor({
|
|
275
340
|
functionality,
|
|
276
341
|
message = `'${functionality}' functionality not supported.`
|
|
@@ -283,9 +348,16 @@ var UnsupportedFunctionalityError = class extends AISDKError {
|
|
|
283
348
|
return AISDKError.hasMarker(error, marker14);
|
|
284
349
|
}
|
|
285
350
|
};
|
|
286
|
-
_a14 = symbol14;
|
|
287
351
|
|
|
288
|
-
// node_modules/.pnpm
|
|
352
|
+
// node_modules/.pnpm/@ai-sdk+provider-utils@4.0.4_zod@3.25.34/node_modules/@ai-sdk/provider-utils/dist/index.mjs
|
|
353
|
+
import * as z4 from "zod/v4";
|
|
354
|
+
import { ZodFirstPartyTypeKind as ZodFirstPartyTypeKind3 } from "zod/v3";
|
|
355
|
+
import { ZodFirstPartyTypeKind } from "zod/v3";
|
|
356
|
+
import {
|
|
357
|
+
ZodFirstPartyTypeKind as ZodFirstPartyTypeKind2
|
|
358
|
+
} from "zod/v3";
|
|
359
|
+
|
|
360
|
+
// node_modules/.pnpm/eventsource-parser@3.0.6/node_modules/eventsource-parser/dist/index.js
|
|
289
361
|
var ParseError = class extends Error {
|
|
290
362
|
constructor(message, options) {
|
|
291
363
|
super(message), this.name = "ParseError", this.type = options.type, this.field = options.field, this.value = options.value, this.line = options.line;
|
|
@@ -376,7 +448,7 @@ function splitLines(chunk) {
|
|
|
376
448
|
const crIndex = chunk.indexOf("\r", searchIndex), lfIndex = chunk.indexOf(`
|
|
377
449
|
`, searchIndex);
|
|
378
450
|
let lineEnd = -1;
|
|
379
|
-
if (crIndex !== -1 && lfIndex !== -1 ? lineEnd = Math.min(crIndex, lfIndex) : crIndex !== -1 ? lineEnd = crIndex : lfIndex !== -1 && (lineEnd = lfIndex), lineEnd === -1) {
|
|
451
|
+
if (crIndex !== -1 && lfIndex !== -1 ? lineEnd = Math.min(crIndex, lfIndex) : crIndex !== -1 ? crIndex === chunk.length - 1 ? lineEnd = -1 : lineEnd = crIndex : lfIndex !== -1 && (lineEnd = lfIndex), lineEnd === -1) {
|
|
380
452
|
incompleteLine = chunk.slice(searchIndex);
|
|
381
453
|
break;
|
|
382
454
|
} else {
|
|
@@ -388,7 +460,7 @@ function splitLines(chunk) {
|
|
|
388
460
|
return [lines, incompleteLine];
|
|
389
461
|
}
|
|
390
462
|
|
|
391
|
-
// node_modules/.pnpm/eventsource-parser@3.0.
|
|
463
|
+
// node_modules/.pnpm/eventsource-parser@3.0.6/node_modules/eventsource-parser/dist/stream.js
|
|
392
464
|
var EventSourceParserStream = class extends TransformStream {
|
|
393
465
|
constructor({ onError, onRetry, onComment } = {}) {
|
|
394
466
|
let parser;
|
|
@@ -412,28 +484,7 @@ var EventSourceParserStream = class extends TransformStream {
|
|
|
412
484
|
}
|
|
413
485
|
};
|
|
414
486
|
|
|
415
|
-
// node_modules/.pnpm/@ai-sdk+provider-utils@
|
|
416
|
-
import * as z4 from "zod/v4";
|
|
417
|
-
|
|
418
|
-
// node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.25.34/node_modules/zod-to-json-schema/dist/esm/Options.js
|
|
419
|
-
var ignoreOverride = Symbol("Let zodToJsonSchema decide on which parser to use");
|
|
420
|
-
|
|
421
|
-
// node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.25.34/node_modules/zod-to-json-schema/dist/esm/selectParser.js
|
|
422
|
-
import { ZodFirstPartyTypeKind as ZodFirstPartyTypeKind3 } from "zod";
|
|
423
|
-
|
|
424
|
-
// node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.25.34/node_modules/zod-to-json-schema/dist/esm/parsers/array.js
|
|
425
|
-
import { ZodFirstPartyTypeKind } from "zod";
|
|
426
|
-
|
|
427
|
-
// node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.25.34/node_modules/zod-to-json-schema/dist/esm/parsers/record.js
|
|
428
|
-
import { ZodFirstPartyTypeKind as ZodFirstPartyTypeKind2 } from "zod";
|
|
429
|
-
|
|
430
|
-
// node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.25.34/node_modules/zod-to-json-schema/dist/esm/parsers/string.js
|
|
431
|
-
var ALPHA_NUMERIC = new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");
|
|
432
|
-
|
|
433
|
-
// node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.25.34/node_modules/zod-to-json-schema/dist/esm/parsers/object.js
|
|
434
|
-
import { ZodOptional } from "zod";
|
|
435
|
-
|
|
436
|
-
// node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0-beta.5_zod@3.25.34/node_modules/@ai-sdk/provider-utils/dist/index.mjs
|
|
487
|
+
// node_modules/.pnpm/@ai-sdk+provider-utils@4.0.4_zod@3.25.34/node_modules/@ai-sdk/provider-utils/dist/index.mjs
|
|
437
488
|
function combineHeaders(...headers) {
|
|
438
489
|
return headers.reduce(
|
|
439
490
|
(combinedHeaders, currentHeaders) => __spreadValues(__spreadValues({}, combinedHeaders), currentHeaders != null ? currentHeaders : {}),
|
|
@@ -443,6 +494,37 @@ function combineHeaders(...headers) {
|
|
|
443
494
|
function extractResponseHeaders(response) {
|
|
444
495
|
return Object.fromEntries([...response.headers]);
|
|
445
496
|
}
|
|
497
|
+
var { btoa, atob } = globalThis;
|
|
498
|
+
function convertUint8ArrayToBase64(array) {
|
|
499
|
+
let latin1string = "";
|
|
500
|
+
for (let i = 0; i < array.length; i++) {
|
|
501
|
+
latin1string += String.fromCodePoint(array[i]);
|
|
502
|
+
}
|
|
503
|
+
return btoa(latin1string);
|
|
504
|
+
}
|
|
505
|
+
var name14 = "AI_DownloadError";
|
|
506
|
+
var marker15 = `vercel.ai.error.${name14}`;
|
|
507
|
+
var symbol15 = Symbol.for(marker15);
|
|
508
|
+
var _a15;
|
|
509
|
+
var _b15;
|
|
510
|
+
var DownloadError = class extends (_b15 = AISDKError, _a15 = symbol15, _b15) {
|
|
511
|
+
constructor({
|
|
512
|
+
url,
|
|
513
|
+
statusCode,
|
|
514
|
+
statusText,
|
|
515
|
+
cause,
|
|
516
|
+
message = cause == null ? `Failed to download ${url}: ${statusCode} ${statusText}` : `Failed to download ${url}: ${cause}`
|
|
517
|
+
}) {
|
|
518
|
+
super({ name: name14, message, cause });
|
|
519
|
+
this[_a15] = true;
|
|
520
|
+
this.url = url;
|
|
521
|
+
this.statusCode = statusCode;
|
|
522
|
+
this.statusText = statusText;
|
|
523
|
+
}
|
|
524
|
+
static isInstance(error) {
|
|
525
|
+
return AISDKError.hasMarker(error, marker15);
|
|
526
|
+
}
|
|
527
|
+
};
|
|
446
528
|
var createIdGenerator = ({
|
|
447
529
|
prefix,
|
|
448
530
|
size = 16,
|
|
@@ -470,7 +552,7 @@ var createIdGenerator = ({
|
|
|
470
552
|
};
|
|
471
553
|
var generateId = createIdGenerator();
|
|
472
554
|
function isAbortError(error) {
|
|
473
|
-
return error instanceof Error && (error.name === "AbortError" || error.name === "ResponseAborted" || // Next.js
|
|
555
|
+
return (error instanceof Error || error instanceof DOMException) && (error.name === "AbortError" || error.name === "ResponseAborted" || // Next.js
|
|
474
556
|
error.name === "TimeoutError");
|
|
475
557
|
}
|
|
476
558
|
var FETCH_FAILED_ERROR_MESSAGES = ["fetch failed", "failed to fetch"];
|
|
@@ -497,11 +579,53 @@ function handleFetchError({
|
|
|
497
579
|
}
|
|
498
580
|
return error;
|
|
499
581
|
}
|
|
500
|
-
function
|
|
501
|
-
|
|
502
|
-
|
|
582
|
+
function getRuntimeEnvironmentUserAgent(globalThisAny = globalThis) {
|
|
583
|
+
var _a22, _b22, _c;
|
|
584
|
+
if (globalThisAny.window) {
|
|
585
|
+
return `runtime/browser`;
|
|
586
|
+
}
|
|
587
|
+
if ((_a22 = globalThisAny.navigator) == null ? void 0 : _a22.userAgent) {
|
|
588
|
+
return `runtime/${globalThisAny.navigator.userAgent.toLowerCase()}`;
|
|
589
|
+
}
|
|
590
|
+
if ((_c = (_b22 = globalThisAny.process) == null ? void 0 : _b22.versions) == null ? void 0 : _c.node) {
|
|
591
|
+
return `runtime/node.js/${globalThisAny.process.version.substring(0)}`;
|
|
592
|
+
}
|
|
593
|
+
if (globalThisAny.EdgeRuntime) {
|
|
594
|
+
return `runtime/vercel-edge`;
|
|
595
|
+
}
|
|
596
|
+
return "runtime/unknown";
|
|
597
|
+
}
|
|
598
|
+
function normalizeHeaders(headers) {
|
|
599
|
+
if (headers == null) {
|
|
600
|
+
return {};
|
|
601
|
+
}
|
|
602
|
+
const normalized = {};
|
|
603
|
+
if (headers instanceof Headers) {
|
|
604
|
+
headers.forEach((value, key) => {
|
|
605
|
+
normalized[key.toLowerCase()] = value;
|
|
606
|
+
});
|
|
607
|
+
} else {
|
|
608
|
+
if (!Array.isArray(headers)) {
|
|
609
|
+
headers = Object.entries(headers);
|
|
610
|
+
}
|
|
611
|
+
for (const [key, value] of headers) {
|
|
612
|
+
if (value != null) {
|
|
613
|
+
normalized[key.toLowerCase()] = value;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
return normalized;
|
|
618
|
+
}
|
|
619
|
+
function withUserAgentSuffix(headers, ...userAgentSuffixParts) {
|
|
620
|
+
const normalizedHeaders = new Headers(normalizeHeaders(headers));
|
|
621
|
+
const currentUserAgentHeader = normalizedHeaders.get("user-agent") || "";
|
|
622
|
+
normalizedHeaders.set(
|
|
623
|
+
"user-agent",
|
|
624
|
+
[currentUserAgentHeader, ...userAgentSuffixParts].filter(Boolean).join(" ")
|
|
503
625
|
);
|
|
626
|
+
return Object.fromEntries(normalizedHeaders.entries());
|
|
504
627
|
}
|
|
628
|
+
var VERSION = true ? "4.0.4" : "0.0.0-test";
|
|
505
629
|
function loadApiKey({
|
|
506
630
|
apiKey,
|
|
507
631
|
environmentVariableName,
|
|
@@ -570,35 +694,1205 @@ function filter(obj) {
|
|
|
570
694
|
}
|
|
571
695
|
function secureJsonParse(text) {
|
|
572
696
|
const { stackTraceLimit } = Error;
|
|
573
|
-
|
|
697
|
+
try {
|
|
698
|
+
Error.stackTraceLimit = 0;
|
|
699
|
+
} catch (e) {
|
|
700
|
+
return _parse(text);
|
|
701
|
+
}
|
|
574
702
|
try {
|
|
575
703
|
return _parse(text);
|
|
576
704
|
} finally {
|
|
577
705
|
Error.stackTraceLimit = stackTraceLimit;
|
|
578
706
|
}
|
|
579
707
|
}
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
708
|
+
function addAdditionalPropertiesToJsonSchema(jsonSchema2) {
|
|
709
|
+
if (jsonSchema2.type === "object" || Array.isArray(jsonSchema2.type) && jsonSchema2.type.includes("object")) {
|
|
710
|
+
jsonSchema2.additionalProperties = false;
|
|
711
|
+
const { properties } = jsonSchema2;
|
|
712
|
+
if (properties != null) {
|
|
713
|
+
for (const key of Object.keys(properties)) {
|
|
714
|
+
properties[key] = visit(properties[key]);
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
if (jsonSchema2.items != null) {
|
|
719
|
+
jsonSchema2.items = Array.isArray(jsonSchema2.items) ? jsonSchema2.items.map(visit) : visit(jsonSchema2.items);
|
|
720
|
+
}
|
|
721
|
+
if (jsonSchema2.anyOf != null) {
|
|
722
|
+
jsonSchema2.anyOf = jsonSchema2.anyOf.map(visit);
|
|
723
|
+
}
|
|
724
|
+
if (jsonSchema2.allOf != null) {
|
|
725
|
+
jsonSchema2.allOf = jsonSchema2.allOf.map(visit);
|
|
726
|
+
}
|
|
727
|
+
if (jsonSchema2.oneOf != null) {
|
|
728
|
+
jsonSchema2.oneOf = jsonSchema2.oneOf.map(visit);
|
|
729
|
+
}
|
|
730
|
+
const { definitions } = jsonSchema2;
|
|
731
|
+
if (definitions != null) {
|
|
732
|
+
for (const key of Object.keys(definitions)) {
|
|
733
|
+
definitions[key] = visit(definitions[key]);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
return jsonSchema2;
|
|
583
737
|
}
|
|
584
|
-
function
|
|
585
|
-
|
|
738
|
+
function visit(def) {
|
|
739
|
+
if (typeof def === "boolean") return def;
|
|
740
|
+
return addAdditionalPropertiesToJsonSchema(def);
|
|
586
741
|
}
|
|
587
|
-
|
|
588
|
-
|
|
742
|
+
var ignoreOverride = Symbol(
|
|
743
|
+
"Let zodToJsonSchema decide on which parser to use"
|
|
744
|
+
);
|
|
745
|
+
var defaultOptions = {
|
|
746
|
+
name: void 0,
|
|
747
|
+
$refStrategy: "root",
|
|
748
|
+
basePath: ["#"],
|
|
749
|
+
effectStrategy: "input",
|
|
750
|
+
pipeStrategy: "all",
|
|
751
|
+
dateStrategy: "format:date-time",
|
|
752
|
+
mapStrategy: "entries",
|
|
753
|
+
removeAdditionalStrategy: "passthrough",
|
|
754
|
+
allowedAdditionalProperties: true,
|
|
755
|
+
rejectedAdditionalProperties: false,
|
|
756
|
+
definitionPath: "definitions",
|
|
757
|
+
strictUnions: false,
|
|
758
|
+
definitions: {},
|
|
759
|
+
errorMessages: false,
|
|
760
|
+
patternStrategy: "escape",
|
|
761
|
+
applyRegexFlags: false,
|
|
762
|
+
emailStrategy: "format:email",
|
|
763
|
+
base64Strategy: "contentEncoding:base64",
|
|
764
|
+
nameStrategy: "ref"
|
|
765
|
+
};
|
|
766
|
+
var getDefaultOptions = (options) => typeof options === "string" ? __spreadProps(__spreadValues({}, defaultOptions), {
|
|
767
|
+
name: options
|
|
768
|
+
}) : __spreadValues(__spreadValues({}, defaultOptions), options);
|
|
769
|
+
function parseAnyDef() {
|
|
770
|
+
return {};
|
|
589
771
|
}
|
|
590
|
-
function
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
772
|
+
function parseArrayDef(def, refs) {
|
|
773
|
+
var _a22, _b22, _c;
|
|
774
|
+
const res = {
|
|
775
|
+
type: "array"
|
|
776
|
+
};
|
|
777
|
+
if (((_a22 = def.type) == null ? void 0 : _a22._def) && ((_c = (_b22 = def.type) == null ? void 0 : _b22._def) == null ? void 0 : _c.typeName) !== ZodFirstPartyTypeKind.ZodAny) {
|
|
778
|
+
res.items = parseDef(def.type._def, __spreadProps(__spreadValues({}, refs), {
|
|
779
|
+
currentPath: [...refs.currentPath, "items"]
|
|
780
|
+
}));
|
|
781
|
+
}
|
|
782
|
+
if (def.minLength) {
|
|
783
|
+
res.minItems = def.minLength.value;
|
|
784
|
+
}
|
|
785
|
+
if (def.maxLength) {
|
|
786
|
+
res.maxItems = def.maxLength.value;
|
|
787
|
+
}
|
|
788
|
+
if (def.exactLength) {
|
|
789
|
+
res.minItems = def.exactLength.value;
|
|
790
|
+
res.maxItems = def.exactLength.value;
|
|
791
|
+
}
|
|
792
|
+
return res;
|
|
793
|
+
}
|
|
794
|
+
function parseBigintDef(def) {
|
|
795
|
+
const res = {
|
|
796
|
+
type: "integer",
|
|
797
|
+
format: "int64"
|
|
798
|
+
};
|
|
799
|
+
if (!def.checks) return res;
|
|
800
|
+
for (const check of def.checks) {
|
|
801
|
+
switch (check.kind) {
|
|
802
|
+
case "min":
|
|
803
|
+
if (check.inclusive) {
|
|
804
|
+
res.minimum = check.value;
|
|
805
|
+
} else {
|
|
806
|
+
res.exclusiveMinimum = check.value;
|
|
807
|
+
}
|
|
808
|
+
break;
|
|
809
|
+
case "max":
|
|
810
|
+
if (check.inclusive) {
|
|
811
|
+
res.maximum = check.value;
|
|
812
|
+
} else {
|
|
813
|
+
res.exclusiveMaximum = check.value;
|
|
814
|
+
}
|
|
815
|
+
break;
|
|
816
|
+
case "multipleOf":
|
|
817
|
+
res.multipleOf = check.value;
|
|
818
|
+
break;
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
return res;
|
|
822
|
+
}
|
|
823
|
+
function parseBooleanDef() {
|
|
824
|
+
return { type: "boolean" };
|
|
825
|
+
}
|
|
826
|
+
function parseBrandedDef(_def, refs) {
|
|
827
|
+
return parseDef(_def.type._def, refs);
|
|
828
|
+
}
|
|
829
|
+
var parseCatchDef = (def, refs) => {
|
|
830
|
+
return parseDef(def.innerType._def, refs);
|
|
831
|
+
};
|
|
832
|
+
function parseDateDef(def, refs, overrideDateStrategy) {
|
|
833
|
+
const strategy = overrideDateStrategy != null ? overrideDateStrategy : refs.dateStrategy;
|
|
834
|
+
if (Array.isArray(strategy)) {
|
|
835
|
+
return {
|
|
836
|
+
anyOf: strategy.map((item, i) => parseDateDef(def, refs, item))
|
|
599
837
|
};
|
|
838
|
+
}
|
|
839
|
+
switch (strategy) {
|
|
840
|
+
case "string":
|
|
841
|
+
case "format:date-time":
|
|
842
|
+
return {
|
|
843
|
+
type: "string",
|
|
844
|
+
format: "date-time"
|
|
845
|
+
};
|
|
846
|
+
case "format:date":
|
|
847
|
+
return {
|
|
848
|
+
type: "string",
|
|
849
|
+
format: "date"
|
|
850
|
+
};
|
|
851
|
+
case "integer":
|
|
852
|
+
return integerDateParser(def);
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
var integerDateParser = (def) => {
|
|
856
|
+
const res = {
|
|
857
|
+
type: "integer",
|
|
858
|
+
format: "unix-time"
|
|
859
|
+
};
|
|
860
|
+
for (const check of def.checks) {
|
|
861
|
+
switch (check.kind) {
|
|
862
|
+
case "min":
|
|
863
|
+
res.minimum = check.value;
|
|
864
|
+
break;
|
|
865
|
+
case "max":
|
|
866
|
+
res.maximum = check.value;
|
|
867
|
+
break;
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
return res;
|
|
871
|
+
};
|
|
872
|
+
function parseDefaultDef(_def, refs) {
|
|
873
|
+
return __spreadProps(__spreadValues({}, parseDef(_def.innerType._def, refs)), {
|
|
874
|
+
default: _def.defaultValue()
|
|
600
875
|
});
|
|
601
876
|
}
|
|
877
|
+
function parseEffectsDef(_def, refs) {
|
|
878
|
+
return refs.effectStrategy === "input" ? parseDef(_def.schema._def, refs) : parseAnyDef();
|
|
879
|
+
}
|
|
880
|
+
function parseEnumDef(def) {
|
|
881
|
+
return {
|
|
882
|
+
type: "string",
|
|
883
|
+
enum: Array.from(def.values)
|
|
884
|
+
};
|
|
885
|
+
}
|
|
886
|
+
var isJsonSchema7AllOfType = (type) => {
|
|
887
|
+
if ("type" in type && type.type === "string") return false;
|
|
888
|
+
return "allOf" in type;
|
|
889
|
+
};
|
|
890
|
+
function parseIntersectionDef(def, refs) {
|
|
891
|
+
const allOf = [
|
|
892
|
+
parseDef(def.left._def, __spreadProps(__spreadValues({}, refs), {
|
|
893
|
+
currentPath: [...refs.currentPath, "allOf", "0"]
|
|
894
|
+
})),
|
|
895
|
+
parseDef(def.right._def, __spreadProps(__spreadValues({}, refs), {
|
|
896
|
+
currentPath: [...refs.currentPath, "allOf", "1"]
|
|
897
|
+
}))
|
|
898
|
+
].filter((x) => !!x);
|
|
899
|
+
const mergedAllOf = [];
|
|
900
|
+
allOf.forEach((schema) => {
|
|
901
|
+
if (isJsonSchema7AllOfType(schema)) {
|
|
902
|
+
mergedAllOf.push(...schema.allOf);
|
|
903
|
+
} else {
|
|
904
|
+
let nestedSchema = schema;
|
|
905
|
+
if ("additionalProperties" in schema && schema.additionalProperties === false) {
|
|
906
|
+
const _a16 = schema, { additionalProperties } = _a16, rest = __objRest(_a16, ["additionalProperties"]);
|
|
907
|
+
nestedSchema = rest;
|
|
908
|
+
}
|
|
909
|
+
mergedAllOf.push(nestedSchema);
|
|
910
|
+
}
|
|
911
|
+
});
|
|
912
|
+
return mergedAllOf.length ? { allOf: mergedAllOf } : void 0;
|
|
913
|
+
}
|
|
914
|
+
function parseLiteralDef(def) {
|
|
915
|
+
const parsedType = typeof def.value;
|
|
916
|
+
if (parsedType !== "bigint" && parsedType !== "number" && parsedType !== "boolean" && parsedType !== "string") {
|
|
917
|
+
return {
|
|
918
|
+
type: Array.isArray(def.value) ? "array" : "object"
|
|
919
|
+
};
|
|
920
|
+
}
|
|
921
|
+
return {
|
|
922
|
+
type: parsedType === "bigint" ? "integer" : parsedType,
|
|
923
|
+
const: def.value
|
|
924
|
+
};
|
|
925
|
+
}
|
|
926
|
+
var emojiRegex = void 0;
|
|
927
|
+
var zodPatterns = {
|
|
928
|
+
/**
|
|
929
|
+
* `c` was changed to `[cC]` to replicate /i flag
|
|
930
|
+
*/
|
|
931
|
+
cuid: /^[cC][^\s-]{8,}$/,
|
|
932
|
+
cuid2: /^[0-9a-z]+$/,
|
|
933
|
+
ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,
|
|
934
|
+
/**
|
|
935
|
+
* `a-z` was added to replicate /i flag
|
|
936
|
+
*/
|
|
937
|
+
email: /^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,
|
|
938
|
+
/**
|
|
939
|
+
* Constructed a valid Unicode RegExp
|
|
940
|
+
*
|
|
941
|
+
* Lazily instantiate since this type of regex isn't supported
|
|
942
|
+
* in all envs (e.g. React Native).
|
|
943
|
+
*
|
|
944
|
+
* See:
|
|
945
|
+
* https://github.com/colinhacks/zod/issues/2433
|
|
946
|
+
* Fix in Zod:
|
|
947
|
+
* https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b
|
|
948
|
+
*/
|
|
949
|
+
emoji: () => {
|
|
950
|
+
if (emojiRegex === void 0) {
|
|
951
|
+
emojiRegex = RegExp(
|
|
952
|
+
"^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",
|
|
953
|
+
"u"
|
|
954
|
+
);
|
|
955
|
+
}
|
|
956
|
+
return emojiRegex;
|
|
957
|
+
},
|
|
958
|
+
/**
|
|
959
|
+
* Unused
|
|
960
|
+
*/
|
|
961
|
+
uuid: /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,
|
|
962
|
+
/**
|
|
963
|
+
* Unused
|
|
964
|
+
*/
|
|
965
|
+
ipv4: /^(?:(?: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])$/,
|
|
966
|
+
ipv4Cidr: /^(?:(?: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])\/(3[0-2]|[12]?[0-9])$/,
|
|
967
|
+
/**
|
|
968
|
+
* Unused
|
|
969
|
+
*/
|
|
970
|
+
ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,
|
|
971
|
+
ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,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}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,
|
|
972
|
+
base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,
|
|
973
|
+
base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,
|
|
974
|
+
nanoid: /^[a-zA-Z0-9_-]{21}$/,
|
|
975
|
+
jwt: /^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/
|
|
976
|
+
};
|
|
977
|
+
function parseStringDef(def, refs) {
|
|
978
|
+
const res = {
|
|
979
|
+
type: "string"
|
|
980
|
+
};
|
|
981
|
+
if (def.checks) {
|
|
982
|
+
for (const check of def.checks) {
|
|
983
|
+
switch (check.kind) {
|
|
984
|
+
case "min":
|
|
985
|
+
res.minLength = typeof res.minLength === "number" ? Math.max(res.minLength, check.value) : check.value;
|
|
986
|
+
break;
|
|
987
|
+
case "max":
|
|
988
|
+
res.maxLength = typeof res.maxLength === "number" ? Math.min(res.maxLength, check.value) : check.value;
|
|
989
|
+
break;
|
|
990
|
+
case "email":
|
|
991
|
+
switch (refs.emailStrategy) {
|
|
992
|
+
case "format:email":
|
|
993
|
+
addFormat(res, "email", check.message, refs);
|
|
994
|
+
break;
|
|
995
|
+
case "format:idn-email":
|
|
996
|
+
addFormat(res, "idn-email", check.message, refs);
|
|
997
|
+
break;
|
|
998
|
+
case "pattern:zod":
|
|
999
|
+
addPattern(res, zodPatterns.email, check.message, refs);
|
|
1000
|
+
break;
|
|
1001
|
+
}
|
|
1002
|
+
break;
|
|
1003
|
+
case "url":
|
|
1004
|
+
addFormat(res, "uri", check.message, refs);
|
|
1005
|
+
break;
|
|
1006
|
+
case "uuid":
|
|
1007
|
+
addFormat(res, "uuid", check.message, refs);
|
|
1008
|
+
break;
|
|
1009
|
+
case "regex":
|
|
1010
|
+
addPattern(res, check.regex, check.message, refs);
|
|
1011
|
+
break;
|
|
1012
|
+
case "cuid":
|
|
1013
|
+
addPattern(res, zodPatterns.cuid, check.message, refs);
|
|
1014
|
+
break;
|
|
1015
|
+
case "cuid2":
|
|
1016
|
+
addPattern(res, zodPatterns.cuid2, check.message, refs);
|
|
1017
|
+
break;
|
|
1018
|
+
case "startsWith":
|
|
1019
|
+
addPattern(
|
|
1020
|
+
res,
|
|
1021
|
+
RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),
|
|
1022
|
+
check.message,
|
|
1023
|
+
refs
|
|
1024
|
+
);
|
|
1025
|
+
break;
|
|
1026
|
+
case "endsWith":
|
|
1027
|
+
addPattern(
|
|
1028
|
+
res,
|
|
1029
|
+
RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),
|
|
1030
|
+
check.message,
|
|
1031
|
+
refs
|
|
1032
|
+
);
|
|
1033
|
+
break;
|
|
1034
|
+
case "datetime":
|
|
1035
|
+
addFormat(res, "date-time", check.message, refs);
|
|
1036
|
+
break;
|
|
1037
|
+
case "date":
|
|
1038
|
+
addFormat(res, "date", check.message, refs);
|
|
1039
|
+
break;
|
|
1040
|
+
case "time":
|
|
1041
|
+
addFormat(res, "time", check.message, refs);
|
|
1042
|
+
break;
|
|
1043
|
+
case "duration":
|
|
1044
|
+
addFormat(res, "duration", check.message, refs);
|
|
1045
|
+
break;
|
|
1046
|
+
case "length":
|
|
1047
|
+
res.minLength = typeof res.minLength === "number" ? Math.max(res.minLength, check.value) : check.value;
|
|
1048
|
+
res.maxLength = typeof res.maxLength === "number" ? Math.min(res.maxLength, check.value) : check.value;
|
|
1049
|
+
break;
|
|
1050
|
+
case "includes": {
|
|
1051
|
+
addPattern(
|
|
1052
|
+
res,
|
|
1053
|
+
RegExp(escapeLiteralCheckValue(check.value, refs)),
|
|
1054
|
+
check.message,
|
|
1055
|
+
refs
|
|
1056
|
+
);
|
|
1057
|
+
break;
|
|
1058
|
+
}
|
|
1059
|
+
case "ip": {
|
|
1060
|
+
if (check.version !== "v6") {
|
|
1061
|
+
addFormat(res, "ipv4", check.message, refs);
|
|
1062
|
+
}
|
|
1063
|
+
if (check.version !== "v4") {
|
|
1064
|
+
addFormat(res, "ipv6", check.message, refs);
|
|
1065
|
+
}
|
|
1066
|
+
break;
|
|
1067
|
+
}
|
|
1068
|
+
case "base64url":
|
|
1069
|
+
addPattern(res, zodPatterns.base64url, check.message, refs);
|
|
1070
|
+
break;
|
|
1071
|
+
case "jwt":
|
|
1072
|
+
addPattern(res, zodPatterns.jwt, check.message, refs);
|
|
1073
|
+
break;
|
|
1074
|
+
case "cidr": {
|
|
1075
|
+
if (check.version !== "v6") {
|
|
1076
|
+
addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);
|
|
1077
|
+
}
|
|
1078
|
+
if (check.version !== "v4") {
|
|
1079
|
+
addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);
|
|
1080
|
+
}
|
|
1081
|
+
break;
|
|
1082
|
+
}
|
|
1083
|
+
case "emoji":
|
|
1084
|
+
addPattern(res, zodPatterns.emoji(), check.message, refs);
|
|
1085
|
+
break;
|
|
1086
|
+
case "ulid": {
|
|
1087
|
+
addPattern(res, zodPatterns.ulid, check.message, refs);
|
|
1088
|
+
break;
|
|
1089
|
+
}
|
|
1090
|
+
case "base64": {
|
|
1091
|
+
switch (refs.base64Strategy) {
|
|
1092
|
+
case "format:binary": {
|
|
1093
|
+
addFormat(res, "binary", check.message, refs);
|
|
1094
|
+
break;
|
|
1095
|
+
}
|
|
1096
|
+
case "contentEncoding:base64": {
|
|
1097
|
+
res.contentEncoding = "base64";
|
|
1098
|
+
break;
|
|
1099
|
+
}
|
|
1100
|
+
case "pattern:zod": {
|
|
1101
|
+
addPattern(res, zodPatterns.base64, check.message, refs);
|
|
1102
|
+
break;
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
break;
|
|
1106
|
+
}
|
|
1107
|
+
case "nanoid": {
|
|
1108
|
+
addPattern(res, zodPatterns.nanoid, check.message, refs);
|
|
1109
|
+
}
|
|
1110
|
+
case "toLowerCase":
|
|
1111
|
+
case "toUpperCase":
|
|
1112
|
+
case "trim":
|
|
1113
|
+
break;
|
|
1114
|
+
default:
|
|
1115
|
+
/* @__PURE__ */ ((_) => {
|
|
1116
|
+
})(check);
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
return res;
|
|
1121
|
+
}
|
|
1122
|
+
function escapeLiteralCheckValue(literal, refs) {
|
|
1123
|
+
return refs.patternStrategy === "escape" ? escapeNonAlphaNumeric(literal) : literal;
|
|
1124
|
+
}
|
|
1125
|
+
var ALPHA_NUMERIC = new Set(
|
|
1126
|
+
"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789"
|
|
1127
|
+
);
|
|
1128
|
+
function escapeNonAlphaNumeric(source) {
|
|
1129
|
+
let result = "";
|
|
1130
|
+
for (let i = 0; i < source.length; i++) {
|
|
1131
|
+
if (!ALPHA_NUMERIC.has(source[i])) {
|
|
1132
|
+
result += "\\";
|
|
1133
|
+
}
|
|
1134
|
+
result += source[i];
|
|
1135
|
+
}
|
|
1136
|
+
return result;
|
|
1137
|
+
}
|
|
1138
|
+
function addFormat(schema, value, message, refs) {
|
|
1139
|
+
var _a22;
|
|
1140
|
+
if (schema.format || ((_a22 = schema.anyOf) == null ? void 0 : _a22.some((x) => x.format))) {
|
|
1141
|
+
if (!schema.anyOf) {
|
|
1142
|
+
schema.anyOf = [];
|
|
1143
|
+
}
|
|
1144
|
+
if (schema.format) {
|
|
1145
|
+
schema.anyOf.push({
|
|
1146
|
+
format: schema.format
|
|
1147
|
+
});
|
|
1148
|
+
delete schema.format;
|
|
1149
|
+
}
|
|
1150
|
+
schema.anyOf.push(__spreadValues({
|
|
1151
|
+
format: value
|
|
1152
|
+
}, message && refs.errorMessages && { errorMessage: { format: message } }));
|
|
1153
|
+
} else {
|
|
1154
|
+
schema.format = value;
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
function addPattern(schema, regex, message, refs) {
|
|
1158
|
+
var _a22;
|
|
1159
|
+
if (schema.pattern || ((_a22 = schema.allOf) == null ? void 0 : _a22.some((x) => x.pattern))) {
|
|
1160
|
+
if (!schema.allOf) {
|
|
1161
|
+
schema.allOf = [];
|
|
1162
|
+
}
|
|
1163
|
+
if (schema.pattern) {
|
|
1164
|
+
schema.allOf.push({
|
|
1165
|
+
pattern: schema.pattern
|
|
1166
|
+
});
|
|
1167
|
+
delete schema.pattern;
|
|
1168
|
+
}
|
|
1169
|
+
schema.allOf.push(__spreadValues({
|
|
1170
|
+
pattern: stringifyRegExpWithFlags(regex, refs)
|
|
1171
|
+
}, message && refs.errorMessages && { errorMessage: { pattern: message } }));
|
|
1172
|
+
} else {
|
|
1173
|
+
schema.pattern = stringifyRegExpWithFlags(regex, refs);
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
function stringifyRegExpWithFlags(regex, refs) {
|
|
1177
|
+
var _a22;
|
|
1178
|
+
if (!refs.applyRegexFlags || !regex.flags) {
|
|
1179
|
+
return regex.source;
|
|
1180
|
+
}
|
|
1181
|
+
const flags = {
|
|
1182
|
+
i: regex.flags.includes("i"),
|
|
1183
|
+
// Case-insensitive
|
|
1184
|
+
m: regex.flags.includes("m"),
|
|
1185
|
+
// `^` and `$` matches adjacent to newline characters
|
|
1186
|
+
s: regex.flags.includes("s")
|
|
1187
|
+
// `.` matches newlines
|
|
1188
|
+
};
|
|
1189
|
+
const source = flags.i ? regex.source.toLowerCase() : regex.source;
|
|
1190
|
+
let pattern = "";
|
|
1191
|
+
let isEscaped = false;
|
|
1192
|
+
let inCharGroup = false;
|
|
1193
|
+
let inCharRange = false;
|
|
1194
|
+
for (let i = 0; i < source.length; i++) {
|
|
1195
|
+
if (isEscaped) {
|
|
1196
|
+
pattern += source[i];
|
|
1197
|
+
isEscaped = false;
|
|
1198
|
+
continue;
|
|
1199
|
+
}
|
|
1200
|
+
if (flags.i) {
|
|
1201
|
+
if (inCharGroup) {
|
|
1202
|
+
if (source[i].match(/[a-z]/)) {
|
|
1203
|
+
if (inCharRange) {
|
|
1204
|
+
pattern += source[i];
|
|
1205
|
+
pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();
|
|
1206
|
+
inCharRange = false;
|
|
1207
|
+
} else if (source[i + 1] === "-" && ((_a22 = source[i + 2]) == null ? void 0 : _a22.match(/[a-z]/))) {
|
|
1208
|
+
pattern += source[i];
|
|
1209
|
+
inCharRange = true;
|
|
1210
|
+
} else {
|
|
1211
|
+
pattern += `${source[i]}${source[i].toUpperCase()}`;
|
|
1212
|
+
}
|
|
1213
|
+
continue;
|
|
1214
|
+
}
|
|
1215
|
+
} else if (source[i].match(/[a-z]/)) {
|
|
1216
|
+
pattern += `[${source[i]}${source[i].toUpperCase()}]`;
|
|
1217
|
+
continue;
|
|
1218
|
+
}
|
|
1219
|
+
}
|
|
1220
|
+
if (flags.m) {
|
|
1221
|
+
if (source[i] === "^") {
|
|
1222
|
+
pattern += `(^|(?<=[\r
|
|
1223
|
+
]))`;
|
|
1224
|
+
continue;
|
|
1225
|
+
} else if (source[i] === "$") {
|
|
1226
|
+
pattern += `($|(?=[\r
|
|
1227
|
+
]))`;
|
|
1228
|
+
continue;
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
if (flags.s && source[i] === ".") {
|
|
1232
|
+
pattern += inCharGroup ? `${source[i]}\r
|
|
1233
|
+
` : `[${source[i]}\r
|
|
1234
|
+
]`;
|
|
1235
|
+
continue;
|
|
1236
|
+
}
|
|
1237
|
+
pattern += source[i];
|
|
1238
|
+
if (source[i] === "\\") {
|
|
1239
|
+
isEscaped = true;
|
|
1240
|
+
} else if (inCharGroup && source[i] === "]") {
|
|
1241
|
+
inCharGroup = false;
|
|
1242
|
+
} else if (!inCharGroup && source[i] === "[") {
|
|
1243
|
+
inCharGroup = true;
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
try {
|
|
1247
|
+
new RegExp(pattern);
|
|
1248
|
+
} catch (e) {
|
|
1249
|
+
console.warn(
|
|
1250
|
+
`Could not convert regex pattern at ${refs.currentPath.join(
|
|
1251
|
+
"/"
|
|
1252
|
+
)} to a flag-independent form! Falling back to the flag-ignorant source`
|
|
1253
|
+
);
|
|
1254
|
+
return regex.source;
|
|
1255
|
+
}
|
|
1256
|
+
return pattern;
|
|
1257
|
+
}
|
|
1258
|
+
function parseRecordDef(def, refs) {
|
|
1259
|
+
var _a22, _b22, _c, _d, _e, _f;
|
|
1260
|
+
const schema = {
|
|
1261
|
+
type: "object",
|
|
1262
|
+
additionalProperties: (_a22 = parseDef(def.valueType._def, __spreadProps(__spreadValues({}, refs), {
|
|
1263
|
+
currentPath: [...refs.currentPath, "additionalProperties"]
|
|
1264
|
+
}))) != null ? _a22 : refs.allowedAdditionalProperties
|
|
1265
|
+
};
|
|
1266
|
+
if (((_b22 = def.keyType) == null ? void 0 : _b22._def.typeName) === ZodFirstPartyTypeKind2.ZodString && ((_c = def.keyType._def.checks) == null ? void 0 : _c.length)) {
|
|
1267
|
+
const _a16 = parseStringDef(def.keyType._def, refs), { type } = _a16, keyType = __objRest(_a16, ["type"]);
|
|
1268
|
+
return __spreadProps(__spreadValues({}, schema), {
|
|
1269
|
+
propertyNames: keyType
|
|
1270
|
+
});
|
|
1271
|
+
} else if (((_d = def.keyType) == null ? void 0 : _d._def.typeName) === ZodFirstPartyTypeKind2.ZodEnum) {
|
|
1272
|
+
return __spreadProps(__spreadValues({}, schema), {
|
|
1273
|
+
propertyNames: {
|
|
1274
|
+
enum: def.keyType._def.values
|
|
1275
|
+
}
|
|
1276
|
+
});
|
|
1277
|
+
} else if (((_e = def.keyType) == null ? void 0 : _e._def.typeName) === ZodFirstPartyTypeKind2.ZodBranded && def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind2.ZodString && ((_f = def.keyType._def.type._def.checks) == null ? void 0 : _f.length)) {
|
|
1278
|
+
const _b16 = parseBrandedDef(
|
|
1279
|
+
def.keyType._def,
|
|
1280
|
+
refs
|
|
1281
|
+
), { type } = _b16, keyType = __objRest(_b16, ["type"]);
|
|
1282
|
+
return __spreadProps(__spreadValues({}, schema), {
|
|
1283
|
+
propertyNames: keyType
|
|
1284
|
+
});
|
|
1285
|
+
}
|
|
1286
|
+
return schema;
|
|
1287
|
+
}
|
|
1288
|
+
function parseMapDef(def, refs) {
|
|
1289
|
+
if (refs.mapStrategy === "record") {
|
|
1290
|
+
return parseRecordDef(def, refs);
|
|
1291
|
+
}
|
|
1292
|
+
const keys = parseDef(def.keyType._def, __spreadProps(__spreadValues({}, refs), {
|
|
1293
|
+
currentPath: [...refs.currentPath, "items", "items", "0"]
|
|
1294
|
+
})) || parseAnyDef();
|
|
1295
|
+
const values = parseDef(def.valueType._def, __spreadProps(__spreadValues({}, refs), {
|
|
1296
|
+
currentPath: [...refs.currentPath, "items", "items", "1"]
|
|
1297
|
+
})) || parseAnyDef();
|
|
1298
|
+
return {
|
|
1299
|
+
type: "array",
|
|
1300
|
+
maxItems: 125,
|
|
1301
|
+
items: {
|
|
1302
|
+
type: "array",
|
|
1303
|
+
items: [keys, values],
|
|
1304
|
+
minItems: 2,
|
|
1305
|
+
maxItems: 2
|
|
1306
|
+
}
|
|
1307
|
+
};
|
|
1308
|
+
}
|
|
1309
|
+
function parseNativeEnumDef(def) {
|
|
1310
|
+
const object = def.values;
|
|
1311
|
+
const actualKeys = Object.keys(def.values).filter((key) => {
|
|
1312
|
+
return typeof object[object[key]] !== "number";
|
|
1313
|
+
});
|
|
1314
|
+
const actualValues = actualKeys.map((key) => object[key]);
|
|
1315
|
+
const parsedTypes = Array.from(
|
|
1316
|
+
new Set(actualValues.map((values) => typeof values))
|
|
1317
|
+
);
|
|
1318
|
+
return {
|
|
1319
|
+
type: parsedTypes.length === 1 ? parsedTypes[0] === "string" ? "string" : "number" : ["string", "number"],
|
|
1320
|
+
enum: actualValues
|
|
1321
|
+
};
|
|
1322
|
+
}
|
|
1323
|
+
function parseNeverDef() {
|
|
1324
|
+
return { not: parseAnyDef() };
|
|
1325
|
+
}
|
|
1326
|
+
function parseNullDef() {
|
|
1327
|
+
return {
|
|
1328
|
+
type: "null"
|
|
1329
|
+
};
|
|
1330
|
+
}
|
|
1331
|
+
var primitiveMappings = {
|
|
1332
|
+
ZodString: "string",
|
|
1333
|
+
ZodNumber: "number",
|
|
1334
|
+
ZodBigInt: "integer",
|
|
1335
|
+
ZodBoolean: "boolean",
|
|
1336
|
+
ZodNull: "null"
|
|
1337
|
+
};
|
|
1338
|
+
function parseUnionDef(def, refs) {
|
|
1339
|
+
const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;
|
|
1340
|
+
if (options.every(
|
|
1341
|
+
(x) => x._def.typeName in primitiveMappings && (!x._def.checks || !x._def.checks.length)
|
|
1342
|
+
)) {
|
|
1343
|
+
const types = options.reduce((types2, x) => {
|
|
1344
|
+
const type = primitiveMappings[x._def.typeName];
|
|
1345
|
+
return type && !types2.includes(type) ? [...types2, type] : types2;
|
|
1346
|
+
}, []);
|
|
1347
|
+
return {
|
|
1348
|
+
type: types.length > 1 ? types : types[0]
|
|
1349
|
+
};
|
|
1350
|
+
} else if (options.every((x) => x._def.typeName === "ZodLiteral" && !x.description)) {
|
|
1351
|
+
const types = options.reduce(
|
|
1352
|
+
(acc, x) => {
|
|
1353
|
+
const type = typeof x._def.value;
|
|
1354
|
+
switch (type) {
|
|
1355
|
+
case "string":
|
|
1356
|
+
case "number":
|
|
1357
|
+
case "boolean":
|
|
1358
|
+
return [...acc, type];
|
|
1359
|
+
case "bigint":
|
|
1360
|
+
return [...acc, "integer"];
|
|
1361
|
+
case "object":
|
|
1362
|
+
if (x._def.value === null) return [...acc, "null"];
|
|
1363
|
+
case "symbol":
|
|
1364
|
+
case "undefined":
|
|
1365
|
+
case "function":
|
|
1366
|
+
default:
|
|
1367
|
+
return acc;
|
|
1368
|
+
}
|
|
1369
|
+
},
|
|
1370
|
+
[]
|
|
1371
|
+
);
|
|
1372
|
+
if (types.length === options.length) {
|
|
1373
|
+
const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);
|
|
1374
|
+
return {
|
|
1375
|
+
type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],
|
|
1376
|
+
enum: options.reduce(
|
|
1377
|
+
(acc, x) => {
|
|
1378
|
+
return acc.includes(x._def.value) ? acc : [...acc, x._def.value];
|
|
1379
|
+
},
|
|
1380
|
+
[]
|
|
1381
|
+
)
|
|
1382
|
+
};
|
|
1383
|
+
}
|
|
1384
|
+
} else if (options.every((x) => x._def.typeName === "ZodEnum")) {
|
|
1385
|
+
return {
|
|
1386
|
+
type: "string",
|
|
1387
|
+
enum: options.reduce(
|
|
1388
|
+
(acc, x) => [
|
|
1389
|
+
...acc,
|
|
1390
|
+
...x._def.values.filter((x2) => !acc.includes(x2))
|
|
1391
|
+
],
|
|
1392
|
+
[]
|
|
1393
|
+
)
|
|
1394
|
+
};
|
|
1395
|
+
}
|
|
1396
|
+
return asAnyOf(def, refs);
|
|
1397
|
+
}
|
|
1398
|
+
var asAnyOf = (def, refs) => {
|
|
1399
|
+
const anyOf = (def.options instanceof Map ? Array.from(def.options.values()) : def.options).map(
|
|
1400
|
+
(x, i) => parseDef(x._def, __spreadProps(__spreadValues({}, refs), {
|
|
1401
|
+
currentPath: [...refs.currentPath, "anyOf", `${i}`]
|
|
1402
|
+
}))
|
|
1403
|
+
).filter(
|
|
1404
|
+
(x) => !!x && (!refs.strictUnions || typeof x === "object" && Object.keys(x).length > 0)
|
|
1405
|
+
);
|
|
1406
|
+
return anyOf.length ? { anyOf } : void 0;
|
|
1407
|
+
};
|
|
1408
|
+
function parseNullableDef(def, refs) {
|
|
1409
|
+
if (["ZodString", "ZodNumber", "ZodBigInt", "ZodBoolean", "ZodNull"].includes(
|
|
1410
|
+
def.innerType._def.typeName
|
|
1411
|
+
) && (!def.innerType._def.checks || !def.innerType._def.checks.length)) {
|
|
1412
|
+
return {
|
|
1413
|
+
type: [
|
|
1414
|
+
primitiveMappings[def.innerType._def.typeName],
|
|
1415
|
+
"null"
|
|
1416
|
+
]
|
|
1417
|
+
};
|
|
1418
|
+
}
|
|
1419
|
+
const base = parseDef(def.innerType._def, __spreadProps(__spreadValues({}, refs), {
|
|
1420
|
+
currentPath: [...refs.currentPath, "anyOf", "0"]
|
|
1421
|
+
}));
|
|
1422
|
+
return base && { anyOf: [base, { type: "null" }] };
|
|
1423
|
+
}
|
|
1424
|
+
function parseNumberDef(def) {
|
|
1425
|
+
const res = {
|
|
1426
|
+
type: "number"
|
|
1427
|
+
};
|
|
1428
|
+
if (!def.checks) return res;
|
|
1429
|
+
for (const check of def.checks) {
|
|
1430
|
+
switch (check.kind) {
|
|
1431
|
+
case "int":
|
|
1432
|
+
res.type = "integer";
|
|
1433
|
+
break;
|
|
1434
|
+
case "min":
|
|
1435
|
+
if (check.inclusive) {
|
|
1436
|
+
res.minimum = check.value;
|
|
1437
|
+
} else {
|
|
1438
|
+
res.exclusiveMinimum = check.value;
|
|
1439
|
+
}
|
|
1440
|
+
break;
|
|
1441
|
+
case "max":
|
|
1442
|
+
if (check.inclusive) {
|
|
1443
|
+
res.maximum = check.value;
|
|
1444
|
+
} else {
|
|
1445
|
+
res.exclusiveMaximum = check.value;
|
|
1446
|
+
}
|
|
1447
|
+
break;
|
|
1448
|
+
case "multipleOf":
|
|
1449
|
+
res.multipleOf = check.value;
|
|
1450
|
+
break;
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
return res;
|
|
1454
|
+
}
|
|
1455
|
+
function parseObjectDef(def, refs) {
|
|
1456
|
+
const result = {
|
|
1457
|
+
type: "object",
|
|
1458
|
+
properties: {}
|
|
1459
|
+
};
|
|
1460
|
+
const required = [];
|
|
1461
|
+
const shape = def.shape();
|
|
1462
|
+
for (const propName in shape) {
|
|
1463
|
+
let propDef = shape[propName];
|
|
1464
|
+
if (propDef === void 0 || propDef._def === void 0) {
|
|
1465
|
+
continue;
|
|
1466
|
+
}
|
|
1467
|
+
const propOptional = safeIsOptional(propDef);
|
|
1468
|
+
const parsedDef = parseDef(propDef._def, __spreadProps(__spreadValues({}, refs), {
|
|
1469
|
+
currentPath: [...refs.currentPath, "properties", propName],
|
|
1470
|
+
propertyPath: [...refs.currentPath, "properties", propName]
|
|
1471
|
+
}));
|
|
1472
|
+
if (parsedDef === void 0) {
|
|
1473
|
+
continue;
|
|
1474
|
+
}
|
|
1475
|
+
result.properties[propName] = parsedDef;
|
|
1476
|
+
if (!propOptional) {
|
|
1477
|
+
required.push(propName);
|
|
1478
|
+
}
|
|
1479
|
+
}
|
|
1480
|
+
if (required.length) {
|
|
1481
|
+
result.required = required;
|
|
1482
|
+
}
|
|
1483
|
+
const additionalProperties = decideAdditionalProperties(def, refs);
|
|
1484
|
+
if (additionalProperties !== void 0) {
|
|
1485
|
+
result.additionalProperties = additionalProperties;
|
|
1486
|
+
}
|
|
1487
|
+
return result;
|
|
1488
|
+
}
|
|
1489
|
+
function decideAdditionalProperties(def, refs) {
|
|
1490
|
+
if (def.catchall._def.typeName !== "ZodNever") {
|
|
1491
|
+
return parseDef(def.catchall._def, __spreadProps(__spreadValues({}, refs), {
|
|
1492
|
+
currentPath: [...refs.currentPath, "additionalProperties"]
|
|
1493
|
+
}));
|
|
1494
|
+
}
|
|
1495
|
+
switch (def.unknownKeys) {
|
|
1496
|
+
case "passthrough":
|
|
1497
|
+
return refs.allowedAdditionalProperties;
|
|
1498
|
+
case "strict":
|
|
1499
|
+
return refs.rejectedAdditionalProperties;
|
|
1500
|
+
case "strip":
|
|
1501
|
+
return refs.removeAdditionalStrategy === "strict" ? refs.allowedAdditionalProperties : refs.rejectedAdditionalProperties;
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
1504
|
+
function safeIsOptional(schema) {
|
|
1505
|
+
try {
|
|
1506
|
+
return schema.isOptional();
|
|
1507
|
+
} catch (e) {
|
|
1508
|
+
return true;
|
|
1509
|
+
}
|
|
1510
|
+
}
|
|
1511
|
+
var parseOptionalDef = (def, refs) => {
|
|
1512
|
+
var _a22;
|
|
1513
|
+
if (refs.currentPath.toString() === ((_a22 = refs.propertyPath) == null ? void 0 : _a22.toString())) {
|
|
1514
|
+
return parseDef(def.innerType._def, refs);
|
|
1515
|
+
}
|
|
1516
|
+
const innerSchema = parseDef(def.innerType._def, __spreadProps(__spreadValues({}, refs), {
|
|
1517
|
+
currentPath: [...refs.currentPath, "anyOf", "1"]
|
|
1518
|
+
}));
|
|
1519
|
+
return innerSchema ? { anyOf: [{ not: parseAnyDef() }, innerSchema] } : parseAnyDef();
|
|
1520
|
+
};
|
|
1521
|
+
var parsePipelineDef = (def, refs) => {
|
|
1522
|
+
if (refs.pipeStrategy === "input") {
|
|
1523
|
+
return parseDef(def.in._def, refs);
|
|
1524
|
+
} else if (refs.pipeStrategy === "output") {
|
|
1525
|
+
return parseDef(def.out._def, refs);
|
|
1526
|
+
}
|
|
1527
|
+
const a = parseDef(def.in._def, __spreadProps(__spreadValues({}, refs), {
|
|
1528
|
+
currentPath: [...refs.currentPath, "allOf", "0"]
|
|
1529
|
+
}));
|
|
1530
|
+
const b = parseDef(def.out._def, __spreadProps(__spreadValues({}, refs), {
|
|
1531
|
+
currentPath: [...refs.currentPath, "allOf", a ? "1" : "0"]
|
|
1532
|
+
}));
|
|
1533
|
+
return {
|
|
1534
|
+
allOf: [a, b].filter((x) => x !== void 0)
|
|
1535
|
+
};
|
|
1536
|
+
};
|
|
1537
|
+
function parsePromiseDef(def, refs) {
|
|
1538
|
+
return parseDef(def.type._def, refs);
|
|
1539
|
+
}
|
|
1540
|
+
function parseSetDef(def, refs) {
|
|
1541
|
+
const items = parseDef(def.valueType._def, __spreadProps(__spreadValues({}, refs), {
|
|
1542
|
+
currentPath: [...refs.currentPath, "items"]
|
|
1543
|
+
}));
|
|
1544
|
+
const schema = {
|
|
1545
|
+
type: "array",
|
|
1546
|
+
uniqueItems: true,
|
|
1547
|
+
items
|
|
1548
|
+
};
|
|
1549
|
+
if (def.minSize) {
|
|
1550
|
+
schema.minItems = def.minSize.value;
|
|
1551
|
+
}
|
|
1552
|
+
if (def.maxSize) {
|
|
1553
|
+
schema.maxItems = def.maxSize.value;
|
|
1554
|
+
}
|
|
1555
|
+
return schema;
|
|
1556
|
+
}
|
|
1557
|
+
function parseTupleDef(def, refs) {
|
|
1558
|
+
if (def.rest) {
|
|
1559
|
+
return {
|
|
1560
|
+
type: "array",
|
|
1561
|
+
minItems: def.items.length,
|
|
1562
|
+
items: def.items.map(
|
|
1563
|
+
(x, i) => parseDef(x._def, __spreadProps(__spreadValues({}, refs), {
|
|
1564
|
+
currentPath: [...refs.currentPath, "items", `${i}`]
|
|
1565
|
+
}))
|
|
1566
|
+
).reduce(
|
|
1567
|
+
(acc, x) => x === void 0 ? acc : [...acc, x],
|
|
1568
|
+
[]
|
|
1569
|
+
),
|
|
1570
|
+
additionalItems: parseDef(def.rest._def, __spreadProps(__spreadValues({}, refs), {
|
|
1571
|
+
currentPath: [...refs.currentPath, "additionalItems"]
|
|
1572
|
+
}))
|
|
1573
|
+
};
|
|
1574
|
+
} else {
|
|
1575
|
+
return {
|
|
1576
|
+
type: "array",
|
|
1577
|
+
minItems: def.items.length,
|
|
1578
|
+
maxItems: def.items.length,
|
|
1579
|
+
items: def.items.map(
|
|
1580
|
+
(x, i) => parseDef(x._def, __spreadProps(__spreadValues({}, refs), {
|
|
1581
|
+
currentPath: [...refs.currentPath, "items", `${i}`]
|
|
1582
|
+
}))
|
|
1583
|
+
).reduce(
|
|
1584
|
+
(acc, x) => x === void 0 ? acc : [...acc, x],
|
|
1585
|
+
[]
|
|
1586
|
+
)
|
|
1587
|
+
};
|
|
1588
|
+
}
|
|
1589
|
+
}
|
|
1590
|
+
function parseUndefinedDef() {
|
|
1591
|
+
return {
|
|
1592
|
+
not: parseAnyDef()
|
|
1593
|
+
};
|
|
1594
|
+
}
|
|
1595
|
+
function parseUnknownDef() {
|
|
1596
|
+
return parseAnyDef();
|
|
1597
|
+
}
|
|
1598
|
+
var parseReadonlyDef = (def, refs) => {
|
|
1599
|
+
return parseDef(def.innerType._def, refs);
|
|
1600
|
+
};
|
|
1601
|
+
var selectParser = (def, typeName, refs) => {
|
|
1602
|
+
switch (typeName) {
|
|
1603
|
+
case ZodFirstPartyTypeKind3.ZodString:
|
|
1604
|
+
return parseStringDef(def, refs);
|
|
1605
|
+
case ZodFirstPartyTypeKind3.ZodNumber:
|
|
1606
|
+
return parseNumberDef(def);
|
|
1607
|
+
case ZodFirstPartyTypeKind3.ZodObject:
|
|
1608
|
+
return parseObjectDef(def, refs);
|
|
1609
|
+
case ZodFirstPartyTypeKind3.ZodBigInt:
|
|
1610
|
+
return parseBigintDef(def);
|
|
1611
|
+
case ZodFirstPartyTypeKind3.ZodBoolean:
|
|
1612
|
+
return parseBooleanDef();
|
|
1613
|
+
case ZodFirstPartyTypeKind3.ZodDate:
|
|
1614
|
+
return parseDateDef(def, refs);
|
|
1615
|
+
case ZodFirstPartyTypeKind3.ZodUndefined:
|
|
1616
|
+
return parseUndefinedDef();
|
|
1617
|
+
case ZodFirstPartyTypeKind3.ZodNull:
|
|
1618
|
+
return parseNullDef();
|
|
1619
|
+
case ZodFirstPartyTypeKind3.ZodArray:
|
|
1620
|
+
return parseArrayDef(def, refs);
|
|
1621
|
+
case ZodFirstPartyTypeKind3.ZodUnion:
|
|
1622
|
+
case ZodFirstPartyTypeKind3.ZodDiscriminatedUnion:
|
|
1623
|
+
return parseUnionDef(def, refs);
|
|
1624
|
+
case ZodFirstPartyTypeKind3.ZodIntersection:
|
|
1625
|
+
return parseIntersectionDef(def, refs);
|
|
1626
|
+
case ZodFirstPartyTypeKind3.ZodTuple:
|
|
1627
|
+
return parseTupleDef(def, refs);
|
|
1628
|
+
case ZodFirstPartyTypeKind3.ZodRecord:
|
|
1629
|
+
return parseRecordDef(def, refs);
|
|
1630
|
+
case ZodFirstPartyTypeKind3.ZodLiteral:
|
|
1631
|
+
return parseLiteralDef(def);
|
|
1632
|
+
case ZodFirstPartyTypeKind3.ZodEnum:
|
|
1633
|
+
return parseEnumDef(def);
|
|
1634
|
+
case ZodFirstPartyTypeKind3.ZodNativeEnum:
|
|
1635
|
+
return parseNativeEnumDef(def);
|
|
1636
|
+
case ZodFirstPartyTypeKind3.ZodNullable:
|
|
1637
|
+
return parseNullableDef(def, refs);
|
|
1638
|
+
case ZodFirstPartyTypeKind3.ZodOptional:
|
|
1639
|
+
return parseOptionalDef(def, refs);
|
|
1640
|
+
case ZodFirstPartyTypeKind3.ZodMap:
|
|
1641
|
+
return parseMapDef(def, refs);
|
|
1642
|
+
case ZodFirstPartyTypeKind3.ZodSet:
|
|
1643
|
+
return parseSetDef(def, refs);
|
|
1644
|
+
case ZodFirstPartyTypeKind3.ZodLazy:
|
|
1645
|
+
return () => def.getter()._def;
|
|
1646
|
+
case ZodFirstPartyTypeKind3.ZodPromise:
|
|
1647
|
+
return parsePromiseDef(def, refs);
|
|
1648
|
+
case ZodFirstPartyTypeKind3.ZodNaN:
|
|
1649
|
+
case ZodFirstPartyTypeKind3.ZodNever:
|
|
1650
|
+
return parseNeverDef();
|
|
1651
|
+
case ZodFirstPartyTypeKind3.ZodEffects:
|
|
1652
|
+
return parseEffectsDef(def, refs);
|
|
1653
|
+
case ZodFirstPartyTypeKind3.ZodAny:
|
|
1654
|
+
return parseAnyDef();
|
|
1655
|
+
case ZodFirstPartyTypeKind3.ZodUnknown:
|
|
1656
|
+
return parseUnknownDef();
|
|
1657
|
+
case ZodFirstPartyTypeKind3.ZodDefault:
|
|
1658
|
+
return parseDefaultDef(def, refs);
|
|
1659
|
+
case ZodFirstPartyTypeKind3.ZodBranded:
|
|
1660
|
+
return parseBrandedDef(def, refs);
|
|
1661
|
+
case ZodFirstPartyTypeKind3.ZodReadonly:
|
|
1662
|
+
return parseReadonlyDef(def, refs);
|
|
1663
|
+
case ZodFirstPartyTypeKind3.ZodCatch:
|
|
1664
|
+
return parseCatchDef(def, refs);
|
|
1665
|
+
case ZodFirstPartyTypeKind3.ZodPipeline:
|
|
1666
|
+
return parsePipelineDef(def, refs);
|
|
1667
|
+
case ZodFirstPartyTypeKind3.ZodFunction:
|
|
1668
|
+
case ZodFirstPartyTypeKind3.ZodVoid:
|
|
1669
|
+
case ZodFirstPartyTypeKind3.ZodSymbol:
|
|
1670
|
+
return void 0;
|
|
1671
|
+
default:
|
|
1672
|
+
return /* @__PURE__ */ ((_) => void 0)(typeName);
|
|
1673
|
+
}
|
|
1674
|
+
};
|
|
1675
|
+
var getRelativePath = (pathA, pathB) => {
|
|
1676
|
+
let i = 0;
|
|
1677
|
+
for (; i < pathA.length && i < pathB.length; i++) {
|
|
1678
|
+
if (pathA[i] !== pathB[i]) break;
|
|
1679
|
+
}
|
|
1680
|
+
return [(pathA.length - i).toString(), ...pathB.slice(i)].join("/");
|
|
1681
|
+
};
|
|
1682
|
+
function parseDef(def, refs, forceResolution = false) {
|
|
1683
|
+
var _a22;
|
|
1684
|
+
const seenItem = refs.seen.get(def);
|
|
1685
|
+
if (refs.override) {
|
|
1686
|
+
const overrideResult = (_a22 = refs.override) == null ? void 0 : _a22.call(
|
|
1687
|
+
refs,
|
|
1688
|
+
def,
|
|
1689
|
+
refs,
|
|
1690
|
+
seenItem,
|
|
1691
|
+
forceResolution
|
|
1692
|
+
);
|
|
1693
|
+
if (overrideResult !== ignoreOverride) {
|
|
1694
|
+
return overrideResult;
|
|
1695
|
+
}
|
|
1696
|
+
}
|
|
1697
|
+
if (seenItem && !forceResolution) {
|
|
1698
|
+
const seenSchema = get$ref(seenItem, refs);
|
|
1699
|
+
if (seenSchema !== void 0) {
|
|
1700
|
+
return seenSchema;
|
|
1701
|
+
}
|
|
1702
|
+
}
|
|
1703
|
+
const newItem = { def, path: refs.currentPath, jsonSchema: void 0 };
|
|
1704
|
+
refs.seen.set(def, newItem);
|
|
1705
|
+
const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);
|
|
1706
|
+
const jsonSchema2 = typeof jsonSchemaOrGetter === "function" ? parseDef(jsonSchemaOrGetter(), refs) : jsonSchemaOrGetter;
|
|
1707
|
+
if (jsonSchema2) {
|
|
1708
|
+
addMeta(def, refs, jsonSchema2);
|
|
1709
|
+
}
|
|
1710
|
+
if (refs.postProcess) {
|
|
1711
|
+
const postProcessResult = refs.postProcess(jsonSchema2, def, refs);
|
|
1712
|
+
newItem.jsonSchema = jsonSchema2;
|
|
1713
|
+
return postProcessResult;
|
|
1714
|
+
}
|
|
1715
|
+
newItem.jsonSchema = jsonSchema2;
|
|
1716
|
+
return jsonSchema2;
|
|
1717
|
+
}
|
|
1718
|
+
var get$ref = (item, refs) => {
|
|
1719
|
+
switch (refs.$refStrategy) {
|
|
1720
|
+
case "root":
|
|
1721
|
+
return { $ref: item.path.join("/") };
|
|
1722
|
+
case "relative":
|
|
1723
|
+
return { $ref: getRelativePath(refs.currentPath, item.path) };
|
|
1724
|
+
case "none":
|
|
1725
|
+
case "seen": {
|
|
1726
|
+
if (item.path.length < refs.currentPath.length && item.path.every((value, index) => refs.currentPath[index] === value)) {
|
|
1727
|
+
console.warn(
|
|
1728
|
+
`Recursive reference detected at ${refs.currentPath.join(
|
|
1729
|
+
"/"
|
|
1730
|
+
)}! Defaulting to any`
|
|
1731
|
+
);
|
|
1732
|
+
return parseAnyDef();
|
|
1733
|
+
}
|
|
1734
|
+
return refs.$refStrategy === "seen" ? parseAnyDef() : void 0;
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1737
|
+
};
|
|
1738
|
+
var addMeta = (def, refs, jsonSchema2) => {
|
|
1739
|
+
if (def.description) {
|
|
1740
|
+
jsonSchema2.description = def.description;
|
|
1741
|
+
}
|
|
1742
|
+
return jsonSchema2;
|
|
1743
|
+
};
|
|
1744
|
+
var getRefs = (options) => {
|
|
1745
|
+
const _options = getDefaultOptions(options);
|
|
1746
|
+
const currentPath = _options.name !== void 0 ? [..._options.basePath, _options.definitionPath, _options.name] : _options.basePath;
|
|
1747
|
+
return __spreadProps(__spreadValues({}, _options), {
|
|
1748
|
+
currentPath,
|
|
1749
|
+
propertyPath: void 0,
|
|
1750
|
+
seen: new Map(
|
|
1751
|
+
Object.entries(_options.definitions).map(([name22, def]) => [
|
|
1752
|
+
def._def,
|
|
1753
|
+
{
|
|
1754
|
+
def: def._def,
|
|
1755
|
+
path: [..._options.basePath, _options.definitionPath, name22],
|
|
1756
|
+
// Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.
|
|
1757
|
+
jsonSchema: void 0
|
|
1758
|
+
}
|
|
1759
|
+
])
|
|
1760
|
+
)
|
|
1761
|
+
});
|
|
1762
|
+
};
|
|
1763
|
+
var zod3ToJsonSchema = (schema, options) => {
|
|
1764
|
+
var _a22;
|
|
1765
|
+
const refs = getRefs(options);
|
|
1766
|
+
let definitions = typeof options === "object" && options.definitions ? Object.entries(options.definitions).reduce(
|
|
1767
|
+
(acc, [name32, schema2]) => {
|
|
1768
|
+
var _a32;
|
|
1769
|
+
return __spreadProps(__spreadValues({}, acc), {
|
|
1770
|
+
[name32]: (_a32 = parseDef(
|
|
1771
|
+
schema2._def,
|
|
1772
|
+
__spreadProps(__spreadValues({}, refs), {
|
|
1773
|
+
currentPath: [...refs.basePath, refs.definitionPath, name32]
|
|
1774
|
+
}),
|
|
1775
|
+
true
|
|
1776
|
+
)) != null ? _a32 : parseAnyDef()
|
|
1777
|
+
});
|
|
1778
|
+
},
|
|
1779
|
+
{}
|
|
1780
|
+
) : void 0;
|
|
1781
|
+
const name22 = typeof options === "string" ? options : (options == null ? void 0 : options.nameStrategy) === "title" ? void 0 : options == null ? void 0 : options.name;
|
|
1782
|
+
const main = (_a22 = parseDef(
|
|
1783
|
+
schema._def,
|
|
1784
|
+
name22 === void 0 ? refs : __spreadProps(__spreadValues({}, refs), {
|
|
1785
|
+
currentPath: [...refs.basePath, refs.definitionPath, name22]
|
|
1786
|
+
}),
|
|
1787
|
+
false
|
|
1788
|
+
)) != null ? _a22 : parseAnyDef();
|
|
1789
|
+
const title = typeof options === "object" && options.name !== void 0 && options.nameStrategy === "title" ? options.name : void 0;
|
|
1790
|
+
if (title !== void 0) {
|
|
1791
|
+
main.title = title;
|
|
1792
|
+
}
|
|
1793
|
+
const combined = name22 === void 0 ? definitions ? __spreadProps(__spreadValues({}, main), {
|
|
1794
|
+
[refs.definitionPath]: definitions
|
|
1795
|
+
}) : main : {
|
|
1796
|
+
$ref: [
|
|
1797
|
+
...refs.$refStrategy === "relative" ? [] : refs.basePath,
|
|
1798
|
+
refs.definitionPath,
|
|
1799
|
+
name22
|
|
1800
|
+
].join("/"),
|
|
1801
|
+
[refs.definitionPath]: __spreadProps(__spreadValues({}, definitions), {
|
|
1802
|
+
[name22]: main
|
|
1803
|
+
})
|
|
1804
|
+
};
|
|
1805
|
+
combined.$schema = "http://json-schema.org/draft-07/schema#";
|
|
1806
|
+
return combined;
|
|
1807
|
+
};
|
|
1808
|
+
var schemaSymbol = Symbol.for("vercel.ai.schema");
|
|
1809
|
+
function jsonSchema(jsonSchema2, {
|
|
1810
|
+
validate
|
|
1811
|
+
} = {}) {
|
|
1812
|
+
return {
|
|
1813
|
+
[schemaSymbol]: true,
|
|
1814
|
+
_type: void 0,
|
|
1815
|
+
// should never be used directly
|
|
1816
|
+
get jsonSchema() {
|
|
1817
|
+
if (typeof jsonSchema2 === "function") {
|
|
1818
|
+
jsonSchema2 = jsonSchema2();
|
|
1819
|
+
}
|
|
1820
|
+
return jsonSchema2;
|
|
1821
|
+
},
|
|
1822
|
+
validate
|
|
1823
|
+
};
|
|
1824
|
+
}
|
|
1825
|
+
function isSchema(value) {
|
|
1826
|
+
return typeof value === "object" && value !== null && schemaSymbol in value && value[schemaSymbol] === true && "jsonSchema" in value && "validate" in value;
|
|
1827
|
+
}
|
|
1828
|
+
function asSchema(schema) {
|
|
1829
|
+
return schema == null ? jsonSchema({ properties: {}, additionalProperties: false }) : isSchema(schema) ? schema : "~standard" in schema ? schema["~standard"].vendor === "zod" ? zodSchema(schema) : standardSchema(schema) : schema();
|
|
1830
|
+
}
|
|
1831
|
+
function standardSchema(standardSchema2) {
|
|
1832
|
+
return jsonSchema(
|
|
1833
|
+
() => standardSchema2["~standard"].jsonSchema.input({
|
|
1834
|
+
target: "draft-07"
|
|
1835
|
+
}),
|
|
1836
|
+
{
|
|
1837
|
+
validate: async (value) => {
|
|
1838
|
+
const result = await standardSchema2["~standard"].validate(value);
|
|
1839
|
+
return "value" in result ? { success: true, value: result.value } : {
|
|
1840
|
+
success: false,
|
|
1841
|
+
error: new TypeValidationError({
|
|
1842
|
+
value,
|
|
1843
|
+
cause: result.issues
|
|
1844
|
+
})
|
|
1845
|
+
};
|
|
1846
|
+
}
|
|
1847
|
+
}
|
|
1848
|
+
);
|
|
1849
|
+
}
|
|
1850
|
+
function zod3Schema(zodSchema2, options) {
|
|
1851
|
+
var _a22;
|
|
1852
|
+
const useReferences = (_a22 = options == null ? void 0 : options.useReferences) != null ? _a22 : false;
|
|
1853
|
+
return jsonSchema(
|
|
1854
|
+
// defer json schema creation to avoid unnecessary computation when only validation is needed
|
|
1855
|
+
() => zod3ToJsonSchema(zodSchema2, {
|
|
1856
|
+
$refStrategy: useReferences ? "root" : "none"
|
|
1857
|
+
}),
|
|
1858
|
+
{
|
|
1859
|
+
validate: async (value) => {
|
|
1860
|
+
const result = await zodSchema2.safeParseAsync(value);
|
|
1861
|
+
return result.success ? { success: true, value: result.data } : { success: false, error: result.error };
|
|
1862
|
+
}
|
|
1863
|
+
}
|
|
1864
|
+
);
|
|
1865
|
+
}
|
|
1866
|
+
function zod4Schema(zodSchema2, options) {
|
|
1867
|
+
var _a22;
|
|
1868
|
+
const useReferences = (_a22 = options == null ? void 0 : options.useReferences) != null ? _a22 : false;
|
|
1869
|
+
return jsonSchema(
|
|
1870
|
+
// defer json schema creation to avoid unnecessary computation when only validation is needed
|
|
1871
|
+
() => addAdditionalPropertiesToJsonSchema(
|
|
1872
|
+
z4.toJSONSchema(zodSchema2, {
|
|
1873
|
+
target: "draft-7",
|
|
1874
|
+
io: "input",
|
|
1875
|
+
reused: useReferences ? "ref" : "inline"
|
|
1876
|
+
})
|
|
1877
|
+
),
|
|
1878
|
+
{
|
|
1879
|
+
validate: async (value) => {
|
|
1880
|
+
const result = await z4.safeParseAsync(zodSchema2, value);
|
|
1881
|
+
return result.success ? { success: true, value: result.data } : { success: false, error: result.error };
|
|
1882
|
+
}
|
|
1883
|
+
}
|
|
1884
|
+
);
|
|
1885
|
+
}
|
|
1886
|
+
function isZod4Schema(zodSchema2) {
|
|
1887
|
+
return "_zod" in zodSchema2;
|
|
1888
|
+
}
|
|
1889
|
+
function zodSchema(zodSchema2, options) {
|
|
1890
|
+
if (isZod4Schema(zodSchema2)) {
|
|
1891
|
+
return zod4Schema(zodSchema2, options);
|
|
1892
|
+
} else {
|
|
1893
|
+
return zod3Schema(zodSchema2, options);
|
|
1894
|
+
}
|
|
1895
|
+
}
|
|
602
1896
|
async function validateTypes({
|
|
603
1897
|
value,
|
|
604
1898
|
schema
|
|
@@ -613,12 +1907,12 @@ async function safeValidateTypes({
|
|
|
613
1907
|
value,
|
|
614
1908
|
schema
|
|
615
1909
|
}) {
|
|
616
|
-
const
|
|
1910
|
+
const actualSchema = asSchema(schema);
|
|
617
1911
|
try {
|
|
618
|
-
if (
|
|
1912
|
+
if (actualSchema.validate == null) {
|
|
619
1913
|
return { success: true, value, rawValue: value };
|
|
620
1914
|
}
|
|
621
|
-
const result = await
|
|
1915
|
+
const result = await actualSchema.validate(value);
|
|
622
1916
|
if (result.success) {
|
|
623
1917
|
return { success: true, value: result.value, rawValue: value };
|
|
624
1918
|
}
|
|
@@ -701,7 +1995,7 @@ var postJsonToApi = async ({
|
|
|
701
1995
|
failedResponseHandler,
|
|
702
1996
|
successfulResponseHandler,
|
|
703
1997
|
abortSignal,
|
|
704
|
-
fetch
|
|
1998
|
+
fetch: fetch2
|
|
705
1999
|
}) => postToApi({
|
|
706
2000
|
url,
|
|
707
2001
|
headers: __spreadValues({
|
|
@@ -714,7 +2008,7 @@ var postJsonToApi = async ({
|
|
|
714
2008
|
failedResponseHandler,
|
|
715
2009
|
successfulResponseHandler,
|
|
716
2010
|
abortSignal,
|
|
717
|
-
fetch
|
|
2011
|
+
fetch: fetch2
|
|
718
2012
|
});
|
|
719
2013
|
var postToApi = async ({
|
|
720
2014
|
url,
|
|
@@ -723,12 +2017,16 @@ var postToApi = async ({
|
|
|
723
2017
|
successfulResponseHandler,
|
|
724
2018
|
failedResponseHandler,
|
|
725
2019
|
abortSignal,
|
|
726
|
-
fetch = getOriginalFetch2()
|
|
2020
|
+
fetch: fetch2 = getOriginalFetch2()
|
|
727
2021
|
}) => {
|
|
728
2022
|
try {
|
|
729
|
-
const response = await
|
|
2023
|
+
const response = await fetch2(url, {
|
|
730
2024
|
method: "POST",
|
|
731
|
-
headers:
|
|
2025
|
+
headers: withUserAgentSuffix(
|
|
2026
|
+
headers,
|
|
2027
|
+
`ai-sdk/provider-utils/${VERSION}`,
|
|
2028
|
+
getRuntimeEnvironmentUserAgent()
|
|
2029
|
+
),
|
|
732
2030
|
body: body.content,
|
|
733
2031
|
signal: abortSignal
|
|
734
2032
|
});
|
|
@@ -872,15 +2170,6 @@ var createJsonResponseHandler = (responseSchema) => async ({ response, url, requ
|
|
|
872
2170
|
rawValue: parsedResult.rawValue
|
|
873
2171
|
};
|
|
874
2172
|
};
|
|
875
|
-
var schemaSymbol = Symbol.for("vercel.ai.schema");
|
|
876
|
-
var { btoa, atob } = globalThis;
|
|
877
|
-
function convertUint8ArrayToBase64(array) {
|
|
878
|
-
let latin1string = "";
|
|
879
|
-
for (let i = 0; i < array.length; i++) {
|
|
880
|
-
latin1string += String.fromCodePoint(array[i]);
|
|
881
|
-
}
|
|
882
|
-
return btoa(latin1string);
|
|
883
|
-
}
|
|
884
2173
|
function withoutTrailingSlash(url) {
|
|
885
2174
|
return url == null ? void 0 : url.replace(/\/$/, "");
|
|
886
2175
|
}
|
|
@@ -961,10 +2250,10 @@ function getFileUrl({
|
|
|
961
2250
|
part,
|
|
962
2251
|
defaultMediaType
|
|
963
2252
|
}) {
|
|
964
|
-
var
|
|
2253
|
+
var _a16, _b16;
|
|
965
2254
|
if (part.data instanceof Uint8Array) {
|
|
966
2255
|
const base64 = convertUint8ArrayToBase64(part.data);
|
|
967
|
-
return `data:${(
|
|
2256
|
+
return `data:${(_a16 = part.mediaType) != null ? _a16 : defaultMediaType};base64,${base64}`;
|
|
968
2257
|
}
|
|
969
2258
|
const stringUrl = part.data.toString();
|
|
970
2259
|
if (isUrl({
|
|
@@ -973,12 +2262,12 @@ function getFileUrl({
|
|
|
973
2262
|
})) {
|
|
974
2263
|
return stringUrl;
|
|
975
2264
|
}
|
|
976
|
-
return stringUrl.startsWith("data:") ? stringUrl : `data:${(
|
|
2265
|
+
return stringUrl.startsWith("data:") ? stringUrl : `data:${(_b16 = part.mediaType) != null ? _b16 : defaultMediaType};base64,${stringUrl}`;
|
|
977
2266
|
}
|
|
978
2267
|
function getMediaType(dataUrl, defaultMediaType) {
|
|
979
|
-
var
|
|
2268
|
+
var _a16;
|
|
980
2269
|
const match = dataUrl.match(/^data:([^;]+)/);
|
|
981
|
-
return match ? (
|
|
2270
|
+
return match ? (_a16 = match[1]) != null ? _a16 : defaultMediaType : defaultMediaType;
|
|
982
2271
|
}
|
|
983
2272
|
function getBase64FromDataUrl(dataUrl) {
|
|
984
2273
|
const match = dataUrl.match(/^data:[^;]*;base64,(.+)$/);
|
|
@@ -986,14 +2275,14 @@ function getBase64FromDataUrl(dataUrl) {
|
|
|
986
2275
|
}
|
|
987
2276
|
|
|
988
2277
|
// src/chat/convert-to-llmgateway-chat-messages.ts
|
|
989
|
-
function getCacheControl(
|
|
990
|
-
var
|
|
991
|
-
const anthropic =
|
|
992
|
-
const llmgateway2 =
|
|
993
|
-
return (_c = (
|
|
2278
|
+
function getCacheControl(providerOptions) {
|
|
2279
|
+
var _a16, _b16, _c;
|
|
2280
|
+
const anthropic = providerOptions == null ? void 0 : providerOptions.anthropic;
|
|
2281
|
+
const llmgateway2 = providerOptions == null ? void 0 : providerOptions.llmgateway;
|
|
2282
|
+
return (_c = (_b16 = (_a16 = llmgateway2 == null ? void 0 : llmgateway2.cacheControl) != null ? _a16 : llmgateway2 == null ? void 0 : llmgateway2.cache_control) != null ? _b16 : anthropic == null ? void 0 : anthropic.cacheControl) != null ? _c : anthropic == null ? void 0 : anthropic.cache_control;
|
|
994
2283
|
}
|
|
995
2284
|
function convertToLLMGatewayChatMessages(prompt) {
|
|
996
|
-
var
|
|
2285
|
+
var _a16, _b16, _c;
|
|
997
2286
|
const messages = [];
|
|
998
2287
|
for (const { role, content, providerOptions } of prompt) {
|
|
999
2288
|
switch (role) {
|
|
@@ -1006,8 +2295,8 @@ function convertToLLMGatewayChatMessages(prompt) {
|
|
|
1006
2295
|
break;
|
|
1007
2296
|
}
|
|
1008
2297
|
case "user": {
|
|
1009
|
-
if (content.length === 1 && ((
|
|
1010
|
-
const cacheControl = (
|
|
2298
|
+
if (content.length === 1 && ((_a16 = content[0]) == null ? void 0 : _a16.type) === "text") {
|
|
2299
|
+
const cacheControl = (_b16 = getCacheControl(providerOptions)) != null ? _b16 : getCacheControl(content[0].providerOptions);
|
|
1011
2300
|
const contentWithCacheControl = cacheControl ? [
|
|
1012
2301
|
{
|
|
1013
2302
|
type: "text",
|
|
@@ -1024,8 +2313,8 @@ function convertToLLMGatewayChatMessages(prompt) {
|
|
|
1024
2313
|
const messageCacheControl = getCacheControl(providerOptions);
|
|
1025
2314
|
const contentParts = content.map(
|
|
1026
2315
|
(part) => {
|
|
1027
|
-
var
|
|
1028
|
-
const cacheControl = (
|
|
2316
|
+
var _a17, _b17, _c2, _d, _e, _f;
|
|
2317
|
+
const cacheControl = (_a17 = getCacheControl(part.providerOptions)) != null ? _a17 : messageCacheControl;
|
|
1029
2318
|
switch (part.type) {
|
|
1030
2319
|
case "text":
|
|
1031
2320
|
return {
|
|
@@ -1035,7 +2324,7 @@ function convertToLLMGatewayChatMessages(prompt) {
|
|
|
1035
2324
|
cache_control: cacheControl
|
|
1036
2325
|
};
|
|
1037
2326
|
case "file": {
|
|
1038
|
-
if ((
|
|
2327
|
+
if ((_b17 = part.mediaType) == null ? void 0 : _b17.startsWith("image/")) {
|
|
1039
2328
|
const url = getFileUrl({
|
|
1040
2329
|
part,
|
|
1041
2330
|
defaultMediaType: "image/jpeg"
|
|
@@ -1134,7 +2423,7 @@ function convertToLLMGatewayChatMessages(prompt) {
|
|
|
1134
2423
|
role: "assistant",
|
|
1135
2424
|
content: text,
|
|
1136
2425
|
tool_calls: toolCalls.length > 0 ? toolCalls : void 0,
|
|
1137
|
-
|
|
2426
|
+
reasoningText: reasoning || void 0,
|
|
1138
2427
|
reasoning_details: reasoningDetails.length > 0 ? reasoningDetails : void 0,
|
|
1139
2428
|
cache_control: getCacheControl(providerOptions)
|
|
1140
2429
|
});
|
|
@@ -1239,6 +2528,7 @@ var LLMGatewayNonStreamChatCompletionResponseSchema = LLMGatewayChatCompletionBa
|
|
|
1239
2528
|
role: z6.literal("assistant"),
|
|
1240
2529
|
content: z6.string().nullable().optional(),
|
|
1241
2530
|
reasoning: z6.string().nullable().optional(),
|
|
2531
|
+
reasoningText: z6.string().nullable().optional(),
|
|
1242
2532
|
reasoning_details: ReasoningDetailArraySchema.nullish(),
|
|
1243
2533
|
images: ImageResponseArraySchema.nullish(),
|
|
1244
2534
|
tool_calls: z6.array(
|
|
@@ -1279,6 +2569,7 @@ var LLMGatewayStreamChatCompletionChunkSchema = z6.union([
|
|
|
1279
2569
|
role: z6.enum(["assistant"]).optional(),
|
|
1280
2570
|
content: z6.string().nullish(),
|
|
1281
2571
|
reasoning: z6.string().nullish().optional(),
|
|
2572
|
+
reasoningText: z6.string().nullish().optional(),
|
|
1282
2573
|
reasoning_details: ReasoningDetailArraySchema.nullish(),
|
|
1283
2574
|
images: ImageResponseArraySchema.nullish(),
|
|
1284
2575
|
tool_calls: z6.array(
|
|
@@ -1371,10 +2662,8 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1371
2662
|
messages: convertToLLMGatewayChatMessages(prompt),
|
|
1372
2663
|
// LLMGateway specific settings:
|
|
1373
2664
|
include_reasoning: this.settings.includeReasoning,
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
usage: this.settings.usage,
|
|
1377
|
-
image_config: this.settings.image_config
|
|
2665
|
+
reasoningText: this.settings.reasoningText,
|
|
2666
|
+
usage: this.settings.usage
|
|
1378
2667
|
}, this.config.extraBody), this.settings.extraBody);
|
|
1379
2668
|
if ((responseFormat == null ? void 0 : responseFormat.type) === "json") {
|
|
1380
2669
|
if ("schema" in responseFormat && responseFormat.schema) {
|
|
@@ -1400,7 +2689,7 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1400
2689
|
function: {
|
|
1401
2690
|
name: tool.name,
|
|
1402
2691
|
description: tool.type,
|
|
1403
|
-
|
|
2692
|
+
inputSchema: tool.inputSchema
|
|
1404
2693
|
}
|
|
1405
2694
|
}));
|
|
1406
2695
|
return __spreadProps(__spreadValues({}, baseArgs), {
|
|
@@ -1411,10 +2700,11 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1411
2700
|
return baseArgs;
|
|
1412
2701
|
}
|
|
1413
2702
|
async doGenerate(options) {
|
|
1414
|
-
var
|
|
2703
|
+
var _a16, _b16, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
|
|
1415
2704
|
const providerOptions = options.providerOptions || {};
|
|
1416
2705
|
const llmgatewayOptions = providerOptions.llmgateway || {};
|
|
1417
2706
|
const args = __spreadValues(__spreadValues({}, this.getArgs(options)), llmgatewayOptions);
|
|
2707
|
+
const includeUsageAccounting = ((_a16 = args.usage) == null ? void 0 : _a16.include) === true;
|
|
1418
2708
|
const { value: response, responseHeaders } = await postJsonToApi({
|
|
1419
2709
|
url: this.config.url({
|
|
1420
2710
|
path: "/chat/completions",
|
|
@@ -1434,11 +2724,11 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1434
2724
|
throw new Error("No choice in response");
|
|
1435
2725
|
}
|
|
1436
2726
|
const usageInfo = response.usage ? {
|
|
1437
|
-
inputTokens: (
|
|
1438
|
-
outputTokens: (
|
|
1439
|
-
totalTokens: ((
|
|
1440
|
-
reasoningTokens: (
|
|
1441
|
-
cachedInputTokens: (
|
|
2727
|
+
inputTokens: (_b16 = response.usage.prompt_tokens) != null ? _b16 : 0,
|
|
2728
|
+
outputTokens: (_c = response.usage.completion_tokens) != null ? _c : 0,
|
|
2729
|
+
totalTokens: ((_d = response.usage.prompt_tokens) != null ? _d : 0) + ((_e = response.usage.completion_tokens) != null ? _e : 0),
|
|
2730
|
+
reasoningTokens: (_g = (_f = response.usage.completion_tokens_details) == null ? void 0 : _f.reasoning_tokens) != null ? _g : 0,
|
|
2731
|
+
cachedInputTokens: (_i = (_h = response.usage.prompt_tokens_details) == null ? void 0 : _h.cached_tokens) != null ? _i : 0
|
|
1442
2732
|
} : {
|
|
1443
2733
|
inputTokens: 0,
|
|
1444
2734
|
outputTokens: 0,
|
|
@@ -1446,7 +2736,7 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1446
2736
|
reasoningTokens: 0,
|
|
1447
2737
|
cachedInputTokens: 0
|
|
1448
2738
|
};
|
|
1449
|
-
const reasoningDetails = (
|
|
2739
|
+
const reasoningDetails = (_j = choice.message.reasoning_details) != null ? _j : [];
|
|
1450
2740
|
const reasoning = reasoningDetails.length > 0 ? reasoningDetails.map((detail) => {
|
|
1451
2741
|
switch (detail.type) {
|
|
1452
2742
|
case "reasoning.text" /* Text */: {
|
|
@@ -1484,10 +2774,10 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1484
2774
|
return null;
|
|
1485
2775
|
}).filter(
|
|
1486
2776
|
(p) => p !== null
|
|
1487
|
-
) : choice.message.
|
|
2777
|
+
) : choice.message.reasoningText ? [
|
|
1488
2778
|
{
|
|
1489
2779
|
type: "reasoning",
|
|
1490
|
-
text: choice.message.
|
|
2780
|
+
text: choice.message.reasoningText
|
|
1491
2781
|
}
|
|
1492
2782
|
] : [];
|
|
1493
2783
|
const content = [];
|
|
@@ -1502,7 +2792,7 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1502
2792
|
for (const toolCall of choice.message.tool_calls) {
|
|
1503
2793
|
content.push({
|
|
1504
2794
|
type: "tool-call",
|
|
1505
|
-
toolCallId: (
|
|
2795
|
+
toolCallId: (_k = toolCall.id) != null ? _k : generateId(),
|
|
1506
2796
|
toolName: toolCall.function.name,
|
|
1507
2797
|
input: toolCall.function.arguments
|
|
1508
2798
|
});
|
|
@@ -1527,7 +2817,7 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1527
2817
|
url: annotation.url_citation.url,
|
|
1528
2818
|
title: annotation.url_citation.title,
|
|
1529
2819
|
providerMetadata: {
|
|
1530
|
-
|
|
2820
|
+
llmgateway: {
|
|
1531
2821
|
content: annotation.url_citation.content || ""
|
|
1532
2822
|
}
|
|
1533
2823
|
}
|
|
@@ -1540,25 +2830,25 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1540
2830
|
finishReason: mapLLMGatewayFinishReason(choice.finish_reason),
|
|
1541
2831
|
usage: usageInfo,
|
|
1542
2832
|
warnings: [],
|
|
1543
|
-
providerMetadata: {
|
|
2833
|
+
providerMetadata: includeUsageAccounting ? {
|
|
1544
2834
|
llmgateway: {
|
|
1545
2835
|
usage: {
|
|
1546
|
-
promptTokens: (
|
|
1547
|
-
completionTokens: (
|
|
1548
|
-
totalTokens: (
|
|
1549
|
-
cost: (
|
|
2836
|
+
promptTokens: (_l = usageInfo.inputTokens) != null ? _l : 0,
|
|
2837
|
+
completionTokens: (_m = usageInfo.outputTokens) != null ? _m : 0,
|
|
2838
|
+
totalTokens: (_n = usageInfo.totalTokens) != null ? _n : 0,
|
|
2839
|
+
cost: (_o = response.usage) == null ? void 0 : _o.cost,
|
|
1550
2840
|
promptTokensDetails: {
|
|
1551
|
-
cachedTokens: (
|
|
2841
|
+
cachedTokens: (_r = (_q = (_p = response.usage) == null ? void 0 : _p.prompt_tokens_details) == null ? void 0 : _q.cached_tokens) != null ? _r : 0
|
|
1552
2842
|
},
|
|
1553
2843
|
completionTokensDetails: {
|
|
1554
|
-
reasoningTokens: (
|
|
2844
|
+
reasoningTokens: (_u = (_t = (_s = response.usage) == null ? void 0 : _s.completion_tokens_details) == null ? void 0 : _t.reasoning_tokens) != null ? _u : 0
|
|
1555
2845
|
},
|
|
1556
2846
|
costDetails: {
|
|
1557
|
-
upstreamInferenceCost: (
|
|
2847
|
+
upstreamInferenceCost: (_x = (_w = (_v = response.usage) == null ? void 0 : _v.cost_details) == null ? void 0 : _w.upstream_inference_cost) != null ? _x : 0
|
|
1558
2848
|
}
|
|
1559
2849
|
}
|
|
1560
2850
|
}
|
|
1561
|
-
},
|
|
2851
|
+
} : void 0,
|
|
1562
2852
|
request: { body: args },
|
|
1563
2853
|
response: {
|
|
1564
2854
|
id: response.id,
|
|
@@ -1568,7 +2858,6 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1568
2858
|
};
|
|
1569
2859
|
}
|
|
1570
2860
|
async doStream(options) {
|
|
1571
|
-
var _a15;
|
|
1572
2861
|
const providerOptions = options.providerOptions || {};
|
|
1573
2862
|
const llmgatewayOptions = providerOptions.llmgateway || {};
|
|
1574
2863
|
const args = __spreadValues(__spreadValues({}, this.getArgs(options)), llmgatewayOptions);
|
|
@@ -1581,9 +2870,7 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1581
2870
|
body: __spreadProps(__spreadValues({}, args), {
|
|
1582
2871
|
stream: true,
|
|
1583
2872
|
// only include stream_options when in strict compatibility mode:
|
|
1584
|
-
stream_options: this.config.compatibility === "strict" ?
|
|
1585
|
-
include_usage: true
|
|
1586
|
-
}, ((_a15 = this.settings.usage) == null ? void 0 : _a15.include) ? { include_usage: true } : {}) : void 0
|
|
2873
|
+
stream_options: this.config.compatibility === "strict" ? { include_usage: true } : void 0
|
|
1587
2874
|
}),
|
|
1588
2875
|
failedResponseHandler: llmgatewayFailedResponseHandler,
|
|
1589
2876
|
successfulResponseHandler: createEventSourceResponseHandler(
|
|
@@ -1611,7 +2898,7 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1611
2898
|
stream: response.pipeThrough(
|
|
1612
2899
|
new TransformStream({
|
|
1613
2900
|
transform(chunk, controller) {
|
|
1614
|
-
var _a16,
|
|
2901
|
+
var _a16, _b16, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
|
|
1615
2902
|
if (!chunk.success) {
|
|
1616
2903
|
finishReason = "error";
|
|
1617
2904
|
controller.enqueue({ type: "error", error: chunk.error });
|
|
@@ -1650,7 +2937,7 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1650
2937
|
}
|
|
1651
2938
|
llmgatewayUsage.completionTokens = value.usage.completion_tokens;
|
|
1652
2939
|
if (value.usage.completion_tokens_details) {
|
|
1653
|
-
const reasoningTokens = (
|
|
2940
|
+
const reasoningTokens = (_b16 = value.usage.completion_tokens_details.reasoning_tokens) != null ? _b16 : 0;
|
|
1654
2941
|
usage.reasoningTokens = reasoningTokens;
|
|
1655
2942
|
llmgatewayUsage.completionTokensDetails = {
|
|
1656
2943
|
reasoningTokens
|
|
@@ -1709,8 +2996,10 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1709
2996
|
}
|
|
1710
2997
|
}
|
|
1711
2998
|
}
|
|
1712
|
-
} else if (delta.
|
|
1713
|
-
emitReasoningChunk(
|
|
2999
|
+
} else if (delta.reasoningText != null || "reasoning" in delta && typeof delta.reasoning === "string") {
|
|
3000
|
+
emitReasoningChunk(
|
|
3001
|
+
(_d = (_c = delta.reasoningText) != null ? _c : "reasoning" in delta && typeof delta.reasoning === "string" ? delta.reasoning : void 0) != null ? _d : ""
|
|
3002
|
+
);
|
|
1714
3003
|
}
|
|
1715
3004
|
if (delta.content != null) {
|
|
1716
3005
|
if (!textStarted) {
|
|
@@ -1729,7 +3018,7 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1729
3018
|
}
|
|
1730
3019
|
if (delta.tool_calls != null) {
|
|
1731
3020
|
for (const toolCallDelta of delta.tool_calls) {
|
|
1732
|
-
const index = (
|
|
3021
|
+
const index = (_e = toolCallDelta.index) != null ? _e : toolCalls.length - 1;
|
|
1733
3022
|
if (toolCalls[index] == null) {
|
|
1734
3023
|
if (toolCallDelta.type !== "function") {
|
|
1735
3024
|
throw new InvalidResponseDataError({
|
|
@@ -1743,7 +3032,7 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1743
3032
|
message: `Expected 'id' to be a string.`
|
|
1744
3033
|
});
|
|
1745
3034
|
}
|
|
1746
|
-
if (((
|
|
3035
|
+
if (((_f = toolCallDelta.function) == null ? void 0 : _f.name) == null) {
|
|
1747
3036
|
throw new InvalidResponseDataError({
|
|
1748
3037
|
data: toolCallDelta,
|
|
1749
3038
|
message: `Expected 'function.name' to be a string.`
|
|
@@ -1754,7 +3043,7 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1754
3043
|
type: "function",
|
|
1755
3044
|
function: {
|
|
1756
3045
|
name: toolCallDelta.function.name,
|
|
1757
|
-
arguments: (
|
|
3046
|
+
arguments: (_g = toolCallDelta.function.arguments) != null ? _g : ""
|
|
1758
3047
|
},
|
|
1759
3048
|
inputStarted: false,
|
|
1760
3049
|
sent: false
|
|
@@ -1763,7 +3052,7 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1763
3052
|
if (toolCall2 == null) {
|
|
1764
3053
|
throw new Error("Tool call is missing");
|
|
1765
3054
|
}
|
|
1766
|
-
if (((
|
|
3055
|
+
if (((_h = toolCall2.function) == null ? void 0 : _h.name) != null && ((_i = toolCall2.function) == null ? void 0 : _i.arguments) != null && isParsableJson(toolCall2.function.arguments)) {
|
|
1767
3056
|
toolCall2.inputStarted = true;
|
|
1768
3057
|
controller.enqueue({
|
|
1769
3058
|
type: "tool-input-start",
|
|
@@ -1801,18 +3090,18 @@ var LLMGatewayChatLanguageModel = class {
|
|
|
1801
3090
|
toolName: toolCall.function.name
|
|
1802
3091
|
});
|
|
1803
3092
|
}
|
|
1804
|
-
if (((
|
|
1805
|
-
toolCall.function.arguments += (
|
|
3093
|
+
if (((_j = toolCallDelta.function) == null ? void 0 : _j.arguments) != null) {
|
|
3094
|
+
toolCall.function.arguments += (_l = (_k = toolCallDelta.function) == null ? void 0 : _k.arguments) != null ? _l : "";
|
|
1806
3095
|
}
|
|
1807
3096
|
controller.enqueue({
|
|
1808
3097
|
type: "tool-input-delta",
|
|
1809
3098
|
id: toolCall.id,
|
|
1810
|
-
delta: (
|
|
3099
|
+
delta: (_m = toolCallDelta.function.arguments) != null ? _m : ""
|
|
1811
3100
|
});
|
|
1812
|
-
if (((
|
|
3101
|
+
if (((_n = toolCall.function) == null ? void 0 : _n.name) != null && ((_o = toolCall.function) == null ? void 0 : _o.arguments) != null && isParsableJson(toolCall.function.arguments)) {
|
|
1813
3102
|
controller.enqueue({
|
|
1814
3103
|
type: "tool-call",
|
|
1815
|
-
toolCallId: (
|
|
3104
|
+
toolCallId: (_p = toolCall.id) != null ? _p : generateId(),
|
|
1816
3105
|
toolName: toolCall.function.name,
|
|
1817
3106
|
input: toolCall.function.arguments
|
|
1818
3107
|
});
|
|
@@ -1990,7 +3279,7 @@ var LLMGatewayCompletionChunkSchema = z7.union([
|
|
|
1990
3279
|
choices: z7.array(
|
|
1991
3280
|
z7.object({
|
|
1992
3281
|
text: z7.string(),
|
|
1993
|
-
|
|
3282
|
+
reasoningText: z7.string().nullish().optional(),
|
|
1994
3283
|
reasoning_details: ReasoningDetailArraySchema.nullish(),
|
|
1995
3284
|
finish_reason: z7.string().nullish(),
|
|
1996
3285
|
index: z7.number().nullish(),
|
|
@@ -2086,13 +3375,11 @@ var LLMGatewayCompletionLanguageModel = class {
|
|
|
2086
3375
|
prompt: completionPrompt,
|
|
2087
3376
|
// LLMGateway specific settings:
|
|
2088
3377
|
include_reasoning: this.settings.includeReasoning,
|
|
2089
|
-
|
|
2090
|
-
reasoning_effort: this.settings.reasoning_effort,
|
|
2091
|
-
image_config: this.settings.image_config
|
|
3378
|
+
reasoningText: this.settings.reasoningText
|
|
2092
3379
|
}, this.config.extraBody), this.settings.extraBody);
|
|
2093
3380
|
}
|
|
2094
3381
|
async doGenerate(options) {
|
|
2095
|
-
var
|
|
3382
|
+
var _a16, _b16, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
|
|
2096
3383
|
const providerOptions = options.providerOptions || {};
|
|
2097
3384
|
const llmgatewayOptions = providerOptions.llmgateway || {};
|
|
2098
3385
|
const args = __spreadValues(__spreadValues({}, this.getArgs(options)), llmgatewayOptions);
|
|
@@ -2121,12 +3408,12 @@ var LLMGatewayCompletionLanguageModel = class {
|
|
|
2121
3408
|
content: [
|
|
2122
3409
|
{
|
|
2123
3410
|
type: "text",
|
|
2124
|
-
text: (
|
|
3411
|
+
text: (_a16 = choice.text) != null ? _a16 : ""
|
|
2125
3412
|
}
|
|
2126
3413
|
],
|
|
2127
3414
|
finishReason: mapLLMGatewayFinishReason(choice.finish_reason),
|
|
2128
3415
|
usage: {
|
|
2129
|
-
inputTokens: (_c = (
|
|
3416
|
+
inputTokens: (_c = (_b16 = response.usage) == null ? void 0 : _b16.prompt_tokens) != null ? _c : 0,
|
|
2130
3417
|
outputTokens: (_e = (_d = response.usage) == null ? void 0 : _d.completion_tokens) != null ? _e : 0,
|
|
2131
3418
|
totalTokens: ((_g = (_f = response.usage) == null ? void 0 : _f.prompt_tokens) != null ? _g : 0) + ((_i = (_h = response.usage) == null ? void 0 : _h.completion_tokens) != null ? _i : 0),
|
|
2132
3419
|
reasoningTokens: (_l = (_k = (_j = response.usage) == null ? void 0 : _j.completion_tokens_details) == null ? void 0 : _k.reasoning_tokens) != null ? _l : 0,
|
|
@@ -2173,7 +3460,7 @@ var LLMGatewayCompletionLanguageModel = class {
|
|
|
2173
3460
|
stream: response.pipeThrough(
|
|
2174
3461
|
new TransformStream({
|
|
2175
3462
|
transform(chunk, controller) {
|
|
2176
|
-
var
|
|
3463
|
+
var _a16, _b16;
|
|
2177
3464
|
if (!chunk.success) {
|
|
2178
3465
|
finishReason = "error";
|
|
2179
3466
|
controller.enqueue({ type: "error", error: chunk.error });
|
|
@@ -2191,7 +3478,7 @@ var LLMGatewayCompletionLanguageModel = class {
|
|
|
2191
3478
|
usage.totalTokens = value.usage.prompt_tokens + value.usage.completion_tokens;
|
|
2192
3479
|
llmgatewayUsage.promptTokens = value.usage.prompt_tokens;
|
|
2193
3480
|
if (value.usage.prompt_tokens_details) {
|
|
2194
|
-
const cachedInputTokens = (
|
|
3481
|
+
const cachedInputTokens = (_a16 = value.usage.prompt_tokens_details.cached_tokens) != null ? _a16 : 0;
|
|
2195
3482
|
usage.cachedInputTokens = cachedInputTokens;
|
|
2196
3483
|
llmgatewayUsage.promptTokensDetails = {
|
|
2197
3484
|
cachedTokens: cachedInputTokens
|
|
@@ -2199,7 +3486,7 @@ var LLMGatewayCompletionLanguageModel = class {
|
|
|
2199
3486
|
}
|
|
2200
3487
|
llmgatewayUsage.completionTokens = value.usage.completion_tokens;
|
|
2201
3488
|
if (value.usage.completion_tokens_details) {
|
|
2202
|
-
const reasoningTokens = (
|
|
3489
|
+
const reasoningTokens = (_b16 = value.usage.completion_tokens_details.reasoning_tokens) != null ? _b16 : 0;
|
|
2203
3490
|
usage.reasoningTokens = reasoningTokens;
|
|
2204
3491
|
llmgatewayUsage.completionTokensDetails = {
|
|
2205
3492
|
reasoningTokens
|
|
@@ -2247,8 +3534,8 @@ var LLMGateway = class {
|
|
|
2247
3534
|
* Creates a new LLMGateway provider instance.
|
|
2248
3535
|
*/
|
|
2249
3536
|
constructor(options = {}) {
|
|
2250
|
-
var
|
|
2251
|
-
this.baseURL = (
|
|
3537
|
+
var _a16, _b16;
|
|
3538
|
+
this.baseURL = (_b16 = withoutTrailingSlash((_a16 = options.baseURL) != null ? _a16 : options.baseUrl)) != null ? _b16 : "https://api.llmgateway.io/v1";
|
|
2252
3539
|
this.apiKey = options.apiKey;
|
|
2253
3540
|
this.headers = options.headers;
|
|
2254
3541
|
}
|
|
@@ -2284,8 +3571,8 @@ var LLMGateway = class {
|
|
|
2284
3571
|
|
|
2285
3572
|
// src/provider.ts
|
|
2286
3573
|
function createLLMGateway(options = {}) {
|
|
2287
|
-
var
|
|
2288
|
-
const baseURL = (_c = (
|
|
3574
|
+
var _a16, _b16, _c, _d;
|
|
3575
|
+
const baseURL = (_c = (_b16 = withoutTrailingSlash((_a16 = options.baseURL) != null ? _a16 : options.baseUrl)) != null ? _b16 : process.env.LLM_GATEWAY_API_BASE) != null ? _c : "https://api.llmgateway.io/v1";
|
|
2289
3576
|
const compatibility = (_d = options.compatibility) != null ? _d : "compatible";
|
|
2290
3577
|
const getHeaders = () => __spreadValues({
|
|
2291
3578
|
Authorization: `Bearer ${loadApiKey({
|