@ima/core
Version:
IMA.js framework for isomorphic javascript application
142 lines (141 loc) • 3.26 kB
JavaScript
import { Extension } from './Extension';
import { GenericError } from '../error/GenericError';
/**
* Abstract extension
*/ export class AbstractExtension extends Extension {
static $name;
static $dependencies;
/**
* State manager.
*/ _pageStateManager;
/**
* Flag indicating whether the PageStateManager should be used instead
* of partial state.
*/ _usingStateManager = false;
_partialStateSymbol = Symbol('partialState');
/**
* The HTTP response code to send to the client.
*/ status = 200;
/**
* The route parameters extracted from the current route.
*/ params = {};
/**
* @inheritDoc
*/ init() {
return;
}
/**
* @inheritDoc
*/ destroy() {
return;
}
/**
* @inheritDoc
*/ activate() {
return;
}
/**
* @inheritDoc
*/ deactivate() {
return;
}
/**
* @inheritDoc
*/ load() {
throw new GenericError('The ima.core.extension.AbstractExtension.load method is abstract ' + 'and must be overridden');
}
/**
* @inheritDoc
*/ update(prevParams = {}) {
return {};
}
/**
* @inheritDoc
*/ setState(statePatch) {
if (this._pageStateManager) {
this._pageStateManager.setState(statePatch);
}
}
/**
* @inheritDoc
*/ getState() {
if (this._usingStateManager && this._pageStateManager) {
return this._pageStateManager.getState();
} else {
return this.getPartialState();
}
}
/**
* @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
*/ setPartialState(partialStatePatch) {
const newPartialState = Object.assign({}, this[this._partialStateSymbol], partialStatePatch);
this[this._partialStateSymbol] = newPartialState;
}
/**
* @inheritDoc
*/ getPartialState() {
return this[this._partialStateSymbol] || {};
}
/**
* @inheritDoc
*/ clearPartialState() {
this[this._partialStateSymbol] = {};
}
/**
* @inheritDoc
*/ setRouteParams(params = {}) {
this.params = params;
}
/**
* @inheritDoc
*/ getRouteParams() {
return this.params;
}
/**
* @inheritDoc
*/ setPageStateManager(pageStateManager) {
this._pageStateManager = pageStateManager;
}
/**
* @inheritDoc
*/ switchToStateManager() {
this._usingStateManager = true;
}
/**
* @inheritDoc
*/ switchToPartialState() {
this._usingStateManager = false;
}
/**
* @inheritDoc
*/ getHttpStatus() {
return this.status;
}
/**
* Returns array of allowed state keys for extension.
*/ getAllowedStateKeys() {
return [];
}
}
//# sourceMappingURL=AbstractExtension.js.map