@ai-sdk/provider-utils 2.1.2 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/index.d.mts +53 -38
- package/dist/index.d.ts +53 -38
- package/dist/index.js +175 -42
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +152 -22
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/index.d.mts
CHANGED
@@ -54,43 +54,6 @@ declare const generateId: (size?: number) => string;
|
|
54
54
|
|
55
55
|
declare function getErrorMessage(error: unknown | undefined): string;
|
56
56
|
|
57
|
-
declare function isAbortError(error: unknown): error is Error;
|
58
|
-
|
59
|
-
declare function loadApiKey({ apiKey, environmentVariableName, apiKeyParameterName, description, }: {
|
60
|
-
apiKey: string | undefined;
|
61
|
-
environmentVariableName: string;
|
62
|
-
apiKeyParameterName?: string;
|
63
|
-
description: string;
|
64
|
-
}): string;
|
65
|
-
|
66
|
-
/**
|
67
|
-
* Loads an optional `string` setting from the environment or a parameter.
|
68
|
-
*
|
69
|
-
* @param settingValue - The setting value.
|
70
|
-
* @param environmentVariableName - The environment variable name.
|
71
|
-
* @returns The setting value.
|
72
|
-
*/
|
73
|
-
declare function loadOptionalSetting({ settingValue, environmentVariableName, }: {
|
74
|
-
settingValue: string | undefined;
|
75
|
-
environmentVariableName: string;
|
76
|
-
}): string | undefined;
|
77
|
-
|
78
|
-
/**
|
79
|
-
* Loads a `string` setting from the environment or a parameter.
|
80
|
-
*
|
81
|
-
* @param settingValue - The setting value.
|
82
|
-
* @param environmentVariableName - The environment variable name.
|
83
|
-
* @param settingName - The setting name.
|
84
|
-
* @param description - The description of the setting.
|
85
|
-
* @returns The setting value.
|
86
|
-
*/
|
87
|
-
declare function loadSetting({ settingValue, environmentVariableName, settingName, description, }: {
|
88
|
-
settingValue: string | undefined;
|
89
|
-
environmentVariableName: string;
|
90
|
-
settingName: string;
|
91
|
-
description: string;
|
92
|
-
}): string;
|
93
|
-
|
94
57
|
/**
|
95
58
|
* Used to mark validator functions so we can support both Zod and custom schemas.
|
96
59
|
*/
|
@@ -194,6 +157,58 @@ declare const createJsonErrorResponseHandler: <T>({ errorSchema, errorToMessage,
|
|
194
157
|
declare const createEventSourceResponseHandler: <T>(chunkSchema: ZodSchema<T>) => ResponseHandler<ReadableStream<ParseResult<T>>>;
|
195
158
|
declare const createJsonStreamResponseHandler: <T>(chunkSchema: ZodSchema<T>) => ResponseHandler<ReadableStream<ParseResult<T>>>;
|
196
159
|
declare const createJsonResponseHandler: <T>(responseSchema: ZodSchema<T>) => ResponseHandler<T>;
|
160
|
+
declare const createBinaryResponseHandler: () => ResponseHandler<Uint8Array>;
|
161
|
+
declare const createStatusCodeErrorResponseHandler: () => ResponseHandler<APICallError>;
|
162
|
+
|
163
|
+
declare const getFromApi: <T>({ url, headers, successfulResponseHandler, failedResponseHandler, abortSignal, fetch, }: {
|
164
|
+
url: string;
|
165
|
+
headers?: Record<string, string | undefined>;
|
166
|
+
failedResponseHandler: ResponseHandler<Error>;
|
167
|
+
successfulResponseHandler: ResponseHandler<T>;
|
168
|
+
abortSignal?: AbortSignal;
|
169
|
+
fetch?: FetchFunction;
|
170
|
+
}) => Promise<{
|
171
|
+
value: T;
|
172
|
+
rawValue?: unknown;
|
173
|
+
responseHeaders?: Record<string, string>;
|
174
|
+
}>;
|
175
|
+
|
176
|
+
declare function isAbortError(error: unknown): error is Error;
|
177
|
+
|
178
|
+
declare function loadApiKey({ apiKey, environmentVariableName, apiKeyParameterName, description, }: {
|
179
|
+
apiKey: string | undefined;
|
180
|
+
environmentVariableName: string;
|
181
|
+
apiKeyParameterName?: string;
|
182
|
+
description: string;
|
183
|
+
}): string;
|
184
|
+
|
185
|
+
/**
|
186
|
+
* Loads an optional `string` setting from the environment or a parameter.
|
187
|
+
*
|
188
|
+
* @param settingValue - The setting value.
|
189
|
+
* @param environmentVariableName - The environment variable name.
|
190
|
+
* @returns The setting value.
|
191
|
+
*/
|
192
|
+
declare function loadOptionalSetting({ settingValue, environmentVariableName, }: {
|
193
|
+
settingValue: string | undefined;
|
194
|
+
environmentVariableName: string;
|
195
|
+
}): string | undefined;
|
196
|
+
|
197
|
+
/**
|
198
|
+
* Loads a `string` setting from the environment or a parameter.
|
199
|
+
*
|
200
|
+
* @param settingValue - The setting value.
|
201
|
+
* @param environmentVariableName - The environment variable name.
|
202
|
+
* @param settingName - The setting name.
|
203
|
+
* @param description - The description of the setting.
|
204
|
+
* @returns The setting value.
|
205
|
+
*/
|
206
|
+
declare function loadSetting({ settingValue, environmentVariableName, settingName, description, }: {
|
207
|
+
settingValue: string | undefined;
|
208
|
+
environmentVariableName: string;
|
209
|
+
settingName: string;
|
210
|
+
description: string;
|
211
|
+
}): string;
|
197
212
|
|
198
213
|
declare const postJsonToApi: <T>({ url, headers, body, failedResponseHandler, successfulResponseHandler, abortSignal, fetch, }: {
|
199
214
|
url: string;
|
@@ -312,4 +327,4 @@ interface ToolResult<NAME extends string, ARGS, RESULT> {
|
|
312
327
|
result: RESULT;
|
313
328
|
}
|
314
329
|
|
315
|
-
export { type FetchFunction, type IDGenerator, type ParseResult, type Resolvable, type ResponseHandler, type ToolCall, type ToolResult, type ValidationResult, type Validator, asValidator, combineHeaders, convertAsyncIteratorToReadableStream, convertBase64ToUint8Array, convertUint8ArrayToBase64, createEventSourceResponseHandler, createIdGenerator, createJsonErrorResponseHandler, createJsonResponseHandler, createJsonStreamResponseHandler, extractResponseHeaders, generateId, getErrorMessage, isAbortError, isParsableJson, isValidator, loadApiKey, loadOptionalSetting, loadSetting, parseJSON, postJsonToApi, postToApi, resolve, safeParseJSON, safeValidateTypes, validateTypes, validator, validatorSymbol, withoutTrailingSlash, zodValidator };
|
330
|
+
export { type FetchFunction, type IDGenerator, type ParseResult, type Resolvable, type ResponseHandler, type ToolCall, type ToolResult, type ValidationResult, type Validator, asValidator, combineHeaders, convertAsyncIteratorToReadableStream, convertBase64ToUint8Array, convertUint8ArrayToBase64, createBinaryResponseHandler, createEventSourceResponseHandler, createIdGenerator, createJsonErrorResponseHandler, createJsonResponseHandler, createJsonStreamResponseHandler, createStatusCodeErrorResponseHandler, extractResponseHeaders, generateId, getErrorMessage, getFromApi, isAbortError, isParsableJson, isValidator, loadApiKey, loadOptionalSetting, loadSetting, parseJSON, postJsonToApi, postToApi, resolve, safeParseJSON, safeValidateTypes, validateTypes, validator, validatorSymbol, withoutTrailingSlash, zodValidator };
|
package/dist/index.d.ts
CHANGED
@@ -54,43 +54,6 @@ declare const generateId: (size?: number) => string;
|
|
54
54
|
|
55
55
|
declare function getErrorMessage(error: unknown | undefined): string;
|
56
56
|
|
57
|
-
declare function isAbortError(error: unknown): error is Error;
|
58
|
-
|
59
|
-
declare function loadApiKey({ apiKey, environmentVariableName, apiKeyParameterName, description, }: {
|
60
|
-
apiKey: string | undefined;
|
61
|
-
environmentVariableName: string;
|
62
|
-
apiKeyParameterName?: string;
|
63
|
-
description: string;
|
64
|
-
}): string;
|
65
|
-
|
66
|
-
/**
|
67
|
-
* Loads an optional `string` setting from the environment or a parameter.
|
68
|
-
*
|
69
|
-
* @param settingValue - The setting value.
|
70
|
-
* @param environmentVariableName - The environment variable name.
|
71
|
-
* @returns The setting value.
|
72
|
-
*/
|
73
|
-
declare function loadOptionalSetting({ settingValue, environmentVariableName, }: {
|
74
|
-
settingValue: string | undefined;
|
75
|
-
environmentVariableName: string;
|
76
|
-
}): string | undefined;
|
77
|
-
|
78
|
-
/**
|
79
|
-
* Loads a `string` setting from the environment or a parameter.
|
80
|
-
*
|
81
|
-
* @param settingValue - The setting value.
|
82
|
-
* @param environmentVariableName - The environment variable name.
|
83
|
-
* @param settingName - The setting name.
|
84
|
-
* @param description - The description of the setting.
|
85
|
-
* @returns The setting value.
|
86
|
-
*/
|
87
|
-
declare function loadSetting({ settingValue, environmentVariableName, settingName, description, }: {
|
88
|
-
settingValue: string | undefined;
|
89
|
-
environmentVariableName: string;
|
90
|
-
settingName: string;
|
91
|
-
description: string;
|
92
|
-
}): string;
|
93
|
-
|
94
57
|
/**
|
95
58
|
* Used to mark validator functions so we can support both Zod and custom schemas.
|
96
59
|
*/
|
@@ -194,6 +157,58 @@ declare const createJsonErrorResponseHandler: <T>({ errorSchema, errorToMessage,
|
|
194
157
|
declare const createEventSourceResponseHandler: <T>(chunkSchema: ZodSchema<T>) => ResponseHandler<ReadableStream<ParseResult<T>>>;
|
195
158
|
declare const createJsonStreamResponseHandler: <T>(chunkSchema: ZodSchema<T>) => ResponseHandler<ReadableStream<ParseResult<T>>>;
|
196
159
|
declare const createJsonResponseHandler: <T>(responseSchema: ZodSchema<T>) => ResponseHandler<T>;
|
160
|
+
declare const createBinaryResponseHandler: () => ResponseHandler<Uint8Array>;
|
161
|
+
declare const createStatusCodeErrorResponseHandler: () => ResponseHandler<APICallError>;
|
162
|
+
|
163
|
+
declare const getFromApi: <T>({ url, headers, successfulResponseHandler, failedResponseHandler, abortSignal, fetch, }: {
|
164
|
+
url: string;
|
165
|
+
headers?: Record<string, string | undefined>;
|
166
|
+
failedResponseHandler: ResponseHandler<Error>;
|
167
|
+
successfulResponseHandler: ResponseHandler<T>;
|
168
|
+
abortSignal?: AbortSignal;
|
169
|
+
fetch?: FetchFunction;
|
170
|
+
}) => Promise<{
|
171
|
+
value: T;
|
172
|
+
rawValue?: unknown;
|
173
|
+
responseHeaders?: Record<string, string>;
|
174
|
+
}>;
|
175
|
+
|
176
|
+
declare function isAbortError(error: unknown): error is Error;
|
177
|
+
|
178
|
+
declare function loadApiKey({ apiKey, environmentVariableName, apiKeyParameterName, description, }: {
|
179
|
+
apiKey: string | undefined;
|
180
|
+
environmentVariableName: string;
|
181
|
+
apiKeyParameterName?: string;
|
182
|
+
description: string;
|
183
|
+
}): string;
|
184
|
+
|
185
|
+
/**
|
186
|
+
* Loads an optional `string` setting from the environment or a parameter.
|
187
|
+
*
|
188
|
+
* @param settingValue - The setting value.
|
189
|
+
* @param environmentVariableName - The environment variable name.
|
190
|
+
* @returns The setting value.
|
191
|
+
*/
|
192
|
+
declare function loadOptionalSetting({ settingValue, environmentVariableName, }: {
|
193
|
+
settingValue: string | undefined;
|
194
|
+
environmentVariableName: string;
|
195
|
+
}): string | undefined;
|
196
|
+
|
197
|
+
/**
|
198
|
+
* Loads a `string` setting from the environment or a parameter.
|
199
|
+
*
|
200
|
+
* @param settingValue - The setting value.
|
201
|
+
* @param environmentVariableName - The environment variable name.
|
202
|
+
* @param settingName - The setting name.
|
203
|
+
* @param description - The description of the setting.
|
204
|
+
* @returns The setting value.
|
205
|
+
*/
|
206
|
+
declare function loadSetting({ settingValue, environmentVariableName, settingName, description, }: {
|
207
|
+
settingValue: string | undefined;
|
208
|
+
environmentVariableName: string;
|
209
|
+
settingName: string;
|
210
|
+
description: string;
|
211
|
+
}): string;
|
197
212
|
|
198
213
|
declare const postJsonToApi: <T>({ url, headers, body, failedResponseHandler, successfulResponseHandler, abortSignal, fetch, }: {
|
199
214
|
url: string;
|
@@ -312,4 +327,4 @@ interface ToolResult<NAME extends string, ARGS, RESULT> {
|
|
312
327
|
result: RESULT;
|
313
328
|
}
|
314
329
|
|
315
|
-
export { type FetchFunction, type IDGenerator, type ParseResult, type Resolvable, type ResponseHandler, type ToolCall, type ToolResult, type ValidationResult, type Validator, asValidator, combineHeaders, convertAsyncIteratorToReadableStream, convertBase64ToUint8Array, convertUint8ArrayToBase64, createEventSourceResponseHandler, createIdGenerator, createJsonErrorResponseHandler, createJsonResponseHandler, createJsonStreamResponseHandler, extractResponseHeaders, generateId, getErrorMessage, isAbortError, isParsableJson, isValidator, loadApiKey, loadOptionalSetting, loadSetting, parseJSON, postJsonToApi, postToApi, resolve, safeParseJSON, safeValidateTypes, validateTypes, validator, validatorSymbol, withoutTrailingSlash, zodValidator };
|
330
|
+
export { type FetchFunction, type IDGenerator, type ParseResult, type Resolvable, type ResponseHandler, type ToolCall, type ToolResult, type ValidationResult, type Validator, asValidator, combineHeaders, convertAsyncIteratorToReadableStream, convertBase64ToUint8Array, convertUint8ArrayToBase64, createBinaryResponseHandler, createEventSourceResponseHandler, createIdGenerator, createJsonErrorResponseHandler, createJsonResponseHandler, createJsonStreamResponseHandler, createStatusCodeErrorResponseHandler, extractResponseHeaders, generateId, getErrorMessage, getFromApi, isAbortError, isParsableJson, isValidator, loadApiKey, loadOptionalSetting, loadSetting, parseJSON, postJsonToApi, postToApi, resolve, safeParseJSON, safeValidateTypes, validateTypes, validator, validatorSymbol, withoutTrailingSlash, zodValidator };
|
package/dist/index.js
CHANGED
@@ -35,14 +35,17 @@ __export(src_exports, {
|
|
35
35
|
convertAsyncIteratorToReadableStream: () => convertAsyncIteratorToReadableStream,
|
36
36
|
convertBase64ToUint8Array: () => convertBase64ToUint8Array,
|
37
37
|
convertUint8ArrayToBase64: () => convertUint8ArrayToBase64,
|
38
|
+
createBinaryResponseHandler: () => createBinaryResponseHandler,
|
38
39
|
createEventSourceResponseHandler: () => createEventSourceResponseHandler,
|
39
40
|
createIdGenerator: () => createIdGenerator,
|
40
41
|
createJsonErrorResponseHandler: () => createJsonErrorResponseHandler,
|
41
42
|
createJsonResponseHandler: () => createJsonResponseHandler,
|
42
43
|
createJsonStreamResponseHandler: () => createJsonStreamResponseHandler,
|
44
|
+
createStatusCodeErrorResponseHandler: () => createStatusCodeErrorResponseHandler,
|
43
45
|
extractResponseHeaders: () => extractResponseHeaders,
|
44
46
|
generateId: () => generateId,
|
45
47
|
getErrorMessage: () => getErrorMessage,
|
48
|
+
getFromApi: () => getFromApi,
|
46
49
|
isAbortError: () => isAbortError,
|
47
50
|
isParsableJson: () => isParsableJson,
|
48
51
|
isValidator: () => isValidator,
|
@@ -149,13 +152,104 @@ function getErrorMessage(error) {
|
|
149
152
|
return JSON.stringify(error);
|
150
153
|
}
|
151
154
|
|
155
|
+
// src/get-from-api.ts
|
156
|
+
var import_provider2 = require("@ai-sdk/provider");
|
157
|
+
|
158
|
+
// src/remove-undefined-entries.ts
|
159
|
+
function removeUndefinedEntries(record) {
|
160
|
+
return Object.fromEntries(
|
161
|
+
Object.entries(record).filter(([_key, value]) => value != null)
|
162
|
+
);
|
163
|
+
}
|
164
|
+
|
152
165
|
// src/is-abort-error.ts
|
153
166
|
function isAbortError(error) {
|
154
167
|
return error instanceof Error && (error.name === "AbortError" || error.name === "TimeoutError");
|
155
168
|
}
|
156
169
|
|
170
|
+
// src/get-from-api.ts
|
171
|
+
var getOriginalFetch = () => globalThis.fetch;
|
172
|
+
var getFromApi = async ({
|
173
|
+
url,
|
174
|
+
headers = {},
|
175
|
+
successfulResponseHandler,
|
176
|
+
failedResponseHandler,
|
177
|
+
abortSignal,
|
178
|
+
fetch = getOriginalFetch()
|
179
|
+
}) => {
|
180
|
+
try {
|
181
|
+
const response = await fetch(url, {
|
182
|
+
method: "GET",
|
183
|
+
headers: removeUndefinedEntries(headers),
|
184
|
+
signal: abortSignal
|
185
|
+
});
|
186
|
+
const responseHeaders = extractResponseHeaders(response);
|
187
|
+
if (!response.ok) {
|
188
|
+
let errorInformation;
|
189
|
+
try {
|
190
|
+
errorInformation = await failedResponseHandler({
|
191
|
+
response,
|
192
|
+
url,
|
193
|
+
requestBodyValues: {}
|
194
|
+
});
|
195
|
+
} catch (error) {
|
196
|
+
if (isAbortError(error) || import_provider2.APICallError.isInstance(error)) {
|
197
|
+
throw error;
|
198
|
+
}
|
199
|
+
throw new import_provider2.APICallError({
|
200
|
+
message: "Failed to process error response",
|
201
|
+
cause: error,
|
202
|
+
statusCode: response.status,
|
203
|
+
url,
|
204
|
+
responseHeaders,
|
205
|
+
requestBodyValues: {}
|
206
|
+
});
|
207
|
+
}
|
208
|
+
throw errorInformation.value;
|
209
|
+
}
|
210
|
+
try {
|
211
|
+
return await successfulResponseHandler({
|
212
|
+
response,
|
213
|
+
url,
|
214
|
+
requestBodyValues: {}
|
215
|
+
});
|
216
|
+
} catch (error) {
|
217
|
+
if (error instanceof Error) {
|
218
|
+
if (isAbortError(error) || import_provider2.APICallError.isInstance(error)) {
|
219
|
+
throw error;
|
220
|
+
}
|
221
|
+
}
|
222
|
+
throw new import_provider2.APICallError({
|
223
|
+
message: "Failed to process successful response",
|
224
|
+
cause: error,
|
225
|
+
statusCode: response.status,
|
226
|
+
url,
|
227
|
+
responseHeaders,
|
228
|
+
requestBodyValues: {}
|
229
|
+
});
|
230
|
+
}
|
231
|
+
} catch (error) {
|
232
|
+
if (isAbortError(error)) {
|
233
|
+
throw error;
|
234
|
+
}
|
235
|
+
if (error instanceof TypeError && error.message === "fetch failed") {
|
236
|
+
const cause = error.cause;
|
237
|
+
if (cause != null) {
|
238
|
+
throw new import_provider2.APICallError({
|
239
|
+
message: `Cannot connect to API: ${cause.message}`,
|
240
|
+
cause,
|
241
|
+
url,
|
242
|
+
isRetryable: true,
|
243
|
+
requestBodyValues: {}
|
244
|
+
});
|
245
|
+
}
|
246
|
+
}
|
247
|
+
throw error;
|
248
|
+
}
|
249
|
+
};
|
250
|
+
|
157
251
|
// src/load-api-key.ts
|
158
|
-
var
|
252
|
+
var import_provider3 = require("@ai-sdk/provider");
|
159
253
|
function loadApiKey({
|
160
254
|
apiKey,
|
161
255
|
environmentVariableName,
|
@@ -166,23 +260,23 @@ function loadApiKey({
|
|
166
260
|
return apiKey;
|
167
261
|
}
|
168
262
|
if (apiKey != null) {
|
169
|
-
throw new
|
263
|
+
throw new import_provider3.LoadAPIKeyError({
|
170
264
|
message: `${description} API key must be a string.`
|
171
265
|
});
|
172
266
|
}
|
173
267
|
if (typeof process === "undefined") {
|
174
|
-
throw new
|
268
|
+
throw new import_provider3.LoadAPIKeyError({
|
175
269
|
message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`
|
176
270
|
});
|
177
271
|
}
|
178
272
|
apiKey = process.env[environmentVariableName];
|
179
273
|
if (apiKey == null) {
|
180
|
-
throw new
|
274
|
+
throw new import_provider3.LoadAPIKeyError({
|
181
275
|
message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`
|
182
276
|
});
|
183
277
|
}
|
184
278
|
if (typeof apiKey !== "string") {
|
185
|
-
throw new
|
279
|
+
throw new import_provider3.LoadAPIKeyError({
|
186
280
|
message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`
|
187
281
|
});
|
188
282
|
}
|
@@ -208,7 +302,7 @@ function loadOptionalSetting({
|
|
208
302
|
}
|
209
303
|
|
210
304
|
// src/load-setting.ts
|
211
|
-
var
|
305
|
+
var import_provider4 = require("@ai-sdk/provider");
|
212
306
|
function loadSetting({
|
213
307
|
settingValue,
|
214
308
|
environmentVariableName,
|
@@ -219,23 +313,23 @@ function loadSetting({
|
|
219
313
|
return settingValue;
|
220
314
|
}
|
221
315
|
if (settingValue != null) {
|
222
|
-
throw new
|
316
|
+
throw new import_provider4.LoadSettingError({
|
223
317
|
message: `${description} setting must be a string.`
|
224
318
|
});
|
225
319
|
}
|
226
320
|
if (typeof process === "undefined") {
|
227
|
-
throw new
|
321
|
+
throw new import_provider4.LoadSettingError({
|
228
322
|
message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables is not supported in this environment.`
|
229
323
|
});
|
230
324
|
}
|
231
325
|
settingValue = process.env[environmentVariableName];
|
232
326
|
if (settingValue == null) {
|
233
|
-
throw new
|
327
|
+
throw new import_provider4.LoadSettingError({
|
234
328
|
message: `${description} setting is missing. Pass it using the '${settingName}' parameter or the ${environmentVariableName} environment variable.`
|
235
329
|
});
|
236
330
|
}
|
237
331
|
if (typeof settingValue !== "string") {
|
238
|
-
throw new
|
332
|
+
throw new import_provider4.LoadSettingError({
|
239
333
|
message: `${description} setting must be a string. The value of the ${environmentVariableName} environment variable is not a string.`
|
240
334
|
});
|
241
335
|
}
|
@@ -243,11 +337,11 @@ function loadSetting({
|
|
243
337
|
}
|
244
338
|
|
245
339
|
// src/parse-json.ts
|
246
|
-
var
|
340
|
+
var import_provider6 = require("@ai-sdk/provider");
|
247
341
|
var import_secure_json_parse = __toESM(require("secure-json-parse"));
|
248
342
|
|
249
343
|
// src/validate-types.ts
|
250
|
-
var
|
344
|
+
var import_provider5 = require("@ai-sdk/provider");
|
251
345
|
|
252
346
|
// src/validator.ts
|
253
347
|
var validatorSymbol = Symbol.for("vercel.ai.validator");
|
@@ -274,7 +368,7 @@ function validateTypes({
|
|
274
368
|
}) {
|
275
369
|
const result = safeValidateTypes({ value, schema: inputSchema });
|
276
370
|
if (!result.success) {
|
277
|
-
throw
|
371
|
+
throw import_provider5.TypeValidationError.wrap({ value, cause: result.error });
|
278
372
|
}
|
279
373
|
return result.value;
|
280
374
|
}
|
@@ -293,12 +387,12 @@ function safeValidateTypes({
|
|
293
387
|
}
|
294
388
|
return {
|
295
389
|
success: false,
|
296
|
-
error:
|
390
|
+
error: import_provider5.TypeValidationError.wrap({ value, cause: result.error })
|
297
391
|
};
|
298
392
|
} catch (error) {
|
299
393
|
return {
|
300
394
|
success: false,
|
301
|
-
error:
|
395
|
+
error: import_provider5.TypeValidationError.wrap({ value, cause: error })
|
302
396
|
};
|
303
397
|
}
|
304
398
|
}
|
@@ -315,10 +409,10 @@ function parseJSON({
|
|
315
409
|
}
|
316
410
|
return validateTypes({ value, schema });
|
317
411
|
} catch (error) {
|
318
|
-
if (
|
412
|
+
if (import_provider6.JSONParseError.isInstance(error) || import_provider6.TypeValidationError.isInstance(error)) {
|
319
413
|
throw error;
|
320
414
|
}
|
321
|
-
throw new
|
415
|
+
throw new import_provider6.JSONParseError({ text, cause: error });
|
322
416
|
}
|
323
417
|
}
|
324
418
|
function safeParseJSON({
|
@@ -335,7 +429,7 @@ function safeParseJSON({
|
|
335
429
|
} catch (error) {
|
336
430
|
return {
|
337
431
|
success: false,
|
338
|
-
error:
|
432
|
+
error: import_provider6.JSONParseError.isInstance(error) ? error : new import_provider6.JSONParseError({ text, cause: error })
|
339
433
|
};
|
340
434
|
}
|
341
435
|
}
|
@@ -349,17 +443,8 @@ function isParsableJson(input) {
|
|
349
443
|
}
|
350
444
|
|
351
445
|
// src/post-to-api.ts
|
352
|
-
var
|
353
|
-
|
354
|
-
// src/remove-undefined-entries.ts
|
355
|
-
function removeUndefinedEntries(record) {
|
356
|
-
return Object.fromEntries(
|
357
|
-
Object.entries(record).filter(([_key, value]) => value != null)
|
358
|
-
);
|
359
|
-
}
|
360
|
-
|
361
|
-
// src/post-to-api.ts
|
362
|
-
var getOriginalFetch = () => globalThis.fetch;
|
446
|
+
var import_provider7 = require("@ai-sdk/provider");
|
447
|
+
var getOriginalFetch2 = () => globalThis.fetch;
|
363
448
|
var postJsonToApi = async ({
|
364
449
|
url,
|
365
450
|
headers,
|
@@ -390,7 +475,7 @@ var postToApi = async ({
|
|
390
475
|
successfulResponseHandler,
|
391
476
|
failedResponseHandler,
|
392
477
|
abortSignal,
|
393
|
-
fetch =
|
478
|
+
fetch = getOriginalFetch2()
|
394
479
|
}) => {
|
395
480
|
try {
|
396
481
|
const response = await fetch(url, {
|
@@ -409,10 +494,10 @@ var postToApi = async ({
|
|
409
494
|
requestBodyValues: body.values
|
410
495
|
});
|
411
496
|
} catch (error) {
|
412
|
-
if (isAbortError(error) ||
|
497
|
+
if (isAbortError(error) || import_provider7.APICallError.isInstance(error)) {
|
413
498
|
throw error;
|
414
499
|
}
|
415
|
-
throw new
|
500
|
+
throw new import_provider7.APICallError({
|
416
501
|
message: "Failed to process error response",
|
417
502
|
cause: error,
|
418
503
|
statusCode: response.status,
|
@@ -431,11 +516,11 @@ var postToApi = async ({
|
|
431
516
|
});
|
432
517
|
} catch (error) {
|
433
518
|
if (error instanceof Error) {
|
434
|
-
if (isAbortError(error) ||
|
519
|
+
if (isAbortError(error) || import_provider7.APICallError.isInstance(error)) {
|
435
520
|
throw error;
|
436
521
|
}
|
437
522
|
}
|
438
|
-
throw new
|
523
|
+
throw new import_provider7.APICallError({
|
439
524
|
message: "Failed to process successful response",
|
440
525
|
cause: error,
|
441
526
|
statusCode: response.status,
|
@@ -451,7 +536,7 @@ var postToApi = async ({
|
|
451
536
|
if (error instanceof TypeError && error.message === "fetch failed") {
|
452
537
|
const cause = error.cause;
|
453
538
|
if (cause != null) {
|
454
|
-
throw new
|
539
|
+
throw new import_provider7.APICallError({
|
455
540
|
message: `Cannot connect to API: ${cause.message}`,
|
456
541
|
cause,
|
457
542
|
url,
|
@@ -474,7 +559,7 @@ async function resolve(value) {
|
|
474
559
|
}
|
475
560
|
|
476
561
|
// src/response-handler.ts
|
477
|
-
var
|
562
|
+
var import_provider8 = require("@ai-sdk/provider");
|
478
563
|
var import_stream = require("eventsource-parser/stream");
|
479
564
|
var createJsonErrorResponseHandler = ({
|
480
565
|
errorSchema,
|
@@ -486,7 +571,7 @@ var createJsonErrorResponseHandler = ({
|
|
486
571
|
if (responseBody.trim() === "") {
|
487
572
|
return {
|
488
573
|
responseHeaders,
|
489
|
-
value: new
|
574
|
+
value: new import_provider8.APICallError({
|
490
575
|
message: response.statusText,
|
491
576
|
url,
|
492
577
|
requestBodyValues,
|
@@ -504,7 +589,7 @@ var createJsonErrorResponseHandler = ({
|
|
504
589
|
});
|
505
590
|
return {
|
506
591
|
responseHeaders,
|
507
|
-
value: new
|
592
|
+
value: new import_provider8.APICallError({
|
508
593
|
message: errorToMessage(parsedError),
|
509
594
|
url,
|
510
595
|
requestBodyValues,
|
@@ -518,7 +603,7 @@ var createJsonErrorResponseHandler = ({
|
|
518
603
|
} catch (parseError) {
|
519
604
|
return {
|
520
605
|
responseHeaders,
|
521
|
-
value: new
|
606
|
+
value: new import_provider8.APICallError({
|
522
607
|
message: response.statusText,
|
523
608
|
url,
|
524
609
|
requestBodyValues,
|
@@ -533,7 +618,7 @@ var createJsonErrorResponseHandler = ({
|
|
533
618
|
var createEventSourceResponseHandler = (chunkSchema) => async ({ response }) => {
|
534
619
|
const responseHeaders = extractResponseHeaders(response);
|
535
620
|
if (response.body == null) {
|
536
|
-
throw new
|
621
|
+
throw new import_provider8.EmptyResponseBodyError({});
|
537
622
|
}
|
538
623
|
return {
|
539
624
|
responseHeaders,
|
@@ -557,7 +642,7 @@ var createEventSourceResponseHandler = (chunkSchema) => async ({ response }) =>
|
|
557
642
|
var createJsonStreamResponseHandler = (chunkSchema) => async ({ response }) => {
|
558
643
|
const responseHeaders = extractResponseHeaders(response);
|
559
644
|
if (response.body == null) {
|
560
|
-
throw new
|
645
|
+
throw new import_provider8.EmptyResponseBodyError({});
|
561
646
|
}
|
562
647
|
let buffer = "";
|
563
648
|
return {
|
@@ -589,7 +674,7 @@ var createJsonResponseHandler = (responseSchema) => async ({ response, url, requ
|
|
589
674
|
});
|
590
675
|
const responseHeaders = extractResponseHeaders(response);
|
591
676
|
if (!parsedResult.success) {
|
592
|
-
throw new
|
677
|
+
throw new import_provider8.APICallError({
|
593
678
|
message: "Invalid JSON response",
|
594
679
|
cause: parsedResult.error,
|
595
680
|
statusCode: response.status,
|
@@ -605,6 +690,51 @@ var createJsonResponseHandler = (responseSchema) => async ({ response, url, requ
|
|
605
690
|
rawValue: parsedResult.rawValue
|
606
691
|
};
|
607
692
|
};
|
693
|
+
var createBinaryResponseHandler = () => async ({ response, url, requestBodyValues }) => {
|
694
|
+
const responseHeaders = extractResponseHeaders(response);
|
695
|
+
if (!response.body) {
|
696
|
+
throw new import_provider8.APICallError({
|
697
|
+
message: "Response body is empty",
|
698
|
+
url,
|
699
|
+
requestBodyValues,
|
700
|
+
statusCode: response.status,
|
701
|
+
responseHeaders,
|
702
|
+
responseBody: void 0
|
703
|
+
});
|
704
|
+
}
|
705
|
+
try {
|
706
|
+
const buffer = await response.arrayBuffer();
|
707
|
+
return {
|
708
|
+
responseHeaders,
|
709
|
+
value: new Uint8Array(buffer)
|
710
|
+
};
|
711
|
+
} catch (error) {
|
712
|
+
throw new import_provider8.APICallError({
|
713
|
+
message: "Failed to read response as array buffer",
|
714
|
+
url,
|
715
|
+
requestBodyValues,
|
716
|
+
statusCode: response.status,
|
717
|
+
responseHeaders,
|
718
|
+
responseBody: void 0,
|
719
|
+
cause: error
|
720
|
+
});
|
721
|
+
}
|
722
|
+
};
|
723
|
+
var createStatusCodeErrorResponseHandler = () => async ({ response, url, requestBodyValues }) => {
|
724
|
+
const responseHeaders = extractResponseHeaders(response);
|
725
|
+
const responseBody = await response.text();
|
726
|
+
return {
|
727
|
+
responseHeaders,
|
728
|
+
value: new import_provider8.APICallError({
|
729
|
+
message: response.statusText,
|
730
|
+
url,
|
731
|
+
requestBodyValues,
|
732
|
+
statusCode: response.status,
|
733
|
+
responseHeaders,
|
734
|
+
responseBody
|
735
|
+
})
|
736
|
+
};
|
737
|
+
};
|
608
738
|
|
609
739
|
// src/uint8-utils.ts
|
610
740
|
var { btoa, atob } = globalThis;
|
@@ -632,14 +762,17 @@ function withoutTrailingSlash(url) {
|
|
632
762
|
convertAsyncIteratorToReadableStream,
|
633
763
|
convertBase64ToUint8Array,
|
634
764
|
convertUint8ArrayToBase64,
|
765
|
+
createBinaryResponseHandler,
|
635
766
|
createEventSourceResponseHandler,
|
636
767
|
createIdGenerator,
|
637
768
|
createJsonErrorResponseHandler,
|
638
769
|
createJsonResponseHandler,
|
639
770
|
createJsonStreamResponseHandler,
|
771
|
+
createStatusCodeErrorResponseHandler,
|
640
772
|
extractResponseHeaders,
|
641
773
|
generateId,
|
642
774
|
getErrorMessage,
|
775
|
+
getFromApi,
|
643
776
|
isAbortError,
|
644
777
|
isParsableJson,
|
645
778
|
isValidator,
|