@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.
- package/CHANGELOG.md +62 -10
- package/README.md +1 -1
- package/package.json +10 -7
- package/src/index.js +1 -1
- package/src/index.js.map +1 -1
- package/src/lib/filter/filter.map.d.ts +4 -3
- package/src/lib/filter/filter.map.js.map +1 -1
- package/src/lib/filter/filter.source.d.ts +4 -4
- package/src/lib/filter/filter.source.js.map +1 -1
- package/src/lib/filter/index.js +4 -4
- package/src/lib/filter/index.js.map +1 -1
- package/src/lib/index.d.ts +1 -0
- package/src/lib/index.js +8 -7
- package/src/lib/index.js.map +1 -1
- package/src/lib/iterator/index.d.ts +1 -0
- package/src/lib/iterator/index.js +7 -6
- package/src/lib/iterator/index.js.map +1 -1
- package/src/lib/iterator/iteration.accumulator.d.ts +8 -4
- package/src/lib/iterator/iteration.accumulator.js +18 -21
- package/src/lib/iterator/iteration.accumulator.js.map +1 -1
- package/src/lib/iterator/iteration.accumulator.rxjs.d.ts +7 -3
- package/src/lib/iterator/iteration.accumulator.rxjs.js +21 -10
- package/src/lib/iterator/iteration.accumulator.rxjs.js.map +1 -1
- package/src/lib/iterator/iteration.d.ts +7 -3
- package/src/lib/iterator/iteration.mapped.page.d.ts +3 -2
- package/src/lib/iterator/iteration.mapped.page.js.map +1 -1
- package/src/lib/iterator/iteration.next.d.ts +8 -3
- package/src/lib/iterator/iteration.next.js +19 -6
- package/src/lib/iterator/iteration.next.js.map +1 -1
- package/src/lib/iterator/iterator.page.d.ts +22 -6
- package/src/lib/iterator/iterator.page.js +17 -5
- package/src/lib/iterator/iterator.page.js.map +1 -1
- package/src/lib/loading/index.js +8 -8
- package/src/lib/loading/index.js.map +1 -1
- package/src/lib/loading/loading.context.state.value.js.map +1 -1
- package/src/lib/loading/loading.state.d.ts +53 -3
- package/src/lib/loading/loading.state.js +102 -2
- package/src/lib/loading/loading.state.js.map +1 -1
- package/src/lib/lock.d.ts +13 -7
- package/src/lib/lock.js +38 -14
- package/src/lib/lock.js.map +1 -1
- package/src/lib/object.js +2 -2
- package/src/lib/object.js.map +1 -1
- package/src/lib/rxjs/array.d.ts +17 -0
- package/src/lib/rxjs/array.js +23 -9
- package/src/lib/rxjs/array.js.map +1 -1
- package/src/lib/rxjs/boolean.d.ts +13 -1
- package/src/lib/rxjs/boolean.js +31 -1
- package/src/lib/rxjs/boolean.js.map +1 -1
- package/src/lib/rxjs/delta.d.ts +32 -0
- package/src/lib/rxjs/delta.js +51 -0
- package/src/lib/rxjs/delta.js.map +1 -0
- package/src/lib/rxjs/factory.d.ts +31 -0
- package/src/lib/rxjs/factory.js +21 -0
- package/src/lib/rxjs/factory.js.map +1 -0
- package/src/lib/rxjs/getter.d.ts +4 -4
- package/src/lib/rxjs/getter.js +3 -3
- package/src/lib/rxjs/getter.js.map +1 -1
- package/src/lib/rxjs/index.d.ts +9 -1
- package/src/lib/rxjs/index.js +16 -8
- package/src/lib/rxjs/index.js.map +1 -1
- package/src/lib/rxjs/lifecycle.d.ts +18 -0
- package/src/lib/rxjs/lifecycle.js +55 -0
- package/src/lib/rxjs/lifecycle.js.map +1 -0
- package/src/lib/rxjs/map.d.ts +10 -0
- package/src/lib/rxjs/map.js +17 -0
- package/src/lib/rxjs/map.js.map +1 -0
- package/src/lib/rxjs/number.d.ts +16 -1
- package/src/lib/rxjs/number.js +15 -3
- package/src/lib/rxjs/number.js.map +1 -1
- package/src/lib/rxjs/rxjs.async.d.ts +57 -0
- package/src/lib/rxjs/rxjs.async.js +69 -0
- package/src/lib/rxjs/rxjs.async.js.map +1 -0
- package/src/lib/rxjs/rxjs.d.ts +10 -2
- package/src/lib/rxjs/rxjs.js +17 -16
- package/src/lib/rxjs/rxjs.js.map +1 -1
- package/src/lib/rxjs/rxjs.map.d.ts +9 -0
- package/src/lib/rxjs/rxjs.map.js +26 -0
- package/src/lib/rxjs/rxjs.map.js.map +1 -0
- package/src/lib/rxjs/set.d.ts +4 -0
- package/src/lib/rxjs/set.js +14 -0
- package/src/lib/rxjs/set.js.map +1 -0
- package/src/lib/rxjs/use.d.ts +7 -0
- package/src/lib/rxjs/use.js +14 -0
- package/src/lib/rxjs/use.js.map +1 -0
- package/src/lib/rxjs/value.d.ts +34 -3
- package/src/lib/rxjs/value.js +54 -2
- package/src/lib/rxjs/value.js.map +1 -1
- package/src/lib/work/index.d.ts +2 -0
- package/src/lib/work/index.js +6 -0
- package/src/lib/work/index.js.map +1 -0
- package/src/lib/work/work.factory.d.ts +35 -0
- package/src/lib/work/work.factory.js +43 -0
- package/src/lib/work/work.factory.js.map +1 -0
- package/src/lib/work/work.instance.d.ts +60 -0
- package/src/lib/work/work.instance.js +129 -0
- 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
|
|
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,
|
|
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,
|
|
31
|
-
(0,
|
|
32
|
-
this.isUnlocked$ = this.isLocked$.pipe((0,
|
|
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,
|
|
54
|
+
let obs = (0, rxjs_2.of)(true);
|
|
51
55
|
if (lockedConfig.duration) {
|
|
52
|
-
obs = obs.pipe((0,
|
|
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,
|
|
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,
|
|
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.
|
|
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;
|
package/src/lib/lock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../../packages/rxjs/src/lib/lock.ts"],"names":[],"mappings":";;;AAAA,
|
|
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.
|
|
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.
|
|
21
|
+
return (0, operators_1.filter)((inputObject) => !(0, util_1.areEqualPOJOValues)(input, inputObject));
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
exports.filterIfObjectValuesUnchanged = filterIfObjectValuesUnchanged;
|
package/src/lib/object.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../../packages/rxjs/src/lib/object.ts"],"names":[],"mappings":";;;AAAA,
|
|
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"}
|
package/src/lib/rxjs/array.d.ts
CHANGED
|
@@ -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[]>;
|
package/src/lib/rxjs/array.js
CHANGED
|
@@ -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,
|
|
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,
|
|
43
|
-
const { seed = [], accumulatorObs } = init(seedState);
|
|
44
|
-
return accumulatorObs.pipe((0,
|
|
45
|
-
(0,
|
|
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
|
-
|
|
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,
|
|
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
|
|
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>;
|
package/src/lib/rxjs/boolean.js
CHANGED
|
@@ -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,+
|
|
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"}
|
package/src/lib/rxjs/getter.d.ts
CHANGED
|
@@ -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
|
|
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:
|
|
11
|
-
export declare function asObservable<T>(valueOrObs: Maybe<
|
|
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
|
|
17
|
+
export declare function valueFromObservableOrValue<T>(): OperatorFunction<ObservableOrValue<T>, T>;
|
package/src/lib/rxjs/getter.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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
|
|
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.
|
|
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,
|
|
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"}
|
package/src/lib/rxjs/index.d.ts
CHANGED
|
@@ -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';
|
package/src/lib/rxjs/index.js
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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,
|
|
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>;
|