UNPKG

@trademe/ensure

Version:

35 lines (34 loc) 3.53 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { EnsureError } from '../ensure-error'; import { ensure } from '../guard/guard'; /** * @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 ensure(function (value, key) { var /** @type {?} */ enumValue = enumValues[value]; if (enumValue == null) { throw new EnsureError("\n \"" + value + "\" is not a valid value for '" + key + "'. You can use one of the following:\n " + getValues(enumValues) + "\n "); } return typeof enumValue === 'number' ? enumValue : value; }); } /** * @template T * @param {?} enumT * @return {?} */ function getValues(enumT) { return Object.keys(enumT) .filter(function (key) { return isNaN(+key); }) .map(function (key) { return "\"" + key + "\""; }) .join(',\n '); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0cmFkZW1lL2Vuc3VyZS8iLCJzb3VyY2VzIjpbImd1YXJkcy9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFFeEMsTUFBTSxpQkFBc0IsVUFBYTs7O0lBR3JDLE1BQU0sQ0FBQyxNQUFNLENBQUksVUFBQyxLQUFVLEVBQUUsR0FBVztRQUNyQyxxQkFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxXQUFXLENBQUMseUJBQ2YsS0FBSyxxQ0FBK0IsR0FBRyxrRUFDcEMsU0FBUyxDQUFJLFVBQVUsQ0FBQyxtQkFDakMsQ0FBQyxDQUFDO1NBQ047UUFDRCxNQUFNLENBQUMsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztLQUM1RCxDQUFDLENBQUM7Q0FDTjs7Ozs7O0FBRUQsbUJBQXVCLEtBQVE7SUFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3hCLE1BQU0sQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFYLENBQVcsQ0FBQztTQUMxQixHQUFHLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxPQUFJLEdBQUcsT0FBRyxFQUFWLENBQVUsQ0FBQztTQUN0QixJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztDQUNwQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlcGVuZGVuY2llczpcbmltcG9ydCB7IEVuc3VyZUVycm9yIH0gZnJvbSAnLi4vZW5zdXJlLWVycm9yJztcbmltcG9ydCB7IGVuc3VyZSB9IGZyb20gJy4uL2d1YXJkL2d1YXJkJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW51bSA8VD4gKGVudW1WYWx1ZXM6IFQpOiBGdW5jdGlvbiB7XG4gICAgLy8gVGhpcyBmdW5jdGlvbnMgaXMgZXhwbGljaXRseSAqbm90KiB1c2luZyB0aGUgYD0+YCBzeW50YXggc28gdGhhdFxuICAgIC8vIHRoZSBgdGhpc2AgdmFsdWVzIGlzIGJvdW5kIHRvIHRoZSBpbnN0YW5jZSBiZWluZyBjaGVja2VkLlxuICAgIHJldHVybiBlbnN1cmU8VD4oKHZhbHVlOiBhbnksIGtleTogc3RyaW5nKTogVCA9PiB7XG4gICAgICAgIGNvbnN0IGVudW1WYWx1ZSA9IGVudW1WYWx1ZXNbdmFsdWVdO1xuICAgICAgICBpZiAoZW51bVZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFbnN1cmVFcnJvcihgXG4gICAgICAgICAgICAgICAgXCIke3ZhbHVlfVwiIGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciAnJHtrZXl9Jy4gWW91IGNhbiB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmc6XG4gICAgICAgICAgICAgICAgICAgICR7Z2V0VmFsdWVzPFQ+KGVudW1WYWx1ZXMpfVxuICAgICAgICAgICAgYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHR5cGVvZiBlbnVtVmFsdWUgPT09ICdudW1iZXInID8gZW51bVZhbHVlIDogdmFsdWU7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlczxUPiAoZW51bVQ6IFQpOiBzdHJpbmcge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnVtVClcbiAgICAuZmlsdGVyKGtleSA9PiBpc05hTigra2V5KSlcbiAgICAubWFwKGtleSA9PiBgXCIke2tleX1cImApXG4gICAgLmpvaW4oJyxcXG4gICAgICAgICAgICAgICAgICAgICcpO1xufVxuIl19