@twilio/flex-plugins-library-utils
Version:
Flex Plugins Library Utils
51 lines (47 loc) • 1.76 kB
text/typescript
import { isArray, isBoolean, isNumber, isObject, isString } from 'lodash';
export class PluginUtilsErrorManager extends Error {
code: number;
constructor(message: string, code: number) {
super(message);
this.code = code;
Object.setPrototypeOf(this, PluginUtilsErrorManager.prototype);
}
static checkInvalidParameters<T>(parameters: T, checks: Record<string, string>): string {
for (const key in checks) {
if (Object.prototype.hasOwnProperty.call(checks, key)) {
const expectedType = checks[key];
const actualValue = parameters[key];
switch (expectedType) {
case 'string':
if (!isString(actualValue) || actualValue.length === 0) {
return `Invalid parameters object passed. Parameter '${key}' must be a string.`;
}
break;
case 'number':
if (!isNumber(actualValue)) {
return `Invalid parameters object passed. Parameter '${key}' must be a number.`;
}
break;
case 'array':
if (!isArray(actualValue)) {
return `Invalid parameters object passed. Parameter '${key}' must be an array.`;
}
break;
case 'boolean':
if (!isBoolean(actualValue)) {
return `Invalid parameters object passed. Parameter '${key}' must be a boolean.`;
}
break;
case 'object':
if (!isObject(actualValue)) {
return `Invalid parameters object passed. Parameter '${key}' must be an object.`;
}
break;
default:
throw new Error(`Unsupported expected type: ${expectedType}`);
}
}
}
return '';
}
}