UNPKG

ngx-airbrush

Version:

Angular client for jsonapi/Graphiti backends

159 lines 14.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { AttributeMetadata } from './symboles'; import { DateConverter } from '../converters/date.conveter'; /** * @param {?=} options * @return {?} */ export function Attribute(options) { if (options === void 0) { options = {}; } return (/** * @param {?} target * @param {?} propertyName * @return {?} */ function (target, propertyName) { /** @type {?} */ var converter = (/** * @param {?} propType * @return {?} */ function (propType) { /** @type {?} */ var attrConverter; if (options.converter) { attrConverter = options.converter; } else if (propType === Date) { attrConverter = new DateConverter(); } else { /** @type {?} */ var datatype = new propType(); if (datatype.serialize && datatype.deserialize) { attrConverter = datatype; } } return attrConverter; }); /** @type {?} */ var convert = (/** * @param {?} propType * @param {?} value * @param {?=} serialize * @return {?} */ function (propType, value, serialize) { if (serialize === void 0) { serialize = false; } /** @type {?} */ var attrConverter = converter(propType); if (attrConverter) { if (serialize) { return attrConverter.serialize(value); } return attrConverter.deserialize(value); } // else return value; }); /** @type {?} */ var areEquals = (/** * @param {?} propType * @param {?} oldValue * @param {?} newValue * @return {?} */ function (propType, oldValue, newValue) { /** @type {?} */ var attrConverter = converter(propType); if (attrConverter) { if (attrConverter.areEquals) { return attrConverter.areEquals(oldValue, newValue); } // else /** @type {?} */ var newVal = attrConverter.serialize(newValue); /** @type {?} */ var oldVal = attrConverter.serialize(oldValue); return newVal === oldVal; } // else return oldValue === newValue; }); /** @type {?} */ var setupMetadata = (/** * @return {?} */ function () { /** @type {?} */ var attributes = Reflect.getMetadata(AttributeMetadata, target) || []; attributes.push({ propertyName: propertyName, backendName: options.backendName || propertyName, readonly: !!options.readonly, converter: options.converter, }); Reflect.defineMetadata(AttributeMetadata, attributes, target); }); /** @type {?} */ var setMetadata = (/** * @param {?} instance * @param {?} oldValue * @param {?} newValue * @return {?} */ function (instance, oldValue, newValue) { /** @type {?} */ var propType = Reflect.getMetadata('design:type', target, propertyName); instance[AttributeMetadata] = instance[AttributeMetadata] || {}; instance[AttributeMetadata][propertyName] = { newValue: newValue, oldValue: oldValue, backendName: options.backendName || propertyName, hasDirtyAttributes: !areEquals(propType, oldValue, newValue), serializedValue: convert(propType, newValue, true), }; }); /** @type {?} */ var getter = (/** * @return {?} */ function () { return this["_" + propertyName]; }); /** @type {?} */ var setter = (/** * @param {?} newVal * @return {?} */ function (newVal) { /** @type {?} */ var propType = Reflect.getMetadata('design:type', target, propertyName); /** @type {?} */ var serialized = convert(propType, newVal); /** @type {?} */ var oldValue = null; if (this.isModelInitialization() && this.id) { oldValue = serialized; } else { if (this[AttributeMetadata] && this[AttributeMetadata][propertyName]) { oldValue = this[AttributeMetadata][propertyName].oldValue; } } this["_" + propertyName] = serialized; setMetadata(this, oldValue, serialized); }); if (delete target[propertyName]) { setupMetadata(); Object.defineProperty(target, propertyName, { get: getter, set: setter, enumerable: true, configurable: true }); } }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1haXJicnVzaC8iLCJzb3VyY2VzIjpbImxpYi9kZWNvcmF0b3JzL2F0dHJpYnV0ZS5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7O0FBSTVELE1BQU0sVUFBVSxTQUFTLENBQUMsT0FBdUM7SUFBdkMsd0JBQUEsRUFBQSxZQUF1QztJQUMvRDs7Ozs7SUFBTyxVQUFDLE1BQVcsRUFBRSxZQUFvQjs7WUFFakMsU0FBUzs7OztRQUFHLFVBQUMsUUFBYTs7Z0JBQzFCLGFBQWdDO1lBRXBDLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtnQkFDckIsYUFBYSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7YUFDbkM7aUJBQU0sSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO2dCQUM1QixhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQzthQUNyQztpQkFBTTs7b0JBQ0MsUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFO2dCQUUvQixJQUFJLFFBQVEsQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRTtvQkFDOUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztpQkFDMUI7YUFDRjtZQUNELE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQTs7WUFFSyxPQUFPOzs7Ozs7UUFBRyxVQUFDLFFBQWEsRUFBRSxLQUFVLEVBQUUsU0FBaUI7WUFBakIsMEJBQUEsRUFBQSxpQkFBaUI7O2dCQUNyRCxhQUFhLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUV6QyxJQUFJLGFBQWEsRUFBRTtnQkFDakIsSUFBSSxTQUFTLEVBQUU7b0JBQUUsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lC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QUksQ0FBQyxNQUFJLFlBQWMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztZQUN0QyxXQUFXLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUE7UUFFRCxJQUFJLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQy9CLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRTtnQkFDMUMsR0FBRyxFQUFFLE1BQU07Z0JBQ1gsR0FBRyxFQUFFLE1BQU07Z0JBQ1gsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFlBQVksRUFBRSxJQUFJO2FBQ25CLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQyxFQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZURlY29yYXRvck9wdGlvbnMgfSBmcm9tICcuL29wdGlvbi5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEF0dHJpYnV0ZU1ldGFkYXRhIH0gZnJvbSAnLi9zeW1ib2xlcyc7XG5pbXBvcnQgeyBEYXRlQ29udmVydGVyIH0gZnJvbSAnLi4vY29udmVydGVycy9kYXRlLmNvbnZldGVyJztcbmltcG9ydCB7IFByb3BlcnR5Q29udmVydGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wcm9wZXJ0eS1jb252ZXJ0ZXIuaW50ZXJmYWNlJztcblxuXG5leHBvcnQgZnVuY3Rpb24gQXR0cmlidXRlKG9wdGlvbnM6IEF0dHJpYnV0ZURlY29yYXRvck9wdGlvbnMgPSB7fSk6IFByb3BlcnR5RGVjb3JhdG9yIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlOYW1lOiBzdHJpbmcpID0+IHtcblxuICAgIGNvbnN0IGNvbnZlcnRlciA9IChwcm9wVHlwZTogYW55KTogYW55ID0+IHtcbiAgICAgIGxldCBhdHRyQ29udmVydGVyOiBQcm9wZXJ0eUNvbnZlcnRlcjtcblxuICAgICAgaWYgKG9wdGlvbnMuY29udmVydGVyKSB7XG4gICAgICAgIGF0dHJDb252ZXJ0ZXIgPSBvcHRpb25zLmNvbnZlcnRlcjtcbiAgICAgIH0gZWxzZSBpZiAocHJvcFR5cGUgPT09IERhdGUpIHtcbiAgICAgICAgYXR0ckNvbnZlcnRlciA9IG5ldyBEYXRlQ29udmVydGVyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkYXRhdHlwZSA9IG5ldyBwcm9wVHlwZSgpO1xuXG4gICAgICAgIGlmIChkYXRhdHlwZS5zZXJpYWxpemUgJiYgZGF0YXR5cGUuZGVzZXJpYWxpemUpIHtcbiAgICAgICAgICBhdHRyQ29udmVydGVyID0gZGF0YXR5cGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhdHRyQ29udmVydGVyO1xuICAgIH07XG5cbiAgICBjb25zdCBjb252ZXJ0ID0gKHByb3BUeXBlOiBhbnksIHZhbHVlOiBhbnksIHNlcmlhbGl6ZSA9IGZhbHNlKTogYW55ID0+IHtcbiAgICAgIGNvbnN0IGF0dHJDb252ZXJ0ZXIgPSBjb252ZXJ0ZXIocHJvcFR5cGUpO1xuXG4gICAgICBpZiAoYXR0ckNvbnZlcnRlcikge1xuICAgICAgICBpZiAoc2VyaWFsaXplKSB7IHJldHVybiBhdHRyQ29udmVydGVyLnNlcmlhbGl6ZSh2YWx1ZSk7IH1cbiAgICAgICAgcmV0dXJuIGF0dHJDb252ZXJ0ZXIuZGVzZXJpYWxpemUodmFsdWUpO1xuICAgICAgfSAvLyBlbHNlXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfTtcblxuICAgIGNvbnN0IGFyZUVxdWFscyA9IChwcm9wVHlwZTogYW55LCBvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICBjb25zdCBhdHRyQ29udmVydGVyID0gY29udmVydGVyKHByb3BUeXBlKTtcblxuICAgICAgaWYgKGF0dHJDb252ZXJ0ZXIpIHtcbiAgICAgICAgaWYgKGF0dHJDb252ZXJ0ZXIuYXJlRXF1YWxzKSB7IHJldHVybiBhdHRyQ29udmVydGVyLmFyZUVxdWFscyhvbGRWYWx1ZSwgbmV3VmFsdWUpOyB9XG4gICAgICAgIC8vIGVsc2VcbiAgICAgICAgY29uc3QgbmV3VmFsID0gYXR0ckNvbnZlcnRlci5zZXJpYWxpemUobmV3VmFsdWUpO1xuICAgICAgICBjb25zdCBvbGRWYWwgPSBhdHRyQ29udmVydGVyLnNlcmlhbGl6ZShvbGRWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXdWYWwgPT09IG9sZFZhbDtcbiAgICAgIH0gLy8gZWxzZVxuICAgICAgcmV0dXJuIG9sZFZhbHVlID09PSBuZXdWYWx1ZTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2V0dXBNZXRhZGF0YSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBSZWZsZWN0LmdldE1ldGFkYXRhKEF0dHJpYnV0ZU1ldGFkYXRhLCB0YXJnZXQpIHx8IFtdO1xuXG4gICAgICBhdHRyaWJ1dGVzLnB1c2goe1xuICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgIGJhY2tlbmROYW1lOiBvcHRpb25zLmJhY2tlbmROYW1lIHx8IHByb3BlcnR5TmFtZSxcbiAgICAgICAgcmVhZG9ubHk6ICEhb3B0aW9ucy5yZWFkb25seSxcbiAgICAgICAgY29udmVydGVyOiBvcHRpb25zLmNvbnZlcnRlcixcbiAgICAgIH0pO1xuXG4gICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKEF0dHJpYnV0ZU1ldGFkYXRhLCBhdHRyaWJ1dGVzLCB0YXJnZXQpO1xuICAgIH07XG5cbiAgICBjb25zdCBzZXRNZXRhZGF0YSA9IChpbnN0YW5jZTogYW55LCBvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgICBjb25zdCBwcm9wVHlwZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ2Rlc2lnbjp0eXBlJywgdGFyZ2V0LCBwcm9wZXJ0eU5hbWUpO1xuXG4gICAgICBpbnN0YW5jZVtBdHRyaWJ1dGVNZXRhZGF0YV0gPSBpbnN0YW5jZVtBdHRyaWJ1dGVNZXRhZGF0YV0gfHwge307XG4gICAgICBpbnN0YW5jZVtBdHRyaWJ1dGVNZXRhZGF0YV1bcHJvcGVydHlOYW1lXSA9IHtcbiAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgIG9sZFZhbHVlLFxuICAgICAgICBiYWNrZW5kTmFtZTogb3B0aW9ucy5iYWNrZW5kTmFtZSB8fCBwcm9wZXJ0eU5hbWUsXG4gICAgICAgIGhhc0RpcnR5QXR0cmlidXRlczogIWFyZUVxdWFscyhwcm9wVHlwZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKSxcbiAgICAgICAgc2VyaWFsaXplZFZhbHVlOiBjb252ZXJ0KHByb3BUeXBlLCBuZXdWYWx1ZSwgdHJ1ZSksXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBnZXR0ZXIgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzW2BfJHtwcm9wZXJ0eU5hbWV9YF07XG4gICAgfTtcblxuICAgIGNvbnN0IHNldHRlciA9IGZ1bmN0aW9uKG5ld1ZhbDogYW55KSB7XG4gICAgICBjb25zdCBwcm9wVHlwZSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ2Rlc2lnbjp0eXBlJywgdGFyZ2V0LCBwcm9wZXJ0eU5hbWUpO1xuICAgICAgY29uc3Qgc2VyaWFsaXplZCA9IGNvbnZlcnQocHJvcFR5cGUsIG5ld1ZhbCk7XG5cbiAgICAgIGxldCBvbGRWYWx1ZSA9IG51bGw7XG4gICAgICBpZiAodGhpcy5pc01vZGVsSW5pdGlhbGl6YXRpb24oKSAmJiB0aGlzLmlkKSB7XG4gICAgICAgIG9sZFZhbHVlID0gc2VyaWFsaXplZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzW0F0dHJpYnV0ZU1ldGFkYXRhXSAmJiB0aGlzW0F0dHJpYnV0ZU1ldGFkYXRhXVtwcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgICAgb2xkVmFsdWUgPSB0aGlzW0F0dHJpYnV0ZU1ldGFkYXRhXVtwcm9wZXJ0eU5hbWVdLm9sZFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXNbYF8ke3Byb3BlcnR5TmFtZX1gXSA9IHNlcmlhbGl6ZWQ7XG4gICAgICBzZXRNZXRhZGF0YSh0aGlzLCBvbGRWYWx1ZSwgc2VyaWFsaXplZCk7XG4gICAgfTtcblxuICAgIGlmIChkZWxldGUgdGFyZ2V0W3Byb3BlcnR5TmFtZV0pIHtcbiAgICAgIHNldHVwTWV0YWRhdGEoKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5TmFtZSwge1xuICAgICAgICBnZXQ6IGdldHRlcixcbiAgICAgICAgc2V0OiBzZXR0ZXIsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuIl19