UNPKG

alpha-command-bus

Version:
33 lines (32 loc) 1.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CommandHandlerDescriptor = void 0; const alpha_command_bus_command_factory_1 = require("alpha-command-bus-command-factory"); const matchesObject = require('lodash.matches'); class CommandHandlerDescriptor { constructor(predicate, func) { this.predicate = predicate; this.func = func; Object.freeze(this); } static fromFilter(filter, func) { return new CommandHandlerDescriptor(CommandHandlerDescriptor.filterToPredicate(filter), func); } static filterToPredicate(filter) { if (typeof filter === 'string') { const commandName = filter; return (c) => c.command === commandName; } if (alpha_command_bus_command_factory_1.ShapeCommand.isType(filter)) { return (c) => c.command === filter.COMMAND_NAME; } if (filter instanceof Function) { return filter; } if (typeof filter === 'object') { return matchesObject(filter); } throw new Error('Command predicate has to be a function, a string, an object or class or ShapeCommand.Shape'); } } exports.CommandHandlerDescriptor = CommandHandlerDescriptor;