@alauda-fe/common
Version:
Alauda frontend team common codes.
38 lines • 9.6 kB
JavaScript
/**
* @packageDocumentation
* @module utils
*/
import { isDevMode } from '@angular/core';
import { get } from 'lodash-es';
import { EMPTY, Observable, ReplaySubject, catchError, concatWith, filter, from, ignoreElements, map, of, pipe, share, shareReplay, startWith, switchMap, takeUntil, } from 'rxjs';
import { onDestroy } from './observable';
export const publishRef = (bufferSizeOrConfig = {}) => {
const { bufferSize = 1, windowTime, timestampProvider, connector = () => new ReplaySubject(bufferSize, windowTime, timestampProvider), resetOnError = false, resetOnComplete = false, resetOnRefCountZero = true, } = typeof bufferSizeOrConfig === 'number'
? {
bufferSize: bufferSizeOrConfig,
}
: bufferSizeOrConfig;
return share({
connector,
resetOnError,
resetOnComplete,
resetOnRefCountZero,
});
};
export const shareUntil = (destroy$, bufferSize = 1, windowTime, scheduler) => pipe(takeUntil(destroy$), shareReplay(bufferSize, windowTime, scheduler));
export const skipError = (mapped = EMPTY, debug = false) => catchError(err => {
if (isDevMode() && debug) {
console.error(err);
}
return mapped instanceof Observable ? mapped : of(mapped);
});
export const catchPromise = (promise, mapped) => from(promise).pipe(skipError(mapped));
const NULL = Symbol('null');
export const startWithCondition = (condition, value) => (source) => source.pipe(startWith(condition ? value : NULL), filter(value => value !== NULL));
export const shareUntilDestroyed = (destroyRef, bufferSize, windowTime, scheduler) => shareUntil(onDestroy(destroyRef), bufferSize, windowTime, scheduler);
export const safePluck = (...properties) => pipe(map(source => get(source, properties)));
export function switchTap(arg) {
const next = typeof arg === 'function' ? arg : (_x) => arg;
return switchMap(value => next(value).pipe(ignoreElements(), concatWith(of(value))));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2NvcmUvdXRpbHMvb3BlcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsS0FBSyxFQUVMLFVBQVUsRUFDVixhQUFhLEVBR2IsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sSUFBSSxFQUNKLGNBQWMsRUFDZCxHQUFHLEVBQ0gsRUFBRSxFQUNGLElBQUksRUFDSixLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQVV6QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBSSxxQkFBMEMsRUFBRSxFQUFFLEVBQUU7SUFDNUUsTUFBTSxFQUNKLFVBQVUsR0FBRyxDQUFDLEVBQ2QsVUFBVSxFQUNWLGlCQUFpQixFQUNqQixTQUFTLEdBQUcsR0FBRyxFQUFFLENBQ2YsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxFQUM5RCxZQUFZLEdBQUcsS0FBSyxFQUNwQixlQUFlLEdBQUcsS0FBSyxFQUN2QixtQkFBbUIsR0FBRyxJQUFJLEdBQzNCLEdBQUcsT0FBTyxrQkFBa0IsS0FBSyxRQUFRO1FBQ3hDLENBQUMsQ0FBRTtZQUNDLFVBQVUsRUFBRSxrQkFBa0I7U0FDVTtRQUM1QyxDQUFDLENBQUMsa0JBQWtCLENBQUM7SUFDdkIsT0FBTyxLQUFLLENBQUk7UUFDZCxTQUFTO1FBQ1QsWUFBWTtRQUNaLGVBQWU7UUFDZixtQkFBbUI7S0FDcEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQ3hCLFFBQTZCLEVBQzdCLFVBQVUsR0FBRyxDQUFDLEVBQ2QsVUFBbUIsRUFDbkIsU0FBeUIsRUFDekIsRUFBRSxDQUNGLElBQUksQ0FBQyxTQUFTLENBQUksUUFBUSxDQUFDLEVBQUUsV0FBVyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUUvRSxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FDdkIsU0FBNEIsS0FBSyxFQUNqQyxLQUFLLEdBQUcsS0FBSyxFQUNiLEVBQUUsQ0FDRixVQUFVLENBQW1CLEdBQUcsQ0FBQyxFQUFFO0lBQ2pDLElBQUksU0FBUyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsT0FBTyxNQUFNLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUMsQ0FBQztBQUVMLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUMxQixPQUFtQixFQUNuQixNQUEwQixFQUMxQixFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUUzQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFNUIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQzdCLENBQUksU0FBa0IsRUFBRSxLQUFRLEVBQUUsRUFBRSxDQUNwQyxDQUFDLE1BQXFCLEVBQUUsRUFBRSxDQUN4QixNQUFNLENBQUMsSUFBSSxDQUNULFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQ25DLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FDaEMsQ0FBQztBQUVOLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQ2pDLFVBQXVCLEVBQ3ZCLFVBQW1CLEVBQ25CLFVBQW1CLEVBQ25CLFNBQXlCLEVBQ3pCLEVBQUUsQ0FBQyxVQUFVLENBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBRyxVQUFrQyxFQUFFLEVBQUUsQ0FDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBUy9DLE1BQU0sVUFBVSxTQUFTLENBQ3ZCLEdBQThDO0lBRTlDLE1BQU0sSUFBSSxHQUNSLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQU8sRUFBaUIsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNwRSxPQUFPLFNBQVMsQ0FBbUIsS0FBSyxDQUFDLEVBQUUsQ0FDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDMUQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSB1dGlsc1xuICovXG5cbmltcG9ydCB7IERlc3Ryb3lSZWYsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7XG4gIEVNUFRZLFxuICBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb24sXG4gIE9ic2VydmFibGUsXG4gIFJlcGxheVN1YmplY3QsXG4gIFNjaGVkdWxlckxpa2UsXG4gIFRpbWVzdGFtcFByb3ZpZGVyLFxuICBjYXRjaEVycm9yLFxuICBjb25jYXRXaXRoLFxuICBmaWx0ZXIsXG4gIGZyb20sXG4gIGlnbm9yZUVsZW1lbnRzLFxuICBtYXAsXG4gIG9mLFxuICBwaXBlLFxuICBzaGFyZSxcbiAgc2hhcmVSZXBsYXksXG4gIHN0YXJ0V2l0aCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBvbkRlc3Ryb3kgfSBmcm9tICcuL29ic2VydmFibGUnO1xuXG5leHBvcnQgdHlwZSBQdWJsaXNoUmVmQ29uZmlnPFQ+ID1cbiAgfCBudW1iZXJcbiAgfCAoaW1wb3J0KCdyeGpzL2ludGVybmFsL29wZXJhdG9ycy9zaGFyZScpLlNoYXJlQ29uZmlnPFQ+ICYge1xuICAgICAgYnVmZmVyU2l6ZT86IG51bWJlcjtcbiAgICAgIHdpbmRvd1RpbWU/OiBudW1iZXI7XG4gICAgICB0aW1lc3RhbXBQcm92aWRlcj86IFRpbWVzdGFtcFByb3ZpZGVyO1xuICAgIH0pO1xuXG5leHBvcnQgY29uc3QgcHVibGlzaFJlZiA9IDxUPihidWZmZXJTaXplT3JDb25maWc6IFB1Ymxpc2hSZWZDb25maWc8VD4gPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgYnVmZmVyU2l6ZSA9IDEsXG4gICAgd2luZG93VGltZSxcbiAgICB0aW1lc3RhbXBQcm92aWRlcixcbiAgICBjb25uZWN0b3IgPSAoKSA9PlxuICAgICAgbmV3IFJlcGxheVN1YmplY3QoYnVmZmVyU2l6ZSwgd2luZG93VGltZSwgdGltZXN0YW1wUHJvdmlkZXIpLFxuICAgIHJlc2V0T25FcnJvciA9IGZhbHNlLFxuICAgIHJlc2V0T25Db21wbGV0ZSA9IGZhbHNlLFxuICAgIHJlc2V0T25SZWZDb3VudFplcm8gPSB0cnVlLFxuICB9ID0gdHlwZW9mIGJ1ZmZlclNpemVPckNvbmZpZyA9PT0gJ251bWJlcidcbiAgICA/ICh7XG4gICAgICAgIGJ1ZmZlclNpemU6IGJ1ZmZlclNpemVPckNvbmZpZyxcbiAgICAgIH0gYXMgRXhjbHVkZTxQdWJsaXNoUmVmQ29uZmlnPFQ+LCBudW1iZXI+KVxuICAgIDogYnVmZmVyU2l6ZU9yQ29uZmlnO1xuICByZXR1cm4gc2hhcmU8VD4oe1xuICAgIGNvbm5lY3RvcixcbiAgICByZXNldE9uRXJyb3IsXG4gICAgcmVzZXRPbkNvbXBsZXRlLFxuICAgIHJlc2V0T25SZWZDb3VudFplcm8sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNoYXJlVW50aWwgPSA8VD4oXG4gIGRlc3Ryb3kkOiBPYnNlcnZhYmxlPHVua25vd24+LFxuICBidWZmZXJTaXplID0gMSxcbiAgd2luZG93VGltZT86IG51bWJlcixcbiAgc2NoZWR1bGVyPzogU2NoZWR1bGVyTGlrZSxcbikgPT5cbiAgcGlwZSh0YWtlVW50aWw8VD4oZGVzdHJveSQpLCBzaGFyZVJlcGxheShidWZmZXJTaXplLCB3aW5kb3dUaW1lLCBzY2hlZHVsZXIpKTtcblxuZXhwb3J0IGNvbnN0IHNraXBFcnJvciA9IDxULCBSID0gbmV2ZXI+KFxuICBtYXBwZWQ6IFIgfCBPYnNlcnZhYmxlPFI+ID0gRU1QVFksXG4gIGRlYnVnID0gZmFsc2UsXG4pID0+XG4gIGNhdGNoRXJyb3I8VCwgT2JzZXJ2YWJsZTxSPj4oZXJyID0+IHtcbiAgICBpZiAoaXNEZXZNb2RlKCkgJiYgZGVidWcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcHBlZCBpbnN0YW5jZW9mIE9ic2VydmFibGUgPyBtYXBwZWQgOiBvZihtYXBwZWQpO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IGNhdGNoUHJvbWlzZSA9IDxULCBSID0gbmV2ZXI+KFxuICBwcm9taXNlOiBQcm9taXNlPFQ+LFxuICBtYXBwZWQ/OiBSIHwgT2JzZXJ2YWJsZTxSPixcbikgPT4gZnJvbShwcm9taXNlKS5waXBlKHNraXBFcnJvcihtYXBwZWQpKTtcblxuY29uc3QgTlVMTCA9IFN5bWJvbCgnbnVsbCcpO1xuXG5leHBvcnQgY29uc3Qgc3RhcnRXaXRoQ29uZGl0aW9uID1cbiAgPFQ+KGNvbmRpdGlvbjogYm9vbGVhbiwgdmFsdWU6IFQpID0+XG4gIChzb3VyY2U6IE9ic2VydmFibGU8VD4pID0+XG4gICAgc291cmNlLnBpcGUoXG4gICAgICBzdGFydFdpdGgoY29uZGl0aW9uID8gdmFsdWUgOiBOVUxMKSxcbiAgICAgIGZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPT0gTlVMTCksXG4gICAgKTtcblxuZXhwb3J0IGNvbnN0IHNoYXJlVW50aWxEZXN0cm95ZWQgPSA8VD4oXG4gIGRlc3Ryb3lSZWY/OiBEZXN0cm95UmVmLFxuICBidWZmZXJTaXplPzogbnVtYmVyLFxuICB3aW5kb3dUaW1lPzogbnVtYmVyLFxuICBzY2hlZHVsZXI/OiBTY2hlZHVsZXJMaWtlLFxuKSA9PiBzaGFyZVVudGlsPFQ+KG9uRGVzdHJveShkZXN0cm95UmVmKSwgYnVmZmVyU2l6ZSwgd2luZG93VGltZSwgc2NoZWR1bGVyKTtcblxuZXhwb3J0IGNvbnN0IHNhZmVQbHVjayA9ICguLi5wcm9wZXJ0aWVzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSA9PlxuICBwaXBlKG1hcChzb3VyY2UgPT4gZ2V0KHNvdXJjZSwgcHJvcGVydGllcykpKTtcblxuLy8gcmVmZXJlbmNlIGh0dHBzOi8vZ2l0aHViLmNvbS9SZWFjdGl2ZVgvcnhqcy9pc3N1ZXMvMzM1M1xuZXhwb3J0IGZ1bmN0aW9uIHN3aXRjaFRhcDxULCBSPihcbiAgbmV4dDogKHg6IFQpID0+IE9ic2VydmFibGU8Uj4sXG4pOiBNb25vVHlwZU9wZXJhdG9yRnVuY3Rpb248VD47XG5leHBvcnQgZnVuY3Rpb24gc3dpdGNoVGFwPFI+KFxuICBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFI+LFxuKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPFI+O1xuZXhwb3J0IGZ1bmN0aW9uIHN3aXRjaFRhcDxULCBSPihcbiAgYXJnOiBPYnNlcnZhYmxlPFQ+IHwgKCh4OiBUKSA9PiBPYnNlcnZhYmxlPFI+KSxcbik6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gIGNvbnN0IG5leHQ6ICh4OiBUKSA9PiBPYnNlcnZhYmxlPFQgfCBSPiA9XG4gICAgdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJyA/IGFyZyA6IChfeDogYW55KTogT2JzZXJ2YWJsZTxUPiA9PiBhcmc7XG4gIHJldHVybiBzd2l0Y2hNYXA8VCwgT2JzZXJ2YWJsZTxUPj4odmFsdWUgPT5cbiAgICBuZXh0KHZhbHVlKS5waXBlKGlnbm9yZUVsZW1lbnRzKCksIGNvbmNhdFdpdGgob2YodmFsdWUpKSksXG4gICk7XG59XG4iXX0=