393 lines
10 KiB
JavaScript
393 lines
10 KiB
JavaScript
// src/errors/ai-sdk-error.ts
|
|
var marker = "vercel.ai.error";
|
|
var symbol = Symbol.for(marker);
|
|
var _a;
|
|
var _AISDKError = class _AISDKError extends Error {
|
|
/**
|
|
* Creates an AI SDK Error.
|
|
*
|
|
* @param {Object} params - The parameters for creating the error.
|
|
* @param {string} params.name - The name of the error.
|
|
* @param {string} params.message - The error message.
|
|
* @param {unknown} [params.cause] - The underlying cause of the error.
|
|
*/
|
|
constructor({
|
|
name: name14,
|
|
message,
|
|
cause
|
|
}) {
|
|
super(message);
|
|
this[_a] = true;
|
|
this.name = name14;
|
|
this.cause = cause;
|
|
}
|
|
/**
|
|
* Checks if the given error is an AI SDK Error.
|
|
* @param {unknown} error - The error to check.
|
|
* @returns {boolean} True if the error is an AI SDK Error, false otherwise.
|
|
*/
|
|
static isInstance(error) {
|
|
return _AISDKError.hasMarker(error, marker);
|
|
}
|
|
static hasMarker(error, marker15) {
|
|
const markerSymbol = Symbol.for(marker15);
|
|
return error != null && typeof error === "object" && markerSymbol in error && typeof error[markerSymbol] === "boolean" && error[markerSymbol] === true;
|
|
}
|
|
};
|
|
_a = symbol;
|
|
var AISDKError = _AISDKError;
|
|
|
|
// src/errors/api-call-error.ts
|
|
var name = "AI_APICallError";
|
|
var marker2 = `vercel.ai.error.${name}`;
|
|
var symbol2 = Symbol.for(marker2);
|
|
var _a2;
|
|
var APICallError = class extends AISDKError {
|
|
constructor({
|
|
message,
|
|
url,
|
|
requestBodyValues,
|
|
statusCode,
|
|
responseHeaders,
|
|
responseBody,
|
|
cause,
|
|
isRetryable = statusCode != null && (statusCode === 408 || // request timeout
|
|
statusCode === 409 || // conflict
|
|
statusCode === 429 || // too many requests
|
|
statusCode >= 500),
|
|
// server error
|
|
data
|
|
}) {
|
|
super({ name, message, cause });
|
|
this[_a2] = true;
|
|
this.url = url;
|
|
this.requestBodyValues = requestBodyValues;
|
|
this.statusCode = statusCode;
|
|
this.responseHeaders = responseHeaders;
|
|
this.responseBody = responseBody;
|
|
this.isRetryable = isRetryable;
|
|
this.data = data;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker2);
|
|
}
|
|
};
|
|
_a2 = symbol2;
|
|
|
|
// src/errors/empty-response-body-error.ts
|
|
var name2 = "AI_EmptyResponseBodyError";
|
|
var marker3 = `vercel.ai.error.${name2}`;
|
|
var symbol3 = Symbol.for(marker3);
|
|
var _a3;
|
|
var EmptyResponseBodyError = class extends AISDKError {
|
|
// used in isInstance
|
|
constructor({ message = "Empty response body" } = {}) {
|
|
super({ name: name2, message });
|
|
this[_a3] = true;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker3);
|
|
}
|
|
};
|
|
_a3 = symbol3;
|
|
|
|
// src/errors/get-error-message.ts
|
|
function getErrorMessage(error) {
|
|
if (error == null) {
|
|
return "unknown error";
|
|
}
|
|
if (typeof error === "string") {
|
|
return error;
|
|
}
|
|
if (error instanceof Error) {
|
|
return error.message;
|
|
}
|
|
return JSON.stringify(error);
|
|
}
|
|
|
|
// src/errors/invalid-argument-error.ts
|
|
var name3 = "AI_InvalidArgumentError";
|
|
var marker4 = `vercel.ai.error.${name3}`;
|
|
var symbol4 = Symbol.for(marker4);
|
|
var _a4;
|
|
var InvalidArgumentError = class extends AISDKError {
|
|
constructor({
|
|
message,
|
|
cause,
|
|
argument
|
|
}) {
|
|
super({ name: name3, message, cause });
|
|
this[_a4] = true;
|
|
this.argument = argument;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker4);
|
|
}
|
|
};
|
|
_a4 = symbol4;
|
|
|
|
// src/errors/invalid-prompt-error.ts
|
|
var name4 = "AI_InvalidPromptError";
|
|
var marker5 = `vercel.ai.error.${name4}`;
|
|
var symbol5 = Symbol.for(marker5);
|
|
var _a5;
|
|
var InvalidPromptError = class extends AISDKError {
|
|
constructor({
|
|
prompt,
|
|
message,
|
|
cause
|
|
}) {
|
|
super({ name: name4, message: `Invalid prompt: ${message}`, cause });
|
|
this[_a5] = true;
|
|
this.prompt = prompt;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker5);
|
|
}
|
|
};
|
|
_a5 = symbol5;
|
|
|
|
// src/errors/invalid-response-data-error.ts
|
|
var name5 = "AI_InvalidResponseDataError";
|
|
var marker6 = `vercel.ai.error.${name5}`;
|
|
var symbol6 = Symbol.for(marker6);
|
|
var _a6;
|
|
var InvalidResponseDataError = class extends AISDKError {
|
|
constructor({
|
|
data,
|
|
message = `Invalid response data: ${JSON.stringify(data)}.`
|
|
}) {
|
|
super({ name: name5, message });
|
|
this[_a6] = true;
|
|
this.data = data;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker6);
|
|
}
|
|
};
|
|
_a6 = symbol6;
|
|
|
|
// src/errors/json-parse-error.ts
|
|
var name6 = "AI_JSONParseError";
|
|
var marker7 = `vercel.ai.error.${name6}`;
|
|
var symbol7 = Symbol.for(marker7);
|
|
var _a7;
|
|
var JSONParseError = class extends AISDKError {
|
|
constructor({ text, cause }) {
|
|
super({
|
|
name: name6,
|
|
message: `JSON parsing failed: Text: ${text}.
|
|
Error message: ${getErrorMessage(cause)}`,
|
|
cause
|
|
});
|
|
this[_a7] = true;
|
|
this.text = text;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker7);
|
|
}
|
|
};
|
|
_a7 = symbol7;
|
|
|
|
// src/errors/load-api-key-error.ts
|
|
var name7 = "AI_LoadAPIKeyError";
|
|
var marker8 = `vercel.ai.error.${name7}`;
|
|
var symbol8 = Symbol.for(marker8);
|
|
var _a8;
|
|
var LoadAPIKeyError = class extends AISDKError {
|
|
// used in isInstance
|
|
constructor({ message }) {
|
|
super({ name: name7, message });
|
|
this[_a8] = true;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker8);
|
|
}
|
|
};
|
|
_a8 = symbol8;
|
|
|
|
// src/errors/load-setting-error.ts
|
|
var name8 = "AI_LoadSettingError";
|
|
var marker9 = `vercel.ai.error.${name8}`;
|
|
var symbol9 = Symbol.for(marker9);
|
|
var _a9;
|
|
var LoadSettingError = class extends AISDKError {
|
|
// used in isInstance
|
|
constructor({ message }) {
|
|
super({ name: name8, message });
|
|
this[_a9] = true;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker9);
|
|
}
|
|
};
|
|
_a9 = symbol9;
|
|
|
|
// src/errors/no-content-generated-error.ts
|
|
var name9 = "AI_NoContentGeneratedError";
|
|
var marker10 = `vercel.ai.error.${name9}`;
|
|
var symbol10 = Symbol.for(marker10);
|
|
var _a10;
|
|
var NoContentGeneratedError = class extends AISDKError {
|
|
// used in isInstance
|
|
constructor({
|
|
message = "No content generated."
|
|
} = {}) {
|
|
super({ name: name9, message });
|
|
this[_a10] = true;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker10);
|
|
}
|
|
};
|
|
_a10 = symbol10;
|
|
|
|
// src/errors/no-such-model-error.ts
|
|
var name10 = "AI_NoSuchModelError";
|
|
var marker11 = `vercel.ai.error.${name10}`;
|
|
var symbol11 = Symbol.for(marker11);
|
|
var _a11;
|
|
var NoSuchModelError = class extends AISDKError {
|
|
constructor({
|
|
errorName = name10,
|
|
modelId,
|
|
modelType,
|
|
message = `No such ${modelType}: ${modelId}`
|
|
}) {
|
|
super({ name: errorName, message });
|
|
this[_a11] = true;
|
|
this.modelId = modelId;
|
|
this.modelType = modelType;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker11);
|
|
}
|
|
};
|
|
_a11 = symbol11;
|
|
|
|
// src/errors/too-many-embedding-values-for-call-error.ts
|
|
var name11 = "AI_TooManyEmbeddingValuesForCallError";
|
|
var marker12 = `vercel.ai.error.${name11}`;
|
|
var symbol12 = Symbol.for(marker12);
|
|
var _a12;
|
|
var TooManyEmbeddingValuesForCallError = class extends AISDKError {
|
|
constructor(options) {
|
|
super({
|
|
name: name11,
|
|
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.`
|
|
});
|
|
this[_a12] = true;
|
|
this.provider = options.provider;
|
|
this.modelId = options.modelId;
|
|
this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;
|
|
this.values = options.values;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker12);
|
|
}
|
|
};
|
|
_a12 = symbol12;
|
|
|
|
// src/errors/type-validation-error.ts
|
|
var name12 = "AI_TypeValidationError";
|
|
var marker13 = `vercel.ai.error.${name12}`;
|
|
var symbol13 = Symbol.for(marker13);
|
|
var _a13;
|
|
var _TypeValidationError = class _TypeValidationError extends AISDKError {
|
|
constructor({ value, cause }) {
|
|
super({
|
|
name: name12,
|
|
message: `Type validation failed: Value: ${JSON.stringify(value)}.
|
|
Error message: ${getErrorMessage(cause)}`,
|
|
cause
|
|
});
|
|
this[_a13] = true;
|
|
this.value = value;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker13);
|
|
}
|
|
/**
|
|
* Wraps an error into a TypeValidationError.
|
|
* If the cause is already a TypeValidationError with the same value, it returns the cause.
|
|
* Otherwise, it creates a new TypeValidationError.
|
|
*
|
|
* @param {Object} params - The parameters for wrapping the error.
|
|
* @param {unknown} params.value - The value that failed validation.
|
|
* @param {unknown} params.cause - The original error or cause of the validation failure.
|
|
* @returns {TypeValidationError} A TypeValidationError instance.
|
|
*/
|
|
static wrap({
|
|
value,
|
|
cause
|
|
}) {
|
|
return _TypeValidationError.isInstance(cause) && cause.value === value ? cause : new _TypeValidationError({ value, cause });
|
|
}
|
|
};
|
|
_a13 = symbol13;
|
|
var TypeValidationError = _TypeValidationError;
|
|
|
|
// src/errors/unsupported-functionality-error.ts
|
|
var name13 = "AI_UnsupportedFunctionalityError";
|
|
var marker14 = `vercel.ai.error.${name13}`;
|
|
var symbol14 = Symbol.for(marker14);
|
|
var _a14;
|
|
var UnsupportedFunctionalityError = class extends AISDKError {
|
|
constructor({
|
|
functionality,
|
|
message = `'${functionality}' functionality not supported.`
|
|
}) {
|
|
super({ name: name13, message });
|
|
this[_a14] = true;
|
|
this.functionality = functionality;
|
|
}
|
|
static isInstance(error) {
|
|
return AISDKError.hasMarker(error, marker14);
|
|
}
|
|
};
|
|
_a14 = symbol14;
|
|
|
|
// src/json-value/is-json.ts
|
|
function isJSONValue(value) {
|
|
if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
|
|
return true;
|
|
}
|
|
if (Array.isArray(value)) {
|
|
return value.every(isJSONValue);
|
|
}
|
|
if (typeof value === "object") {
|
|
return Object.entries(value).every(
|
|
([key, val]) => typeof key === "string" && isJSONValue(val)
|
|
);
|
|
}
|
|
return false;
|
|
}
|
|
function isJSONArray(value) {
|
|
return Array.isArray(value) && value.every(isJSONValue);
|
|
}
|
|
function isJSONObject(value) {
|
|
return value != null && typeof value === "object" && Object.entries(value).every(
|
|
([key, val]) => typeof key === "string" && isJSONValue(val)
|
|
);
|
|
}
|
|
export {
|
|
AISDKError,
|
|
APICallError,
|
|
EmptyResponseBodyError,
|
|
InvalidArgumentError,
|
|
InvalidPromptError,
|
|
InvalidResponseDataError,
|
|
JSONParseError,
|
|
LoadAPIKeyError,
|
|
LoadSettingError,
|
|
NoContentGeneratedError,
|
|
NoSuchModelError,
|
|
TooManyEmbeddingValuesForCallError,
|
|
TypeValidationError,
|
|
UnsupportedFunctionalityError,
|
|
getErrorMessage,
|
|
isJSONArray,
|
|
isJSONObject,
|
|
isJSONValue
|
|
};
|
|
//# sourceMappingURL=index.mjs.map
|