@furystack/utils 4.0.9 → 4.0.11

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 (53) hide show
  1. package/esm/debounce.js.map +1 -1
  2. package/esm/debounce.spec.d.ts +5 -0
  3. package/esm/debounce.spec.d.ts.map +1 -0
  4. package/esm/debounce.spec.js +38 -0
  5. package/esm/debounce.spec.js.map +1 -0
  6. package/esm/deep-merge.js.map +1 -1
  7. package/esm/deep-merge.spec.d.ts +2 -0
  8. package/esm/deep-merge.spec.d.ts.map +1 -0
  9. package/esm/deep-merge.spec.js +30 -0
  10. package/esm/deep-merge.spec.js.map +1 -0
  11. package/esm/disposable.js.map +1 -1
  12. package/esm/disposable.spec.d.ts +22 -0
  13. package/esm/disposable.spec.d.ts.map +1 -0
  14. package/esm/disposable.spec.js +118 -0
  15. package/esm/disposable.spec.js.map +1 -0
  16. package/esm/observable-value.js.map +1 -1
  17. package/esm/observable-value.spec.d.ts +5 -0
  18. package/esm/observable-value.spec.d.ts.map +1 -0
  19. package/esm/observable-value.spec.js +123 -0
  20. package/esm/observable-value.spec.js.map +1 -0
  21. package/esm/path-helper.js.map +1 -1
  22. package/esm/path-helper.spec.d.ts +5 -0
  23. package/esm/path-helper.spec.d.ts.map +1 -0
  24. package/esm/path-helper.spec.js +60 -0
  25. package/esm/path-helper.spec.js.map +1 -0
  26. package/esm/sleep-async.spec.d.ts +5 -0
  27. package/esm/sleep-async.spec.d.ts.map +1 -0
  28. package/esm/sleep-async.spec.js +14 -0
  29. package/esm/sleep-async.spec.js.map +1 -0
  30. package/esm/sort-by.d.ts +1 -1
  31. package/esm/sort-by.js.map +1 -1
  32. package/esm/sort-by.spec.d.ts +2 -0
  33. package/esm/sort-by.spec.d.ts.map +1 -0
  34. package/esm/sort-by.spec.js +21 -0
  35. package/esm/sort-by.spec.js.map +1 -0
  36. package/esm/trace.js.map +1 -1
  37. package/esm/trace.spec.d.ts +2 -0
  38. package/esm/trace.spec.d.ts.map +1 -0
  39. package/esm/trace.spec.js +184 -0
  40. package/esm/trace.spec.js.map +1 -0
  41. package/esm/tuple.spec.d.ts +2 -0
  42. package/esm/tuple.spec.d.ts.map +1 -0
  43. package/esm/tuple.spec.js +8 -0
  44. package/esm/tuple.spec.js.map +1 -0
  45. package/package.json +3 -3
  46. package/src/debounce.spec.ts +2 -2
  47. package/src/deep-merge.spec.ts +2 -2
  48. package/src/disposable.spec.ts +2 -2
  49. package/src/observable-value.spec.ts +1 -1
  50. package/src/path-helper.spec.ts +1 -1
  51. package/src/sleep-async.spec.ts +1 -1
  52. package/src/trace.spec.ts +1 -1
  53. package/src/tuple.spec.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"debounce.js","sourceRoot":"","sources":["../src/debounce.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAoC,MAAoC,EAAE,UAAU,GAAG,GAAG,EAAE,EAAE;IACpH,IAAI,OAAkD,CAAA;IACtD,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE;QACzB,IAAI,OAAO,EAAE;YACX,YAAY,CAAC,OAAO,CAAC,CAAA;SACtB;QACD,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;YACf,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAA;YAChC,OAAO,GAAG,SAAS,CAAA;QACrB,CAAC,EAAE,UAAU,CAAC,CAAA;IAChB,CAAC,CAAiC,CAAA;AACpC,CAAC,CAAA"}
1
+ {"version":3,"file":"debounce.js","sourceRoot":"","sources":["../src/debounce.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAoC,MAAoC,EAAE,UAAU,GAAG,GAAG,EAAE,EAAE;IACpH,IAAI,OAAkD,CAAA;IACtD,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE;QACzB,IAAI,OAAO,EAAE,CAAC;YACZ,YAAY,CAAC,OAAO,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;YACf,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAA;YAChC,OAAO,GAAG,SAAS,CAAA;QACrB,CAAC,EAAE,UAAU,CAAC,CAAA;IAChB,CAAC,CAAiC,CAAA;AACpC,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for debounce
3
+ */
4
+ export declare const debounceTests: import("@vitest/runner/dist/tasks-e594cd24.js").f<{}>;
5
+ //# sourceMappingURL=debounce.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.spec.d.ts","sourceRoot":"","sources":["../src/debounce.spec.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,aAAa,uDAkCxB,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { debounce } from './debounce.js';
3
+ import { sleepAsync } from './sleep-async.js';
4
+ /**
5
+ * Tests for debounce
6
+ */
7
+ export const debounceTests = describe('debounce', () => {
8
+ it('Simple method execution', async () => {
9
+ const method = vi.fn();
10
+ await new Promise((resolve) => {
11
+ const debouncedMethod = debounce(() => {
12
+ resolve();
13
+ method();
14
+ });
15
+ debouncedMethod();
16
+ });
17
+ expect(method).toBeCalledTimes(1);
18
+ });
19
+ it('Should be executed once when triggered multiple time in a given range', async () => {
20
+ const method = vi.fn();
21
+ const debouncedMethod = debounce(method, 10);
22
+ for (let index = 0; index < 10; index++) {
23
+ debouncedMethod();
24
+ }
25
+ await sleepAsync(300);
26
+ expect(method).toBeCalledTimes(1);
27
+ });
28
+ it('Should be executed multiple times when triggered multiple times out of a a given range', async () => {
29
+ const method = vi.fn();
30
+ const debouncedMethod = debounce(method, 10);
31
+ for (let index = 0; index < 10; index++) {
32
+ debouncedMethod();
33
+ await sleepAsync(15);
34
+ }
35
+ expect(method).toBeCalledTimes(10);
36
+ });
37
+ });
38
+ //# sourceMappingURL=debounce.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.spec.js","sourceRoot":"","sources":["../src/debounce.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QACtB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,EAAE;gBACpC,OAAO,EAAE,CAAA;gBACT,MAAM,EAAE,CAAA;YACV,CAAC,CAAC,CAAA;YACF,eAAe,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QAEtB,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;YACxC,eAAe,EAAE,CAAA;QACnB,CAAC;QACD,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;QACrB,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;QACvG,MAAM,MAAM,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;QAEtB,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;YACxC,eAAe,EAAE,CAAA;YACjB,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;QACtB,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"deep-merge.js","sourceRoot":"","sources":["../src/deep-merge.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,MAAS,EAAE,GAAG,OAA0C,EAAE,EAAE;IACvF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,OAAO,MAAM,CAAA;KACd;IACD,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;IAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,IAAI,CAAC,MAAM,EAAE;YACX,SAAQ;SACT;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAmB,CAAA;QAClD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;gBACzG,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;aAClD;iBAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;gBACpC,CAAC;gBAAC,MAAM,CAAC,GAAG,CAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;aACpC;SACF;KACF;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"deep-merge.js","sourceRoot":"","sources":["../src/deep-merge.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,MAAS,EAAE,GAAG,OAA0C,EAAE,EAAE;IACvF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAA;IAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAQ;QACV,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAmB,CAAA;QAClD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1G,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YACnD,CAAC;iBAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBACrC,CAAC;gBAAC,MAAM,CAAC,GAAG,CAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=deep-merge.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-merge.spec.d.ts","sourceRoot":"","sources":["../src/deep-merge.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { deepMerge } from './deep-merge.js';
3
+ describe('DeepMerge tests', () => {
4
+ it('Should return the target object if no merge sources are defined', () => {
5
+ const obj = { a: 1 };
6
+ expect(deepMerge(obj)).toBe(obj);
7
+ });
8
+ it('Should merge simple values in one level', () => {
9
+ expect(deepMerge({ a: 1, b: 0, c: 0 }, { b: 2 }, { c: 3 })).toEqual({ a: 1, b: 2, c: 3 });
10
+ });
11
+ it('Should skip falsy sources', () => {
12
+ expect(deepMerge({ a: 1, b: 0, c: 0 }, null, { b: 2 }, { c: 3 })).toEqual({ a: 1, b: 2, c: 3 });
13
+ });
14
+ it('Should override arrays', () => {
15
+ expect(deepMerge({ a: [0, 1, 2] }, { a: [1, 2, 3] })).toEqual({ a: [1, 2, 3] });
16
+ });
17
+ it('Should merge nested objects', () => {
18
+ expect(deepMerge({ a: 1, b: { a: 1, b: 2 } }, { b: { a: 3 } })).toEqual({ a: 1, b: { a: 3, b: 2 } });
19
+ });
20
+ it('Should respect falsy but defined values (false)', () => {
21
+ expect(deepMerge({ a: true }, { a: false })).toEqual({ a: false });
22
+ });
23
+ it('Should respect falsy but defined values (empty string)', () => {
24
+ expect(deepMerge({ a: 'asdasd' }, { a: '' })).toEqual({ a: '' });
25
+ });
26
+ it('Should respect falsy but defined values (zero)', () => {
27
+ expect(deepMerge({ a: 654 }, { a: 0 })).toEqual({ a: 0 });
28
+ });
29
+ });
30
+ //# sourceMappingURL=deep-merge.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-merge.spec.js","sourceRoot":"","sources":["../src/deep-merge.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"disposable.js","sourceRoot":"","sources":["../src/disposable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM;AAaN;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAiC,QAAW,EAAE,QAA4B,EAAE,EAAE;IACjG,IAAI;QACF,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAA;KAC1B;YAAS;QACR,QAAQ,CAAC,OAAO,EAAE,CAAA;KACnB;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,QAAW,EACX,QAAqC,EACrC,EAAE;IACF,IAAI;QACF,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;KAChC;YAAS;QACR,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;QACxC,IAAI,aAAa,YAAY,OAAO,EAAE;YACpC,MAAM,aAAa,CAAA;SACpB;KACF;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"disposable.js","sourceRoot":"","sources":["../src/disposable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM;AAaN;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAiC,QAAW,EAAE,QAA4B,EAAE,EAAE;IACjG,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC3B,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,OAAO,EAAE,CAAA;IACpB,CAAC;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,QAAW,EACX,QAAqC,EACrC,EAAE;IACF,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;YAAS,CAAC;QACT,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;QACxC,IAAI,aAAa,YAAY,OAAO,EAAE,CAAC;YACrC,MAAM,aAAa,CAAA;QACrB,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,22 @@
1
+ import type { Disposable } from './disposable.js';
2
+ export declare class MockDisposable implements Disposable {
3
+ private disposed;
4
+ isDisposed: () => boolean;
5
+ /**
6
+ * Disposes the MockDisposable instance, calls the dispose callback
7
+ */
8
+ dispose: () => void;
9
+ /**
10
+ * Mock to throw an error
11
+ */
12
+ whooops(): void;
13
+ /**
14
+ * Defines the callback that will be called on dispose
15
+ */
16
+ disposeCallback: () => void;
17
+ }
18
+ /**
19
+ * Unit tests for disposables
20
+ */
21
+ export declare const disposableTests: import("@vitest/runner/dist/tasks-e594cd24.js").f<{}>;
22
+ //# sourceMappingURL=disposable.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disposable.spec.d.ts","sourceRoot":"","sources":["../src/disposable.spec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAQ;IACjB,UAAU,gBAAsB;IACvC;;OAEG;IACI,OAAO,aAGb;IAED;;OAEG;IACI,OAAO;IAId;;OAEG;IACI,eAAe,EAAG,MAAM,IAAI,CAAA;CACpC;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,uDAkG1B,CAAA"}
@@ -0,0 +1,118 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { using, usingAsync } from './disposable.js';
3
+ export class MockDisposable {
4
+ disposed = false;
5
+ isDisposed = () => this.disposed;
6
+ /**
7
+ * Disposes the MockDisposable instance, calls the dispose callback
8
+ */
9
+ dispose = () => {
10
+ this.disposed = true;
11
+ this.disposeCallback && this.disposeCallback();
12
+ };
13
+ /**
14
+ * Mock to throw an error
15
+ */
16
+ whooops() {
17
+ throw Error('Whooops');
18
+ }
19
+ /**
20
+ * Defines the callback that will be called on dispose
21
+ */
22
+ disposeCallback;
23
+ }
24
+ /**
25
+ * Unit tests for disposables
26
+ */
27
+ export const disposableTests = describe('Disposable', () => {
28
+ it('Can be constructed', () => {
29
+ using(new MockDisposable(), (d) => {
30
+ expect(d).toBeInstanceOf(MockDisposable);
31
+ });
32
+ });
33
+ it('Should return a value from a callback', () => {
34
+ const returned = using(new MockDisposable(), () => {
35
+ return 1;
36
+ });
37
+ expect(returned).toBe(1);
38
+ });
39
+ it('Should return a value from an async callback', async () => {
40
+ const returned = await usingAsync(new MockDisposable(), async () => {
41
+ return 2;
42
+ });
43
+ expect(returned).toBe(2);
44
+ });
45
+ describe('isDisposed', () => {
46
+ it('should return a correct value before and after disposition', () => {
47
+ const d = new MockDisposable();
48
+ expect(d.isDisposed()).toBe(false);
49
+ d.dispose();
50
+ expect(d.isDisposed()).toBe(true);
51
+ });
52
+ });
53
+ describe('dispose()', () => {
54
+ it('should be called on error', () => {
55
+ const callbackMethod = vi.fn();
56
+ try {
57
+ using(new MockDisposable(), (d) => {
58
+ d.disposeCallback = () => {
59
+ callbackMethod();
60
+ };
61
+ d.whooops();
62
+ });
63
+ }
64
+ catch {
65
+ /** ignore */
66
+ }
67
+ expect(callbackMethod).toBeCalled();
68
+ });
69
+ it('should be called with usingAsync()', async () => {
70
+ const callbackMethod = vi.fn();
71
+ await usingAsync(new MockDisposable(), async (d) => {
72
+ d.disposeCallback = () => {
73
+ callbackMethod();
74
+ };
75
+ return new Promise((resolve) => {
76
+ setTimeout(resolve, 1);
77
+ });
78
+ });
79
+ expect(callbackMethod).toBeCalled();
80
+ });
81
+ it('should be called when async fails', async () => {
82
+ const callbackMethod = vi.fn();
83
+ try {
84
+ await usingAsync(new MockDisposable(), async (d) => {
85
+ d.disposeCallback = () => {
86
+ callbackMethod();
87
+ };
88
+ return new Promise((_resolve, reject) => {
89
+ setTimeout(reject, 1);
90
+ });
91
+ });
92
+ }
93
+ catch (error) {
94
+ /** ignore */
95
+ }
96
+ expect(callbackMethod).toBeCalled();
97
+ });
98
+ it('should await dispose for asyncs with usingAsync()', async () => {
99
+ class AsyncDispose {
100
+ /** flag */
101
+ isDisposed = false;
102
+ /** set isDisposed with a timeout */
103
+ async dispose() {
104
+ await new Promise((resolve) => setTimeout(() => {
105
+ this.isDisposed = true;
106
+ resolve();
107
+ }, 10));
108
+ }
109
+ }
110
+ const asyncDispose = new AsyncDispose();
111
+ await usingAsync(asyncDispose, async () => {
112
+ /** */
113
+ });
114
+ expect(asyncDispose.isDisposed).toBe(true);
115
+ });
116
+ });
117
+ });
118
+ //# sourceMappingURL=disposable.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disposable.spec.js","sourceRoot":"","sources":["../src/disposable.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEnD,MAAM,OAAO,cAAc;IACjB,QAAQ,GAAG,KAAK,CAAA;IACjB,UAAU,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAA;IACvC;;OAEG;IACI,OAAO,GAAG,GAAG,EAAE;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,EAAE,CAAA;IAChD,CAAC,CAAA;IAED;;OAEG;IACI,OAAO;QACZ,MAAM,KAAK,CAAC,SAAS,CAAC,CAAA;IACxB,CAAC;IAED;;OAEG;IACI,eAAe,CAAa;CACpC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACzD,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,KAAK,CAAC,IAAI,cAAc,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAChC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,cAAc,EAAE,EAAE,GAAG,EAAE;YAChD,OAAO,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,cAAc,EAAE,EAAE,KAAK,IAAI,EAAE;YACjE,OAAO,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,CAAC,GAAG,IAAI,cAAc,EAAE,CAAA;YAC9B,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAClC,CAAC,CAAC,OAAO,EAAE,CAAA;YACX,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;YAC9B,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,cAAc,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;oBAChC,CAAC,CAAC,eAAe,GAAG,GAAG,EAAE;wBACvB,cAAc,EAAE,CAAA;oBAClB,CAAC,CAAA;oBACD,CAAC,CAAC,OAAO,EAAE,CAAA;gBACb,CAAC,CAAC,CAAA;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,aAAa;YACf,CAAC;YACD,MAAM,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,CAAA;QACrC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;YAC9B,MAAM,UAAU,CAAC,IAAI,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACjD,CAAC,CAAC,eAAe,GAAG,GAAG,EAAE;oBACvB,cAAc,EAAE,CAAA;gBAClB,CAAC,CAAA;gBACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC7B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBACxB,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,CAAA;QACrC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;YAC9B,IAAI,CAAC;gBACH,MAAM,UAAU,CAAC,IAAI,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACjD,CAAC,CAAC,eAAe,GAAG,GAAG,EAAE;wBACvB,cAAc,EAAE,CAAA;oBAClB,CAAC,CAAA;oBACD,OAAO,IAAI,OAAO,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;wBACtC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;oBACvB,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,aAAa;YACf,CAAC;YACD,MAAM,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,CAAA;QACrC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,YAAY;gBAChB,WAAW;gBACJ,UAAU,GAAG,KAAK,CAAA;gBACzB,oCAAoC;gBAC7B,KAAK,CAAC,OAAO;oBAClB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAClC,UAAU,CAAC,GAAG,EAAE;wBACd,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;wBACtB,OAAO,EAAE,CAAA;oBACX,CAAC,EAAE,EAAE,CAAC,CACP,CAAA;gBACH,CAAC;aACF;YAED,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;YACvC,MAAM,UAAU,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;gBACxC,MAAM;YACR,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"observable-value.js","sourceRoot":"","sources":["../src/observable-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD;;GAEG;AACH,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD;QACE,KAAK,CAAC,6BAA6B,CAAC,CAAA;IACtC,CAAC;CACF;AAOD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,eAAe;IAC1B,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEO,WAAW,GAAG,KAAK,CAAA;IAE3B;;OAEG;IACI,OAAO;QACZ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IACzB,CAAC;IACO,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAA;IAC5C,YAAY,CAAI;IAExB;;;;;OAKG;IACI,SAAS,CAAC,QAAgC,EAAE,OAAO,GAAG,KAAK;QAChE,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,IAAI,8BAA8B,EAAE,CAAA;SAC3C;QACD,MAAM,QAAQ,GAAG,IAAI,aAAa,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;;;;OAIG;IACI,WAAW,CAAC,QAA0B;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,IAAI,8BAA8B,EAAE,CAAA;SAC3C;QACD,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED;;;OAGG;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;;;OAGG;IACI,YAAY;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAoC,CAAA;IAC/D,CAAC;IAED;;OAEG;IACH,YAAY,YAAgB;QAC1B,IAAI,YAAY,KAAK,SAAS,EAAE;YAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;SACjC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"observable-value.js","sourceRoot":"","sources":["../src/observable-value.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD;;GAEG;AACH,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD;QACE,KAAK,CAAC,6BAA6B,CAAC,CAAA;IACtC,CAAC;CACF;AAOD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,eAAe;IAC1B,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAEO,WAAW,GAAG,KAAK,CAAA;IAE3B;;OAEG;IACI,OAAO;QACZ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IACzB,CAAC;IACO,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAA;IAC5C,YAAY,CAAI;IAExB;;;;;OAKG;IACI,SAAS,CAAC,QAAgC,EAAE,OAAO,GAAG,KAAK;QAChE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,8BAA8B,EAAE,CAAA;QAC5C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAI,IAAI,EAAE,QAAQ,CAAC,CAAA;QACrD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5B,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC7B,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;;;OAIG;IACI,WAAW,CAAC,QAA0B;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,8BAA8B,EAAE,CAAA;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IAED;;;OAGG;IACI,QAAQ,CAAC,QAAW;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,8BAA8B,EAAE,CAAA;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAA;YAC5B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC1C,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,YAAY;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAoC,CAAA;IAC/D,CAAC;IAED;;OAEG;IACH,YAAY,YAAgB;QAC1B,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAClC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Observable Value tests
3
+ */
4
+ export declare const observableTests: import("@vitest/runner/dist/tasks-e594cd24.js").f<{}>;
5
+ //# sourceMappingURL=observable-value.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable-value.spec.d.ts","sourceRoot":"","sources":["../src/observable-value.spec.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,eAAe,uDAyI1B,CAAA"}
@@ -0,0 +1,123 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { ObservableValue } from './observable-value.js';
3
+ /**
4
+ * Observable Value tests
5
+ */
6
+ export const observableTests = describe('Observable', () => {
7
+ it('should be constructed without initial value', () => {
8
+ const v = new ObservableValue();
9
+ const doneCallback = vi.fn();
10
+ v.subscribe(() => {
11
+ expect(v.getValue()).toBe(undefined);
12
+ doneCallback();
13
+ }, true);
14
+ expect(v).toBeInstanceOf(ObservableValue);
15
+ expect(doneCallback).toBeCalled();
16
+ });
17
+ it('should be constructed with initial value', () => {
18
+ const v = new ObservableValue(1);
19
+ const doneCallback = vi.fn();
20
+ v.subscribe(() => {
21
+ expect(v.getValue()).toBe(1);
22
+ doneCallback();
23
+ }, true);
24
+ expect(doneCallback).toBeCalled();
25
+ });
26
+ describe('Subscription callback', () => {
27
+ it('should be triggered only when a value is changed', () => {
28
+ const v = new ObservableValue(1);
29
+ const doneCallback = vi.fn();
30
+ v.subscribe(() => {
31
+ expect(v.getValue()).toBe(2);
32
+ doneCallback();
33
+ }, false);
34
+ v.setValue(1);
35
+ v.setValue(1);
36
+ v.setValue(2);
37
+ expect(doneCallback).toBeCalledTimes(1);
38
+ });
39
+ it('should be triggered only on change when getLast is false', () => {
40
+ const v = new ObservableValue(1);
41
+ const doneCallback = vi.fn();
42
+ v.subscribe((value) => {
43
+ expect(value).toBe(2);
44
+ doneCallback();
45
+ }, false);
46
+ v.setValue(2);
47
+ expect(doneCallback).toBeCalledTimes(1);
48
+ });
49
+ });
50
+ describe('Unsubscribe', () => {
51
+ it('should remove the subscription on unsubscribe()', () => {
52
+ const shouldNotCall = vi.fn();
53
+ const doneCallback = vi.fn((value) => {
54
+ expect(value).toBe(2);
55
+ });
56
+ const v = new ObservableValue(1);
57
+ const observer1 = v.subscribe(shouldNotCall);
58
+ v.subscribe(doneCallback);
59
+ v.unsubscribe(observer1);
60
+ v.setValue(2);
61
+ expect(doneCallback).toBeCalledTimes(1);
62
+ expect(shouldNotCall).not.toBeCalled();
63
+ });
64
+ it('should remove the subscription on Observable dispose', () => {
65
+ const callback1 = () => {
66
+ /** */
67
+ };
68
+ const callback2 = () => {
69
+ /** */
70
+ };
71
+ const v = new ObservableValue(1);
72
+ v.subscribe(callback1);
73
+ v.subscribe(callback2);
74
+ expect(v.getObservers().length).toBe(2);
75
+ v.dispose();
76
+ expect(v.getObservers().length).toBe(0);
77
+ });
78
+ it('should remove the subscription on Observer dispose', () => {
79
+ const callback1 = () => {
80
+ /** */
81
+ };
82
+ const v = new ObservableValue(1);
83
+ const observer = v.subscribe(callback1);
84
+ expect(v.getObservers().length).toBe(1);
85
+ observer.dispose();
86
+ expect(v.getObservers().length).toBe(0);
87
+ });
88
+ it('should throw an error for setValue() when the observer has been disposed', () => {
89
+ const v = new ObservableValue(1);
90
+ v.dispose();
91
+ expect(() => v.setValue(3)).toThrowError('Observable already disposed');
92
+ });
93
+ it('should throw an error for getValue() when the observer has been disposed', () => {
94
+ const v = new ObservableValue(1);
95
+ v.dispose();
96
+ expect(() => v.getValue()).toThrowError('Observable already disposed');
97
+ });
98
+ it('should throw an error for subscribe() when the observer has been disposed', () => {
99
+ const v = new ObservableValue(1);
100
+ v.dispose();
101
+ expect(() => v.subscribe(() => {
102
+ /** */
103
+ })).toThrowError('Observable already disposed');
104
+ });
105
+ it('should remove the subscription only from the disposed Observer', () => {
106
+ const doneCallback = vi.fn();
107
+ class Alma {
108
+ Callback() {
109
+ doneCallback();
110
+ }
111
+ }
112
+ const v = new ObservableValue(1);
113
+ const observer = v.subscribe(new Alma().Callback);
114
+ v.subscribe(new Alma().Callback);
115
+ expect(v.getObservers().length).toBe(2);
116
+ observer.dispose();
117
+ expect(v.getObservers().length).toBe(1);
118
+ v.setValue(3);
119
+ expect(doneCallback).toBeCalledTimes(1);
120
+ });
121
+ });
122
+ });
123
+ //# sourceMappingURL=observable-value.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observable-value.spec.js","sourceRoot":"","sources":["../src/observable-value.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"path-helper.js","sourceRoot":"","sources":["../src/path-helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,UAAU;IACrB;;;;OAIG;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;;;;;OAKG;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;;;;OAIG;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;;;;;OAKG;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;;;;;;;OAOG;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"}
1
+ {"version":3,"file":"path-helper.js","sourceRoot":"","sources":["../src/path-helper.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,UAAU;IACrB;;;;OAIG;IACI,MAAM,CAAC,WAAW,CAAC,IAAY;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;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;;;;OAIG;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;;;;;OAKG;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;;;;;;;OAOG;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,CAAC;YACxB,QAAQ,CAAC,GAAG,EAAE,CAAA;QAChB,CAAC;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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Path Helper tests
3
+ */
4
+ export declare const pathHelperTests: import("@vitest/runner/dist/tasks-e594cd24.js").f<{}>;
5
+ //# sourceMappingURL=path-helper.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-helper.spec.d.ts","sourceRoot":"","sources":["../src/path-helper.spec.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,eAAe,uDAiE1B,CAAA"}
@@ -0,0 +1,60 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { PathHelper } from './path-helper.js';
3
+ /**
4
+ * Path Helper tests
5
+ */
6
+ export const pathHelperTests = describe('PathHelper', () => {
7
+ describe('#trimSlashes()', () => {
8
+ it('should trim from the beginning of the segment', () => {
9
+ expect(PathHelper.trimSlashes('/segment')).toBe('segment');
10
+ });
11
+ it('should trim multiple slashes from the beginning of the segment', () => {
12
+ expect(PathHelper.trimSlashes('//////segment')).toBe('segment');
13
+ });
14
+ it('should trim from the end of the segment', () => {
15
+ expect(PathHelper.trimSlashes('segment/')).toBe('segment');
16
+ });
17
+ it('should trim multiple slashes from the end of the segment', () => {
18
+ expect(PathHelper.trimSlashes('segment///')).toBe('segment');
19
+ });
20
+ });
21
+ describe('#joinPaths()', () => {
22
+ it('should join with slashes', () => {
23
+ const joined = PathHelper.joinPaths('path1', 'path2', 'path3');
24
+ expect(joined).toBe('path1/path2/path3');
25
+ });
26
+ it('should remove slashes from the beginning of the segments', () => {
27
+ const joined = PathHelper.joinPaths('path1', 'path2/', 'path3/');
28
+ expect(joined).toBe('path1/path2/path3');
29
+ });
30
+ it('should remove slashes from the end of the segments', () => {
31
+ const joined = PathHelper.joinPaths('/path1', '/path2', 'path3/');
32
+ expect(joined).toBe('path1/path2/path3');
33
+ });
34
+ });
35
+ describe('#isAncestorOf()', () => {
36
+ it('should return true if content is ancestor', () => {
37
+ expect(PathHelper.isAncestorOf('Root/Example', 'Root/Example/Content1')).toBe(true);
38
+ });
39
+ it('should return true if content is ancestor and ends with a slash', () => {
40
+ expect(PathHelper.isAncestorOf('Root/Example/', 'Root/Example/Content1')).toBe(true);
41
+ });
42
+ it('should return false if content is not an ancestor', () => {
43
+ expect(PathHelper.isAncestorOf('Root/Example/', 'Root/Example2/Content1')).toBe(false);
44
+ });
45
+ });
46
+ describe('#getSegments()', () => {
47
+ it('Should split the path to segments', () => {
48
+ expect(PathHelper.getSegments("Root/Example/('Content1')")).toEqual(['Root', 'Example', "('Content1')"]);
49
+ });
50
+ });
51
+ describe('#getParentPath()', () => {
52
+ it('Should return the parent path', () => {
53
+ expect(PathHelper.getParentPath('Root/Example/Content')).toBe('Root/Example');
54
+ });
55
+ it('Should return the path in case of 1 segments', () => {
56
+ expect(PathHelper.getParentPath('Root')).toBe('Root');
57
+ });
58
+ });
59
+ });
60
+ //# sourceMappingURL=path-helper.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-helper.spec.js","sourceRoot":"","sources":["../src/path-helper.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for async sleep
3
+ */
4
+ export declare const sleepAsyncTests: import("@vitest/runner/dist/tasks-e594cd24.js").f<{}>;
5
+ //# sourceMappingURL=sleep-async.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep-async.spec.d.ts","sourceRoot":"","sources":["../src/sleep-async.spec.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,eAAe,uDAQ1B,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { sleepAsync } from './sleep-async.js';
3
+ /**
4
+ * Tests for async sleep
5
+ */
6
+ export const sleepAsyncTests = describe('sleepAsync', () => {
7
+ it('Should return a Promise', () => {
8
+ expect(sleepAsync()).toBeInstanceOf(Promise);
9
+ });
10
+ it('Should be resolved in time', async () => {
11
+ await sleepAsync(15);
12
+ });
13
+ });
14
+ //# sourceMappingURL=sleep-async.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep-async.spec.js","sourceRoot":"","sources":["../src/sleep-async.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACzD,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/esm/sort-by.d.ts CHANGED
@@ -9,5 +9,5 @@ declare global {
9
9
  sortBy: (field: keyof T, direction?: 'asc' | 'desc') => T[];
10
10
  }
11
11
  }
12
- export declare const compareBy: <T, K extends keyof T>(entity1: T, entity2: T, field: K, direction: 'asc' | 'desc') => 0 | 1 | -1;
12
+ export declare const compareBy: <T, K extends keyof T>(entity1: T, entity2: T, field: K, direction: 'asc' | 'desc') => 1 | 0 | -1;
13
13
  //# sourceMappingURL=sort-by.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sort-by.js","sourceRoot":"","sources":["../src/sort-by.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,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;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,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;AAC7D,CAAC,CAAA"}
1
+ {"version":3,"file":"sort-by.js","sourceRoot":"","sources":["../src/sort-by.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,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,CAAC;QACxB,OAAO,CAAC,CAAC,CAAA;IACX,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,CAAA;IACV,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;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,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;AAC7D,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import './sort-by';
2
+ //# sourceMappingURL=sort-by.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-by.spec.d.ts","sourceRoot":"","sources":["../src/sort-by.spec.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import './sort-by';
3
+ describe('sortBy', () => {
4
+ it('Should sort by ascending by default', () => {
5
+ const arr = [{ v: 5 }, { v: 3 }, { v: 4 }];
6
+ expect(arr.sortBy('v')).toEqual([{ v: 3 }, { v: 4 }, { v: 5 }]);
7
+ });
8
+ it('Should sort by ascending', () => {
9
+ const arr = [{ v: 5 }, { v: 4 }, { v: 3 }];
10
+ expect(arr.sortBy('v', 'asc')).toEqual([{ v: 3 }, { v: 4 }, { v: 5 }]);
11
+ });
12
+ it('Should sort by descending', () => {
13
+ const arr = [{ v: 3 }, { v: 4 }, { v: 5 }];
14
+ expect(arr.sortBy('v', 'desc')).toEqual([{ v: 5 }, { v: 4 }, { v: 3 }]);
15
+ });
16
+ it('Should handle equalities', () => {
17
+ const arr = [{ v: 3 }, { v: 4 }, { v: 4 }];
18
+ expect(arr.sortBy('v', 'desc')).toEqual([{ v: 4 }, { v: 4 }, { v: 3 }]);
19
+ });
20
+ });
21
+ //# sourceMappingURL=sort-by.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-by.spec.js","sourceRoot":"","sources":["../src/sort-by.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,WAAW,CAAA;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/esm/trace.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AA2FvD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,KAAK;IACR,MAAM,CAAC,YAAY,GAA6B,IAAI,GAAG,EAAE,CAAA;IAEzD,MAAM,CAAC,cAAc,CAC3B,MAAc,EACd,MAAoC;QAEpC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAuB,CAAA;QACvE,OAAO,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAA0C,CAAA;IAC7F,CAAC;IAEO,MAAM,CAAC,UAAU,CACvB,WAA6C,EAC7C,IAAa;QAEb,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAA;QAChC,MAAM,UAAU,GAAG;YACjB,eAAe,EAAE,IAAI;YACrB,aAAa;SACd,CAAA;QACD,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC/C,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,MAAM,CAAC,aAAa,CAC1B,WAA2C,EAC3C,IAAW,EACX,SAAiC,EACjC,QAAa;QAEb,MAAM,aAAa,GAAyC;YAC1D,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,gBAAgB,EAAE,IAAI,IAAI,EAAE;YAC5B,QAAQ;SACT,CAAA;QACD,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IACxD,CAAC;IAEO,MAAM,CAAC,UAAU,CACvB,WAA2C,EAC3C,IAAW,EACX,SAAiC,EACjC,KAAU;QAEV,MAAM,UAAU,GAA4B;YAC1C,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,aAAa,EAAE,IAAI,IAAI,EAAE;YACzB,KAAK;SACN,CAAA;QACD,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAChD,OAAO,UAAU,CAAA;IACnB,CAAC;IAEO,MAAM,CAAC,UAAU,CACvB,MAAc,EACd,MAAoC,EACpC,IAAW;QAEX,MAAM,WAAW,GAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QAChD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;YACjE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;YACtD,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YAChD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,eAAe,CAClC,MAAc,EACd,MAAoC,EACpC,IAAW;QAEX,MAAM,WAAW,GAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QAChD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;YACvE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;YACtD,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YAChD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,MAAM,CAClB,OAA8C;QAE9C,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;gBACpC,cAAc,EAAE,IAAI,GAAG,EAAE;aAC1B,CAAC,CAAA;QACJ,CAAC;QACD,2BAA2B;QAC3B,IAAI,CAAE,OAAO,CAAC,MAAc,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO;gBACtC,CAAC,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;gBAChF,CAAC,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC7E,MAAM,CAAC,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;YAC/E,MAAM,CAAC,cAAc,CAAC,gBAAgB,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAClF;YAAC,OAAO,CAAC,MAAc,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAA;QAClE,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAuB,CAAA;QAE/E,+BAA+B;QAC/B,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACzD,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;gBAClD,cAAc,EAAE,OAAO,CAAC,MAAM;gBAC9B,cAAc,EAAE,IAAI,eAAe,EAA0B;gBAC7D,kBAAkB,EAAE,IAAI,eAAe,EAAmD;gBAC1F,eAAe,EAAE,IAAI,eAAe,EAA2B;aACzD,CAAC,CAAA;QACX,CAAC;QACD,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAGrE,CAAA;QACD,MAAM,SAAS,GAAG;YAChB,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC1E,OAAO,CAAC,UAAU,IAAI,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;YAClF,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;SAC1E,CAAA;QAED,oCAAoC;QACpC,OAAO;YACL,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;SAC1D,CAAA;IACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const traceTests: import("@vitest/runner/dist/tasks-e594cd24.js").f<{}>;
2
+ //# sourceMappingURL=trace.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.spec.d.ts","sourceRoot":"","sources":["../src/trace.spec.ts"],"names":[],"mappings":"AA+BA,eAAO,MAAM,UAAU,uDAwKrB,CAAA"}
@@ -0,0 +1,184 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { Trace } from './trace.js';
3
+ class MockClass {
4
+ testValue;
5
+ constructor(testValue) {
6
+ this.testValue = testValue;
7
+ }
8
+ testError(msg) {
9
+ throw Error(msg);
10
+ }
11
+ testScope() {
12
+ return this.testValue;
13
+ }
14
+ static addStatic(...args) {
15
+ return args.reduce((a, b) => a + b, 0);
16
+ }
17
+ addInstance(...args) {
18
+ return args.reduce((a, b) => a + b, 0);
19
+ }
20
+ async addInstanceAsync(...args) {
21
+ return args.reduce((a, b) => a + b, 0);
22
+ }
23
+ async testErrorAsync(msg) {
24
+ throw Error(msg);
25
+ }
26
+ }
27
+ export const traceTests = describe('Trace tests', () => {
28
+ describe('Static method traces', () => {
29
+ it('Static Methods call should be traced with args', () => {
30
+ const args = [1, 2, 3];
31
+ const doneCallback = vi.fn();
32
+ const observer = Trace.method({
33
+ object: MockClass,
34
+ method: MockClass.addStatic,
35
+ onCalled: (traceData) => {
36
+ expect(args).toEqual(traceData.methodArguments);
37
+ observer.dispose();
38
+ doneCallback();
39
+ },
40
+ });
41
+ MockClass.addStatic(...args);
42
+ expect(doneCallback).toBeCalled();
43
+ });
44
+ it('Static Methods call should be traced with args and return value', () => {
45
+ const args = [1, 2, 3];
46
+ const doneCallback = vi.fn();
47
+ const observer = Trace.method({
48
+ object: MockClass,
49
+ method: MockClass.addStatic,
50
+ onFinished: (traceData) => {
51
+ expect(args).toEqual(traceData.methodArguments);
52
+ expect(traceData.returned).toBe(1 + 2 + 3);
53
+ observer.dispose();
54
+ doneCallback();
55
+ },
56
+ });
57
+ MockClass.addStatic(...args);
58
+ expect(doneCallback).toBeCalled();
59
+ });
60
+ it("shouldn't be triggered after observer is disposed", () => {
61
+ const args = [1, 2, 3];
62
+ const shouldNotCall = vi.fn();
63
+ const doneCallback = vi.fn();
64
+ const observer = Trace.method({
65
+ object: MockClass,
66
+ method: MockClass.addStatic,
67
+ onCalled: () => {
68
+ shouldNotCall("Shouldn't be triggered here");
69
+ },
70
+ });
71
+ const observer2 = Trace.method({
72
+ object: MockClass,
73
+ method: MockClass.addStatic,
74
+ onCalled: () => {
75
+ observer2.dispose();
76
+ doneCallback();
77
+ },
78
+ });
79
+ observer.dispose();
80
+ const returned = MockClass.addStatic(...args);
81
+ expect(returned).toEqual(1 + 2 + 3);
82
+ expect(doneCallback).toBeCalled();
83
+ expect(shouldNotCall).not.toBeCalled();
84
+ });
85
+ });
86
+ describe('Instance method traces', () => {
87
+ it('should be traced with arguments', () => {
88
+ const instance = new MockClass();
89
+ const args = [1, 2, 3];
90
+ const doneCallback = vi.fn();
91
+ const observer = Trace.method({
92
+ object: instance,
93
+ method: instance.addInstance,
94
+ onFinished: (traceData) => {
95
+ expect(args).toEqual(traceData.methodArguments);
96
+ expect(traceData.returned).toBe(1 + 2 + 3);
97
+ observer.dispose();
98
+ doneCallback();
99
+ },
100
+ });
101
+ instance.addInstance(...args);
102
+ expect(doneCallback).toBeCalled();
103
+ });
104
+ it('should be traced asynchronously', async () => {
105
+ const instance = new MockClass();
106
+ const args = [1, 2, 3];
107
+ const doneCallback = vi.fn();
108
+ const observer = Trace.method({
109
+ object: instance,
110
+ method: instance.addInstanceAsync,
111
+ isAsync: true,
112
+ onFinished: (traceData) => {
113
+ expect(args).toEqual(traceData.methodArguments);
114
+ const { returned } = traceData;
115
+ expect(returned).toBe(1 + 2 + 3);
116
+ observer.dispose();
117
+ doneCallback();
118
+ },
119
+ });
120
+ await instance.addInstanceAsync(...args);
121
+ expect(doneCallback).toBeCalled();
122
+ });
123
+ it("should have a valid 'this' scope", () => {
124
+ const instance = new MockClass('testValue');
125
+ const doneCallback = vi.fn();
126
+ const observer = Trace.method({
127
+ object: instance,
128
+ method: instance.testScope,
129
+ onFinished: (traceData) => {
130
+ if (traceData.returned) {
131
+ expect(traceData.returned).toBe('testValue');
132
+ observer.dispose();
133
+ doneCallback();
134
+ }
135
+ },
136
+ });
137
+ expect(instance.testScope()).toBe('testValue');
138
+ expect(doneCallback).toBeCalled();
139
+ });
140
+ it('should handle throwing errors', () => {
141
+ const instance = new MockClass('testValue');
142
+ const doneCallback = vi.fn();
143
+ const observer = Trace.method({
144
+ object: instance,
145
+ method: instance.testError,
146
+ onError: (traceData) => {
147
+ if (traceData.error) {
148
+ expect(traceData.error.message).toBe('message');
149
+ observer.dispose();
150
+ doneCallback();
151
+ }
152
+ },
153
+ });
154
+ expect(() => {
155
+ instance.testError('message');
156
+ }).toThrow();
157
+ expect(doneCallback).toBeCalled();
158
+ });
159
+ it('should handle throwing errors with asyncs', async () => {
160
+ const instance = new MockClass('testValue');
161
+ const doneCallback = vi.fn();
162
+ const observer = Trace.method({
163
+ object: instance,
164
+ method: instance.testErrorAsync,
165
+ isAsync: true,
166
+ onError: (traceData) => {
167
+ if (traceData.error) {
168
+ expect(traceData.error.message).toBe('message');
169
+ observer.dispose();
170
+ doneCallback();
171
+ }
172
+ },
173
+ });
174
+ try {
175
+ await instance.testErrorAsync('message');
176
+ }
177
+ catch (error) {
178
+ // ignore
179
+ }
180
+ expect(doneCallback).toBeCalled();
181
+ });
182
+ });
183
+ });
184
+ //# sourceMappingURL=trace.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.spec.js","sourceRoot":"","sources":["../src/trace.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tuple.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple.spec.d.ts","sourceRoot":"","sources":["../src/tuple.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { tuple } from './tuple.js';
2
+ import { describe, it, expect } from 'vitest';
3
+ describe('Tuple', () => {
4
+ it('Should return a Tuple object', () => {
5
+ expect(tuple('a', 'b', 'c')).toEqual(['a', 'b', 'c']);
6
+ });
7
+ });
8
+ //# sourceMappingURL=tuple.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple.spec.js","sourceRoot":"","sources":["../src/tuple.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@furystack/utils",
3
- "version": "4.0.9",
3
+ "version": "4.0.11",
4
4
  "description": "General utilities",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "homepage": "https://github.com/furystack/furystack",
36
36
  "devDependencies": {
37
- "typescript": "^5.2.2",
38
- "vitest": "^0.34.3"
37
+ "typescript": "^5.3.2",
38
+ "vitest": "^0.34.6"
39
39
  }
40
40
  }
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect, vi } from 'vitest'
2
- import { debounce } from './debounce'
3
- import { sleepAsync } from './sleep-async'
2
+ import { debounce } from './debounce.js'
3
+ import { sleepAsync } from './sleep-async.js'
4
4
 
5
5
  /**
6
6
  * Tests for debounce
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from 'vitest'
2
- import { deepMerge } from './deep-merge'
2
+ import { deepMerge } from './deep-merge.js'
3
3
 
4
4
  describe('DeepMerge tests', () => {
5
5
  it('Should return the target object if no merge sources are defined', () => {
@@ -24,7 +24,7 @@ describe('DeepMerge tests', () => {
24
24
  })
25
25
 
26
26
  it('Should respect falsy but defined values (false)', () => {
27
- expect(deepMerge({ a: true }, { a: false })).toEqual({ a: false })
27
+ expect(deepMerge<{ a: boolean }>({ a: true }, { a: false })).toEqual({ a: false })
28
28
  })
29
29
 
30
30
  it('Should respect falsy but defined values (empty string)', () => {
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect, vi } from 'vitest'
2
- import type { Disposable } from './disposable'
3
- import { using, usingAsync } from './disposable'
2
+ import type { Disposable } from './disposable.js'
3
+ import { using, usingAsync } from './disposable.js'
4
4
 
5
5
  export class MockDisposable implements Disposable {
6
6
  private disposed = false
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi } from 'vitest'
2
- import { ObservableValue } from './observable-value'
2
+ import { ObservableValue } from './observable-value.js'
3
3
 
4
4
  /**
5
5
  * Observable Value tests
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from 'vitest'
2
- import { PathHelper } from './path-helper'
2
+ import { PathHelper } from './path-helper.js'
3
3
 
4
4
  /**
5
5
  * Path Helper tests
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from 'vitest'
2
- import { sleepAsync } from './sleep-async'
2
+ import { sleepAsync } from './sleep-async.js'
3
3
 
4
4
  /**
5
5
  * Tests for async sleep
package/src/trace.spec.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi } from 'vitest'
2
- import { Trace } from './trace'
2
+ import { Trace } from './trace.js'
3
3
 
4
4
  class MockClass {
5
5
  constructor(private testValue?: string) {}
package/src/tuple.spec.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { tuple } from './tuple'
1
+ import { tuple } from './tuple.js'
2
2
  import { describe, it, expect } from 'vitest'
3
3
 
4
4
  describe('Tuple', () => {