@rxx/worker
Version:
React MVI micro framework.
77 lines • 6.25 kB
JavaScript
;
/**
* @fileoverview
* @author Taketoshi Aono
*/
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
var utils_1 = require("./utils");
var operators_1 = require("rxjs/operators");
var provisioning_1 = require("./provisioning");
var utils_2 = require("./utils");
var worker_1 = require("./worker");
function getDefaultName() {
return 'AnonymousProvider';
}
function makeApp(apps, initialStateFactory, otherProps) {
if (otherProps === void 0) { otherProps = {}; }
return function app(subject, states) {
if (states === void 0) { states = {}; }
var initialState;
if (typeof initialStateFactory === 'function') {
initialState = initialStateFactory();
}
else {
initialState = initialStateFactory;
}
var initializedMap = {};
return Object.keys(apps).reduce(function (states, key) {
var app = apps[key];
var nextState = app(subject, initialState[key]);
if (nextState.view) {
if (!rxjs_1.isObservable(nextState.view)) {
throw new Error("Application view of " + key + " must be Observable.");
}
nextState.view = nextState.view.pipe(operators_1.startWith(initialState[key]));
if (!states.view) {
states.view = {};
}
if (!utils_1.isDefined(states.view[key])) {
states.view[key] = nextState.view;
}
else {
states.view[key] = rxjs_1.merge(states.view[key], nextState.view);
}
}
for (var key_1 in nextState) {
if (key_1 !== 'view') {
if (!nextState[key_1] || !(nextState[key_1] instanceof rxjs_1.Observable)) {
throw new Error("Property " + key_1 + " must be Observable.");
}
if (states[key_1]) {
states[key_1] = rxjs_1.merge(states[key_1], nextState[key_1]);
}
else {
states[key_1] = nextState[key_1];
}
}
}
return states;
}, states);
};
}
exports.makeApp = makeApp;
function run(apps, initialStateFactory, otherProps) {
if (otherProps === void 0) { otherProps = {}; }
return worker_1.initWorker(new provisioning_1.Provisioning(otherProps.intent
? utils_2.isObject(otherProps.intent)
? otherProps.intent
: { intent: otherProps.intent }
: {}, otherProps.store
? Array.isArray(otherProps.store)
? otherProps.store
: [otherProps.store]
: [], makeApp(apps, initialStateFactory), otherProps.service, otherProps.stateHandlers || {}));
}
exports.run = run;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7O0FBRUgsNkJBQWdFO0FBQ2hFLGlDQUE0RDtBQUU1RCw0Q0FBZ0Q7QUFHaEQsK0NBQThDO0FBQzlDLGlDQUFtQztBQUVuQyxtQ0FBcUQ7QUFFckQsU0FBUyxjQUFjO0lBQ3JCLE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQztBQVFELFNBQWdCLE9BQU8sQ0FTckIsSUFBTyxFQUNQLG1CQUEyQyxFQUMzQyxVQUF5QjtJQUF6QiwyQkFBQSxFQUFBLGFBQWdCLEVBQVM7SUFNekIsT0FBTyxTQUFTLEdBQUcsQ0FBQyxPQUF3QixFQUFFLE1BQWdCO1FBQWhCLHVCQUFBLEVBQUEsV0FBZ0I7UUFDNUQsSUFBSSxZQUE2QixDQUFDO1FBQ2xDLElBQUksT0FBTyxtQkFBbUIsS0FBSyxVQUFVLEVBQUU7WUFDN0MsWUFBWSxHQUFHLG1CQUFtQixFQUFFLENBQUM7U0FDdEM7YUFBTTtZQUNMLFlBQVksR0FBRyxtQkFBbUIsQ0FBQztTQUNwQztRQUNELElBQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUMxQixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQUMsTUFBTSxFQUFFLEdBQUc7WUFDMUMsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLElBQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFO2dCQUNsQixJQUFJLENBQUMsbUJBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXVCLEdBQUcseUJBQXNCLENBQUMsQ0FBQztpQkFDbkU7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