@schoolbelle/common
Version:
275 lines (269 loc) • 7.69 kB
JavaScript
import { Subject, BehaviorSubject } from 'rxjs';
import { concatMap, switchMap, share, finalize, mergeMap, throttleTime } from 'rxjs/operators';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @enum {string} */
var QueueActions = {
RESET: 'RESET',
ADD: 'ADD',
};
/**
* @template T
*/
var /**
* @template T
*/
ObservableCascadeQueue = /** @class */ (function () {
function ObservableCascadeQueue() {
var _this = this;
this._commands = new Subject();
this._queues = new BehaviorSubject(new Subject());
this.queue$ = this._queues.asObservable().pipe(switchMap((/**
* @param {?} queue
* @return {?}
*/
function (queue) {
return queue.pipe(concatMap((/**
* @param {?} item
* @return {?}
*/
function (item) { return item; })));
})), share());
this.sizeChangeEvent = new Subject();
this._size = 0;
this._commands.asObservable().subscribe((/**
* @param {?} command
* @return {?}
*/
function (command) {
switch (command && command.action) {
case QueueActions.RESET:
_this._queues.next(new Subject());
break;
case QueueActions.ADD:
_this._queues.value.next(command.payload);
break;
default:
_this._queues.value.error("[ObservableQueue] unknown command: " + JSON.stringify(command));
}
}));
this.queue$.subscribe();
}
Object.defineProperty(ObservableCascadeQueue.prototype, "size", {
get: /**
* @return {?}
*/
function () {
return this._size;
},
set: /**
* @param {?} v
* @return {?}
*/
function (v) {
this._size = v;
this.sizeChangeEvent.next(v);
},
enumerable: true,
configurable: true
});
Object.defineProperty(ObservableCascadeQueue.prototype, "onSizeChange", {
get: /**
* @return {?}
*/
function () {
return this.sizeChangeEvent.asObservable();
},
enumerable: true,
configurable: true
});
// add(item: ObservableInput<T>): this {
// add(item: ObservableInput<T>): this {
/**
* @template THIS
* @this {THIS}
* @param {?} item
* @return {THIS}
*/
ObservableCascadeQueue.prototype.add =
// add(item: ObservableInput<T>): this {
/**
* @template THIS
* @this {THIS}
* @param {?} item
* @return {THIS}
*/
function (item) {
var _this = this;
setTimeout((/**
* @return {?}
*/
function () {
(/** @type {?} */ (_this)).size++;
item = item.pipe(finalize((/**
* @return {?}
*/
function () { return (/** @type {?} */ (_this)).size--; })));
(/** @type {?} */ (_this))._commands.next({ action: QueueActions.ADD, payload: item });
}));
return (/** @type {?} */ (this));
};
/**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
ObservableCascadeQueue.prototype.reset = /**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
function () {
(/** @type {?} */ (this)).size = 0;
(/** @type {?} */ (this))._commands.next({ action: QueueActions.RESET });
return (/** @type {?} */ (this));
};
/**
* @return {?}
*/
ObservableCascadeQueue.prototype.destroy = /**
* @return {?}
*/
function () {
this._commands.complete();
this._queues.value.complete();
this._queues.complete();
};
/**
* @return {?}
*/
ObservableCascadeQueue.prototype.asObservable = /**
* @return {?}
*/
function () {
return this.queue$;
};
return ObservableCascadeQueue;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @enum {string} */
var QueueActions$1 = {
RESET: 'RESET',
ADD: 'ADD',
};
/**
* @template T
*/
var /**
* @template T
*/
ObservableThottleQueue = /** @class */ (function () {
function ObservableThottleQueue() {
var _this = this;
this._commands = new Subject();
this._queues = new BehaviorSubject(new Subject());
this.queue$ = this._queues.asObservable().pipe(switchMap((/**
* @param {?} queue
* @return {?}
*/
function (queue) {
return queue.pipe(throttleTime(100), mergeMap((/**
* @param {?} item
* @return {?}
*/
function (item) { return item; }), 5)
// tap(e=>console.log((<any>e).option.text, (<any>e).type, (<any>e).checking))
);
})), share());
this._commands.asObservable().subscribe((/**
* @param {?} command
* @return {?}
*/
function (command) {
switch (command && command.action) {
case QueueActions$1.RESET:
_this._queues.next(new Subject());
break;
case QueueActions$1.ADD:
_this._queues.value.next(command.payload);
break;
default:
_this._queues.value.error("[ObservableQueue] unknown command: " + JSON.stringify(command));
}
}));
this.queue$.subscribe();
}
/**
* @template THIS
* @this {THIS}
* @param {?} item
* @return {THIS}
*/
ObservableThottleQueue.prototype.add = /**
* @template THIS
* @this {THIS}
* @param {?} item
* @return {THIS}
*/
function (item) {
var _this = this;
setTimeout((/**
* @return {?}
*/
function () {
return (/** @type {?} */ (_this))._commands.next({ action: QueueActions$1.ADD, payload: item });
}));
// this._commands.next({action: QueueActions.ADD, payload: item});
return (/** @type {?} */ (this));
};
/**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
ObservableThottleQueue.prototype.reset = /**
* @template THIS
* @this {THIS}
* @return {THIS}
*/
function () {
(/** @type {?} */ (this))._commands.next({ action: QueueActions$1.RESET });
return (/** @type {?} */ (this));
};
/**
* @return {?}
*/
ObservableThottleQueue.prototype.destroy = /**
* @return {?}
*/
function () {
this._commands.complete();
this._queues.value.complete();
this._queues.complete();
};
/**
* @return {?}
*/
ObservableThottleQueue.prototype.asObservable = /**
* @return {?}
*/
function () {
return this.queue$;
};
return ObservableThottleQueue;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { ObservableCascadeQueue, ObservableThottleQueue };
//# sourceMappingURL=schoolbelle-common-observable-queue.js.map