@qiwi/cyclone
Version:
"State machine" for basic purposes
26 lines (25 loc) • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTemplate = exports.factory = exports.DEFAULT_MACHINE_REGISTRY = exports.DEFAULT_TEMPLATE_REGISTRY = exports.DEFAULT_TEMPLATE = void 0;
var tslib_1 = require("tslib");
var machine_1 = require("./machine");
var registry_1 = require("./registry");
exports.DEFAULT_TEMPLATE = {};
exports.DEFAULT_TEMPLATE_REGISTRY = new registry_1.Registry();
exports.DEFAULT_MACHINE_REGISTRY = new registry_1.Registry();
var factory = function (opts) {
// NOTE flowgen throws error on typed args destruction
var machine = opts.machine, template = opts.template, _a = opts.templateRegistry, templateRegistry = _a === void 0 ? exports.DEFAULT_TEMPLATE_REGISTRY : _a, _b = opts.machineRegistry, machineRegistry = _b === void 0 ? exports.DEFAULT_MACHINE_REGISTRY : _b;
var _template = (0, exports.getTemplate)(template, templateRegistry);
var machineOpts = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, machine_1.DEFAULT_OPTS), _template), machine);
var instance = new machine_1.Machine(machineOpts);
machineRegistry.add(instance.id, instance);
return instance;
};
exports.factory = factory;
var getTemplate = function (template, templateRegistry) {
return typeof template === 'string'
? templateRegistry.get(template)
: template;
};
exports.getTemplate = getTemplate;