@twilio/voice-sdk
Version:
Twilio's JavaScript Voice SDK
111 lines • 5.56 kB
JavaScript
/**
* @packageDocumentation
* @internalapi
*/
/* tslint:disable max-classes-per-file */
import { AuthorizationErrors, ClientErrors, errorsByCode, GeneralErrors, MalformedRequestErrors, MediaErrors, SignalingErrors, SignatureValidationErrors, SIPServerErrors, TwilioError, UserMediaErrors, } from './generated';
/**
* NOTE(mhuynh): Replacing generic error codes with new (more specific) codes,
* is a breaking change. If an error code is found in this set, we only perform
* the transformation if the feature flag is enabled.
*
* With every major version bump, such that we are allowed to introduce breaking
* changes as per semver specification, this array should be cleared.
*
* TODO: [VBLOCKS-2295] Remove this in 3.x
*/
const PRECISE_SIGNALING_ERROR_CODES = new Set([
/**
* 310XX Errors
*/
31001,
31002,
31003,
/**
* 311XX Errors
*/
31101,
31102,
31103,
31104,
31105,
31107,
/**
* 312XX Errors
*/
31201,
31202,
31203,
31204,
31205,
31207,
/**
* 314XX Errors
*/
31404,
31480,
31486,
/**
* 316XX Errors
*/
31603,
]);
export function getPreciseSignalingErrorByCode(enableImprovedSignalingErrorPrecision, errorCode) {
if (typeof errorCode !== 'number') {
return;
}
if (!hasErrorByCode(errorCode)) {
return;
}
const shouldTransform = enableImprovedSignalingErrorPrecision
? true
: !PRECISE_SIGNALING_ERROR_CODES.has(errorCode);
if (!shouldTransform) {
return;
}
return getErrorByCode(errorCode);
}
// Application errors that can be avoided by good app logic
export class InvalidArgumentError extends Error {
constructor(message) {
super(message);
this.name = 'InvalidArgumentError';
}
}
export class InvalidStateError extends Error {
constructor(message) {
super(message);
this.name = 'InvalidStateError';
}
}
export class NotSupportedError extends Error {
constructor(message) {
super(message);
this.name = 'NotSupportedError';
}
}
// This should only be used to look up error codes returned by a server
// using the same repo of error codes.
export function getErrorByCode(code) {
const error = errorsByCode.get(code);
if (!error) {
throw new InvalidArgumentError(`Error code ${code} not found`);
}
return error;
}
// This should only be used to look up error codes returned by a server
// using the same repo of error codes.
export function hasErrorByCode(code) {
return errorsByCode.has(code);
}
/**
* All errors we want to throw or emit locally in the SDK need to be passed
* through here.
*
* They need to first be defined in the `USED_ERRORS` list. See:
* ```
* scripts/errors.js
* ```
*/
export { AuthorizationErrors, ClientErrors, GeneralErrors, MalformedRequestErrors, MediaErrors, SignalingErrors, SignatureValidationErrors, SIPServerErrors, TwilioError, UserMediaErrors, };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdHdpbGlvL2Vycm9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCx5Q0FBeUM7QUFDekMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osWUFBWSxFQUNaLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLGVBQWUsRUFDZix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLFdBQVcsRUFDWCxlQUFlLEdBQ2hCLE1BQU0sYUFBYSxDQUFDO0FBRXJCOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sNkJBQTZCLEdBQWdCLElBQUksR0FBRyxDQUFDO0lBQ3pEOztPQUVHO0lBQ0gsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0w7O09BRUc7SUFDSCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTDs7T0FFRztJQUNILEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMOztPQUVHO0lBQ0gsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0w7O09BRUc7SUFDSCxLQUFLO0NBQ04sQ0FBQyxDQUFDO0FBQ0gsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxxQ0FBOEMsRUFDOUMsU0FBaUI7SUFFakIsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUU7UUFDakMsT0FBTztLQUNSO0lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUM5QixPQUFPO0tBQ1I7SUFFRCxNQUFNLGVBQWUsR0FBRyxxQ0FBcUM7UUFDM0QsQ0FBQyxDQUFDLElBQUk7UUFDTixDQUFDLENBQUMsQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDLGVBQWUsRUFBRTtRQUNwQixPQUFPO0tBQ1I7SUFFRCxPQUFPLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQsMkRBQTJEO0FBQzNELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxLQUFLO0lBQzdDLFlBQVksT0FBZ0I7UUFDMUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFDRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsS0FBSztJQUMxQyxZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBQ0QsTUFBTSxPQUFPLGlCQUFrQixTQUFRLEtBQUs7SUFDMUMsWUFBWSxPQUFnQjtRQUMxQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQUVELHVFQUF1RTtBQUN2RSxzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFZO0lBQ3pDLE1BQU0sS0FBSyxHQUFxQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixNQUFNLElBQUksb0JBQW9CLENBQUMsY0FBYyxJQUFJLFlBQVksQ0FBQyxDQUFDO0tBQ2hFO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsdUVBQXVFO0FBQ3ZFLHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQVk7SUFDekMsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLGFBQWEsRUFDYixzQkFBc0IsRUFDdEIsV0FBVyxFQUNYLGVBQWUsRUFDZix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLFdBQVcsRUFDWCxlQUFlLEdBQ2hCLENBQUMifQ==