@rxx/worker
Version:
React MVI micro framework.
105 lines • 6.34 kB
JavaScript
;
/**
* The MIT License (MIT)
* Copyright (c) Taketoshi Aono
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* @fileoverview
* @author Taketoshi Aono
*/
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
var emptySubject = new rxjs_1.Subject();
/**
* Represent StateHandler response.
*/
var HandlerResponse = /** @class */ (function () {
function HandlerResponse(streamCollection) {
this.streamCollection = streamCollection;
}
/**
* Get a subject by specify key.
* @param key Subject name.
* @returns Registered Subject.
*/
HandlerResponse.prototype.for = function (key) {
if (!this.streamCollection.hasWithoutGlobal(key)) {
return this.streamCollection.add(key);
}
return this.streamCollection.getWithoutGlobal(key);
};
return HandlerResponse;
}());
exports.HandlerResponse = HandlerResponse;
/**
* Hold Subject cache.
*/
var StreamStore = /** @class */ (function () {
function StreamStore(subjectMap) {
if (subjectMap === void 0) { subjectMap = {}; }
this.subjectMap = subjectMap;
}
/**
* @inheritDoc
*/
StreamStore.prototype.hasWithoutGlobal = function (key) {
return !!this.subjectMap[key];
};
/**
* @inheritDoc
*/
StreamStore.prototype.has = function (key) {
return this.get(key).length > 0;
};
/**
* @inheritDoc
*/
StreamStore.prototype.getWithoutGlobal = function (key) {
if (this.subjectMap[key]) {
return this.subjectMap[key];
}
return emptySubject;
};
/**
* @inheritDoc
*/
StreamStore.prototype.get = function (keySpace, create) {
var _this = this;
if (create === void 0) { create = false; }
var ret = [];
var _a = keySpace.split('::'), ns = _a[0], key = _a[1];
var globalKeys = ["*::" + key, ns + "::*"];
var globalBus = globalKeys
.filter(function (key) { return !!_this.subjectMap[key]; })
.map(function (key) { return _this.subjectMap[key]; });
if (this.subjectMap[keySpace]) {
ret.push(this.subjectMap[keySpace]);
}
else if (create) {
ret.push(this.add(keySpace));
}
if (globalBus.length) {
return ret.concat(globalBus);
}
return ret;
};
/**
* @inheritDoc
*/
StreamStore.prototype.add = function (key) {
return (this.subjectMap[key] = new rxjs_1.Subject());
};
return StreamStore;
}());
exports.StreamStore = StreamStore;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGVyL2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRzs7QUFFSCw2QkFBeUQ7QUFNekQsSUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFPLEVBQUUsQ0FBQztBQUVuQzs7R0FFRztBQUNIO0lBQ0UseUJBQTJCLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQztJQUVqRTs7OztPQUlHO0lBQ0ksNkJBQUcsR0FBVixVQUFpQixHQUFXO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUF5QixHQUFHLENBQUMsQ0FBQztTQUMvRDtRQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFmRCxJQWVDO0FBZlksMENBQWU7QUFpQjVCOztHQUVHO0FBQ0g7SUFDRSxxQkFBb0IsVUFBZ0Q7UUFBaEQsMkJBQUEsRUFBQSxlQUFnRDtRQUFoRCxlQUFVLEdBQVYsVUFBVSxDQUFzQztJQUFHLENBQUM7SUFFeEU7O09BRUc7SUFDSSxzQ0FBZ0IsR0FBdkIsVUFBd0IsR0FBVztRQUNqQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLHlCQUFHLEdBQVYsVUFBVyxHQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNJLHNDQUFnQixHQUF2QixVQUF3QixHQUFXO1FBQ2pDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBRyxHQUFWLFVBQVcsUUFBZ0IsRUFBRSxNQUF1QjtRQUFwRCxpQkFrQkM7UUFsQjRCLHVCQUFBLEVBQUEsY0FBdUI7UUFDbEQsSUFBTSxHQUFHLEdBQW1CLEVBQUUsQ0FBQztRQUN6QixJQUFBLHlCQUFnQyxFQUEvQixVQUFFLEVBQUUsV0FBMkIsQ0FBQztRQUN2QyxJQUFNLFVBQVUsR0FBRyxDQUFDLFFBQU0sR0FBSyxFQUFLLEVBQUUsUUFBSyxDQUFDLENBQUM7UUFDN0MsSUFBTSxTQUFTLEdBQUcsVUFBVTthQUN6QixNQUFNLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxDQUFDLENBQUMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBdEIsQ0FBc0IsQ0FBQzthQUNyQyxHQUFHLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxLQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFwQixDQUFvQixDQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ3JDO2FBQU0sSUFBSSxNQUFNLEVBQUU7WUFDakIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDOUI7UUFFRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUU7WUFDcEIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzlCO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBRyxHQUFWLFVBQWMsR0FBVztRQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLGNBQU8sRUFBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNILGtCQUFDO0FBQUQsQ0FBQyxBQXpERCxJQXlEQztBQXpEWSxrQ0FBVyJ9