UNPKG

@ima/core

Version:

IMA.js framework for isomorphic javascript application

111 lines (110 loc) 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "AbstractController", { enumerable: true, get: function() { return AbstractController; } }); const _Controller = require("./Controller"); class AbstractController extends _Controller.Controller { _pageStateManager; _extensions = new Map(); /** * The HTTP response code to send to the client. */ status = 200; /** * The route parameters extracted from the current route. This field is * set externally by IMA right before the {@link Controller#init} or the * {@link Controller#update} method is called. */ params = {}; static $name; static $dependencies; static $extensions; constructor(){ super(); } /** * @inheritDoc */ setState(statePatch) { if (this._pageStateManager) { this._pageStateManager.setState(statePatch); } } /** * @inheritDoc */ getState() { if (this._pageStateManager) { return this._pageStateManager.getState(); } else { return {}; } } /** * @inheritDoc */ beginStateTransaction() { if (this._pageStateManager) { this._pageStateManager.beginTransaction(); } } /** * @inheritDoc */ commitStateTransaction() { if (this._pageStateManager) { this._pageStateManager.commitTransaction(); } } /** * @inheritDoc */ cancelStateTransaction() { if (this._pageStateManager) { this._pageStateManager.cancelTransaction(); } } /** * @inheritDoc */ addExtension(extension, extensionInstance) { // FIXME IMA@20, remove backwards compatibility if (!extensionInstance && typeof extension !== 'object' || extensionInstance && typeof extensionInstance !== 'object') { throw new Error(`ima.core.AbstractController:addExtension: Expected instance of an extension, got ${typeof extension}.`); } if (extensionInstance) { this._extensions.set(extension, extensionInstance); } else { this._extensions.set(extension?.constructor ?? extension, extension); } } /** * @inheritDoc */ getExtension(extension) { return this._extensions.get(extension); } /** * @inheritDoc */ getExtensions() { return Array.from(this._extensions.values()); } /** * @inheritDoc */ setRouteParams(params = {}) { this.params = params; } /** * @inheritDoc */ getRouteParams() { return this.params; } /** * @inheritDoc */ setPageStateManager(pageStateManager) { this._pageStateManager = pageStateManager; } /** * @inheritDoc */ getHttpStatus() { return this.status; } } //# sourceMappingURL=AbstractController.js.map