@dereekb/rxjs 1.2.0 → 3.0.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.
Files changed (97) hide show
  1. package/CHANGELOG.md +62 -10
  2. package/README.md +1 -1
  3. package/package.json +10 -7
  4. package/src/index.js +1 -1
  5. package/src/index.js.map +1 -1
  6. package/src/lib/filter/filter.map.d.ts +4 -3
  7. package/src/lib/filter/filter.map.js.map +1 -1
  8. package/src/lib/filter/filter.source.d.ts +4 -4
  9. package/src/lib/filter/filter.source.js.map +1 -1
  10. package/src/lib/filter/index.js +4 -4
  11. package/src/lib/filter/index.js.map +1 -1
  12. package/src/lib/index.d.ts +1 -0
  13. package/src/lib/index.js +8 -7
  14. package/src/lib/index.js.map +1 -1
  15. package/src/lib/iterator/index.d.ts +1 -0
  16. package/src/lib/iterator/index.js +7 -6
  17. package/src/lib/iterator/index.js.map +1 -1
  18. package/src/lib/iterator/iteration.accumulator.d.ts +8 -4
  19. package/src/lib/iterator/iteration.accumulator.js +18 -21
  20. package/src/lib/iterator/iteration.accumulator.js.map +1 -1
  21. package/src/lib/iterator/iteration.accumulator.rxjs.d.ts +7 -3
  22. package/src/lib/iterator/iteration.accumulator.rxjs.js +21 -10
  23. package/src/lib/iterator/iteration.accumulator.rxjs.js.map +1 -1
  24. package/src/lib/iterator/iteration.d.ts +7 -3
  25. package/src/lib/iterator/iteration.mapped.page.d.ts +3 -2
  26. package/src/lib/iterator/iteration.mapped.page.js.map +1 -1
  27. package/src/lib/iterator/iteration.next.d.ts +8 -3
  28. package/src/lib/iterator/iteration.next.js +19 -6
  29. package/src/lib/iterator/iteration.next.js.map +1 -1
  30. package/src/lib/iterator/iterator.page.d.ts +22 -6
  31. package/src/lib/iterator/iterator.page.js +17 -5
  32. package/src/lib/iterator/iterator.page.js.map +1 -1
  33. package/src/lib/loading/index.js +8 -8
  34. package/src/lib/loading/index.js.map +1 -1
  35. package/src/lib/loading/loading.context.state.value.js.map +1 -1
  36. package/src/lib/loading/loading.state.d.ts +53 -3
  37. package/src/lib/loading/loading.state.js +102 -2
  38. package/src/lib/loading/loading.state.js.map +1 -1
  39. package/src/lib/lock.d.ts +13 -7
  40. package/src/lib/lock.js +38 -14
  41. package/src/lib/lock.js.map +1 -1
  42. package/src/lib/object.js +2 -2
  43. package/src/lib/object.js.map +1 -1
  44. package/src/lib/rxjs/array.d.ts +17 -0
  45. package/src/lib/rxjs/array.js +23 -9
  46. package/src/lib/rxjs/array.js.map +1 -1
  47. package/src/lib/rxjs/boolean.d.ts +13 -1
  48. package/src/lib/rxjs/boolean.js +31 -1
  49. package/src/lib/rxjs/boolean.js.map +1 -1
  50. package/src/lib/rxjs/delta.d.ts +32 -0
  51. package/src/lib/rxjs/delta.js +51 -0
  52. package/src/lib/rxjs/delta.js.map +1 -0
  53. package/src/lib/rxjs/factory.d.ts +31 -0
  54. package/src/lib/rxjs/factory.js +21 -0
  55. package/src/lib/rxjs/factory.js.map +1 -0
  56. package/src/lib/rxjs/getter.d.ts +4 -4
  57. package/src/lib/rxjs/getter.js +3 -3
  58. package/src/lib/rxjs/getter.js.map +1 -1
  59. package/src/lib/rxjs/index.d.ts +9 -1
  60. package/src/lib/rxjs/index.js +16 -8
  61. package/src/lib/rxjs/index.js.map +1 -1
  62. package/src/lib/rxjs/lifecycle.d.ts +18 -0
  63. package/src/lib/rxjs/lifecycle.js +55 -0
  64. package/src/lib/rxjs/lifecycle.js.map +1 -0
  65. package/src/lib/rxjs/map.d.ts +10 -0
  66. package/src/lib/rxjs/map.js +17 -0
  67. package/src/lib/rxjs/map.js.map +1 -0
  68. package/src/lib/rxjs/number.d.ts +16 -1
  69. package/src/lib/rxjs/number.js +15 -3
  70. package/src/lib/rxjs/number.js.map +1 -1
  71. package/src/lib/rxjs/rxjs.async.d.ts +57 -0
  72. package/src/lib/rxjs/rxjs.async.js +69 -0
  73. package/src/lib/rxjs/rxjs.async.js.map +1 -0
  74. package/src/lib/rxjs/rxjs.d.ts +10 -2
  75. package/src/lib/rxjs/rxjs.js +17 -16
  76. package/src/lib/rxjs/rxjs.js.map +1 -1
  77. package/src/lib/rxjs/rxjs.map.d.ts +9 -0
  78. package/src/lib/rxjs/rxjs.map.js +26 -0
  79. package/src/lib/rxjs/rxjs.map.js.map +1 -0
  80. package/src/lib/rxjs/set.d.ts +4 -0
  81. package/src/lib/rxjs/set.js +14 -0
  82. package/src/lib/rxjs/set.js.map +1 -0
  83. package/src/lib/rxjs/use.d.ts +7 -0
  84. package/src/lib/rxjs/use.js +14 -0
  85. package/src/lib/rxjs/use.js.map +1 -0
  86. package/src/lib/rxjs/value.d.ts +34 -3
  87. package/src/lib/rxjs/value.js +54 -2
  88. package/src/lib/rxjs/value.js.map +1 -1
  89. package/src/lib/work/index.d.ts +2 -0
  90. package/src/lib/work/index.js +6 -0
  91. package/src/lib/work/index.js.map +1 -0
  92. package/src/lib/work/work.factory.d.ts +35 -0
  93. package/src/lib/work/work.factory.js +43 -0
  94. package/src/lib/work/work.factory.js.map +1 -0
  95. package/src/lib/work/work.instance.d.ts +60 -0
  96. package/src/lib/work/work.instance.js +129 -0
  97. package/src/lib/work/work.instance.js.map +1 -0
package/src/lib/lock.js CHANGED
@@ -1,18 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LockSet = exports.onLockSetNextUnlock = exports.DEFAULT_LOCK_SET_TIME_LOCK_KEY = void 0;
4
- const operators_1 = require("rxjs/operators");
5
- const rxjs_1 = require("rxjs");
4
+ const rxjs_1 = require("@dereekb/rxjs");
6
5
  const rxjs_2 = require("rxjs");
7
6
  const rxjs_3 = require("./rxjs");
8
7
  const util_1 = require("@dereekb/util");
9
8
  const ms_1 = require("ms");
9
+ const subscription_1 = require("./subscription");
10
10
  exports.DEFAULT_LOCK_SET_TIME_LOCK_KEY = 'timelock';
11
11
  /**
12
12
  * Executes the input function when the lockSet is set unlocked, or the timeout is reached.
13
13
  */
14
- function onLockSetNextUnlock({ lockSet, fn, timeout = (0, ms_1.default)('50s'), delayTime }) {
15
- return lockSet.isUnlocked$.pipe((0, operators_1.filter)((x) => x), (0, operators_1.delay)(delayTime !== null && delayTime !== void 0 ? delayTime : 0), (0, operators_1.timeoutWith)(timeout, (0, rxjs_1.of)(false).pipe((0, operators_1.tap)(() => console.warn('LockSet time out. Potential issue detected.')))), (0, operators_1.first)()).subscribe(fn);
14
+ function onLockSetNextUnlock({ lockSet, fn, timeout: timeoutTime = (0, ms_1.default)('50s'), delayTime }) {
15
+ return lockSet.isUnlocked$.pipe((0, rxjs_2.filter)((x) => x), (0, rxjs_2.delay)(delayTime !== null && delayTime !== void 0 ? delayTime : 0), (0, rxjs_2.timeout)({
16
+ first: timeoutTime,
17
+ with: () => (0, rxjs_2.of)(false).pipe((0, rxjs_2.tap)(() => console.warn('LockSet time out. Potential issue detected.')))
18
+ }), (0, rxjs_2.first)()).subscribe(fn);
16
19
  }
17
20
  exports.onLockSetNextUnlock = onLockSetNextUnlock;
18
21
  /**
@@ -23,13 +26,14 @@ exports.onLockSetNextUnlock = onLockSetNextUnlock;
23
26
  class LockSet {
24
27
  constructor() {
25
28
  this._locks = new rxjs_2.BehaviorSubject(new Map());
29
+ this._parentSub = new subscription_1.SubscriptionObject();
26
30
  this.locks$ = this._locks.asObservable();
27
31
  /**
28
32
  * isLocked$ is true if any observable is emitting true.
29
33
  */
30
- this.isLocked$ = this.locks$.pipe((0, operators_1.switchMap)((0, rxjs_3.combineLatestFromMapValuesObsFn)((x) => x)), (0, operators_1.map)((0, util_1.reduceBooleansWithOrFn)(false)), // Empty map is unlocked.
31
- (0, operators_1.shareReplay)(1));
32
- this.isUnlocked$ = this.isLocked$.pipe((0, operators_1.map)(x => !x));
34
+ this.isLocked$ = this.locks$.pipe((0, rxjs_2.switchMap)((0, rxjs_3.combineLatestFromMapValuesObsFn)((x) => x)), (0, rxjs_2.map)((0, util_1.reduceBooleansWithOrFn)(false)), // Empty map is unlocked.
35
+ (0, rxjs_2.shareReplay)(1));
36
+ this.isUnlocked$ = this.isLocked$.pipe((0, rxjs_2.map)(x => !x));
33
37
  }
34
38
  get locks() {
35
39
  return this._locks.value;
@@ -47,9 +51,9 @@ class LockSet {
47
51
  };
48
52
  }
49
53
  if (lockedConfig.locked) {
50
- let obs = (0, rxjs_1.of)(true);
54
+ let obs = (0, rxjs_2.of)(true);
51
55
  if (lockedConfig.duration) {
52
- obs = obs.pipe((0, operators_1.timeoutWith)(lockedConfig.duration, (0, rxjs_1.of)(false)));
56
+ obs = obs.pipe((0, rxjs_2.timeout)({ first: lockedConfig.duration, with: () => (0, rxjs_2.of)(false) }));
53
57
  }
54
58
  this.addLock(key, obs);
55
59
  }
@@ -61,12 +65,20 @@ class LockSet {
61
65
  this.lockForTime(seconds * 1000);
62
66
  }
63
67
  lockForTime(milliseconds, key) {
64
- this.addLock(key !== null && key !== void 0 ? key : exports.DEFAULT_LOCK_SET_TIME_LOCK_KEY, (0, rxjs_1.of)(false).pipe((0, operators_1.delay)(milliseconds), (0, operators_1.startWith)(true)));
68
+ this.addLock(key !== null && key !== void 0 ? key : exports.DEFAULT_LOCK_SET_TIME_LOCK_KEY, (0, rxjs_2.of)(false).pipe((0, rxjs_2.delay)(milliseconds), (0, rxjs_2.startWith)(true)));
65
69
  }
66
70
  addLock(key, obs) {
67
- obs = obs.pipe((0, operators_1.defaultIfEmpty)(false)); // empty observables count as unlocked.
71
+ obs = obs.pipe((0, rxjs_2.defaultIfEmpty)(false));
72
+ let removeLock = () => this._removeObsForKey(obs, key);
68
73
  this._locks.value.set(key, obs);
69
- this._locks.next(this.locks);
74
+ this._locks.next(this._locks.value);
75
+ return removeLock;
76
+ }
77
+ _removeObsForKey(obs, key) {
78
+ const current = this._locks.value.get(key);
79
+ if (current && obs === current) {
80
+ this.removeLock(key);
81
+ }
70
82
  }
71
83
  removeLock(key) {
72
84
  if (this._locks.value.delete(key)) {
@@ -76,11 +88,22 @@ class LockSet {
76
88
  onNextUnlock(config, delayTime) {
77
89
  return onLockSetNextUnlock(Object.assign({ lockSet: this, delayTime }, ((typeof config === 'function') ? { fn: config } : config)));
78
90
  }
91
+ setParentLockSet(parent) {
92
+ this._parentSub.subscription = (0, rxjs_3.preventComplete)((0, rxjs_1.asObservable)(parent)).pipe((0, rxjs_2.map)((parentLockSet) => {
93
+ let removeFn;
94
+ if (parentLockSet) {
95
+ removeFn = parentLockSet.addChildLockSet(this);
96
+ }
97
+ return removeFn;
98
+ }), (0, rxjs_3.cleanup)((removeLockSet) => {
99
+ removeLockSet === null || removeLockSet === void 0 ? void 0 : removeLockSet();
100
+ })).subscribe();
101
+ }
79
102
  /**
80
- * Convenience function for watching a child lockset's locked state.
103
+ * Convenience function for watching a child lockset's locked state and propogating it upward.
81
104
  */
82
105
  addChildLockSet(lockSet, key = `${LockSet.LOCK_SET_CHILD_INDEX_STEPPER++}`) {
83
- this.addLock(key, lockSet.isLocked$);
106
+ return this.addLock(key, lockSet.isLocked$);
84
107
  }
85
108
  // Cleanup
86
109
  destroyOnNextUnlock(config, delayTime) {
@@ -102,6 +125,7 @@ class LockSet {
102
125
  }
103
126
  destroy() {
104
127
  this._locks.complete();
128
+ this._parentSub.destroy();
105
129
  }
106
130
  }
107
131
  exports.LockSet = LockSet;
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../../packages/rxjs/src/lib/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../../packages/rxjs/src/lib/lock.ts"],"names":[],"mappings":"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"}
package/src/lib/object.js CHANGED
@@ -8,7 +8,7 @@ const operators_1 = require("rxjs/operators");
8
8
  * Equivalent to distinctUntilChanged() using isEqualObject()
9
9
  */
10
10
  function distinctUntilObjectValuesChanged() {
11
- return (0, operators_1.distinctUntilChanged)((a, b) => (0, util_1.areEqualObjectValues)(a, b));
11
+ return (0, operators_1.distinctUntilChanged)((a, b) => (0, util_1.areEqualPOJOValues)(a, b));
12
12
  }
13
13
  exports.distinctUntilObjectValuesChanged = distinctUntilObjectValuesChanged;
14
14
  function filterIfObjectValuesUnchanged(input) {
@@ -18,7 +18,7 @@ function filterIfObjectValuesUnchanged(input) {
18
18
  });
19
19
  }
20
20
  else {
21
- return (0, operators_1.filter)((inputObject) => !(0, util_1.areEqualObjectValues)(input, inputObject));
21
+ return (0, operators_1.filter)((inputObject) => !(0, util_1.areEqualPOJOValues)(input, inputObject));
22
22
  }
23
23
  }
24
24
  exports.filterIfObjectValuesUnchanged = filterIfObjectValuesUnchanged;
@@ -1 +1 @@
1
- {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../../packages/rxjs/src/lib/object.ts"],"names":[],"mappings":";;;AAAA,wCAAqD;AACrD,+BAA4F;AAC5F,8CAAwE;AAExE;;GAEG;AACH,SAAgB,gCAAgC;IAC9C,OAAO,IAAA,gCAAoB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,2BAAoB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAFD,4EAEC;AAOD,SAAgB,6BAA6B,CAAI,KAAwB;IACvE,IAAI,IAAA,mBAAY,EAAC,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,oBAAQ,EAAmB,CAAC,WAAW,EAAE,EAAE;YAChD,OAAO,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAC;KACJ;SAAM;QACL,OAAO,IAAA,kBAAM,EAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAA,2BAAoB,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;KAC1E;AACH,CAAC;AARD,sEAQC"}
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../../packages/rxjs/src/lib/object.ts"],"names":[],"mappings":";;;AAAA,wCAAmD;AACnD,+BAA4F;AAC5F,8CAAwE;AAExE;;GAEG;AACH,SAAgB,gCAAgC;IAC9C,OAAO,IAAA,gCAAoB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,yBAAkB,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAFD,4EAEC;AAOD,SAAgB,6BAA6B,CAAI,KAAwB;IACvE,IAAI,IAAA,mBAAY,EAAC,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,oBAAQ,EAAmB,CAAC,WAAW,EAAE,EAAE;YAChD,OAAO,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAC;KACJ;SAAM;QACL,OAAO,IAAA,kBAAM,EAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAA,yBAAkB,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;KACxE;AACH,CAAC;AARD,sEAQC"}
@@ -14,8 +14,18 @@ export declare function scanIntoArray<T>(config?: ScanIntoArrayConfig): Operator
14
14
  export declare function scanIntoArray<T>(config?: ScanIntoArrayConfig): OperatorFunction<Maybe<T>, T[]>;
15
15
  export declare function scanIntoArray<T>(config?: ScanIntoArrayConfig): OperatorFunction<Maybe<T[]>, T[]>;
16
16
  export interface ScanBuildArrayConfig<T> {
17
+ /**
18
+ *
19
+ */
17
20
  seed?: Maybe<T[]>;
21
+ /**
22
+ *
23
+ */
18
24
  accumulatorObs: Observable<Maybe<T>>;
25
+ /**
26
+ * Whether or not to flatten array values that are input.
27
+ */
28
+ flattenArray?: boolean;
19
29
  }
20
30
  export declare type ScanBuildArrayConfigFn<S, T> = (seedState: S) => ScanBuildArrayConfig<T>;
21
31
  /**
@@ -30,3 +40,10 @@ export declare type ScanBuildArrayConfigFn<S, T> = (seedState: S) => ScanBuildAr
30
40
  * @returns
31
41
  */
32
42
  export declare function scanBuildArray<S, T>(init: ScanBuildArrayConfigFn<S, T>): OperatorFunction<S, T[]>;
43
+ /**
44
+ * Convenience function with map to forEachWithArray
45
+ *
46
+ * @param forEach
47
+ * @returns
48
+ */
49
+ export declare function mapForEach<T>(forEach: Maybe<(value: T) => void>): OperatorFunction<T[], T[]>;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scanBuildArray = exports.scanIntoArray = exports.distinctUntilArrayLengthChanges = void 0;
4
- const operators_1 = require("rxjs/operators");
3
+ exports.mapForEach = exports.scanBuildArray = exports.scanIntoArray = exports.distinctUntilArrayLengthChanges = void 0;
5
4
  const rxjs_1 = require("rxjs");
6
5
  const util_1 = require("@dereekb/util");
7
6
  function distinctUntilArrayLengthChanges(getArray) {
@@ -13,7 +12,7 @@ function distinctUntilArrayLengthChanges(getArray) {
13
12
  exports.distinctUntilArrayLengthChanges = distinctUntilArrayLengthChanges;
14
13
  function scanIntoArray(config = {}) {
15
14
  const { immutable = true } = config;
16
- return (0, operators_1.scan)((acc, next) => {
15
+ return (0, rxjs_1.scan)((acc, next) => {
17
16
  if (next != null) {
18
17
  if (immutable) {
19
18
  acc = acc.concat(next);
@@ -39,16 +38,31 @@ exports.scanIntoArray = scanIntoArray;
39
38
  * @returns
40
39
  */
41
40
  function scanBuildArray(init) {
42
- return (0, operators_1.exhaustMap)((seedState) => {
43
- const { seed = [], accumulatorObs } = init(seedState);
44
- return accumulatorObs.pipe((0, operators_1.startWith)(undefined), // Start with to not wait for the accumulator to pass a value.
45
- (0, operators_1.scan)((acc, next) => {
41
+ return (0, rxjs_1.exhaustMap)((seedState) => {
42
+ const { seed = [], accumulatorObs, flattenArray = false } = init(seedState);
43
+ return accumulatorObs.pipe((0, rxjs_1.startWith)(undefined), // Start with to not wait for the accumulator to pass a value.
44
+ (0, rxjs_1.scan)((acc, next) => {
46
45
  if (next != null) {
47
- acc = (0, util_1.mergeArrayOrValueIntoArray)(acc, next);
46
+ if (flattenArray && Array.isArray(next)) {
47
+ (0, util_1.mergeArrayIntoArray)(acc, next);
48
+ }
49
+ else {
50
+ acc.push(next);
51
+ }
48
52
  }
49
53
  return acc;
50
- }, seed), distinctUntilArrayLengthChanges(), (0, operators_1.shareReplay)(1));
54
+ }, seed !== null && seed !== void 0 ? seed : []), distinctUntilArrayLengthChanges(), (0, rxjs_1.shareReplay)(1));
51
55
  });
52
56
  }
53
57
  exports.scanBuildArray = scanBuildArray;
58
+ /**
59
+ * Convenience function with map to forEachWithArray
60
+ *
61
+ * @param forEach
62
+ * @returns
63
+ */
64
+ function mapForEach(forEach) {
65
+ return (forEach) ? (0, rxjs_1.map)(x => (0, util_1.forEachWithArray)(x, forEach)) : (0, rxjs_1.map)(x => x);
66
+ }
67
+ exports.mapForEach = mapForEach;
54
68
  //# sourceMappingURL=array.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/rxjs/array.ts"],"names":[],"mappings":";;;AAAA,8CAA0E;AAC1E,+BAAoG;AACpG,wCAAgF;AAIhF,SAAgB,+BAA+B,CAAI,QAA8B;IAC/E,IAAI,CAAC,QAAQ,EAAE;QACb,QAAQ,GAAG,CAAC,KAAQ,EAAE,EAAE,CAAC,KAAqB,CAAA;KAC/C;IAED,OAAO,IAAA,2BAAoB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC;AAND,0EAMC;AAcD,SAAgB,aAAa,CAAI,SAAkC,EAAE;IACnE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IACpC,OAAO,IAAA,gBAAI,EAAC,CAAC,GAAQ,EAAE,IAA4B,EAAE,EAAE;QACrD,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAI,SAAS,EAAE;gBACb,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACxB;iBAAM;gBACL,GAAG,GAAG,IAAA,iCAA0B,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aAC7C;SACF;QAED,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAbD,sCAaC;AAMA,CAAC;AAIF;;;;;;;;;;GAUG;AACH,SAAgB,cAAc,CAAO,IAAkC;IACrE,OAAO,IAAA,sBAAU,EAAC,CAAC,SAAY,EAAE,EAAE;QACjC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAEtD,OAAO,cAAc,CAAC,IAAI,CACxB,IAAA,qBAAS,EAAC,SAAgB,CAAC,EAAE,8DAA8D;QAC3F,IAAA,gBAAI,EAAC,CAAC,GAAe,EAAE,IAA4B,EAAE,EAAE;YACrD,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,GAAG,GAAG,IAAA,iCAA0B,EAAC,GAAI,EAAE,IAAK,CAAC,CAAC;aAC/C;YAED,OAAO,GAAI,CAAC;QACd,CAAC,EAAE,IAAK,CAA2C,EACnD,+BAA+B,EAAE,EACjC,IAAA,uBAAW,EAAC,CAAC,CAAC,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAjBD,wCAiBC"}
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/rxjs/array.ts"],"names":[],"mappings":";;;AAAA,+BAAmJ;AACnJ,wCAAuH;AAIvH,SAAgB,+BAA+B,CAAI,QAA8B;IAC/E,IAAI,CAAC,QAAQ,EAAE;QACb,QAAQ,GAAG,CAAC,KAAQ,EAAE,EAAE,CAAC,KAAqB,CAAA;KAC/C;IAED,OAAO,IAAA,2BAAoB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC;AAND,0EAMC;AAcD,SAAgB,aAAa,CAAI,SAAkC,EAAE;IACnE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IACpC,OAAO,IAAA,WAAI,EAAC,CAAC,GAAQ,EAAE,IAA4B,EAAE,EAAE;QACrD,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAI,SAAS,EAAE;gBACb,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACxB;iBAAM;gBACL,GAAG,GAAG,IAAA,iCAA0B,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;aAC7C;SACF;QAED,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAbD,sCAaC;AAgBA,CAAC;AAIF;;;;;;;;;;GAUG;AACH,SAAgB,cAAc,CAAO,IAAkC;IACrE,OAAO,IAAA,iBAAU,EAAC,CAAC,SAAY,EAAE,EAAE;QACjC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5E,OAAO,cAAc,CAAC,IAAI,CACxB,IAAA,gBAAS,EAAC,SAAgB,CAAC,EAAE,8DAA8D;QAC3F,IAAA,WAAI,EAAC,CAAC,GAAQ,EAAE,IAA4B,EAAE,EAAE;YAE9C,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,IAAI,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACvC,IAAA,0BAAmB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBAChC;qBAAM;oBACL,GAAG,CAAC,IAAI,CAAC,IAAW,CAAC,CAAC;iBACvB;aACF;YAED,OAAO,GAAI,CAAC;QACd,CAAC,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAA2C,EACxD,+BAA+B,EAAE,EACjC,IAAA,kBAAW,EAAC,CAAC,CAAC,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAtBD,wCAsBC;AAED;;;;;GAKG;AACH,SAAgB,UAAU,CAAI,OAAkC;IAC9D,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,CAAC,IAAA,uBAAgB,EAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAFD,gCAEC"}
@@ -1,5 +1,17 @@
1
- import { OperatorFunction } from "rxjs";
1
+ import { OperatorFunction, MonoTypeOperatorFunction } from "rxjs";
2
2
  /**
3
3
  * Returns the pipe if usePipe is true, otherwise returns the identity.
4
4
  */
5
5
  export declare function pipeIf<A>(usePipe: boolean, pipe: OperatorFunction<A, A>): OperatorFunction<A, A>;
6
+ /**
7
+ * Maps the opposite value of the input boolean.
8
+ */
9
+ export declare function isNot(): MonoTypeOperatorFunction<boolean>;
10
+ /**
11
+ * Emits a value when moving from a true value to a false value.
12
+ */
13
+ export declare function onTrueToFalse(): MonoTypeOperatorFunction<boolean>;
14
+ /**
15
+ * Emits a value when moving from a false value to a true value.
16
+ */
17
+ export declare function onFalseToTrue(): MonoTypeOperatorFunction<boolean>;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pipeIf = void 0;
3
+ exports.onFalseToTrue = exports.onTrueToFalse = exports.isNot = exports.pipeIf = void 0;
4
4
  const rxjs_1 = require("rxjs");
5
+ const delta_1 = require("./delta");
5
6
  /**
6
7
  * Returns the pipe if usePipe is true, otherwise returns the identity.
7
8
  */
@@ -9,4 +10,33 @@ function pipeIf(usePipe, pipe) {
9
10
  return (usePipe) ? pipe : rxjs_1.identity;
10
11
  }
11
12
  exports.pipeIf = pipeIf;
13
+ /**
14
+ * Maps the opposite value of the input boolean.
15
+ */
16
+ function isNot() {
17
+ return (0, rxjs_1.map)(x => !x);
18
+ }
19
+ exports.isNot = isNot;
20
+ /**
21
+ * Emits a value when moving from a true value to a false value.
22
+ */
23
+ function onTrueToFalse() {
24
+ return (0, delta_1.onMatchDelta)({
25
+ from: true,
26
+ to: false,
27
+ requireConsecutive: true
28
+ });
29
+ }
30
+ exports.onTrueToFalse = onTrueToFalse;
31
+ /**
32
+ * Emits a value when moving from a false value to a true value.
33
+ */
34
+ function onFalseToTrue() {
35
+ return (0, delta_1.onMatchDelta)({
36
+ from: false,
37
+ to: true,
38
+ requireConsecutive: true
39
+ });
40
+ }
41
+ exports.onFalseToTrue = onFalseToTrue;
12
42
  //# sourceMappingURL=boolean.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/rxjs/boolean.ts"],"names":[],"mappings":";;;AAAA,+BAAkD;AAElD;;GAEG;AACF,SAAgB,MAAM,CAAI,OAAgB,EAAE,IAA4B;IACvE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAQ,CAAC;AACrC,CAAC;AAFA,wBAEA"}
1
+ {"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/rxjs/boolean.ts"],"names":[],"mappings":";;;AAAA,+BAAiF;AACjF,mCAAuC;AAEvC;;GAEG;AACH,SAAgB,MAAM,CAAI,OAAgB,EAAE,IAA4B;IACtE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAQ,CAAC;AACrC,CAAC;AAFD,wBAEC;AAED;;GAEG;AACH,SAAgB,KAAK;IACnB,OAAO,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAFD,sBAEC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO,IAAA,oBAAY,EAAC;QAClB,IAAI,EAAE,IAAI;QACV,EAAE,EAAE,KAAK;QACT,kBAAkB,EAAE,IAAI;KACzB,CAAC,CAAC;AACL,CAAC;AAND,sCAMC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO,IAAA,oBAAY,EAAC;QAClB,IAAI,EAAE,KAAK;QACX,EAAE,EAAE,IAAI;QACR,kBAAkB,EAAE,IAAI;KACzB,CAAC,CAAC;AACL,CAAC;AAND,sCAMC"}
@@ -0,0 +1,32 @@
1
+ import { MonoTypeOperatorFunction } from 'rxjs';
2
+ /**
3
+ * onDelta function configuration.
4
+ */
5
+ export interface OnMatchDeltaConfig<T> {
6
+ /**
7
+ * The first from value.
8
+ */
9
+ from: T;
10
+ /**
11
+ * The target value to recieve after the first.
12
+ */
13
+ to: T;
14
+ /**
15
+ * Comparison function to compare equality between the emission and the target values.
16
+ *
17
+ * isMatch is checked for each value, and at the time a match is found, allowing a double check to occur on the from target value.
18
+ */
19
+ isMatch?: (a: T, b: T) => boolean;
20
+ /**
21
+ * Whether or not the two values must be emitted consencutively.
22
+ *
23
+ * For example, if requiredConsecutive=true and we are waiting for 1 -> 2, and the emissions are 1,0,2, the observable function will not emit 2.
24
+ */
25
+ requireConsecutive?: boolean;
26
+ }
27
+ /**
28
+ * Emits a value when going from one matching value to a target value.
29
+ *
30
+ * The first value must be determined first before the second is raised.
31
+ */
32
+ export declare function onMatchDelta<T>(config: OnMatchDeltaConfig<T>): MonoTypeOperatorFunction<T>;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.onMatchDelta = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ /**
6
+ * Emits a value when going from one matching value to a target value.
7
+ *
8
+ * The first value must be determined first before the second is raised.
9
+ */
10
+ function onMatchDelta(config) {
11
+ const { isMatch: inputIsSame, from, to, requireConsecutive } = config;
12
+ const isMatch = inputIsSame !== null && inputIsSame !== void 0 ? inputIsSame : ((a, b) => a === b);
13
+ return (obs) => {
14
+ return obs.pipe((0, rxjs_1.scan)((acc, next, index) => {
15
+ let emit = false;
16
+ let fromMatch = acc.fromMatch;
17
+ let value;
18
+ // If we do have a match check the next value is a match for delta emission.
19
+ if (acc.fromMatch) {
20
+ const toMatch = isMatch(to, next);
21
+ if (toMatch) {
22
+ // if the two value matches, check fromMatch once more
23
+ fromMatch = isMatch(from, acc.value);
24
+ // emit if both are in agreement
25
+ emit = fromMatch && toMatch;
26
+ if (emit) {
27
+ // set the emit value
28
+ value = next;
29
+ // set fromMatch for the followup emission
30
+ fromMatch = isMatch(from, next);
31
+ }
32
+ }
33
+ }
34
+ // If we aren't emitting, update fromMatch/value depending on current state.
35
+ if (!emit) {
36
+ // if we don't have a from match yet or we require consecutive successes, check next as the from value.
37
+ if (!acc.fromMatch || requireConsecutive) {
38
+ fromMatch = isMatch(from, next);
39
+ value = next;
40
+ }
41
+ }
42
+ return {
43
+ emit,
44
+ value,
45
+ fromMatch
46
+ };
47
+ }, { emit: false, fromMatch: false, value: 0 }), (0, rxjs_1.filter)(({ emit }) => Boolean(emit)), (0, rxjs_1.map)(({ value }) => value));
48
+ };
49
+ }
50
+ exports.onMatchDelta = onMatchDelta;
51
+ //# sourceMappingURL=delta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/rxjs/delta.ts"],"names":[],"mappings":";;;AAAA,+BAAiG;AA6CjG;;;;GAIG;AACH,SAAgB,YAAY,CAAI,MAA6B;IAC3D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;IACtE,MAAM,OAAO,GAAG,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,CAAC,CAAC,CAAI,EAAE,CAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzD,OAAO,CAAC,GAAkB,EAAE,EAAE;QAC5B,OAAO,GAAG,CAAC,IAAI,CACb,IAAA,WAAI,EAAC,CAAC,GAAwB,EAAE,IAAO,EAAE,KAAa,EAAE,EAAE;YACxD,IAAI,IAAI,GAAY,KAAK,CAAC;YAC1B,IAAI,SAAS,GAAY,GAAG,CAAC,SAAS,CAAC;YACvC,IAAI,KAAS,CAAC;YAEd,4EAA4E;YAC5E,IAAI,GAAG,CAAC,SAAS,EAAE;gBACjB,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAElC,IAAI,OAAO,EAAE;oBAEX,sDAAsD;oBACtD,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;oBAErC,gCAAgC;oBAChC,IAAI,GAAG,SAAS,IAAI,OAAO,CAAC;oBAE5B,IAAI,IAAI,EAAE;wBAER,qBAAqB;wBACrB,KAAK,GAAG,IAAI,CAAC;wBAEb,0CAA0C;wBAC1C,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;qBACjC;iBACF;aACF;YAED,4EAA4E;YAC5E,IAAI,CAAC,IAAI,EAAE;gBAET,uGAAuG;gBACvG,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,kBAAkB,EAAE;oBACxC,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAChC,KAAK,GAAG,IAAI,CAAC;iBACd;aACF;YAED,OAAO;gBACL,IAAI;gBACJ,KAAK;gBACL,SAAS;aACV,CAAC;QACJ,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAQ,EAAE,CAAC,EACtD,IAAA,aAAM,EAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EACnC,IAAA,UAAG,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAC1B,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAtDD,oCAsDC"}
@@ -0,0 +1,31 @@
1
+ import { FactoryWithInput } from '@dereekb/util';
2
+ import { Observable } from 'rxjs';
3
+ /**
4
+ * factoryTimer() configuration
5
+ */
6
+ export interface FactoryTimerConfig<T> {
7
+ /**
8
+ * How long to wait before the first emission.
9
+ */
10
+ wait?: number;
11
+ /**
12
+ * Interval period
13
+ */
14
+ interval?: number;
15
+ /**
16
+ * Max number of iterations.
17
+ */
18
+ limit?: number;
19
+ /**
20
+ * Factory for values.
21
+ */
22
+ factory: FactoryWithInput<T, number>;
23
+ }
24
+ export declare const DEFAULT_FACTORY_TIMER_INTERVAL = 1000;
25
+ /**
26
+ * Creates an observable that uses timer internally and maps values from the factory result.
27
+ *
28
+ * @param config
29
+ * @returns
30
+ */
31
+ export declare function factoryTimer<T>(config: FactoryTimerConfig<T>): Observable<T>;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.factoryTimer = exports.DEFAULT_FACTORY_TIMER_INTERVAL = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ exports.DEFAULT_FACTORY_TIMER_INTERVAL = 1000;
6
+ /**
7
+ * Creates an observable that uses timer internally and maps values from the factory result.
8
+ *
9
+ * @param config
10
+ * @returns
11
+ */
12
+ function factoryTimer(config) {
13
+ const { wait = 0, interval = exports.DEFAULT_FACTORY_TIMER_INTERVAL, limit, factory } = config;
14
+ let obs = (0, rxjs_1.timer)(wait, interval);
15
+ if (limit) {
16
+ obs = obs.pipe((0, rxjs_1.takeWhile)((x) => x < limit));
17
+ }
18
+ return obs.pipe((0, rxjs_1.map)((i) => factory(i)));
19
+ }
20
+ exports.factoryTimer = factoryTimer;
21
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/rxjs/factory.ts"],"names":[],"mappings":";;;AACA,+BAAyD;AA6B5C,QAAA,8BAA8B,GAAG,IAAI,CAAC;AAEnD;;;;;GAKG;AACH,SAAgB,YAAY,CAAI,MAA6B;IAC3D,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,sCAA8B,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACvF,IAAI,GAAG,GAAG,IAAA,YAAK,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEhC,IAAI,KAAK,EAAE;QACT,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAA,gBAAS,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7C;IAED,OAAO,GAAG,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AATD,oCASC"}
@@ -3,15 +3,15 @@ import { Observable, OperatorFunction } from 'rxjs';
3
3
  /**
4
4
  * A value that is either the value or an observable that returns the value.
5
5
  */
6
- export declare type ObservableGetter<T> = T | Observable<T>;
6
+ export declare type ObservableOrValue<T> = T | Observable<T>;
7
7
  /**
8
8
  * Wraps the input value as an observable, if it is not an observable.
9
9
  */
10
- export declare function asObservable<T>(valueOrObs: ObservableGetter<T>): Observable<T>;
11
- export declare function asObservable<T>(valueOrObs: Maybe<ObservableGetter<T>>): Observable<Maybe<T>>;
10
+ export declare function asObservable<T>(valueOrObs: ObservableOrValue<T>): Observable<T>;
11
+ export declare function asObservable<T>(valueOrObs: Maybe<ObservableOrValue<T>>): Observable<Maybe<T>>;
12
12
  /**
13
13
  * Switch map for an ObservableGetter that pipes through the value.
14
14
  *
15
15
  * @returns
16
16
  */
17
- export declare function getter<T>(): OperatorFunction<ObservableGetter<T>, T>;
17
+ export declare function valueFromObservableOrValue<T>(): OperatorFunction<ObservableOrValue<T>, T>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getter = exports.asObservable = void 0;
3
+ exports.valueFromObservableOrValue = exports.asObservable = void 0;
4
4
  const rxjs_1 = require("rxjs");
5
5
  function asObservable(valueOrObs) {
6
6
  if ((0, rxjs_1.isObservable)(valueOrObs)) {
@@ -16,7 +16,7 @@ exports.asObservable = asObservable;
16
16
  *
17
17
  * @returns
18
18
  */
19
- function getter() {
19
+ function valueFromObservableOrValue() {
20
20
  return (0, rxjs_1.switchMap)(x => {
21
21
  if ((0, rxjs_1.isObservable)(x)) {
22
22
  return x;
@@ -26,5 +26,5 @@ function getter() {
26
26
  }
27
27
  });
28
28
  }
29
- exports.getter = getter;
29
+ exports.valueFromObservableOrValue = valueFromObservableOrValue;
30
30
  //# sourceMappingURL=getter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getter.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/rxjs/getter.ts"],"names":[],"mappings":";;;AACA,+BAAiF;AAYjF,SAAgB,YAAY,CAAI,UAAsC;IACpE,IAAI,IAAA,mBAAY,EAAC,UAAU,CAAC,EAAE;QAC5B,OAAO,UAAU,CAAC;KACnB;SAAM;QACL,OAAO,IAAA,SAAE,EAAC,UAAU,CAAC,CAAC;KACvB;AACH,CAAC;AAND,oCAMC;AAED;;;;GAIG;AACH,SAAgB,MAAM;IACpB,OAAO,IAAA,gBAAS,EAAC,CAAC,CAAC,EAAE;QACnB,IAAI,IAAA,mBAAY,EAAC,CAAC,CAAC,EAAE;YACnB,OAAO,CAAC,CAAC;SACV;aAAM;YACL,OAAO,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC;SACd;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AARD,wBAQC"}
1
+ {"version":3,"file":"getter.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/rxjs/getter.ts"],"names":[],"mappings":";;;AACA,+BAAiF;AAYjF,SAAgB,YAAY,CAAI,UAAuC;IACrE,IAAI,IAAA,mBAAY,EAAC,UAAU,CAAC,EAAE;QAC5B,OAAO,UAAU,CAAC;KACnB;SAAM;QACL,OAAO,IAAA,SAAE,EAAC,UAAU,CAAC,CAAC;KACvB;AACH,CAAC;AAND,oCAMC;AAED;;;;GAIG;AACH,SAAgB,0BAA0B;IACxC,OAAO,IAAA,gBAAS,EAAC,CAAC,CAAC,EAAE;QACnB,IAAI,IAAA,mBAAY,EAAC,CAAC,CAAC,EAAE;YACnB,OAAO,CAAC,CAAC;SACV;aAAM;YACL,OAAO,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC;SACd;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AARD,gEAQC"}
@@ -1,8 +1,16 @@
1
1
  export * from './array';
2
2
  export * from './boolean';
3
+ export * from './delta';
4
+ export * from './factory';
3
5
  export * from './getter';
6
+ export * from './lifecycle';
4
7
  export * from './loading';
5
8
  export * from './misc';
9
+ export * from './map';
6
10
  export * from './number';
7
- export * from './value';
8
11
  export * from './rxjs';
12
+ export * from './rxjs.async';
13
+ export * from './rxjs.map';
14
+ export * from './set';
15
+ export * from './use';
16
+ export * from './value';
@@ -1,12 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./array"), exports);
5
- (0, tslib_1.__exportStar)(require("./boolean"), exports);
6
- (0, tslib_1.__exportStar)(require("./getter"), exports);
7
- (0, tslib_1.__exportStar)(require("./loading"), exports);
8
- (0, tslib_1.__exportStar)(require("./misc"), exports);
9
- (0, tslib_1.__exportStar)(require("./number"), exports);
10
- (0, tslib_1.__exportStar)(require("./value"), exports);
11
- (0, tslib_1.__exportStar)(require("./rxjs"), exports);
4
+ tslib_1.__exportStar(require("./array"), exports);
5
+ tslib_1.__exportStar(require("./boolean"), exports);
6
+ tslib_1.__exportStar(require("./delta"), exports);
7
+ tslib_1.__exportStar(require("./factory"), exports);
8
+ tslib_1.__exportStar(require("./getter"), exports);
9
+ tslib_1.__exportStar(require("./lifecycle"), exports);
10
+ tslib_1.__exportStar(require("./loading"), exports);
11
+ tslib_1.__exportStar(require("./misc"), exports);
12
+ tslib_1.__exportStar(require("./map"), exports);
13
+ tslib_1.__exportStar(require("./number"), exports);
14
+ tslib_1.__exportStar(require("./rxjs"), exports);
15
+ tslib_1.__exportStar(require("./rxjs.async"), exports);
16
+ tslib_1.__exportStar(require("./rxjs.map"), exports);
17
+ tslib_1.__exportStar(require("./set"), exports);
18
+ tslib_1.__exportStar(require("./use"), exports);
19
+ tslib_1.__exportStar(require("./value"), exports);
12
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/rxjs/index.ts"],"names":[],"mappings":";;;AAAA,uDAAwB;AACxB,yDAA0B;AAC1B,wDAAyB;AACzB,yDAA0B;AAC1B,sDAAuB;AACvB,wDAAyB;AACzB,uDAAwB;AACxB,sDAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/rxjs/src/lib/rxjs/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,oDAA0B;AAC1B,kDAAwB;AACxB,oDAA0B;AAC1B,mDAAyB;AACzB,sDAA4B;AAC5B,oDAA0B;AAC1B,iDAAuB;AACvB,gDAAsB;AACtB,mDAAyB;AACzB,iDAAuB;AACvB,uDAA6B;AAC7B,qDAA2B;AAC3B,gDAAsB;AACtB,gDAAsB;AACtB,kDAAwB"}
@@ -0,0 +1,18 @@
1
+ import { Destroyable, PromiseOrValue } from '@dereekb/util';
2
+ import { MonoTypeOperatorFunction } from "rxjs";
3
+ /**
4
+ * Cleans up the instance when a new value is pushed.
5
+ *
6
+ * Can be configured to wait until the previous value's destroy promise has resolved.
7
+ *
8
+ * @param destroy
9
+ * @param wait
10
+ * @returns
11
+ */
12
+ export declare function cleanup<T>(destroy: (instance: T) => PromiseOrValue<any | void>, wait?: boolean): MonoTypeOperatorFunction<T>;
13
+ /**
14
+ * Convenience function for cleanup() on a Destroyable type.
15
+ *
16
+ * @returns
17
+ */
18
+ export declare function cleanupDestroyable<T extends Destroyable>(wait?: boolean): MonoTypeOperatorFunction<T>;