@awesome-nodes/mvvm
Version:
Application development framework using the *model* *view* *view-model* design pattern.
42 lines (30 loc) • 4.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ServiceBase = void 0;
var _object = require("@awesome-nodes/object");
var _model = require("@awesome-nodes/object/model");
class ServiceBase extends _object.ObjectBase {
constructor(...args) {
super(...args);
this._backgroundWorkers = new Map();
}
get backgroundWorkers() {
return this._backgroundWorkers;
}
get isBusy() {
return !!this._backgroundWorkers.size;
}
createBackgroundWorker(observable, workerName) {
const backgroundWorker = _model.MulticastDelegate.multicast(observable);
backgroundWorker.subscribe({
complete: () => this._backgroundWorkers.delete(workerName),
error: () => this._backgroundWorkers.delete(workerName)
});
this._backgroundWorkers.set(workerName, backgroundWorker);
return backgroundWorker;
}
}
exports.ServiceBase = ServiceBase;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tdnZtL3NlcnZpY2VzL1NlcnZpY2VCYXNlLnRzIl0sIm5hbWVzIjpbIlNlcnZpY2VCYXNlIiwiT2JqZWN0QmFzZSIsIl9iYWNrZ3JvdW5kV29ya2VycyIsIk1hcCIsImJhY2tncm91bmRXb3JrZXJzIiwiaXNCdXN5Iiwic2l6ZSIsImNyZWF0ZUJhY2tncm91bmRXb3JrZXIiLCJvYnNlcnZhYmxlIiwid29ya2VyTmFtZSIsImJhY2tncm91bmRXb3JrZXIiLCJNdWx0aWNhc3REZWxlZ2F0ZSIsIm11bHRpY2FzdCIsInN1YnNjcmliZSIsImNvbXBsZXRlIiwiZGVsZXRlIiwiZXJyb3IiLCJzZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFZTyxNQUFlQSxXQUFmLFNBQXNDQyxrQkFBdEMsQ0FDUDtBQUFBO0FBQUE7QUFBQSxTQUNjQyxrQkFEZCxHQUNtQyxJQUFJQyxHQUFKLEVBRG5DO0FBQUE7O0FBU2dDLE1BQWpCQyxpQkFBaUIsR0FDNUI7QUFDSSxXQUFPLEtBQUtGLGtCQUFaO0FBQ0g7O0FBTWdCLE1BQU5HLE1BQU0sR0FDakI7QUFDSSxXQUFPLENBQUMsQ0FBQyxLQUFLSCxrQkFBTCxDQUF3QkksSUFBakM7QUFDSDs7QUFLU0MsRUFBQUEsc0JBQXNCLENBQUNDLFVBQUQsRUFBNEJDLFVBQTVCLEVBQ2hDO0FBQ0ksVUFBTUMsZ0JBQWdCLEdBQUdDLHlCQUFrQkMsU0FBbEIsQ0FBK0JKLFVBQS9CLENBQXpCOztBQUNBRSxJQUFBQSxnQkFBZ0IsQ0FBQ0csU0FBakIsQ0FBMkI7QUFDdkJDLE1BQUFBLFFBQVEsRUFBRSxNQUFNLEtBQUtaLGtCQUFMLENBQXdCYSxNQUF4QixDQUErQk4sVUFBL0IsQ0FETztBQUV2Qk8sTUFBQUEsS0FBSyxFQUFLLE1BQU0sS0FBS2Qsa0JBQUwsQ0FBd0JhLE1BQXhCLENBQStCTixVQUEvQjtBQUZPLEtBQTNCOztBQUlBLFNBQUtQLGtCQUFMLENBQXdCZSxHQUF4QixDQUE0QlIsVUFBNUIsRUFBd0NDLGdCQUF4Qzs7QUFFQSxXQUFPQSxnQkFBUDtBQUNIOztBQXBDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdEJhc2UgfSBmcm9tICdAYXdlc29tZS1ub2Rlcy9vYmplY3QnO1xuaW1wb3J0IHsgTXVsdGljYXN0RGVsZWdhdGUgfSBmcm9tICdAYXdlc29tZS1ub2Rlcy9vYmplY3QvbW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlcnZpY2U8VD5cbntcbiAgICBiYWNrZ3JvdW5kV29ya2VyczogTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxUPj47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgYmFzZSBvYmplY3QgZm9yIHRoZSBzZXJ2aWNlIGluIHRoZSBzZXJ2aWNlIHByb3ZpZGVyIHBhdHRlcm4uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTZXJ2aWNlQmFzZTxUPiBleHRlbmRzIE9iamVjdEJhc2UgaW1wbGVtZW50cyBJU2VydmljZTxUPlxue1xuICAgIHByb3RlY3RlZCBfYmFja2dyb3VuZFdvcmtlcnMgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxUPj4oKTtcblxuICAgIC8vcmVnaW9uIFB1YmxpYyBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1cnJlbnRseSBhY3RpdmUgYmFja2dyb3VuZCB3b3JrZXJzIG9mIHRoaXMgaW5zdGFuY2UuXG4gICAgICogQHJldHVybnMge01hcDxzdHJpbmcsIE9ic2VydmFibGU8VD4+fVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYmFja2dyb3VuZFdvcmtlcnMoKTogTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxUPj5cbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iYWNrZ3JvdW5kV29ya2VycztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSB3aGljaCBpbmRpY2F0ZXMgaWYgdGhpcyBzZXJ2aWNlIGluc3RhbmNlIGNvbnRhaW5zIGFjdGl2ZSBiYWNrZ3JvdW5kIHdvcmtlcnMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgcHVibGljIGdldCBpc0J1c3koKTogYm9vbGVhblxuICAgIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fYmFja2dyb3VuZFdvcmtlcnMuc2l6ZTtcbiAgICB9XG5cbiAgICAvL2VuZHJlZ2lvblxuXG4gICAgLy8gbm9pbnNwZWN0aW9uIEpTVW51c2VkR2xvYmFsU3ltYm9sc1xuICAgIHByb3RlY3RlZCBjcmVhdGVCYWNrZ3JvdW5kV29ya2VyKG9ic2VydmFibGU6IE9ic2VydmFibGU8VD4sIHdvcmtlck5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8VD5cbiAgICB7XG4gICAgICAgIGNvbnN0IGJhY2tncm91bmRXb3JrZXIgPSBNdWx0aWNhc3REZWxlZ2F0ZS5tdWx0aWNhc3Q8VD4ob2JzZXJ2YWJsZSk7XG4gICAgICAgIGJhY2tncm91bmRXb3JrZXIuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB0aGlzLl9iYWNrZ3JvdW5kV29ya2Vycy5kZWxldGUod29ya2VyTmFtZSksXG4gICAgICAgICAgICBlcnJvciAgIDogKCkgPT4gdGhpcy5fYmFja2dyb3VuZFdvcmtlcnMuZGVsZXRlKHdvcmtlck5hbWUpLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fYmFja2dyb3VuZFdvcmtlcnMuc2V0KHdvcmtlck5hbWUsIGJhY2tncm91bmRXb3JrZXIpO1xuXG4gICAgICAgIHJldHVybiBiYWNrZ3JvdW5kV29ya2VyO1xuICAgIH1cblxufVxuIl19