@furystack/utils 3.1.7 → 4.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/package.json +21 -8
- package/src/debounce.spec.ts +20 -17
- package/src/deep-merge.spec.ts +1 -0
- package/src/deep-merge.ts +0 -1
- package/src/disposable.spec.ts +23 -15
- package/src/disposable.ts +0 -2
- package/src/observable-value.spec.ts +47 -20
- package/src/observable-value.ts +4 -7
- package/src/path-helper.spec.ts +1 -0
- package/src/path-helper.ts +0 -5
- package/src/sleep-async.spec.ts +1 -0
- package/src/sleep-async.ts +0 -1
- package/src/sort-by.spec.ts +1 -0
- package/src/trace.spec.ts +48 -26
- package/src/trace.ts +0 -1
- package/src/tuple.spec.ts +1 -0
- package/src/tuple.ts +0 -1
- package/src/value-observer.ts +1 -2
- package/types/deep-merge.d.ts +0 -1
- package/types/deep-merge.d.ts.map +1 -1
- package/types/disposable.d.ts +0 -2
- package/types/disposable.d.ts.map +1 -1
- package/types/observable-value.d.ts +1 -7
- package/types/observable-value.d.ts.map +1 -1
- package/types/path-helper.d.ts +0 -5
- package/types/path-helper.d.ts.map +1 -1
- package/types/sleep-async.d.ts +0 -1
- package/types/sleep-async.d.ts.map +1 -1
- package/types/trace.d.ts +0 -1
- package/types/trace.d.ts.map +1 -1
- package/types/tuple.d.ts +0 -1
- package/types/tuple.d.ts.map +1 -1
- package/types/value-observer.d.ts +1 -2
- package/types/value-observer.d.ts.map +1 -1
- package/dist/debounce.js +0 -23
- package/dist/debounce.js.map +0 -1
- package/dist/debounce.spec.js +0 -40
- package/dist/debounce.spec.js.map +0 -1
- package/dist/deep-merge.js +0 -34
- package/dist/deep-merge.js.map +0 -1
- package/dist/deep-merge.spec.js +0 -31
- package/dist/deep-merge.spec.js.map +0 -1
- package/dist/disposable.js +0 -63
- package/dist/disposable.js.map +0 -1
- package/dist/disposable.spec.js +0 -112
- package/dist/disposable.spec.js.map +0 -1
- package/dist/index.js +0 -27
- package/dist/index.js.map +0 -1
- package/dist/observable-value.js +0 -117
- package/dist/observable-value.js.map +0 -1
- package/dist/observable-value.spec.js +0 -109
- package/dist/observable-value.spec.js.map +0 -1
- package/dist/path-helper.js +0 -75
- package/dist/path-helper.js.map +0 -1
- package/dist/path-helper.spec.js +0 -62
- package/dist/path-helper.spec.js.map +0 -1
- package/dist/sleep-async.js +0 -13
- package/dist/sleep-async.js.map +0 -1
- package/dist/sleep-async.spec.js +0 -16
- package/dist/sleep-async.spec.js.map +0 -1
- package/dist/sort-by.js +0 -19
- package/dist/sort-by.js.map +0 -1
- package/dist/sort-by.spec.js +0 -22
- package/dist/sort-by.spec.js.map +0 -1
- package/dist/trace.js +0 -131
- package/dist/trace.js.map +0 -1
- package/dist/trace.spec.js +0 -169
- package/dist/trace.spec.js.map +0 -1
- package/dist/tuple.js +0 -12
- package/dist/tuple.js.map +0 -1
- package/dist/tuple.spec.js +0 -9
- package/dist/tuple.spec.js.map +0 -1
- package/dist/value-observer.js +0 -45
- package/dist/value-observer.js.map +0 -1
- package/types/debounce.spec.d.ts +0 -5
- package/types/debounce.spec.d.ts.map +0 -1
- package/types/deep-merge.spec.d.ts +0 -2
- package/types/deep-merge.spec.d.ts.map +0 -1
- package/types/disposable.spec.d.ts +0 -22
- package/types/disposable.spec.d.ts.map +0 -1
- package/types/observable-value.spec.d.ts +0 -5
- package/types/observable-value.spec.d.ts.map +0 -1
- package/types/path-helper.spec.d.ts +0 -5
- package/types/path-helper.spec.d.ts.map +0 -1
- package/types/sleep-async.spec.d.ts +0 -5
- package/types/sleep-async.spec.d.ts.map +0 -1
- package/types/sort-by.spec.d.ts +0 -2
- package/types/sort-by.spec.d.ts.map +0 -1
- package/types/trace.spec.d.ts +0 -2
- package/types/trace.spec.d.ts.map +0 -1
- package/types/tuple.spec.d.ts +0 -2
- package/types/tuple.spec.d.ts.map +0 -1
package/dist/observable-value.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ObservableValue = exports.ObservableAlreadyDisposedError = void 0;
|
|
4
|
-
const value_observer_1 = require("./value-observer");
|
|
5
|
-
/**
|
|
6
|
-
* Error thrown when you try to retrieve or set an observable value that is already disposed.
|
|
7
|
-
*/
|
|
8
|
-
class ObservableAlreadyDisposedError extends Error {
|
|
9
|
-
constructor() {
|
|
10
|
-
super('Observable already disposed');
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
exports.ObservableAlreadyDisposedError = ObservableAlreadyDisposedError;
|
|
14
|
-
/**
|
|
15
|
-
* Defines an ObservableValue value object.
|
|
16
|
-
*
|
|
17
|
-
* You can set and get its value with it's *setValue()* and *getValue()* methods and you can subscribe to value changes with *subscribe()*
|
|
18
|
-
*
|
|
19
|
-
* Usage example:
|
|
20
|
-
* ```ts
|
|
21
|
-
* const observableValue = new ObservableValue<number>(0);
|
|
22
|
-
* const observer = observableValue.subscribe((newValue) => {
|
|
23
|
-
* console.log("Value changed:", newValue);
|
|
24
|
-
* });
|
|
25
|
-
* // To update the value
|
|
26
|
-
* observableValue.setValue(Math.random());
|
|
27
|
-
* // if you want to dispose a single observer
|
|
28
|
-
* observer.dispose();
|
|
29
|
-
* // if you want to dispose the whole observableValue with all of its observers:
|
|
30
|
-
* observableValue.dispose();
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* @param T Generic argument to indicate the value type
|
|
34
|
-
*/
|
|
35
|
-
class ObservableValue {
|
|
36
|
-
get isDisposed() {
|
|
37
|
-
return this._isDisposed;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Disposes the ObservableValue object, removes all observers
|
|
41
|
-
*/
|
|
42
|
-
dispose() {
|
|
43
|
-
this.observers.clear();
|
|
44
|
-
this._isDisposed = true;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Subscribes to a value changes
|
|
48
|
-
*
|
|
49
|
-
* @param callback The callback method that will be called on each change
|
|
50
|
-
* @param getLast Will call the callback with the last known value right after subscription
|
|
51
|
-
* @returns The ValueObserver instance
|
|
52
|
-
*/
|
|
53
|
-
subscribe(callback, getLast = false) {
|
|
54
|
-
const observer = new value_observer_1.ValueObserver(this, callback);
|
|
55
|
-
this.observers.add(observer);
|
|
56
|
-
if (getLast) {
|
|
57
|
-
callback(this.currentValue);
|
|
58
|
-
}
|
|
59
|
-
return observer;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* The observer will unsubscribe from the Observable
|
|
63
|
-
*
|
|
64
|
-
* @param observer The ValueObserver instance
|
|
65
|
-
* @returns if unsubscribing was successfull
|
|
66
|
-
*/
|
|
67
|
-
unsubscribe(observer) {
|
|
68
|
-
return this.observers.delete(observer);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Gets the current Value
|
|
72
|
-
*
|
|
73
|
-
* @returns The current value
|
|
74
|
-
*/
|
|
75
|
-
getValue() {
|
|
76
|
-
if (this._isDisposed) {
|
|
77
|
-
throw new ObservableAlreadyDisposedError();
|
|
78
|
-
}
|
|
79
|
-
return this.currentValue;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Sets a new value and notifies the observers.
|
|
83
|
-
*
|
|
84
|
-
* @param newValue The new value to be set
|
|
85
|
-
*/
|
|
86
|
-
setValue(newValue) {
|
|
87
|
-
if (this._isDisposed) {
|
|
88
|
-
throw new ObservableAlreadyDisposedError();
|
|
89
|
-
}
|
|
90
|
-
if (this.currentValue !== newValue) {
|
|
91
|
-
this.currentValue = newValue;
|
|
92
|
-
for (const subscription of this.observers) {
|
|
93
|
-
subscription.callback(newValue);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Gets the observers
|
|
99
|
-
*
|
|
100
|
-
* @returns The subscribed observers
|
|
101
|
-
*/
|
|
102
|
-
getObservers() {
|
|
103
|
-
return [...this.observers];
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* @param initialValue Optional initial value
|
|
107
|
-
*/
|
|
108
|
-
constructor(initialValue) {
|
|
109
|
-
this._isDisposed = false;
|
|
110
|
-
this.observers = new Set();
|
|
111
|
-
if (initialValue !== undefined) {
|
|
112
|
-
this.currentValue = initialValue;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
exports.ObservableValue = ObservableValue;
|
|
117
|
-
//# sourceMappingURL=observable-value.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observable-value.js","sourceRoot":"","sources":["../src/observable-value.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAEhD;;GAEG;AACH,MAAa,8BAA+B,SAAQ,KAAK;IACvD;QACE,KAAK,CAAC,6BAA6B,CAAC,CAAA;IACtC,CAAC;CACF;AAJD,wEAIC;AAOD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,eAAe;IAC1B,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAID;;OAEG;IACI,OAAO;QACZ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IACzB,CAAC;IAID;;;;;;OAMG;IACI,SAAS,CAAC,QAAgC,EAAE,OAAO,GAAG,KAAK;QAChE,MAAM,QAAQ,GAAG,IAAI,8BAAa,CAAI,IAAI,EAAE,QAAQ,CAAC,CAAA;QACrD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5B,IAAI,OAAO,EAAE;YACX,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;SAC5B;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;;;;OAKG;IACI,WAAW,CAAC,QAA0B;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED;;;;OAIG;IACI,QAAQ;QACb,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,IAAI,8BAA8B,EAAE,CAAA;SAC3C;QACD,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,QAAW;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,IAAI,8BAA8B,EAAE,CAAA;SAC3C;QACD,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE;YAClC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAA;YAC5B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;gBACzC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;aAChC;SACF;IACH,CAAC;IAED;;;;OAIG;IACI,YAAY;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAoC,CAAA;IAC/D,CAAC;IAED;;OAEG;IACH,YAAY,YAAgB;QA/EpB,gBAAW,GAAG,KAAK,CAAA;QASnB,cAAS,GAA0B,IAAI,GAAG,EAAE,CAAA;QAuElD,IAAI,YAAY,KAAK,SAAS,EAAE;YAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;SACjC;IACH,CAAC;CACF;AAzFD,0CAyFC"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.observableTests = void 0;
|
|
4
|
-
const observable_value_1 = require("./observable-value");
|
|
5
|
-
/**
|
|
6
|
-
* Observable Value tests
|
|
7
|
-
*/
|
|
8
|
-
exports.observableTests = describe('Observable', () => {
|
|
9
|
-
it('should be constructed without initial value', (done) => {
|
|
10
|
-
const v = new observable_value_1.ObservableValue();
|
|
11
|
-
v.subscribe(() => {
|
|
12
|
-
expect(v.getValue()).toBe(undefined);
|
|
13
|
-
done();
|
|
14
|
-
}, true);
|
|
15
|
-
expect(v).toBeInstanceOf(observable_value_1.ObservableValue);
|
|
16
|
-
});
|
|
17
|
-
it('should be constructed with initial value', (done) => {
|
|
18
|
-
const v = new observable_value_1.ObservableValue(1);
|
|
19
|
-
v.subscribe(() => {
|
|
20
|
-
expect(v.getValue()).toBe(1);
|
|
21
|
-
done();
|
|
22
|
-
}, true);
|
|
23
|
-
});
|
|
24
|
-
describe('Subscription callback', () => {
|
|
25
|
-
it('should be triggered only when a value is changed', (done) => {
|
|
26
|
-
const v = new observable_value_1.ObservableValue(1);
|
|
27
|
-
v.subscribe(() => {
|
|
28
|
-
expect(v.getValue()).toBe(2);
|
|
29
|
-
done();
|
|
30
|
-
}, false);
|
|
31
|
-
v.setValue(1);
|
|
32
|
-
v.setValue(1);
|
|
33
|
-
v.setValue(2);
|
|
34
|
-
});
|
|
35
|
-
it('should be triggered only on change when getLast is false', (done) => {
|
|
36
|
-
const v = new observable_value_1.ObservableValue(1);
|
|
37
|
-
v.subscribe((value) => {
|
|
38
|
-
expect(value).toBe(2);
|
|
39
|
-
done();
|
|
40
|
-
}, false);
|
|
41
|
-
v.setValue(2);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
describe('Unsubscribe', () => {
|
|
45
|
-
it('should remove the subscription on unsubscribe()', (done) => {
|
|
46
|
-
const callback1 = () => {
|
|
47
|
-
done(Error('Shouldnt be triggered'));
|
|
48
|
-
};
|
|
49
|
-
const callback2 = (value) => {
|
|
50
|
-
expect(value).toBe(2);
|
|
51
|
-
done();
|
|
52
|
-
};
|
|
53
|
-
const v = new observable_value_1.ObservableValue(1);
|
|
54
|
-
const observer1 = v.subscribe(callback1);
|
|
55
|
-
v.subscribe(callback2);
|
|
56
|
-
v.unsubscribe(observer1);
|
|
57
|
-
v.setValue(2);
|
|
58
|
-
});
|
|
59
|
-
it('should remove the subscription on Observable dispose', () => {
|
|
60
|
-
const callback1 = () => {
|
|
61
|
-
/** */
|
|
62
|
-
};
|
|
63
|
-
const callback2 = () => {
|
|
64
|
-
/** */
|
|
65
|
-
};
|
|
66
|
-
const v = new observable_value_1.ObservableValue(1);
|
|
67
|
-
v.subscribe(callback1);
|
|
68
|
-
v.subscribe(callback2);
|
|
69
|
-
expect(v.getObservers().length).toBe(2);
|
|
70
|
-
v.dispose();
|
|
71
|
-
expect(v.getObservers().length).toBe(0);
|
|
72
|
-
});
|
|
73
|
-
it('should remove the subscription on Observer dispose', () => {
|
|
74
|
-
const callback1 = () => {
|
|
75
|
-
/** */
|
|
76
|
-
};
|
|
77
|
-
const v = new observable_value_1.ObservableValue(1);
|
|
78
|
-
const observer = v.subscribe(callback1);
|
|
79
|
-
expect(v.getObservers().length).toBe(1);
|
|
80
|
-
observer.dispose();
|
|
81
|
-
expect(v.getObservers().length).toBe(0);
|
|
82
|
-
});
|
|
83
|
-
it('should throw an error for setValue() when the observer has been disposed', () => {
|
|
84
|
-
const v = new observable_value_1.ObservableValue(1);
|
|
85
|
-
v.dispose();
|
|
86
|
-
expect(() => v.setValue(3)).toThrowError('Observable already disposed');
|
|
87
|
-
});
|
|
88
|
-
it('should throw an error for setValue() when the observer has been disposed', () => {
|
|
89
|
-
const v = new observable_value_1.ObservableValue(1);
|
|
90
|
-
v.dispose();
|
|
91
|
-
expect(() => v.getValue()).toThrowError('Observable already disposed');
|
|
92
|
-
});
|
|
93
|
-
it('should remove the subscription only from the disposed Observer', (done) => {
|
|
94
|
-
class Alma {
|
|
95
|
-
Callback() {
|
|
96
|
-
done();
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
const v = new observable_value_1.ObservableValue(1);
|
|
100
|
-
const observer = v.subscribe(new Alma().Callback);
|
|
101
|
-
v.subscribe(new Alma().Callback);
|
|
102
|
-
expect(v.getObservers().length).toBe(2);
|
|
103
|
-
observer.dispose();
|
|
104
|
-
expect(v.getObservers().length).toBe(1);
|
|
105
|
-
v.setValue(3);
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
//# sourceMappingURL=observable-value.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observable-value.spec.js","sourceRoot":"","sources":["../src/observable-value.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/path-helper.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PathHelper = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Helper class for path-related functions and methods
|
|
6
|
-
*
|
|
7
|
-
* The class contains general helper methods for joining, splitting, modifying and validating paths.
|
|
8
|
-
*/
|
|
9
|
-
class PathHelper {
|
|
10
|
-
/**
|
|
11
|
-
* Trims the slash characters from the beginning and from the end of the path to avoid duplicated slashes
|
|
12
|
-
*
|
|
13
|
-
* @param {string} path The source path that should be trimmed
|
|
14
|
-
* @returns the trimmed path
|
|
15
|
-
*/
|
|
16
|
-
static trimSlashes(path) {
|
|
17
|
-
while (path.endsWith('/')) {
|
|
18
|
-
path = path.substring(0, path.length - 1);
|
|
19
|
-
}
|
|
20
|
-
while (path.startsWith('/')) {
|
|
21
|
-
path = path.substring(1, path.length);
|
|
22
|
-
}
|
|
23
|
-
return path;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Splits a full path into path segments,
|
|
27
|
-
* e.g.: /Root/Example/stuff
|
|
28
|
-
*
|
|
29
|
-
* @param path The path to be splitted
|
|
30
|
-
* @returns {string[]} the segments for the path
|
|
31
|
-
*/
|
|
32
|
-
static getSegments(path) {
|
|
33
|
-
return path.split('/').filter((segment) => segment && segment.length);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Method that allows to join paths without multiple or missing slashes
|
|
37
|
-
*
|
|
38
|
-
* @param args The list of the paths to join
|
|
39
|
-
* @returns the joined path string
|
|
40
|
-
*/
|
|
41
|
-
static joinPaths(...args) {
|
|
42
|
-
return args.map(this.trimSlashes).join('/');
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Checks if the ancestorPath is really the ancestor of the descendantPath
|
|
46
|
-
*
|
|
47
|
-
* @param {string} ancestorPath the ancestor path
|
|
48
|
-
* @param {string} descendantPath the descendant path
|
|
49
|
-
* @returns {boolean} if the provided path is the ancestor of the descendant
|
|
50
|
-
*/
|
|
51
|
-
static isAncestorOf(ancestorPath, descendantPath) {
|
|
52
|
-
return descendantPath.indexOf(`${this.joinPaths(ancestorPath)}/`) === 0;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Returns the parent path from a specified path.
|
|
56
|
-
* e.g. "/Root/Example/Content" will return "/Root/Example"
|
|
57
|
-
*
|
|
58
|
-
* "Root" will always return "Root"
|
|
59
|
-
*
|
|
60
|
-
* @param path The content path
|
|
61
|
-
* @returns the parent path
|
|
62
|
-
*/
|
|
63
|
-
static getParentPath(path) {
|
|
64
|
-
const segments = this.getSegments(path);
|
|
65
|
-
if (segments.length > 1) {
|
|
66
|
-
segments.pop();
|
|
67
|
-
}
|
|
68
|
-
return segments.join('/');
|
|
69
|
-
}
|
|
70
|
-
static normalize(path) {
|
|
71
|
-
return this.getSegments(path).join('/');
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
exports.PathHelper = PathHelper;
|
|
75
|
-
//# sourceMappingURL=path-helper.js.map
|
package/dist/path-helper.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path-helper.js","sourceRoot":"","sources":["../src/path-helper.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,MAAa,UAAU;IACrB;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CAAC,IAAY;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACzB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;SAC1C;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC3B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;SACtC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,WAAW,CAAC,IAAY;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;IACvE,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,SAAS,CAAC,GAAG,IAAc;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7C,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,YAAY,CAAC,YAAoB,EAAE,cAAsB;QACrE,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzE,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,aAAa,CAAC,IAAY;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,QAAQ,CAAC,GAAG,EAAE,CAAA;SACf;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACzC,CAAC;CACF;AArED,gCAqEC"}
|
package/dist/path-helper.spec.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pathHelperTests = void 0;
|
|
4
|
-
const path_helper_1 = require("./path-helper");
|
|
5
|
-
/**
|
|
6
|
-
* Path Helper tests
|
|
7
|
-
*/
|
|
8
|
-
exports.pathHelperTests = describe('PathHelper', () => {
|
|
9
|
-
describe('#trimSlashes()', () => {
|
|
10
|
-
it('should trim from the beginning of the segment', () => {
|
|
11
|
-
expect(path_helper_1.PathHelper.trimSlashes('/segment')).toBe('segment');
|
|
12
|
-
});
|
|
13
|
-
it('should trim multiple slashes from the beginning of the segment', () => {
|
|
14
|
-
expect(path_helper_1.PathHelper.trimSlashes('//////segment')).toBe('segment');
|
|
15
|
-
});
|
|
16
|
-
it('should trim from the end of the segment', () => {
|
|
17
|
-
expect(path_helper_1.PathHelper.trimSlashes('segment/')).toBe('segment');
|
|
18
|
-
});
|
|
19
|
-
it('should trim multiple slashes from the end of the segment', () => {
|
|
20
|
-
expect(path_helper_1.PathHelper.trimSlashes('segment///')).toBe('segment');
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
describe('#joinPaths()', () => {
|
|
24
|
-
it('should join with slashes', () => {
|
|
25
|
-
const joined = path_helper_1.PathHelper.joinPaths('path1', 'path2', 'path3');
|
|
26
|
-
expect(joined).toBe('path1/path2/path3');
|
|
27
|
-
});
|
|
28
|
-
it('should remove slashes from the beginning of the segments', () => {
|
|
29
|
-
const joined = path_helper_1.PathHelper.joinPaths('path1', 'path2/', 'path3/');
|
|
30
|
-
expect(joined).toBe('path1/path2/path3');
|
|
31
|
-
});
|
|
32
|
-
it('should remove slashes from the end of the segments', () => {
|
|
33
|
-
const joined = path_helper_1.PathHelper.joinPaths('/path1', '/path2', 'path3/');
|
|
34
|
-
expect(joined).toBe('path1/path2/path3');
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
describe('#isAncestorOf()', () => {
|
|
38
|
-
it('should return true if content is ancestor', () => {
|
|
39
|
-
expect(path_helper_1.PathHelper.isAncestorOf('Root/Example', 'Root/Example/Content1')).toBe(true);
|
|
40
|
-
});
|
|
41
|
-
it('should return true if content is ancestor and ends with a slash', () => {
|
|
42
|
-
expect(path_helper_1.PathHelper.isAncestorOf('Root/Example/', 'Root/Example/Content1')).toBe(true);
|
|
43
|
-
});
|
|
44
|
-
it('should return false if content is not an ancestor', () => {
|
|
45
|
-
expect(path_helper_1.PathHelper.isAncestorOf('Root/Example/', 'Root/Example2/Content1')).toBe(false);
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
describe('#getSegments()', () => {
|
|
49
|
-
it('Should split the path to segments', () => {
|
|
50
|
-
expect(path_helper_1.PathHelper.getSegments("Root/Example/('Content1')")).toEqual(['Root', 'Example', "('Content1')"]);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
describe('#getParentPath()', () => {
|
|
54
|
-
it('Should return the parent path', () => {
|
|
55
|
-
expect(path_helper_1.PathHelper.getParentPath('Root/Example/Content')).toBe('Root/Example');
|
|
56
|
-
});
|
|
57
|
-
it('Should return the path in case of 1 segments', () => {
|
|
58
|
-
expect(path_helper_1.PathHelper.getParentPath('Root')).toBe('Root');
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
//# sourceMappingURL=path-helper.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"path-helper.spec.js","sourceRoot":"","sources":["../src/path-helper.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/sleep-async.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sleepAsync = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Returns a simple promise that will be resolved within a discrete timeout
|
|
6
|
-
*
|
|
7
|
-
* @param timeout The timeout in millisecs
|
|
8
|
-
*/
|
|
9
|
-
const sleepAsync = (timeout = 250) => new Promise((resolve) => setTimeout(() => {
|
|
10
|
-
resolve();
|
|
11
|
-
}, timeout));
|
|
12
|
-
exports.sleepAsync = sleepAsync;
|
|
13
|
-
//# sourceMappingURL=sleep-async.js.map
|
package/dist/sleep-async.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sleep-async.js","sourceRoot":"","sources":["../src/sleep-async.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,EAAE,CAC1C,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAC5B,UAAU,CAAC,GAAG,EAAE;IACd,OAAO,EAAE,CAAA;AACX,CAAC,EAAE,OAAO,CAAC,CACZ,CAAA;AALU,QAAA,UAAU,cAKpB"}
|
package/dist/sleep-async.spec.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sleepAsyncTests = void 0;
|
|
4
|
-
const sleep_async_1 = require("./sleep-async");
|
|
5
|
-
/**
|
|
6
|
-
* Tests for async sleep
|
|
7
|
-
*/
|
|
8
|
-
exports.sleepAsyncTests = describe('sleepAsync', () => {
|
|
9
|
-
it('Should return a Promise', () => {
|
|
10
|
-
expect((0, sleep_async_1.sleepAsync)()).toBeInstanceOf(Promise);
|
|
11
|
-
});
|
|
12
|
-
it('Should be resolved in time', async () => {
|
|
13
|
-
await (0, sleep_async_1.sleepAsync)(15);
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
//# sourceMappingURL=sleep-async.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sleep-async.spec.js","sourceRoot":"","sources":["../src/sleep-async.spec.ts"],"names":[],"mappings":";;;AAAA,+CAA0C;AAE1C;;GAEG;AACU,QAAA,eAAe,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACzD,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,IAAA,wBAAU,GAAE,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,IAAA,wBAAU,EAAC,EAAE,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/sort-by.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.compareBy = void 0;
|
|
4
|
-
const compareBy = (entity1, entity2, field, direction) => {
|
|
5
|
-
const a = direction === 'asc' ? entity1 : entity2;
|
|
6
|
-
const b = direction === 'asc' ? entity2 : entity1;
|
|
7
|
-
if (a[field] < b[field]) {
|
|
8
|
-
return -1;
|
|
9
|
-
}
|
|
10
|
-
if (a[field] > b[field]) {
|
|
11
|
-
return 1;
|
|
12
|
-
}
|
|
13
|
-
return 0;
|
|
14
|
-
};
|
|
15
|
-
exports.compareBy = compareBy;
|
|
16
|
-
Array.prototype.sortBy = function (key, direction = 'asc') {
|
|
17
|
-
return this.sort((a, b) => (0, exports.compareBy)(a, b, key, direction));
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=sort-by.js.map
|
package/dist/sort-by.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sort-by.js","sourceRoot":"","sources":["../src/sort-by.ts"],"names":[],"mappings":";;;AAYO,MAAM,SAAS,GAAG,CAAuB,OAAU,EAAE,OAAU,EAAE,KAAQ,EAAE,SAAyB,EAAE,EAAE;IAC7G,MAAM,CAAC,GAAG,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA;IACjD,MAAM,CAAC,GAAG,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA;IACjD,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,CAAC,CAAC,CAAA;KACV;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;QACvB,OAAO,CAAC,CAAA;KACT;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAVY,QAAA,SAAS,aAUrB;AAED,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,GAAG,EAAE,SAAS,GAAG,KAAK;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;AAC7D,CAAC,CAAA"}
|
package/dist/sort-by.spec.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
require("./sort-by");
|
|
4
|
-
describe('sortBy', () => {
|
|
5
|
-
it('Should sort by ascending by default', () => {
|
|
6
|
-
const arr = [{ v: 5 }, { v: 3 }, { v: 4 }];
|
|
7
|
-
expect(arr.sortBy('v')).toEqual([{ v: 3 }, { v: 4 }, { v: 5 }]);
|
|
8
|
-
});
|
|
9
|
-
it('Should sort by ascending', () => {
|
|
10
|
-
const arr = [{ v: 5 }, { v: 4 }, { v: 3 }];
|
|
11
|
-
expect(arr.sortBy('v', 'asc')).toEqual([{ v: 3 }, { v: 4 }, { v: 5 }]);
|
|
12
|
-
});
|
|
13
|
-
it('Should sort by descending', () => {
|
|
14
|
-
const arr = [{ v: 3 }, { v: 4 }, { v: 5 }];
|
|
15
|
-
expect(arr.sortBy('v', 'desc')).toEqual([{ v: 5 }, { v: 4 }, { v: 3 }]);
|
|
16
|
-
});
|
|
17
|
-
it('Should handle equalities', () => {
|
|
18
|
-
const arr = [{ v: 3 }, { v: 4 }, { v: 4 }];
|
|
19
|
-
expect(arr.sortBy('v', 'desc')).toEqual([{ v: 4 }, { v: 4 }, { v: 3 }]);
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
//# sourceMappingURL=sort-by.spec.js.map
|
package/dist/sort-by.spec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sort-by.spec.js","sourceRoot":"","sources":["../src/sort-by.spec.ts"],"names":[],"mappings":";;AAAA,qBAAkB;AAClB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/trace.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Trace = void 0;
|
|
4
|
-
const observable_value_1 = require("./observable-value");
|
|
5
|
-
/**
|
|
6
|
-
* Helper class that can be used to trace method calls programmatically
|
|
7
|
-
*
|
|
8
|
-
* Usage example:
|
|
9
|
-
* ```ts
|
|
10
|
-
* const methodTracer: IDisposable = Trace.method({
|
|
11
|
-
* object: myObjectInstance, // You can define an object constructor for static methods as well
|
|
12
|
-
* method: myObjectInstance.method, // The method to be tracked
|
|
13
|
-
* isAsync: true, // if you set to async, method finished will be *await*-ed
|
|
14
|
-
* onCalled: (traceData) => {
|
|
15
|
-
* console.log("Method called:", traceData)
|
|
16
|
-
* },
|
|
17
|
-
* onFinished: (traceData) => {
|
|
18
|
-
* console.log("Method call finished:", traceData)
|
|
19
|
-
* },
|
|
20
|
-
* onError: (traceData) => {
|
|
21
|
-
* console.log("Method throwed an error:", traceData)
|
|
22
|
-
* }
|
|
23
|
-
* });
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
class Trace {
|
|
27
|
-
static getMethodTrace(object, method) {
|
|
28
|
-
const objectTrace = this.objectTraces.get(object);
|
|
29
|
-
return objectTrace.methodMappings.get(method.name);
|
|
30
|
-
}
|
|
31
|
-
static traceStart(methodTrace, args) {
|
|
32
|
-
const startDateTime = new Date();
|
|
33
|
-
const traceValue = {
|
|
34
|
-
methodArguments: args,
|
|
35
|
-
startDateTime,
|
|
36
|
-
};
|
|
37
|
-
methodTrace.callObservable.setValue(traceValue);
|
|
38
|
-
return traceValue;
|
|
39
|
-
}
|
|
40
|
-
static traceFinished(methodTrace, args, callTrace, returned) {
|
|
41
|
-
const finishedTrace = {
|
|
42
|
-
methodArguments: args,
|
|
43
|
-
startDateTime: callTrace.startDateTime,
|
|
44
|
-
finishedDateTime: new Date(),
|
|
45
|
-
returned,
|
|
46
|
-
};
|
|
47
|
-
methodTrace.finishedObservable.setValue(finishedTrace);
|
|
48
|
-
}
|
|
49
|
-
static traceError(methodTrace, args, callTrace, error) {
|
|
50
|
-
const errorTrace = {
|
|
51
|
-
methodArguments: args,
|
|
52
|
-
startDateTime: callTrace.startDateTime,
|
|
53
|
-
errorDateTime: new Date(),
|
|
54
|
-
error,
|
|
55
|
-
};
|
|
56
|
-
methodTrace.errorObservable.setValue(errorTrace);
|
|
57
|
-
return errorTrace;
|
|
58
|
-
}
|
|
59
|
-
static callMethod(object, method, args) {
|
|
60
|
-
const methodTrace = this.getMethodTrace(object, method);
|
|
61
|
-
const start = this.traceStart(methodTrace, args);
|
|
62
|
-
try {
|
|
63
|
-
const returned = methodTrace.originalMethod.call(object, ...args);
|
|
64
|
-
this.traceFinished(methodTrace, args, start, returned);
|
|
65
|
-
return returned;
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
this.traceError(methodTrace, args, start, error);
|
|
69
|
-
throw error;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
static async callMethodAsync(object, method, args) {
|
|
73
|
-
const methodTrace = this.getMethodTrace(object, method);
|
|
74
|
-
const start = this.traceStart(methodTrace, args);
|
|
75
|
-
try {
|
|
76
|
-
const returned = await methodTrace.originalMethod.call(object, ...args);
|
|
77
|
-
this.traceFinished(methodTrace, args, start, returned);
|
|
78
|
-
return returned;
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
this.traceError(methodTrace, args, start, error);
|
|
82
|
-
throw error;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Creates an observer that will be observe method calls, finishes and errors
|
|
87
|
-
*
|
|
88
|
-
* @param options The options object for the trace
|
|
89
|
-
* @returns the trace object that can be disposed after usage
|
|
90
|
-
*/
|
|
91
|
-
static method(options) {
|
|
92
|
-
// add object mapping
|
|
93
|
-
if (!this.objectTraces.has(options.object)) {
|
|
94
|
-
this.objectTraces.set(options.object, {
|
|
95
|
-
methodMappings: new Map(),
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
// setup override if needed
|
|
99
|
-
if (!options.method.isTraced) {
|
|
100
|
-
const overriddenMethod = options.isAsync
|
|
101
|
-
? (...args) => this.callMethodAsync(options.object, options.method, args)
|
|
102
|
-
: (...args) => this.callMethod(options.object, options.method, args);
|
|
103
|
-
Object.defineProperty(overriddenMethod, 'name', { value: options.method.name });
|
|
104
|
-
Object.defineProperty(overriddenMethod, 'isTraced', { value: options.method.name });
|
|
105
|
-
options.object[options.method.name] = overriddenMethod;
|
|
106
|
-
}
|
|
107
|
-
const objectTrace = this.objectTraces.get(options.object);
|
|
108
|
-
// add method mapping if needed
|
|
109
|
-
if (!objectTrace.methodMappings.has(options.method.name)) {
|
|
110
|
-
objectTrace.methodMappings.set(options.method.name, {
|
|
111
|
-
originalMethod: options.method,
|
|
112
|
-
callObservable: new observable_value_1.ObservableValue(),
|
|
113
|
-
finishedObservable: new observable_value_1.ObservableValue(),
|
|
114
|
-
errorObservable: new observable_value_1.ObservableValue(),
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
const methodTrace = objectTrace.methodMappings.get(options.method.name);
|
|
118
|
-
const callbacks = [
|
|
119
|
-
options.onCalled && methodTrace.callObservable.subscribe(options.onCalled),
|
|
120
|
-
options.onFinished && methodTrace.finishedObservable.subscribe(options.onFinished),
|
|
121
|
-
options.onError && methodTrace.errorObservable.subscribe(options.onError),
|
|
122
|
-
];
|
|
123
|
-
// Subscribe and return the observer
|
|
124
|
-
return {
|
|
125
|
-
dispose: () => callbacks.forEach((c) => c && c.dispose()),
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
Trace.objectTraces = new Map();
|
|
130
|
-
exports.Trace = Trace;
|
|
131
|
-
//# sourceMappingURL=trace.js.map
|
package/dist/trace.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
|