@alauda-fe/common
Version:
Alauda frontend team common codes.
32 lines • 6.51 kB
JavaScript
import { DestroyRef, assertInInjectionContext, inject } from '@angular/core';
import { isNumber } from 'lodash-es';
import { EMPTY, Observable, Subject, of, catchError, delay, startWith, switchMap, tap, defer, } from 'rxjs';
import { publishRef } from './operators';
export const createPollObservable = (fetch$, pollIn) => {
const INIT_VALUE = 'Initialize';
const subject = new Subject();
const createDelayObservable = () => (isNumber(pollIn) ? of(pollIn) : pollIn).pipe(switchMap(pi => (pi === 0 ? EMPTY : of(null).pipe(delay(pi)))));
return subject.pipe(startWith(INIT_VALUE), switchMap(value => value === INIT_VALUE ? of(null) : createDelayObservable()), switchMap(() => fetch$.pipe(catchError((_) => of(null)))), tap(() => {
subject.next();
}), publishRef());
};
// https://github.com/angular/angular/blob/6fefbe8fca6e96549416a27c14e02957da1291e7/packages/core/rxjs-interop/src/take_until_destroyed.ts#L23
export function onDestroy(destroyRef) {
if (!destroyRef) {
assertInInjectionContext(onDestroy);
destroyRef = inject(DestroyRef);
}
return new Observable(observer => {
return destroyRef.onDestroy(observer.next.bind(observer));
});
}
export const tapSkip = (nEmissions, callback) => (source$) => defer(() => {
let counter = 0;
return source$.pipe(tap(item => {
if (counter >= nEmissions) {
callback(item);
}
counter++;
}));
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL3V0aWxzL29ic2VydmFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsRUFBRSxFQUNGLFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0gsS0FBSyxHQUNOLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUNsQyxNQUEyQixFQUMzQixNQUFtQyxFQUNkLEVBQUU7SUFDdkIsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDO0lBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFcEMsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLEVBQUUsQ0FDakMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUMzQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9ELENBQUM7SUFFSixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQ2pCLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFDckIsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQ2hCLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FDMUQsRUFDRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbEUsR0FBRyxDQUFDLEdBQUcsRUFBRTtRQUNQLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQixDQUFDLENBQUMsRUFDRixVQUFVLEVBQUUsQ0FDYixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsOElBQThJO0FBQzlJLE1BQU0sVUFBVSxTQUFTLENBQUMsVUFBdUI7SUFDL0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDL0IsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUNsQixDQUFJLFVBQWtCLEVBQUUsUUFBMkIsRUFBRSxFQUFFLENBQ3ZELENBQUMsT0FBc0IsRUFBaUIsRUFBRSxDQUN4QyxLQUFLLENBQUMsR0FBRyxFQUFFO0lBQ1QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FDakIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ1QsSUFBSSxPQUFPLElBQUksVUFBVSxFQUFFLENBQUM7WUFDMUIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBFTVBUWSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgb2YsXG4gIGNhdGNoRXJyb3IsXG4gIGRlbGF5LFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFwLFxuICBkZWZlcixcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHB1Ymxpc2hSZWYgfSBmcm9tICcuL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQb2xsT2JzZXJ2YWJsZSA9IDxUUmVzdWx0PihcbiAgZmV0Y2gkOiBPYnNlcnZhYmxlPFRSZXN1bHQ+LFxuICBwb2xsSW46IG51bWJlciB8IE9ic2VydmFibGU8bnVtYmVyPixcbik6IE9ic2VydmFibGU8VFJlc3VsdD4gPT4ge1xuICBjb25zdCBJTklUX1ZBTFVFID0gJ0luaXRpYWxpemUnO1xuICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdCBjcmVhdGVEZWxheU9ic2VydmFibGUgPSAoKSA9PlxuICAgIChpc051bWJlcihwb2xsSW4pID8gb2YocG9sbEluKSA6IHBvbGxJbikucGlwZShcbiAgICAgIHN3aXRjaE1hcChwaSA9PiAocGkgPT09IDAgPyBFTVBUWSA6IG9mKG51bGwpLnBpcGUoZGVsYXkocGkpKSkpLFxuICAgICk7XG5cbiAgcmV0dXJuIHN1YmplY3QucGlwZShcbiAgICBzdGFydFdpdGgoSU5JVF9WQUxVRSksXG4gICAgc3dpdGNoTWFwKHZhbHVlID0+XG4gICAgICB2YWx1ZSA9PT0gSU5JVF9WQUxVRSA/IG9mKG51bGwpIDogY3JlYXRlRGVsYXlPYnNlcnZhYmxlKCksXG4gICAgKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gZmV0Y2gkLnBpcGUoY2F0Y2hFcnJvcigoXzogdW5rbm93bikgPT4gb2YobnVsbCkpKSksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIHN1YmplY3QubmV4dCgpO1xuICAgIH0pLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi82ZmVmYmU4ZmNhNmU5NjU0OTQxNmEyN2MxNGUwMjk1N2RhMTI5MWU3L3BhY2thZ2VzL2NvcmUvcnhqcy1pbnRlcm9wL3NyYy90YWtlX3VudGlsX2Rlc3Ryb3llZC50cyNMMjNcbmV4cG9ydCBmdW5jdGlvbiBvbkRlc3Ryb3koZGVzdHJveVJlZj86IERlc3Ryb3lSZWYpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgaWYgKCFkZXN0cm95UmVmKSB7XG4gICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KG9uRGVzdHJveSk7XG4gICAgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgcmV0dXJuIGRlc3Ryb3lSZWYub25EZXN0cm95KG9ic2VydmVyLm5leHQuYmluZChvYnNlcnZlcikpO1xuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IHRhcFNraXAgPVxuICA8VD4obkVtaXNzaW9uczogbnVtYmVyLCBjYWxsYmFjazogKGFyZ3M6IFQpID0+IHZvaWQpID0+XG4gIChzb3VyY2UkOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiA9PlxuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIGxldCBjb3VudGVyID0gMDtcbiAgICAgIHJldHVybiBzb3VyY2UkLnBpcGUoXG4gICAgICAgIHRhcChpdGVtID0+IHtcbiAgICAgICAgICBpZiAoY291bnRlciA+PSBuRW1pc3Npb25zKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY291bnRlcisrO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSk7XG4iXX0=