UNPKG

clean-architecture

Version:

Utilities for implementing clean architecture using Redux

57 lines 2.42 kB
"use strict"; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createCore = void 0; var assert_1 = require("tsafe/assert"); var id_1 = require("tsafe/id"); var createStore_1 = require("./createStore"); var usecasesToEvts_1 = require("./usecasesToEvts"); var usecasesToStates_1 = require("./usecasesToStates"); var usecasesToFunctions_1 = require("./usecasesToFunctions"); function createCore(params) { var context = params.context, usecases = params.usecases; Object.entries(usecases).forEach(function (_a) { var _b = __read(_a, 2), key = _b[0], usecase = _b[1]; (0, assert_1.assert)(key === usecase.name, "You should reconcile the name of the usecase (".concat(usecase.name, ") and the key it's assigned to in the usecases object (").concat(key, ")")); }); var usecasesArr = Object.values(usecases); var store = (0, createStore_1.createStore)({ context: context, usecasesArr: usecasesArr }); (0, assert_1.assert)((0, assert_1.is)(context)); var states = (0, usecasesToStates_1.usecasesToStates)({ usecasesArr: usecasesArr, store: store }).states; var evts = (0, usecasesToEvts_1.usecasesToEvts)({ usecasesArr: usecasesArr, store: store, rootContext: context }).evts; var functions = (0, usecasesToFunctions_1.usecasesToFunctions)({ usecasesArr: usecasesArr, store: store }).functions; var evtStateUpdated = store.evtAction.pipe(function () { return [(0, id_1.id)(undefined)]; }); evtStateUpdated.setMaxHandlers(Infinity); var core = { evtStateUpdated: evtStateUpdated, states: states, evts: evts, functions: functions, types: null }; //@ts-expect-error delete core.types; return { core: core, "dispatch": store.dispatch, "getState": store.getState, "evtAction": store.evtAction }; } exports.createCore = createCore; //# sourceMappingURL=createCore.js.map