UNPKG

@trademe/ensure

Version:

56 lines (55 loc) 6.18 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; // Constants: var /** @type {?} */ VALUE_KEY = '__value_'; /** * @param {...?} guards * @return {?} */ export function Value() { var guards = []; for (var _i = 0; _i < arguments.length; _i++) { guards[_i] = arguments[_i]; } var /** @type {?} */ guardsArray = getGuardsArray(guards); var /** @type {?} */ getters = guardsArray.filter(function (c) { return c.isGetter; }); var /** @type {?} */ setters = guardsArray.filter(function (c) { return !c.isGetter; }); return function (target, propertyKey) { Object.defineProperty(target, propertyKey, { get: function () { var _this = this; var /** @type {?} */ value = (/** @type {?} */ (Reflect)).getMetadata("" + VALUE_KEY + propertyKey, this); getters.forEach(function (getter) { getter.call(_this, value, propertyKey); }); return value; }, set: function (value) { var _this = this; var /** @type {?} */ castValue = value; if (castValue === 'null') { castValue = null; } if (castValue != null) { setters.forEach(function (setter) { castValue = setter.call(_this, castValue, propertyKey); }); } (/** @type {?} */ (Reflect)).defineMetadata("" + VALUE_KEY + propertyKey, castValue, this); } }); }; } /** * @param {?} guards * @return {?} */ function getGuardsArray(guards) { // Handle old @Value([guardOne, guardTwo]) syntax: var _a = tslib_1.__read(guards, 1), firstGuard = _a[0]; return Array.isArray(firstGuard) ? /** @type {?} */ (firstGuard) : /** @type {?} */ (guards); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJhZGVtZS9lbnN1cmUvIiwic291cmNlcyI6WyJ2YWx1ZS92YWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQSxxQkFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDOzs7OztBQUU3QixNQUFNO0lBQWlCLGdCQUFnRDtTQUFoRCxVQUFnRCxFQUFoRCxxQkFBZ0QsRUFBaEQsSUFBZ0Q7UUFBaEQsMkJBQWdEOztJQUNuRSxxQkFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTNDLHFCQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFFBQVEsRUFBVixDQUFVLENBQUMsQ0FBQztJQUNwRCxxQkFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBWCxDQUFXLENBQUMsQ0FBQztJQUVyRCxNQUFNLENBQUMsVUFBQyxNQUFXLEVBQUUsV0FBbUI7UUFDcEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFO1lBQ3ZDLEdBQUcsRUFBRTtnQkFBQSxpQkFNSjtnQkFMRyxxQkFBTSxLQUFLLEdBQUcsbUJBQUMsT0FBYyxFQUFDLENBQUMsV0FBVyxDQUFDLEtBQUcsU0FBUyxHQUFHLFdBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDL0UsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFBLE1BQU07b0JBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSSxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztpQkFDekMsQ0FBQyxDQUFDO2dCQUNILE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDaEI7WUFDRCxHQUFHLEVBQUUsVUFBVSxLQUFLO2dCQUFmLGlCQWFKO2dCQVpHLHFCQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBRXRCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUN2QixTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUNwQjtnQkFFRCxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDcEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFBLE1BQU07d0JBQ2xCLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7cUJBQ3pELENBQUMsQ0FBQztpQkFDTjtnQkFDRCxtQkFBQyxPQUFjLEVBQUMsQ0FBQyxjQUFjLENBQUMsS0FBRyxTQUFTLEdBQUcsV0FBYSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNsRjtTQUNKLENBQUMsQ0FBQztLQUNOLENBQUM7Q0FDTDs7Ozs7QUFFRCx3QkFBeUIsTUFBNkM7O0lBRWxFLG9DQUFPLGtCQUFVLENBQVc7SUFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxtQkFBQyxVQUErQixFQUFDLENBQUMsbUJBQUMsTUFBMkIsQ0FBQSxDQUFDO0NBQ3BHIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRGVwZW5kZW5jaWVzOlxuaW1wb3J0IHsgaXNOb3ROdWxsIH0gZnJvbSAnLi4vZ3VhcmRzL25vdC1udWxsJztcbmltcG9ydCB7IEd1YXJkIH0gZnJvbSAnLi4vZ3VhcmQvZ3VhcmQnO1xuXG4vLyBDb25zdGFudHM6XG5jb25zdCBWQUxVRV9LRVkgPSAnX192YWx1ZV8nO1xuXG5leHBvcnQgZnVuY3Rpb24gVmFsdWUgKC4uLmd1YXJkczogQXJyYXk8R3VhcmQ8YW55PiB8IEFycmF5PEd1YXJkPGFueT4+Pik6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgICBjb25zdCBndWFyZHNBcnJheSA9IGdldEd1YXJkc0FycmF5KGd1YXJkcyk7XG5cbiAgICBjb25zdCBnZXR0ZXJzID0gZ3VhcmRzQXJyYXkuZmlsdGVyKGMgPT4gYy5pc0dldHRlcik7XG4gICAgY29uc3Qgc2V0dGVycyA9IGd1YXJkc0FycmF5LmZpbHRlcihjID0+ICFjLmlzR2V0dGVyKTtcblxuICAgIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gKFJlZmxlY3QgYXMgYW55KS5nZXRNZXRhZGF0YShgJHtWQUxVRV9LRVl9JHtwcm9wZXJ0eUtleX1gLCB0aGlzKTtcbiAgICAgICAgICAgICAgICBnZXR0ZXJzLmZvckVhY2goZ2V0dGVyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0dGVyLmNhbGwodGhpcywgdmFsdWUsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2FzdFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2FzdFZhbHVlID09PSAnbnVsbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzdFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2FzdFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0dGVycy5mb3JFYWNoKHNldHRlciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXN0VmFsdWUgPSBzZXR0ZXIuY2FsbCh0aGlzLCBjYXN0VmFsdWUsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIChSZWZsZWN0IGFzIGFueSkuZGVmaW5lTWV0YWRhdGEoYCR7VkFMVUVfS0VZfSR7cHJvcGVydHlLZXl9YCwgY2FzdFZhbHVlLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0R3VhcmRzQXJyYXkgKGd1YXJkczogQXJyYXk8R3VhcmQ8YW55PiB8IEFycmF5PEd1YXJkPGFueT4+Pik6IEFycmF5PEd1YXJkPGFueT4+IHtcbiAgICAvLyBIYW5kbGUgb2xkIEBWYWx1ZShbZ3VhcmRPbmUsIGd1YXJkVHdvXSkgc3ludGF4OlxuICAgIGNvbnN0IFtmaXJzdEd1YXJkXSA9IGd1YXJkcztcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShmaXJzdEd1YXJkKSA/IGZpcnN0R3VhcmQgYXMgQXJyYXk8R3VhcmQ8YW55Pj4gOiBndWFyZHMgYXMgQXJyYXk8R3VhcmQ8YW55Pj47XG59XG4iXX0=