@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.
Files changed (92) hide show
  1. package/package.json +21 -8
  2. package/src/debounce.spec.ts +20 -17
  3. package/src/deep-merge.spec.ts +1 -0
  4. package/src/deep-merge.ts +0 -1
  5. package/src/disposable.spec.ts +23 -15
  6. package/src/disposable.ts +0 -2
  7. package/src/observable-value.spec.ts +47 -20
  8. package/src/observable-value.ts +4 -7
  9. package/src/path-helper.spec.ts +1 -0
  10. package/src/path-helper.ts +0 -5
  11. package/src/sleep-async.spec.ts +1 -0
  12. package/src/sleep-async.ts +0 -1
  13. package/src/sort-by.spec.ts +1 -0
  14. package/src/trace.spec.ts +48 -26
  15. package/src/trace.ts +0 -1
  16. package/src/tuple.spec.ts +1 -0
  17. package/src/tuple.ts +0 -1
  18. package/src/value-observer.ts +1 -2
  19. package/types/deep-merge.d.ts +0 -1
  20. package/types/deep-merge.d.ts.map +1 -1
  21. package/types/disposable.d.ts +0 -2
  22. package/types/disposable.d.ts.map +1 -1
  23. package/types/observable-value.d.ts +1 -7
  24. package/types/observable-value.d.ts.map +1 -1
  25. package/types/path-helper.d.ts +0 -5
  26. package/types/path-helper.d.ts.map +1 -1
  27. package/types/sleep-async.d.ts +0 -1
  28. package/types/sleep-async.d.ts.map +1 -1
  29. package/types/trace.d.ts +0 -1
  30. package/types/trace.d.ts.map +1 -1
  31. package/types/tuple.d.ts +0 -1
  32. package/types/tuple.d.ts.map +1 -1
  33. package/types/value-observer.d.ts +1 -2
  34. package/types/value-observer.d.ts.map +1 -1
  35. package/dist/debounce.js +0 -23
  36. package/dist/debounce.js.map +0 -1
  37. package/dist/debounce.spec.js +0 -40
  38. package/dist/debounce.spec.js.map +0 -1
  39. package/dist/deep-merge.js +0 -34
  40. package/dist/deep-merge.js.map +0 -1
  41. package/dist/deep-merge.spec.js +0 -31
  42. package/dist/deep-merge.spec.js.map +0 -1
  43. package/dist/disposable.js +0 -63
  44. package/dist/disposable.js.map +0 -1
  45. package/dist/disposable.spec.js +0 -112
  46. package/dist/disposable.spec.js.map +0 -1
  47. package/dist/index.js +0 -27
  48. package/dist/index.js.map +0 -1
  49. package/dist/observable-value.js +0 -117
  50. package/dist/observable-value.js.map +0 -1
  51. package/dist/observable-value.spec.js +0 -109
  52. package/dist/observable-value.spec.js.map +0 -1
  53. package/dist/path-helper.js +0 -75
  54. package/dist/path-helper.js.map +0 -1
  55. package/dist/path-helper.spec.js +0 -62
  56. package/dist/path-helper.spec.js.map +0 -1
  57. package/dist/sleep-async.js +0 -13
  58. package/dist/sleep-async.js.map +0 -1
  59. package/dist/sleep-async.spec.js +0 -16
  60. package/dist/sleep-async.spec.js.map +0 -1
  61. package/dist/sort-by.js +0 -19
  62. package/dist/sort-by.js.map +0 -1
  63. package/dist/sort-by.spec.js +0 -22
  64. package/dist/sort-by.spec.js.map +0 -1
  65. package/dist/trace.js +0 -131
  66. package/dist/trace.js.map +0 -1
  67. package/dist/trace.spec.js +0 -169
  68. package/dist/trace.spec.js.map +0 -1
  69. package/dist/tuple.js +0 -12
  70. package/dist/tuple.js.map +0 -1
  71. package/dist/tuple.spec.js +0 -9
  72. package/dist/tuple.spec.js.map +0 -1
  73. package/dist/value-observer.js +0 -45
  74. package/dist/value-observer.js.map +0 -1
  75. package/types/debounce.spec.d.ts +0 -5
  76. package/types/debounce.spec.d.ts.map +0 -1
  77. package/types/deep-merge.spec.d.ts +0 -2
  78. package/types/deep-merge.spec.d.ts.map +0 -1
  79. package/types/disposable.spec.d.ts +0 -22
  80. package/types/disposable.spec.d.ts.map +0 -1
  81. package/types/observable-value.spec.d.ts +0 -5
  82. package/types/observable-value.spec.d.ts.map +0 -1
  83. package/types/path-helper.spec.d.ts +0 -5
  84. package/types/path-helper.spec.d.ts.map +0 -1
  85. package/types/sleep-async.spec.d.ts +0 -5
  86. package/types/sleep-async.spec.d.ts.map +0 -1
  87. package/types/sort-by.spec.d.ts +0 -2
  88. package/types/sort-by.spec.d.ts.map +0 -1
  89. package/types/trace.spec.d.ts +0 -2
  90. package/types/trace.spec.d.ts.map +0 -1
  91. package/types/tuple.spec.d.ts +0 -2
  92. package/types/tuple.spec.d.ts.map +0 -1
@@ -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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"}
@@ -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
@@ -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"}
@@ -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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"}
@@ -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
@@ -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"}
@@ -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
@@ -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"}
@@ -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
@@ -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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"}