@rxx/worker
Version:
React MVI micro framework.
75 lines • 5.62 kB
JavaScript
;
/**
* @fileoverview
* @author Taketoshi Aono
*/
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
var WorkerPostEventType;
(function (WorkerPostEventType) {
WorkerPostEventType["INITIALIZED"] = "INITIALIZED";
WorkerPostEventType["DISPATCHED"] = "DISPATCHED";
WorkerPostEventType["UPDATE"] = "UPDATE";
})(WorkerPostEventType = exports.WorkerPostEventType || (exports.WorkerPostEventType = {}));
var WorkerReceiveEventType;
(function (WorkerReceiveEventType) {
WorkerReceiveEventType["DISPATCH"] = "DISPATCH";
WorkerReceiveEventType["INITIALIZE"] = "INITIALIZE";
WorkerReceiveEventType["EXIT"] = "EXIT";
})(WorkerReceiveEventType = exports.WorkerReceiveEventType || (exports.WorkerReceiveEventType = {}));
exports.initWorker = function (provisioning) {
var subject = new rxjs_1.Subject();
var subscription = new rxjs_1.Subscription();
var post = process.env.RMVI_TEST
? function (_a) {
var type = _a.type, payload = _a.payload;
global['RECEIVE_WORKER_MESSAGE']({ type: type, payload: payload });
}
: typeof postMessage === 'function'
? function (_a) {
var type = _a.type, payload = _a.payload;
postMessage({ type: type, payload: payload });
}
: function () { };
if (typeof Worker === 'function') {
onmessage = function (e) {
var data = e.data;
subject.next(data);
};
}
var publisher = provisioning.getPublisher();
subscription.add(subject.subscribe(function (_a) {
var type = _a.type, payload = _a.payload;
switch (type) {
case WorkerReceiveEventType.DISPATCH:
publisher(payload.type, payload.payload);
provisioning.emitAsync(function () {
return post({ type: WorkerPostEventType.DISPATCHED, payload: payload });
});
break;
case WorkerReceiveEventType.INITIALIZE:
provisioning.prepare(payload);
provisioning.subscribe(function (state, isInitial) {
if (isInitial) {
post({
type: WorkerPostEventType.INITIALIZED,
payload: state.view,
});
}
else {
post({ type: WorkerPostEventType.UPDATE, payload: state.view });
}
}, true);
break;
case WorkerReceiveEventType.EXIT:
publisher.unsubscribe();
provisioning.dispose();
subscription.unsubscribe();
break;
default:
return;
}
}));
return subject;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOztBQUVILDZCQUE2QztBQUc3QyxJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDN0Isa0RBQTJCLENBQUE7SUFDM0IsZ0RBQXlCLENBQUE7SUFDekIsd0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUpXLG1CQUFtQixHQUFuQiwyQkFBbUIsS0FBbkIsMkJBQW1CLFFBSTlCO0FBRUQsSUFBWSxzQkFJWDtBQUpELFdBQVksc0JBQXNCO0lBQ2hDLCtDQUFxQixDQUFBO0lBQ3JCLG1EQUF5QixDQUFBO0lBQ3pCLHVDQUFhLENBQUE7QUFDZixDQUFDLEVBSlcsc0JBQXNCLEdBQXRCLDhCQUFzQixLQUF0Qiw4QkFBc0IsUUFJakM7QUFHWSxRQUFBLFVBQVUsR0FBRyxVQUFDLFlBQTBCO0lBQ25ELElBQU0sT0FBTyxHQUFHLElBQUksY0FBTyxFQUFpQixDQUFDO0lBQzdDLElBQU0sWUFBWSxHQUFHLElBQUksbUJBQVksRUFBRSxDQUFDO0lBRXhDLElBQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUztRQUNoQyxDQUFDLENBQUMsVUFBQyxFQUFpRDtnQkFBL0MsY0FBSSxFQUFFLG9CQUFPO1lBQ2QsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsRUFBRSxJQUFJLE1BQUEsRUFBRSxPQUFPLFNBQUEsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNILENBQUMsQ0FBQyxPQUFPLFdBQVcsS0FBSyxVQUFVO1lBQ2pDLENBQUMsQ0FBQyxVQUFDLEVBQWlEO29CQUEvQyxjQUFJLEVBQUUsb0JBQU87Z0JBQ2QsV0FBVyxDQUFDLEVBQUUsSUFBSSxNQUFBLEVBQUUsT0FBTyxTQUFBLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFDSCxDQUFDLENBQUMsY0FBTyxDQUFDLENBQUM7SUFFZixJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRTtRQUNoQyxTQUFTLEdBQUcsVUFBQSxDQUFDO1lBQ0gsSUFBQSxhQUFJLENBQU87WUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUM7S0FDSDtJQUVELElBQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxZQUFZLENBQUMsR0FBRyxDQUNkLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBQyxFQUFpQjtZQUFmLGNBQUksRUFBRSxvQkFBTztRQUNoQyxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssc0JBQXNCLENBQUMsUUFBUTtnQkFDbEMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN6QyxZQUFZLENBQUMsU0FBUyxDQUFDO29CQUNyQixPQUFBLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxTQUFBLEVBQUUsQ0FBQztnQkFBdkQsQ0FBdUQsQ0FDeEQsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSyxzQkFBc0IsQ0FBQyxVQUFVO2dCQUNwQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM5QixZQUFZLENBQUMsU0FBUyxDQUFDLFVBQUMsS0FBSyxFQUFFLFNBQVM7b0JBQ3RDLElBQUksU0FBUyxFQUFFO3dCQUNiLElBQUksQ0FBQzs0QkFDSCxJQUFJLEVBQUUsbUJBQW1CLENBQUMsV0FBVzs0QkFDckMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJO3lCQUNwQixDQUFDLENBQUM7cUJBQ0o7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7cUJBQ2pFO2dCQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDVCxNQUFNO1lBQ1IsS0FBSyxzQkFBc0IsQ0FBQyxJQUFJO2dCQUM5QixTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3hCLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMzQixNQUFNO1lBQ1I7Z0JBQ0UsT0FBTztTQUNWO0lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUVGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyJ9