UNPKG

@robotlegsjs/core

Version:

An architecture-based IoC framework for JavaScript/TypeScript

87 lines 3.96 kB
"use strict"; // ------------------------------------------------------------------------------ // 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