UNPKG

idb-managed

Version:

Easy APIs for IndexedDB, with DB manager to manage local DBs. Based on idb.

67 lines 1.76 kB
interface ParamChecker { rule: Function; desc: string; }; export const ParamCheckerEnum = { NonNegativeInteger: { rule: isNonNegativeInteger, desc: 'needs to be a non-negative integer' }, NotNullObject: { rule: (param: any) => { return param && typeof param === 'object'; }, desc: 'needs to be a not-null object' }, String: { rule: (param: any) => { return typeof param === 'string'; }, desc: 'needs to be a string' }, Array: { rule: (param: any) => { return param instanceof Array; }, desc: 'needs to be an Array' }, Boolean: { rule: (param: any) => { return typeof param === 'boolean'; }, desc: 'needs to be a boolean' } }; export function isNonNegativeInteger(x: any) { return !isNaN(x) && x >= 0; } export function optionWithBackup(param: any, backup: any) { return param !== undefined ? param : backup; } export function paramChecker( param: any, checker: ParamChecker, paramName: string, optional: boolean ): void { const exp = `${paramName} ${checker.desc}`; if (optional) { if (param !== undefined && !checker.rule(param)) { throw new Error(`${exp} if defined`); } } else { if (!checker.rule(param)) { throw new Error(exp); } } } export function deduplicateList(list: any[]) { let deduplicatedList = list.reduce((accumulator, currentItem) => { if (accumulator.indexOf(currentItem) < 0) { return accumulator.concat(currentItem) } else { return accumulator } }, []) return deduplicatedList }