UNPKG

@ngxs/store

Version:
75 lines 7.74 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ensureStoreMetadata } from '../internal/internals'; import { META_KEY, META_OPTIONS_KEY } from '../symbols'; import { StoreValidators } from '../utils/store-validators'; import { ensureStateClassIsInjectable } from '../ivy/ensure-state-class-is-injectable'; /** * @record * @template T */ function MutateMetaOptions() { } if (false) { /** @type {?} */ MutateMetaOptions.prototype.meta; /** @type {?} */ MutateMetaOptions.prototype.inheritedStateClass; /** @type {?} */ MutateMetaOptions.prototype.optionsWithInheritance; } /** * Decorates a class with ngxs state information. * @template T * @param {?} options * @return {?} */ export function State(options) { /** * @param {?} inheritedStateClass * @return {?} */ function getStateOptions(inheritedStateClass) { /** @type {?} */ const inheritanceOptions = inheritedStateClass[META_OPTIONS_KEY] || {}; return (/** @type {?} */ (Object.assign({}, inheritanceOptions, options))); } /** * @param {?} params * @return {?} */ function mutateMetaData(params) { const { meta, inheritedStateClass, optionsWithInheritance } = params; const { children, defaults, name } = optionsWithInheritance; /** @type {?} */ const stateName = typeof name === 'string' ? name : (name && name.getName()) || null; StoreValidators.checkCorrectStateName(stateName); if (inheritedStateClass.hasOwnProperty(META_KEY)) { /** @type {?} */ const inheritedMeta = inheritedStateClass[META_KEY] || {}; meta.actions = Object.assign({}, meta.actions, inheritedMeta.actions); } meta.children = children; meta.defaults = defaults; meta.name = stateName; } return (/** * @param {?} target * @return {?} */ (target) => { ensureStateClassIsInjectable(target); /** @type {?} */ const stateClass = target; /** @type {?} */ const meta = ensureStoreMetadata(stateClass); /** @type {?} */ const inheritedStateClass = Object.getPrototypeOf(stateClass); /** @type {?} */ const optionsWithInheritance = getStateOptions(inheritedStateClass); mutateMetaData({ meta, inheritedStateClass, optionsWithInheritance }); stateClass[META_OPTIONS_KEY] = optionsWithInheritance; }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4cy9zdG9yZS8iLCJzb3VyY2VzIjpbInNyYy9kZWNvcmF0b3JzL3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxPQUFPLEVBQUUsbUJBQW1CLEVBQXFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxZQUFZLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7OztBQUV2RixnQ0FJQzs7O0lBSEMsaUNBQW9COztJQUNwQixnREFBd0M7O0lBQ3hDLG1EQUF3Qzs7Ozs7Ozs7QUFNMUMsTUFBTSxVQUFVLEtBQUssQ0FBSSxPQUF3Qjs7Ozs7SUFDL0MsU0FBUyxlQUFlLENBQUMsbUJBQXVDOztjQUN4RCxrQkFBa0IsR0FDdEIsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO1FBQzdDLE9BQU8scUNBQUssa0JBQWtCLEVBQUssT0FBTyxHQUFxQixDQUFDO0lBQ2xFLENBQUM7Ozs7O0lBRUQsU0FBUyxjQUFjLENBQUMsTUFBNEI7Y0FDNUMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQUUsR0FBRyxNQUFNO2NBQzlELEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxzQkFBc0I7O2NBQ3JELFNBQVMsR0FDYixPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksSUFBSTtRQUNwRSxlQUFlLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFakQsSUFBSSxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7O2tCQUMxQyxhQUFhLEdBQTJCLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDakYsSUFBSSxDQUFDLE9BQU8scUJBQVEsSUFBSSxDQUFDLE9BQU8sRUFBSyxhQUFhLENBQUMsT0FBTyxDQUFFLENBQUM7U0FDOUQ7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7SUFBTyxDQUFDLE1BQWtCLEVBQVEsRUFBRTtRQUNsQyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsQ0FBQzs7Y0FDL0IsVUFBVSxHQUF1QixNQUFNOztjQUN2QyxJQUFJLEdBQWtCLG1CQUFtQixDQUFDLFVBQVUsQ0FBQzs7Y0FDckQsbUJBQW1CLEdBQXVCLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDOztjQUMzRSxzQkFBc0IsR0FBb0IsZUFBZSxDQUFDLG1CQUFtQixDQUFDO1FBQ3BGLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFDdEUsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsc0JBQXNCLENBQUM7SUFDeEQsQ0FBQyxFQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXRlQ2xhc3MgfSBmcm9tICdAbmd4cy9zdG9yZS9pbnRlcm5hbHMnO1xyXG5cclxuaW1wb3J0IHsgZW5zdXJlU3RvcmVNZXRhZGF0YSwgTWV0YURhdGFNb2RlbCwgU3RhdGVDbGFzc0ludGVybmFsIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW50ZXJuYWxzJztcclxuaW1wb3J0IHsgTUVUQV9LRVksIE1FVEFfT1BUSU9OU19LRVksIFN0b3JlT3B0aW9ucyB9IGZyb20gJy4uL3N5bWJvbHMnO1xyXG5pbXBvcnQgeyBTdG9yZVZhbGlkYXRvcnMgfSBmcm9tICcuLi91dGlscy9zdG9yZS12YWxpZGF0b3JzJztcclxuaW1wb3J0IHsgZW5zdXJlU3RhdGVDbGFzc0lzSW5qZWN0YWJsZSB9IGZyb20gJy4uL2l2eS9lbnN1cmUtc3RhdGUtY2xhc3MtaXMtaW5qZWN0YWJsZSc7XHJcblxyXG5pbnRlcmZhY2UgTXV0YXRlTWV0YU9wdGlvbnM8VD4ge1xyXG4gIG1ldGE6IE1ldGFEYXRhTW9kZWw7XHJcbiAgaW5oZXJpdGVkU3RhdGVDbGFzczogU3RhdGVDbGFzc0ludGVybmFsO1xyXG4gIG9wdGlvbnNXaXRoSW5oZXJpdGFuY2U6IFN0b3JlT3B0aW9uczxUPjtcclxufVxyXG5cclxuLyoqXHJcbiAqIERlY29yYXRlcyBhIGNsYXNzIHdpdGggbmd4cyBzdGF0ZSBpbmZvcm1hdGlvbi5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBTdGF0ZTxUPihvcHRpb25zOiBTdG9yZU9wdGlvbnM8VD4pIHtcclxuICBmdW5jdGlvbiBnZXRTdGF0ZU9wdGlvbnMoaW5oZXJpdGVkU3RhdGVDbGFzczogU3RhdGVDbGFzc0ludGVybmFsKTogU3RvcmVPcHRpb25zPFQ+IHtcclxuICAgIGNvbnN0IGluaGVyaXRhbmNlT3B0aW9uczogUGFydGlhbDxTdG9yZU9wdGlvbnM8VD4+ID1cclxuICAgICAgaW5oZXJpdGVkU3RhdGVDbGFzc1tNRVRBX09QVElPTlNfS0VZXSB8fCB7fTtcclxuICAgIHJldHVybiB7IC4uLmluaGVyaXRhbmNlT3B0aW9ucywgLi4ub3B0aW9ucyB9IGFzIFN0b3JlT3B0aW9uczxUPjtcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIG11dGF0ZU1ldGFEYXRhKHBhcmFtczogTXV0YXRlTWV0YU9wdGlvbnM8VD4pOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgbWV0YSwgaW5oZXJpdGVkU3RhdGVDbGFzcywgb3B0aW9uc1dpdGhJbmhlcml0YW5jZSB9ID0gcGFyYW1zO1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiwgZGVmYXVsdHMsIG5hbWUgfSA9IG9wdGlvbnNXaXRoSW5oZXJpdGFuY2U7XHJcbiAgICBjb25zdCBzdGF0ZU5hbWU6IHN0cmluZyB8IG51bGwgPVxyXG4gICAgICB0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgPyBuYW1lIDogKG5hbWUgJiYgbmFtZS5nZXROYW1lKCkpIHx8IG51bGw7XHJcbiAgICBTdG9yZVZhbGlkYXRvcnMuY2hlY2tDb3JyZWN0U3RhdGVOYW1lKHN0YXRlTmFtZSk7XHJcblxyXG4gICAgaWYgKGluaGVyaXRlZFN0YXRlQ2xhc3MuaGFzT3duUHJvcGVydHkoTUVUQV9LRVkpKSB7XHJcbiAgICAgIGNvbnN0IGluaGVyaXRlZE1ldGE6IFBhcnRpYWw8TWV0YURhdGFNb2RlbD4gPSBpbmhlcml0ZWRTdGF0ZUNsYXNzW01FVEFfS0VZXSB8fCB7fTtcclxuICAgICAgbWV0YS5hY3Rpb25zID0geyAuLi5tZXRhLmFjdGlvbnMsIC4uLmluaGVyaXRlZE1ldGEuYWN0aW9ucyB9O1xyXG4gICAgfVxyXG5cclxuICAgIG1ldGEuY2hpbGRyZW4gPSBjaGlsZHJlbjtcclxuICAgIG1ldGEuZGVmYXVsdHMgPSBkZWZhdWx0cztcclxuICAgIG1ldGEubmFtZSA9IHN0YXRlTmFtZTtcclxuICB9XHJcblxyXG4gIHJldHVybiAodGFyZ2V0OiBTdGF0ZUNsYXNzKTogdm9pZCA9PiB7XHJcbiAgICBlbnN1cmVTdGF0ZUNsYXNzSXNJbmplY3RhYmxlKHRhcmdldCk7XHJcbiAgICBjb25zdCBzdGF0ZUNsYXNzOiBTdGF0ZUNsYXNzSW50ZXJuYWwgPSB0YXJnZXQ7XHJcbiAgICBjb25zdCBtZXRhOiBNZXRhRGF0YU1vZGVsID0gZW5zdXJlU3RvcmVNZXRhZGF0YShzdGF0ZUNsYXNzKTtcclxuICAgIGNvbnN0IGluaGVyaXRlZFN0YXRlQ2xhc3M6IFN0YXRlQ2xhc3NJbnRlcm5hbCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzdGF0ZUNsYXNzKTtcclxuICAgIGNvbnN0IG9wdGlvbnNXaXRoSW5oZXJpdGFuY2U6IFN0b3JlT3B0aW9uczxUPiA9IGdldFN0YXRlT3B0aW9ucyhpbmhlcml0ZWRTdGF0ZUNsYXNzKTtcclxuICAgIG11dGF0ZU1ldGFEYXRhKHsgbWV0YSwgaW5oZXJpdGVkU3RhdGVDbGFzcywgb3B0aW9uc1dpdGhJbmhlcml0YW5jZSB9KTtcclxuICAgIHN0YXRlQ2xhc3NbTUVUQV9PUFRJT05TX0tFWV0gPSBvcHRpb25zV2l0aEluaGVyaXRhbmNlO1xyXG4gIH07XHJcbn1cclxuIl19