UNPKG

@awesome-nodes/mvvm

Version:

Application development framework using the *model* *view* *view-model* design pattern.

30 lines (24 loc) 4.33 kB
import { ObjectBase } from '@awesome-nodes/object'; import { MulticastDelegate } from '@awesome-nodes/object/model'; export class ServiceBase extends 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 = MulticastDelegate.multicast(observable); backgroundWorker.subscribe({ complete: () => this._backgroundWorkers.delete(workerName), error: () => this._backgroundWorkers.delete(workerName) }); this._backgroundWorkers.set(workerName, backgroundWorker); return backgroundWorker; } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tdnZtL3NlcnZpY2VzL1NlcnZpY2VCYXNlLnRzIl0sIm5hbWVzIjpbIk9iamVjdEJhc2UiLCJNdWx0aWNhc3REZWxlZ2F0ZSIsIlNlcnZpY2VCYXNlIiwiX2JhY2tncm91bmRXb3JrZXJzIiwiTWFwIiwiYmFja2dyb3VuZFdvcmtlcnMiLCJpc0J1c3kiLCJzaXplIiwiY3JlYXRlQmFja2dyb3VuZFdvcmtlciIsIm9ic2VydmFibGUiLCJ3b3JrZXJOYW1lIiwiYmFja2dyb3VuZFdvcmtlciIsIm11bHRpY2FzdCIsInN1YnNjcmliZSIsImNvbXBsZXRlIiwiZGVsZXRlIiwiZXJyb3IiLCJzZXQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVQsUUFBMkIsdUJBQTNCO0FBQ0EsU0FBU0MsaUJBQVQsUUFBa0MsNkJBQWxDO0FBWUEsT0FBTyxNQUFlQyxXQUFmLFNBQXNDRixVQUF0QyxDQUNQO0FBQUE7QUFBQTtBQUFBLFNBQ2NHLGtCQURkLEdBQ21DLElBQUlDLEdBQUosRUFEbkM7QUFBQTs7QUFTZ0MsTUFBakJDLGlCQUFpQixHQUM1QjtBQUNJLFdBQU8sS0FBS0Ysa0JBQVo7QUFDSDs7QUFNZ0IsTUFBTkcsTUFBTSxHQUNqQjtBQUNJLFdBQU8sQ0FBQyxDQUFDLEtBQUtILGtCQUFMLENBQXdCSSxJQUFqQztBQUNIOztBQUtTQyxFQUFBQSxzQkFBc0IsQ0FBQ0MsVUFBRCxFQUE0QkMsVUFBNUIsRUFDaEM7QUFDSSxVQUFNQyxnQkFBZ0IsR0FBR1YsaUJBQWlCLENBQUNXLFNBQWxCLENBQStCSCxVQUEvQixDQUF6QjtBQUNBRSxJQUFBQSxnQkFBZ0IsQ0FBQ0UsU0FBakIsQ0FBMkI7QUFDdkJDLE1BQUFBLFFBQVEsRUFBRSxNQUFNLEtBQUtYLGtCQUFMLENBQXdCWSxNQUF4QixDQUErQkwsVUFBL0IsQ0FETztBQUV2Qk0sTUFBQUEsS0FBSyxFQUFLLE1BQU0sS0FBS2Isa0JBQUwsQ0FBd0JZLE1BQXhCLENBQStCTCxVQUEvQjtBQUZPLEtBQTNCOztBQUlBLFNBQUtQLGtCQUFMLENBQXdCYyxHQUF4QixDQUE0QlAsVUFBNUIsRUFBd0NDLGdCQUF4Qzs7QUFFQSxXQUFPQSxnQkFBUDtBQUNIOztBQXBDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdEJhc2UgfSBmcm9tICdAYXdlc29tZS1ub2Rlcy9vYmplY3QnO1xuaW1wb3J0IHsgTXVsdGljYXN0RGVsZWdhdGUgfSBmcm9tICdAYXdlc29tZS1ub2Rlcy9vYmplY3QvbW9kZWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlcnZpY2U8VD5cbntcbiAgICBiYWNrZ3JvdW5kV29ya2VyczogTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxUPj47XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgYmFzZSBvYmplY3QgZm9yIHRoZSBzZXJ2aWNlIGluIHRoZSBzZXJ2aWNlIHByb3ZpZGVyIHBhdHRlcm4uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTZXJ2aWNlQmFzZTxUPiBleHRlbmRzIE9iamVjdEJhc2UgaW1wbGVtZW50cyBJU2VydmljZTxUPlxue1xuICAgIHByb3RlY3RlZCBfYmFja2dyb3VuZFdvcmtlcnMgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxUPj4oKTtcblxuICAgIC8vcmVnaW9uIFB1YmxpYyBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1cnJlbnRseSBhY3RpdmUgYmFja2dyb3VuZCB3b3JrZXJzIG9mIHRoaXMgaW5zdGFuY2UuXG4gICAgICogQHJldHVybnMge01hcDxzdHJpbmcsIE9ic2VydmFibGU8VD4+fVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYmFja2dyb3VuZFdvcmtlcnMoKTogTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxUPj5cbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iYWNrZ3JvdW5kV29ya2VycztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSB3aGljaCBpbmRpY2F0ZXMgaWYgdGhpcyBzZXJ2aWNlIGluc3RhbmNlIGNvbnRhaW5zIGFjdGl2ZSBiYWNrZ3JvdW5kIHdvcmtlcnMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgcHVibGljIGdldCBpc0J1c3koKTogYm9vbGVhblxuICAgIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fYmFja2dyb3VuZFdvcmtlcnMuc2l6ZTtcbiAgICB9XG5cbiAgICAvL2VuZHJlZ2lvblxuXG4gICAgLy8gbm9pbnNwZWN0aW9uIEpTVW51c2VkR2xvYmFsU3ltYm9sc1xuICAgIHByb3RlY3RlZCBjcmVhdGVCYWNrZ3JvdW5kV29ya2VyKG9ic2VydmFibGU6IE9ic2VydmFibGU8VD4sIHdvcmtlck5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8VD5cbiAgICB7XG4gICAgICAgIGNvbnN0IGJhY2tncm91bmRXb3JrZXIgPSBNdWx0aWNhc3REZWxlZ2F0ZS5tdWx0aWNhc3Q8VD4ob2JzZXJ2YWJsZSk7XG4gICAgICAgIGJhY2tncm91bmRXb3JrZXIuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB0aGlzLl9iYWNrZ3JvdW5kV29ya2Vycy5kZWxldGUod29ya2VyTmFtZSksXG4gICAgICAgICAgICBlcnJvciAgIDogKCkgPT4gdGhpcy5fYmFja2dyb3VuZFdvcmtlcnMuZGVsZXRlKHdvcmtlck5hbWUpLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fYmFja2dyb3VuZFdvcmtlcnMuc2V0KHdvcmtlck5hbWUsIGJhY2tncm91bmRXb3JrZXIpO1xuXG4gICAgICAgIHJldHVybiBiYWNrZ3JvdW5kV29ya2VyO1xuICAgIH1cblxufVxuIl19