@inworld/web-core
Version:
96 lines (95 loc) • 4.61 kB
JavaScript
import { ErrorType as ProtoErrorType, ReconnectionType as ProtoErrorReconnectionType, ResourceType as ProtoErrorResourceType, } from '../../proto/ai/inworld/common/status.pb.js';
export var ErrorType;
(function (ErrorType) {
ErrorType["SESSION_TOKEN_EXPIRED"] = "SESSION_TOKEN_EXPIRED";
ErrorType["SESSION_TOKEN_INVALID"] = "SESSION_TOKEN_INVALID";
ErrorType["SESSION_RESOURCES_EXHAUSTED"] = "SESSION_RESOURCES_EXHAUSTED";
ErrorType["BILLING_TOKENS_EXHAUSTED"] = "BILLING_TOKENS_EXHAUSTED";
ErrorType["ACCOUNT_DISABLED"] = "ACCOUNT_DISABLED";
ErrorType["SESSION_INVALID"] = "SESSION_INVALID";
ErrorType["RESOURCE_NOT_FOUND"] = "RESOURCE_NOT_FOUND";
ErrorType["SAFETY_VIOLATION"] = "SAFETY_VIOLATION";
ErrorType["SESSION_EXPIRED"] = "SESSION_EXPIRED";
ErrorType["AUDIO_SESSION_EXPIRED"] = "AUDIO_SESSION_EXPIRED";
ErrorType["SESSION_PAUSED"] = "SESSION_PAUSED";
})(ErrorType || (ErrorType = {}));
export var ErrorReconnectionType;
(function (ErrorReconnectionType) {
ErrorReconnectionType["UNDEFINED"] = "UNDEFINED";
ErrorReconnectionType["NO_RETRY"] = "NO_RETRY";
ErrorReconnectionType["IMMEDIATE"] = "IMMEDIATE";
ErrorReconnectionType["TIMEOUT"] = "TIMEOUT";
})(ErrorReconnectionType || (ErrorReconnectionType = {}));
export var ErrorResourceType;
(function (ErrorResourceType) {
ErrorResourceType["RESOURCE_TYPE_UNDEFINED"] = "RESOURCE_TYPE_UNDEFINED";
ErrorResourceType["RESOURCE_TYPE_CONVERSATION"] = "RESOURCE_TYPE_CONVERSATION";
})(ErrorResourceType || (ErrorResourceType = {}));
export class InworldError {
constructor(message, code, details) {
this.details = [];
this.message = message;
this.code = code;
this.details = details;
}
static fromProto(proto) {
var _a;
const details = (_a = proto.details) === null || _a === void 0 ? void 0 : _a.map((d) => (Object.assign({ errorType: this.getErrorType(d.errorType), reconnectType: this.getErrorReconnectionType(d.reconnectType), reconnectTime: d.reconnectTime, maxRetries: d.maxRetries }, (d.resourceNotFound && {
resourceNotFound: {
resourceId: d.resourceNotFound.resourceId,
resourceType: this.getErrorResourceType(d.resourceNotFound.resourceType),
},
}))));
return new InworldError(proto.message, proto.code, details);
}
static getErrorType(errorType) {
switch (errorType) {
case ProtoErrorType.SESSION_TOKEN_EXPIRED:
return ErrorType.SESSION_TOKEN_EXPIRED;
case ProtoErrorType.SESSION_TOKEN_INVALID:
return ErrorType.SESSION_TOKEN_INVALID;
case ProtoErrorType.SESSION_RESOURCES_EXHAUSTED:
return ErrorType.SESSION_RESOURCES_EXHAUSTED;
case ProtoErrorType.BILLING_TOKENS_EXHAUSTED:
return ErrorType.BILLING_TOKENS_EXHAUSTED;
case ProtoErrorType.ACCOUNT_DISABLED:
return ErrorType.ACCOUNT_DISABLED;
case ProtoErrorType.SESSION_INVALID:
return ErrorType.SESSION_INVALID;
case ProtoErrorType.RESOURCE_NOT_FOUND:
return ErrorType.RESOURCE_NOT_FOUND;
case ProtoErrorType.SAFETY_VIOLATION:
return ErrorType.SAFETY_VIOLATION;
case ProtoErrorType.SESSION_EXPIRED:
return ErrorType.SESSION_EXPIRED;
case ProtoErrorType.AUDIO_SESSION_EXPIRED:
return ErrorType.AUDIO_SESSION_EXPIRED;
case ProtoErrorType.SESSION_PAUSED:
return ErrorType.SESSION_PAUSED;
default:
return undefined;
}
}
static getErrorReconnectionType(reconnectType) {
switch (reconnectType) {
case ProtoErrorReconnectionType.UNDEFINED:
return ErrorReconnectionType.UNDEFINED;
case ProtoErrorReconnectionType.NO_RETRY:
return ErrorReconnectionType.NO_RETRY;
case ProtoErrorReconnectionType.IMMEDIATE:
return ErrorReconnectionType.IMMEDIATE;
case ProtoErrorReconnectionType.TIMEOUT:
return ErrorReconnectionType.TIMEOUT;
default:
return undefined;
}
}
static getErrorResourceType(resourceType) {
switch (resourceType) {
case ProtoErrorResourceType.RESOURCE_TYPE_CONVERSATION:
return ErrorResourceType.RESOURCE_TYPE_CONVERSATION;
default:
return ErrorResourceType.RESOURCE_TYPE_UNDEFINED;
}
}
}