@robotlegsjs/core
Version:
An architecture-based IoC framework for JavaScript/TypeScript
87 lines • 3.96 kB
JavaScript
;
// ------------------------------------------------------------------------------
// Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved.
//
// NOTICE: You are permitted to use, modify, and distribute this file
// in accordance with the terms of the license agreement accompanying it.
// ------------------------------------------------------------------------------
Object.defineProperty(exports, "__esModule", { value: true });
exports.DirectCommandMap = void 0;
var tslib_1 = require("tslib");
var inversify_1 = require("inversify");
var IContext_1 = require("../../../framework/api/IContext");
var CommandExecutor_1 = require("../../commandCenter/impl/CommandExecutor");
var CommandMappingList_1 = require("../../commandCenter/impl/CommandMappingList");
var NullCommandTrigger_1 = require("../../commandCenter/impl/NullCommandTrigger");
var IDirectCommandMap_1 = require("../api/IDirectCommandMap");
var DirectCommandMapper_1 = require("./DirectCommandMapper");
/**
* Maps commands for direct (manual) execution
*/
var DirectCommandMap = /** @class */ (function () {
/*============================================================================*/
/* Constructor */
/*============================================================================*/
/**
* Creates a Direct Command Map
*
* @param context The context that owns this map
*/
function DirectCommandMap(context) {
/*============================================================================*/
/* Private Properties */
/*============================================================================*/
this._mappingProcessors = [];
this._context = context;
// Create a child injector
var sandboxedInjector = context.injector.createChild();
// allow access to this specific instance in the commands
sandboxedInjector.bind(IDirectCommandMap_1.IDirectCommandMap).toConstantValue(this);
this._mappings = new CommandMappingList_1.CommandMappingList(new NullCommandTrigger_1.NullCommandTrigger(), this._mappingProcessors, context.getLogger(this));
this._executor = new CommandExecutor_1.CommandExecutor(sandboxedInjector, this._mappings.removeMapping.bind(this._mappings));
}
/*============================================================================*/
/* Public Functions */
/*============================================================================*/
/**
* @inheritDoc
*/
DirectCommandMap.prototype.map = function (commandClass) {
return new DirectCommandMapper_1.DirectCommandMapper(this._executor, this._mappings, commandClass);
};
/**
* @inheritDoc
*/
DirectCommandMap.prototype.detain = function (command) {
this._context.detain(command);
};
/**
* @inheritDoc
*/
DirectCommandMap.prototype.release = function (command) {
this._context.release(command);
};
/**
* @inheritDoc
*/
DirectCommandMap.prototype.execute = function (payload) {
this._executor.executeCommands(this._mappings.getList(), payload);
};
/**
* @inheritDoc
*/
DirectCommandMap.prototype.addMappingProcessor = function (handler) {
if (this._mappingProcessors.indexOf(handler) === -1) {
this._mappingProcessors.push(handler);
}
return this;
};
DirectCommandMap = tslib_1.__decorate([
inversify_1.injectable(),
tslib_1.__param(0, inversify_1.inject(IContext_1.IContext)),
tslib_1.__metadata("design:paramtypes", [Object])
], DirectCommandMap);
return DirectCommandMap;
}());
exports.DirectCommandMap = DirectCommandMap;
//# sourceMappingURL=DirectCommandMap.js.map