UNPKG

@ima/core

Version:

IMA.js framework for isomorphic javascript application

83 lines (82 loc) 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "PageStateManagerDecorator", { enumerable: true, get: function() { return PageStateManagerDecorator; } }); const _PageStateManager = require("./PageStateManager"); const _GenericError = require("../../error/GenericError"); class PageStateManagerDecorator extends _PageStateManager.PageStateManager { /** * The current page state manager. */ _pageStateManager; /** * Array of access keys for state. */ _allowedStateKeys; /** * Initializes the page state manager decorator. * * @param {PageStateManager} pageStateManager * @param {string[]} allowedStateKeys */ constructor(pageStateManager, allowedStateKeys){ super(); /** * The current page state manager. */ this._pageStateManager = pageStateManager; this._allowedStateKeys = allowedStateKeys; } /** * @inheritDoc */ clear() { this._pageStateManager.clear(); } /** * @inheritDoc */ setState(statePatch) { if ($Debug) { const patchKeys = Object.keys(statePatch); const deniedKeys = patchKeys.filter((patchKey)=>{ return this._allowedStateKeys.indexOf(patchKey) === -1; }); if (deniedKeys.length > 0) { throw new _GenericError.GenericError(`Extension can not set state for keys ` + `${deniedKeys.join()}. Check your extension or add keys ` + `${deniedKeys.join()} to getAllowedStateKeys.`); } } this._pageStateManager.setState(statePatch); } /** * @inheritDoc */ getState() { return this._pageStateManager.getState(); } /** * @inheritDoc */ getAllStates() { return this._pageStateManager.getAllStates(); } /** * @inheritDoc */ getTransactionStatePatches() { return this._pageStateManager.getTransactionStatePatches(); } /** * @inheritDoc */ beginTransaction() { return this._pageStateManager.beginTransaction(); } /** * @inheritDoc */ commitTransaction() { return this._pageStateManager.commitTransaction(); } /** * @inheritDoc */ cancelTransaction() { return this._pageStateManager.cancelTransaction(); } } //# sourceMappingURL=PageStateManagerDecorator.js.map