UNPKG

@qiwi/cyclone

Version:

"State machine" for basic purposes

26 lines (25 loc) 1.39 kB
"use strict"; 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;