@cardano-sdk/util-rxjs 0.4.15 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,14 @@
1
+ import { Observable, switchMap } from 'rxjs';
2
+ import { RetryBackoffConfig } from 'backoff-rxjs';
3
+ export interface ColdObservableProviderProps<T> {
4
+ provider: () => Promise<T>;
5
+ retryBackoffConfig: RetryBackoffConfig;
6
+ onFatalError?: (value: unknown) => void;
7
+ trigger$?: Observable<unknown>;
8
+ equals?: (t1: T, t2: T) => boolean;
9
+ combinator?: typeof switchMap;
10
+ cancel$?: Observable<unknown>;
11
+ pollUntil?: (v: T) => boolean;
12
+ }
13
+ export declare const coldObservableProvider: <T>({ provider, retryBackoffConfig, onFatalError, trigger$, equals, combinator, cancel$, pollUntil }: ColdObservableProviderProps<T>) => Observable<T>;
14
+ //# sourceMappingURL=coldObservableProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coldObservableProvider.d.ts","sourceRoot":"","sources":["../../src/coldObservableProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,UAAU,EASV,SAAS,EAGV,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,kBAAkB,EAAgB,MAAM,cAAc,CAAC;AAEhE,MAAM,WAAW,2BAA2B,CAAC,CAAC;IAC5C,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC;CAC/B;AAED,eAAO,MAAM,sBAAsB,wJAqD/B,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { InvalidStringError, strictEquals } from '@cardano-sdk/util';
2
+ import { NEVER, Observable, Subject, concat, defer, distinctUntilChanged, from, merge, mergeMap, of, switchMap, takeUntil, throwError } from 'rxjs';
3
+ import { retryBackoff } from 'backoff-rxjs';
4
+ export const coldObservableProvider = ({ provider, retryBackoffConfig, onFatalError, trigger$ = of(true), equals = strictEquals, combinator = switchMap, cancel$ = NEVER, pollUntil = () => true }) => new Observable((subscriber) => {
5
+ const cancelOnFatalError$ = new Subject();
6
+ const internalCancel$ = merge(cancel$, cancelOnFatalError$);
7
+ const sub = trigger$
8
+ .pipe(combinator(() => defer(() => from(provider()).pipe(mergeMap((v) => pollUntil(v)
9
+ ? of(v)
10
+ :
11
+ concat(of(v), throwError(() => new Error('polling')))))).pipe(retryBackoff({
12
+ ...retryBackoffConfig,
13
+ shouldRetry: (error) => {
14
+ if (retryBackoffConfig.shouldRetry && !retryBackoffConfig.shouldRetry(error))
15
+ return false;
16
+ if (error instanceof InvalidStringError) {
17
+ onFatalError?.(error);
18
+ cancelOnFatalError$.next(true);
19
+ }
20
+ return true;
21
+ }
22
+ }))), distinctUntilChanged(equals), takeUntil(internalCancel$))
23
+ .subscribe(subscriber);
24
+ return () => {
25
+ sub.unsubscribe();
26
+ cancelOnFatalError$.complete();
27
+ };
28
+ });
29
+ //# sourceMappingURL=coldObservableProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coldObservableProvider.js","sourceRoot":"","sources":["../../src/coldObservableProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EACL,KAAK,EACL,UAAU,EACV,OAAO,EACP,MAAM,EACN,KAAK,EACL,oBAAoB,EACpB,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,EAAE,EACF,SAAS,EACT,SAAS,EACT,UAAU,EACX,MAAM,MAAM,CAAC;AACd,OAAO,EAAsB,YAAY,EAAE,MAAM,cAAc,CAAC;AAahE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAI,EACxC,QAAQ,EACR,kBAAkB,EAClB,YAAY,EACZ,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,EACnB,MAAM,GAAG,YAAY,EACrB,UAAU,GAAG,SAAS,EACtB,OAAO,GAAG,KAAK,EACf,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,EACS,EAAE,EAAE,CACnC,IAAI,UAAU,CAAI,CAAC,UAAU,EAAE,EAAE;IAC/B,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAW,CAAC;IACnD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,QAAQ;SACjB,IAAI,CACH,UAAU,CAAC,GAAG,EAAE,CACd,KAAK,CAAC,GAAG,EAAE,CACT,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CACnB,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,SAAS,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACP,CAAC;YACC,MAAM,CACJ,EAAE,CAAC,CAAC,CAAC,EACL,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CACvC,CACN,CACF,CACF,CAAC,IAAI,CACJ,YAAY,CAAC;QACX,GAAG,kBAAkB;QACrB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;YACrB,IAAI,kBAAkB,CAAC,WAAW,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAC;YAE3F,IAAI,KAAK,YAAY,kBAAkB,EAAE;gBACvC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;gBACtB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC,CACH,CACF,EACD,oBAAoB,CAAC,MAAM,CAAC,EAC5B,SAAS,CAAC,eAAe,CAAC,CAC3B;SACA,SAAS,CAAC,UAAU,CAAC,CAAC;IAEzB,OAAO,GAAG,EAAE;QACV,GAAG,CAAC,WAAW,EAAE,CAAC;QAClB,mBAAmB,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -5,5 +5,6 @@ export * from './passthrough';
5
5
  export * from './finalizeWithLatest';
6
6
  export * from './concatAndCombineLatest';
7
7
  export * from './shareRetryBackoff';
8
+ export * from './coldObservableProvider';
8
9
  export * from './types';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,SAAS,CAAC"}
package/dist/esm/index.js CHANGED
@@ -5,5 +5,6 @@ export * from './passthrough';
5
5
  export * from './finalizeWithLatest';
6
6
  export * from './concatAndCombineLatest';
7
7
  export * from './shareRetryBackoff';
8
+ export * from './coldObservableProvider';
8
9
  export * from './types';
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,SAAS,CAAC"}