UNPKG

@trademe/ensure

Version:

37 lines (36 loc) 3.25 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { EnsureError } from '../../ensure-error'; /** * @template T * @param {?} enumValues * @return {?} */ export function isEnum(enumValues) { // This functions is explicitly *not* using the `=>` syntax so that // the `this` values is bound to the instance being checked. return function (value, key) { const /** @type {?} */ enumValue = enumValues[value]; if (enumValue == null) { throw new EnsureError(` "${value}" is not a valid value for '${key}'. You can use one of the following: ${getValues(enumValues)} `); } return typeof enumValue === 'number' ? enumValue : value; }; } /** * @template T * @param {?} enumT * @return {?} */ function getValues(enumT) { return Object.keys(enumT) .filter(key => isNaN(+key)) .map(key => `"${key}"`) .join(',\n '); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0cmFkZW1lL2Vuc3VyZS8iLCJzb3VyY2VzIjpbInZhbHVlL3NldHRlci9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQUVqRCxNQUFNLGlCQUFxQixVQUFhOzs7SUFHcEMsTUFBTSxDQUFDLFVBQVUsS0FBVSxFQUFFLEdBQVc7UUFDcEMsdUJBQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNwQixNQUFNLElBQUksV0FBVyxDQUFDO21CQUNmLEtBQUssK0JBQStCLEdBQUc7c0JBQ3BDLFNBQVMsQ0FBSSxVQUFVLENBQUM7YUFDakMsQ0FBQyxDQUFDO1NBQ047UUFDRCxNQUFNLENBQUMsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztLQUM1RCxDQUFDO0NBQ0w7Ozs7OztBQUVELG1CQUF1QixLQUFRO0lBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1NBQ3RCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0NBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRGVwZW5kZW5jaWVzOlxuaW1wb3J0IHsgRW5zdXJlRXJyb3IgfSBmcm9tICcuLi8uLi9lbnN1cmUtZXJyb3InO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNFbnVtPFQ+IChlbnVtVmFsdWVzOiBUKSB7XG4gICAgLy8gVGhpcyBmdW5jdGlvbnMgaXMgZXhwbGljaXRseSAqbm90KiB1c2luZyB0aGUgYD0+YCBzeW50YXggc28gdGhhdFxuICAgIC8vIHRoZSBgdGhpc2AgdmFsdWVzIGlzIGJvdW5kIHRvIHRoZSBpbnN0YW5jZSBiZWluZyBjaGVja2VkLlxuICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWU6IGFueSwga2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBjb25zdCBlbnVtVmFsdWUgPSBlbnVtVmFsdWVzW3ZhbHVlXTtcbiAgICAgICAgaWYgKGVudW1WYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRW5zdXJlRXJyb3IoYFxuICAgICAgICAgICAgICAgIFwiJHt2YWx1ZX1cIiBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgJyR7a2V5fScuIFlvdSBjYW4gdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nOlxuICAgICAgICAgICAgICAgICAgICAke2dldFZhbHVlczxUPihlbnVtVmFsdWVzKX1cbiAgICAgICAgICAgIGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0eXBlb2YgZW51bVZhbHVlID09PSAnbnVtYmVyJyA/IGVudW1WYWx1ZSA6IHZhbHVlO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlczxUPiAoZW51bVQ6IFQpOiBzdHJpbmcge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnVtVClcbiAgICAuZmlsdGVyKGtleSA9PiBpc05hTigra2V5KSlcbiAgICAubWFwKGtleSA9PiBgXCIke2tleX1cImApXG4gICAgLmpvaW4oJyxcXG4gICAgICAgICAgICAgICAgICAgICcpO1xufVxuIl19