@furystack/core 14.0.4 → 15.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 (36) hide show
  1. package/esm/create-physical-store-tests.d.ts +1 -1
  2. package/esm/create-physical-store-tests.d.ts.map +1 -1
  3. package/esm/global-disposable.spec.js +5 -5
  4. package/esm/global-disposable.spec.js.map +1 -1
  5. package/esm/global-disposables.d.ts +2 -3
  6. package/esm/global-disposables.d.ts.map +1 -1
  7. package/esm/global-disposables.js +19 -6
  8. package/esm/global-disposables.js.map +1 -1
  9. package/esm/helpers.d.ts +2 -3
  10. package/esm/helpers.d.ts.map +1 -1
  11. package/esm/helpers.js.map +1 -1
  12. package/esm/identity-context.spec.js +5 -5
  13. package/esm/identity-context.spec.js.map +1 -1
  14. package/esm/in-memory-store.d.ts +2 -2
  15. package/esm/in-memory-store.d.ts.map +1 -1
  16. package/esm/in-memory-store.js +3 -2
  17. package/esm/in-memory-store.js.map +1 -1
  18. package/esm/in-memory-store.spec.js +1 -1
  19. package/esm/in-memory-store.spec.js.map +1 -1
  20. package/esm/models/physical-store.d.ts +3 -3
  21. package/esm/models/physical-store.d.ts.map +1 -1
  22. package/esm/store-manager.d.ts +2 -3
  23. package/esm/store-manager.d.ts.map +1 -1
  24. package/esm/store-manager.js +11 -3
  25. package/esm/store-manager.js.map +1 -1
  26. package/esm/store-manager.spec.js +38 -16
  27. package/esm/store-manager.spec.js.map +1 -1
  28. package/package.json +6 -6
  29. package/src/global-disposable.spec.ts +5 -5
  30. package/src/global-disposables.ts +22 -8
  31. package/src/helpers.ts +2 -3
  32. package/src/identity-context.spec.ts +5 -5
  33. package/src/in-memory-store.spec.ts +1 -1
  34. package/src/in-memory-store.ts +4 -3
  35. package/src/store-manager.spec.ts +41 -16
  36. package/src/store-manager.ts +15 -6
@@ -16,5 +16,5 @@ export interface StoreTestOptions<T, TPrimaryKey extends keyof T> {
16
16
  skipRegexTests?: boolean;
17
17
  skipStringTests?: boolean;
18
18
  }
19
- export declare const createStoreTest: (options: StoreTestOptions<TestClass, 'id'>) => void;
19
+ export declare const createStoreTest: (options: StoreTestOptions<TestClass, "id">) => void;
20
20
  //# sourceMappingURL=create-physical-store-tests.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-physical-store-tests.d.ts","sourceRoot":"","sources":["../src/create-physical-store-tests.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,qBAAa,SAAS;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,IAAI,CAAA;CACxB;AAGD,eAAO,MAAM,gBAAgB,UAAW,QAAQ,SAAS,CAAC,KAAG,SAS3D,CAAA;AAEF,MAAM,WAAW,gBAAgB,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC;IAC9D,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,eAAO,MAAM,eAAe,YAAa,iBAAiB,SAAS,EAAE,IAAI,CAAC,SAgoBzE,CAAA"}
1
+ {"version":3,"file":"create-physical-store-tests.d.ts","sourceRoot":"","sources":["../src/create-physical-store-tests.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG5C,qBAAa,SAAS;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,IAAI,CAAA;CACxB;AAGD,eAAO,MAAM,gBAAgB,UAAW,OAAO,CAAC,SAAS,CAAC,KAAG,SAS3D,CAAA;AAEF,MAAM,WAAW,gBAAgB,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC;IAC9D,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,KAAK,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,eAAO,MAAM,eAAe,YAAa,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAgoBzE,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { Injector } from '@furystack/inject';
2
- import { globalDisposables, exitHandler } from './global-disposables.js';
2
+ import { describe, expect, it, vi } from 'vitest';
3
+ import { exitHandler, globalDisposables } from './global-disposables.js';
3
4
  import { disposeOnProcessExit } from './helpers.js';
4
- import { describe, it, expect, vi } from 'vitest';
5
5
  describe('Global Disposables', () => {
6
6
  it('Should be empty by default', () => {
7
7
  expect(globalDisposables.size).toBe(0);
@@ -18,14 +18,14 @@ describe('Global Disposables', () => {
18
18
  disposeOnProcessExit(i);
19
19
  expect(globalDisposables).toContain(i);
20
20
  globalDisposables.delete(i);
21
- await i.dispose();
21
+ await i[Symbol.asyncDispose]();
22
22
  });
23
23
  it('Should dispose the injector on exit', async () => {
24
24
  const i = new Injector();
25
- i.dispose = vi.fn(i.dispose);
25
+ i[Symbol.asyncDispose] = vi.fn(i[Symbol.asyncDispose]);
26
26
  disposeOnProcessExit(i);
27
27
  await exitHandler();
28
- expect(i.dispose).toBeCalled();
28
+ expect(i[Symbol.asyncDispose]).toBeCalled();
29
29
  globalDisposables.delete(i);
30
30
  });
31
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"global-disposable.spec.js","sourceRoot":"","sources":["../src/global-disposable.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACxD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAC1D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAC3D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAC3D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAA;QACxB,oBAAoB,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACtC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,CAAC,OAAO,EAAE,CAAA;IACnB,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAA;QACxB,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAC5B,oBAAoB,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,WAAW,EAAE,CAAA;QACnB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAA;QAC9B,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"global-disposable.spec.js","sourceRoot":"","sources":["../src/global-disposable.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACxD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAC1D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAC3D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAC3D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAA;QACxB,oBAAoB,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACtC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAA;QACxB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;QACtD,oBAAoB,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,WAAW,EAAE,CAAA;QACnB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC3C,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,10 +1,9 @@
1
- import type { Disposable } from '@furystack/utils';
2
1
  /**
3
2
  * Readonly set that stores references of the disposables that should be disposed on process exit
4
3
  */
5
- export declare const globalDisposables: Set<Disposable>;
4
+ export declare const globalDisposables: Set<Disposable | AsyncDisposable>;
6
5
  /**
7
6
  * Will be triggered via process event listeners
8
7
  */
9
- export declare const exitHandler: () => Promise<void>;
8
+ export declare const exitHandler: () => void;
10
9
  //# sourceMappingURL=global-disposables.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-disposables.d.ts","sourceRoot":"","sources":["../src/global-disposables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,GAAG,CAAC,UAAU,CAAa,CAAA;AAE3D;;GAEG;AACH,eAAO,MAAM,WAAW,qBAMX,CAAA"}
1
+ {"version":3,"file":"global-disposables.d.ts","sourceRoot":"","sources":["../src/global-disposables.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,GAAG,CAAC,UAAU,GAAG,eAAe,CAAa,CAAA;AAE7E;;GAEG;AACH,eAAO,MAAM,WAAW,YAoBX,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { isAsyncDisposable, isDisposable } from '@furystack/utils';
1
2
  /**
2
3
  * Readonly set that stores references of the disposables that should be disposed on process exit
3
4
  */
@@ -5,12 +6,24 @@ export const globalDisposables = new Set();
5
6
  /**
6
7
  * Will be triggered via process event listeners
7
8
  */
8
- export const exitHandler = (async () => {
9
- const result = await Promise.allSettled([...globalDisposables].map((d) => d.dispose()));
10
- const fails = result.filter((r) => r.status === 'rejected');
11
- if (fails && fails.length) {
12
- console.warn(`There was an error during disposing '${fails.length}' global disposable objects`, fails);
13
- }
9
+ export const exitHandler = (() => {
10
+ Promise.allSettled([...globalDisposables].map(async (d) => {
11
+ if (isAsyncDisposable(d)) {
12
+ await d[Symbol.asyncDispose]();
13
+ }
14
+ if (isDisposable(d)) {
15
+ d[Symbol.dispose]();
16
+ }
17
+ }))
18
+ .then((result) => {
19
+ const fails = result.filter((r) => r.status === 'rejected');
20
+ if (fails && fails.length) {
21
+ console.warn(`There was an error during disposing '${fails.length}' global disposable objects`, fails);
22
+ }
23
+ })
24
+ .catch((error) => {
25
+ console.error('Error during disposing global disposables', error);
26
+ });
14
27
  }).bind(null);
15
28
  // do something when app is closing
16
29
  globalThis.process?.on?.('exit', exitHandler);
@@ -1 +1 @@
1
- {"version":3,"file":"global-disposables.js","sourceRoot":"","sources":["../src/global-disposables.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAoB,IAAI,GAAG,EAAE,CAAA;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;IACrC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IACvF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAA;IAC3D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,wCAAwC,KAAK,CAAC,MAAM,6BAA6B,EAAE,KAAK,CAAC,CAAA;IACxG,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEb,mCAAmC;AACnC,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAE7C,uBAAuB;AACvB,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AAE/C,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAA;AAEtD,oDAAoD;AACpD,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;AAChD,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;AAEhD,8BAA8B;AAC9B,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAGzD;AAAC,UAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"global-disposables.js","sourceRoot":"","sources":["../src/global-disposables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsC,IAAI,GAAG,EAAE,CAAA;AAE7E;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE;IAC/B,OAAO,CAAC,UAAU,CAChB,CAAC,GAAG,iBAAiB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAA;QAChC,CAAC;QACD,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;QACrB,CAAC;IACH,CAAC,CAAC,CACH;SACE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAA;QAC3D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,wCAAwC,KAAK,CAAC,MAAM,6BAA6B,EAAE,KAAK,CAAC,CAAA;QACxG,CAAC;IACH,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEb,mCAAmC;AACnC,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAE7C,uBAAuB;AACvB,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AAE/C,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAA;AAEtD,oDAAoD;AACpD,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;AAChD,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;AAEhD,8BAA8B;AAC9B,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAGzD;AAAC,UAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAA"}
package/esm/helpers.d.ts CHANGED
@@ -1,13 +1,12 @@
1
1
  import type { Injector } from '@furystack/inject';
2
- import type { Disposable } from '@furystack/utils';
3
- import { StoreManager } from './store-manager.js';
4
2
  import type { PhysicalStore } from './models/physical-store.js';
3
+ import { StoreManager } from './store-manager.js';
5
4
  /**
6
5
  * The disposable will be disposed on process exit
7
6
  * @param disposable The Disposable object to dispose on process exit
8
7
  * @returns A set of global disposables
9
8
  */
10
- export declare const disposeOnProcessExit: (disposable: Disposable) => Set<Disposable>;
9
+ export declare const disposeOnProcessExit: (disposable: Disposable | AsyncDisposable) => Set<Disposable | AsyncDisposable>;
11
10
  /**
12
11
  * @param injector The Injector instance
13
12
  * @returns the current authentication status from the identity context
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,eAAgB,UAAU,oBAAsC,CAAA;AAEjG;;;GAGG;AACH,eAAO,MAAM,eAAe,aAAoB,QAAQ,qBAA4D,CAAA;AAEpH;;;;GAIG;AACH,eAAO,MAAM,YAAY,aAAoB,QAAQ,YAAY,MAAM,EAAE,qBACX,CAAA;AAE9D;;;GAGG;AACH,eAAO,MAAM,cAAc,aAAoB,QAAQ,uCAA2D,CAAA;AAElH;;;GAGG;AACH,eAAO,MAAM,eAAe,aAAc,QAAQ,iBAAuC,CAAA;AAEzF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,6CAA8C,QAAQ,SAAS,cAAc,CAAC,EAAE,WAAW,CAAC,iBACtE,CAAA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,eAAgB,UAAU,GAAG,eAAe,sCAAsC,CAAA;AAEnH;;;GAGG;AACH,eAAO,MAAM,eAAe,aAAoB,QAAQ,qBAA4D,CAAA;AAEpH;;;;GAIG;AACH,eAAO,MAAM,YAAY,aAAoB,QAAQ,YAAY,MAAM,EAAE,qBACX,CAAA;AAE9D;;;GAGG;AACH,eAAO,MAAM,cAAc,aAAoB,QAAQ,uCAA2D,CAAA;AAElH;;;GAGG;AACH,eAAO,MAAM,eAAe,aAAc,QAAQ,iBAAuC,CAAA;AAEzF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,YAAY,QAAQ,SAAS,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,iBACtE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAsB,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAEjG;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,eAAe,EAAE,CAAA;AAEpH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,QAAkB,EAAE,GAAG,KAAe,EAAE,EAAE,CAC3E,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAA;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,cAAc,EAAE,CAAA;AAElH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;AAEzF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAiC,QAAkB,EAAE,KAAoC,EAAE,EAAE,CACnH,eAAe,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAwC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAEnH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,eAAe,EAAE,CAAA;AAEpH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,QAAkB,EAAE,GAAG,KAAe,EAAE,EAAE,CAC3E,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAA;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,cAAc,EAAE,CAAA;AAElH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;AAEzF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAiC,QAAkB,EAAE,KAAoC,EAAE,EAAE,CACnH,eAAe,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA"}
@@ -1,11 +1,11 @@
1
1
  import { Injector } from '@furystack/inject';
2
- import { using, usingAsync } from '@furystack/utils';
2
+ import { usingAsync } from '@furystack/utils';
3
+ import { describe, expect, it, vi } from 'vitest';
4
+ import { getCurrentUser, isAuthenticated, isAuthorized } from './helpers.js';
3
5
  import { IdentityContext } from './identity-context.js';
4
- import { isAuthorized, isAuthenticated, getCurrentUser } from './helpers.js';
5
- import { describe, it, expect, vi } from 'vitest';
6
6
  describe('IdentityContext', () => {
7
- it('Should be retrieved from an Injector', () => {
8
- using(new Injector(), (i) => {
7
+ it('Should be retrieved from an Injector', async () => {
8
+ await usingAsync(new Injector(), async (i) => {
9
9
  const ctx = i.getInstance(IdentityContext);
10
10
  expect(ctx).toBeInstanceOf(IdentityContext);
11
11
  });
@@ -1 +1 @@
1
- {"version":3,"file":"identity-context.spec.js","sourceRoot":"","sources":["../src/identity-context.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,KAAK,CAAC,IAAI,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YAC1C,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;YAC5C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,CAAC,CAAC,CAAA;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAA;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YAC1C,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,CAAA;YACpC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAA;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YAC1C,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;YAC3C,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YACxD,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"identity-context.spec.js","sourceRoot":"","sources":["../src/identity-context.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YAC1C,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;YAC5C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,CAAC,CAAC,CAAA;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAA;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YAC1C,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,CAAA;YACpC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,CAAA;YAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YAC1C,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;YAC3C,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YACxD,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { Constructable } from '@furystack/inject';
2
- import type { PhysicalStore, FindOptions, PartialResult, FilterType, CreateResult } from './models/physical-store.js';
3
2
  import { EventHub } from '@furystack/utils';
3
+ import type { CreateResult, FilterType, FindOptions, PartialResult, PhysicalStore } from './models/physical-store.js';
4
4
  export declare class InMemoryStore<T, TPrimaryKey extends keyof T> extends EventHub<{
5
5
  onEntityAdded: {
6
6
  entity: T;
@@ -26,7 +26,7 @@ export declare class InMemoryStore<T, TPrimaryKey extends keyof T> extends Event
26
26
  find<TFields extends Array<keyof T>>(searchOptions: FindOptions<T, TFields>): Promise<PartialResult<T, TFields>[]>;
27
27
  count(filter?: FilterType<T>): Promise<number>;
28
28
  update(id: T[TPrimaryKey], data: T): Promise<void>;
29
- dispose(): void;
29
+ [Symbol.dispose](): void;
30
30
  readonly primaryKey: TPrimaryKey;
31
31
  readonly model: Constructable<T>;
32
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAErH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,qBAAa,aAAa,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,CACvD,SAAQ,QAAQ,CAAC;IACf,aAAa,EAAE;QAAE,MAAM,EAAE,CAAC,CAAA;KAAE,CAAA;IAC5B,eAAe,EAAE;QAAE,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAA;IAC3D,eAAe,EAAE;QAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;KAAE,CAAA;CACzC,CACD,YAAW,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAE3C;;;OAGG;IACU,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAapD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAY;IACzC,GAAG,QAAS,CAAC,CAAC,WAAW,CAAC,WAAW,MAAM,MAAM,CAAC,CAAC,qCAGzD;IAED,OAAO,CAAC,YAAY,CAGnB;IAED,OAAO,CAAC,cAAc;IAwGT,IAAI,CAAC,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC;IA2B3E,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAI5B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;IAWxC,OAAO;IAId,SAAgB,UAAU,EAAE,WAAW,CAAA;IACvC,SAAgB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAEvC;;;;;OAKG;gBACS,OAAO,EAAE;QACnB;;WAEG;QACH,UAAU,EAAE,WAAW,CAAA;QACvB;;WAEG;QACH,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;KACxB;CAKF"}
1
+ {"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAGrH,qBAAa,aAAa,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,CACvD,SAAQ,QAAQ,CAAC;IACf,aAAa,EAAE;QAAE,MAAM,EAAE,CAAC,CAAA;KAAE,CAAA;IAC5B,eAAe,EAAE;QAAE,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAA;IAC3D,eAAe,EAAE;QAAE,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;KAAE,CAAA;CACzC,CACD,YAAW,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAE3C;;;OAGG;IACU,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAapD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAY;IACzC,GAAG,QAAS,CAAC,CAAC,WAAW,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,CAAC,qCAGzD;IAED,OAAO,CAAC,YAAY,CAGnB;IAED,OAAO,CAAC,cAAc;IAwGT,IAAI,CAAC,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC;IA2B3E,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAI5B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;IAWxC,CAAC,MAAM,CAAC,OAAO,CAAC;IAKvB,SAAgB,UAAU,EAAE,WAAW,CAAA;IACvC,SAAgB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAEvC;;;;;OAKG;gBACS,OAAO,EAAE;QACnB;;WAEG;QACH,UAAU,EAAE,WAAW,CAAA;QACvB;;WAEG;QACH,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;KACxB;CAKF"}
@@ -1,5 +1,5 @@
1
- import { selectFields, isOperator, isLogicalOperator } from './models/physical-store.js';
2
1
  import { EventHub } from '@furystack/utils';
2
+ import { isLogicalOperator, isOperator, selectFields } from './models/physical-store.js';
3
3
  export class InMemoryStore extends EventHub {
4
4
  /**
5
5
  *
@@ -174,8 +174,9 @@ export class InMemoryStore extends EventHub {
174
174
  });
175
175
  this.emit('onEntityUpdated', { id, change: data });
176
176
  }
177
- dispose() {
177
+ [Symbol.dispose]() {
178
178
  this.cache.clear();
179
+ super[Symbol.dispose]();
179
180
  }
180
181
  primaryKey;
181
182
  model;
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ describe('InMemoryStore', () => {
11
11
  it('dispose should empty the cache', async () => {
12
12
  const f = createStore();
13
13
  await f.add(createMockEntity());
14
- f.dispose();
14
+ f[Symbol.dispose]();
15
15
  const count = await f.count();
16
16
  expect(count).toBe(0);
17
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory-store.spec.js","sourceRoot":"","sources":["../src/in-memory-store.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAC/F,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IAEnF,eAAe,CAAC;QACd,WAAW;QACX,QAAQ,EAAE,eAAe;QACzB,mCAAmC;KACpC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,CAAC,GAAG,WAAW,EAAE,CAAA;QACvB,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAA;QAC/B,CAAC,CAAC,OAAO,EAAE,CAAA;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"in-memory-store.spec.js","sourceRoot":"","sources":["../src/in-memory-store.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAC/F,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IAEnF,eAAe,CAAC;QACd,WAAW;QACX,QAAQ,EAAE,eAAe;QACzB,mCAAmC;KACpC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,CAAC,GAAG,WAAW,EAAE,CAAA;QACvB,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAA;QAC/B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,EAAE,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -19,8 +19,8 @@ export type FilterType<T> = {
19
19
  } & {
20
20
  [LO in (typeof LogicalOperators)[number]]?: Array<FilterType<T>>;
21
21
  };
22
- export declare const isLogicalOperator: (propertyString: string) => propertyString is "$and" | "$not" | "$nor" | "$or";
23
- export declare const isOperator: (propertyString: string) => propertyString is "$gt" | "$gte" | "$lt" | "$lte" | "$startsWith" | "$endsWith" | "$like" | "$regex" | "$eq" | "$ne" | "$in" | "$nin" | "$and" | "$not" | "$nor" | "$or";
22
+ export declare const isLogicalOperator: (propertyString: string) => propertyString is (typeof LogicalOperators)[number];
23
+ export declare const isOperator: (propertyString: string) => propertyString is (typeof allOperators)[number];
24
24
  export declare const t: FilterType<{
25
25
  a: number;
26
26
  b: string;
@@ -60,7 +60,7 @@ export interface FindOptions<T, TSelect extends Array<keyof T>> {
60
60
  filter?: FilterType<T>;
61
61
  }
62
62
  export type PartialResult<T, TFields extends Array<keyof T>> = Pick<T, TFields[number]>;
63
- export declare const selectFields: <T extends object, TField extends (keyof T)[]>(entry: T, ...fields: TField) => PartialResult<T, TField>;
63
+ export declare const selectFields: <T extends object, TField extends Array<keyof T>>(entry: T, ...fields: TField) => PartialResult<T, TField>;
64
64
  /**
65
65
  * Interface that defines a physical store implementation
66
66
  */
@@ -1 +1 @@
1
- {"version":3,"file":"physical-store.d.ts","sourceRoot":"","sources":["../../src/models/physical-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"physical-store.d.ts","sourceRoot":"","sources":["../../src/models/physical-store.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,13 @@
1
1
  import type { Constructable } from '@furystack/inject';
2
- import type { Disposable } from '@furystack/utils';
3
2
  import type { PhysicalStore } from './models/physical-store.js';
4
3
  /**
5
4
  * Manager class for store instances
6
5
  */
7
- export declare class StoreManager implements Disposable {
6
+ export declare class StoreManager implements AsyncDisposable {
8
7
  /**
9
8
  * Disposes the StoreManager and all store instances
10
9
  */
11
- dispose(): Promise<void>;
10
+ [Symbol.asyncDispose](): Promise<void>;
12
11
  private stores;
13
12
  /**
14
13
  * Returns a store model for a constructable object.
@@ -1 +1 @@
1
- {"version":3,"file":"store-manager.d.ts","sourceRoot":"","sources":["../src/store-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D;;GAEG;AACH,qBACa,YAAa,YAAW,UAAU;IAC7C;;OAEG;IACU,OAAO;IAWpB,OAAO,CAAC,MAAM,CAAkE;IAEhF;;;;;;;OAOG;IACI,WAAW,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,KAAK,SAAS,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,EAC5F,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,UAAU,EAAE,WAAW;IAYzB;;;;OAIG;IACI,QAAQ,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC;CAIrF"}
1
+ {"version":3,"file":"store-manager.d.ts","sourceRoot":"","sources":["../src/store-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAItD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D;;GAEG;AACH,qBACa,YAAa,YAAW,eAAe;IAClD;;OAEG;IACU,CAAC,MAAM,CAAC,YAAY,CAAC;IAoBlC,OAAO,CAAC,MAAM,CAAkE;IAEhF;;;;;;;OAOG;IACI,WAAW,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,KAAK,SAAS,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,EAC5F,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,UAAU,EAAE,WAAW,GASJ,KAAK;IAG1B;;;;OAIG;IACI,QAAQ,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC;CAIrF"}
@@ -5,6 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { Injectable } from '@furystack/inject';
8
+ import { isAsyncDisposable, isDisposable } from '@furystack/utils';
8
9
  import { AggregatedError } from './errors/aggregated-error.js';
9
10
  /**
10
11
  * Manager class for store instances
@@ -13,11 +14,18 @@ let StoreManager = class StoreManager {
13
14
  /**
14
15
  * Disposes the StoreManager and all store instances
15
16
  */
16
- async dispose() {
17
- const result = await Promise.allSettled([...this.stores.entries()].map(async ([_model, store]) => store.dispose()));
17
+ async [Symbol.asyncDispose]() {
18
+ const result = await Promise.allSettled([...this.stores.entries()].map(async ([_model, store]) => {
19
+ if (isDisposable(store)) {
20
+ store[Symbol.dispose]();
21
+ }
22
+ if (isAsyncDisposable(store)) {
23
+ await store[Symbol.asyncDispose]();
24
+ }
25
+ }));
18
26
  const fails = result.filter((r) => r.status === 'rejected');
19
27
  if (fails && fails.length) {
20
- const error = new AggregatedError(`There was an error during disposing ${fails.length} stores: ${fails.map((f) => f.reason)}`, fails);
28
+ const error = new AggregatedError(`There was an error during disposing ${fails.length} stores: ${fails.map((f) => f.reason).join(', ')}`, fails);
21
29
  throw error;
22
30
  }
23
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"store-manager.js","sourceRoot":"","sources":["../src/store-manager.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAG9D;;GAEG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACnH,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAA4B,CAAA;QACtF,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,eAAe,CAC/B,uCAAuC,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAC3F,KAAK,CACN,CAAA;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IACO,MAAM,GAAyD,IAAI,GAAG,EAAE,CAAA;IAEhF;;;;;;;OAOG;IACI,WAAW,CAChB,KAAuB,EACvB,UAAuB;QAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,CAAC,wBAAwB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAA;QACpD,CAAC;QACD,IAAI,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAA;QACvC,CAAC;QACD,OAAO,QAAiB,CAAA;IAC1B,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAiC,KAAoC;QAClF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAgC,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AAhDY,YAAY;IADxB,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,YAAY,CAgDxB"}
1
+ {"version":3,"file":"store-manager.js","sourceRoot":"","sources":["../src/store-manager.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAG9D;;GAEG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAY;IACvB;;OAEG;IACI,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CACrC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;YACvD,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;YACzB,CAAC;YACD,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAA;YACpC,CAAC;QACH,CAAC,CAAC,CACH,CAAA;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAA;QAC3D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,eAAe,CAC/B,uCAAuC,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAChH,KAAK,CACN,CAAA;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IACO,MAAM,GAAyD,IAAI,GAAG,EAAE,CAAA;IAEhF;;;;;;;OAOG;IACI,WAAW,CAChB,KAAuB,EACvB,UAAuB;QAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,CAAC,wBAAwB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAA;QACpD,CAAC;QACD,IAAI,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAA;QACvC,CAAC;QACD,OAAO,QAAiB,CAAA;IAC1B,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAiC,KAAoC;QAClF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAgC,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AAzDY,YAAY;IADxB,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,YAAY,CAyDxB"}
@@ -1,35 +1,35 @@
1
- import { using, usingAsync } from '@furystack/utils';
2
1
  import { Injector } from '@furystack/inject';
3
- import { StoreManager } from './store-manager.js';
4
- import { InMemoryStore } from './in-memory-store.js';
5
- import { AggregatedError } from './errors/aggregated-error.js';
2
+ import { usingAsync } from '@furystack/utils';
3
+ import { describe, expect, it } from 'vitest';
6
4
  import { TestClass } from './create-physical-store-tests.js';
7
- import { describe, it, expect } from 'vitest';
5
+ import { AggregatedError } from './errors/aggregated-error.js';
6
+ import { InMemoryStore } from './in-memory-store.js';
7
+ import { StoreManager } from './store-manager.js';
8
8
  class Test {
9
9
  }
10
10
  describe('StoreManager', () => {
11
- it('Can be retrieved from an injector', () => {
12
- using(new Injector(), (i) => {
11
+ it('Can be retrieved from an injector', async () => {
12
+ await usingAsync(new Injector(), async (i) => {
13
13
  expect(i.getInstance(StoreManager)).toBeInstanceOf(StoreManager);
14
14
  });
15
15
  });
16
- it('Should throw if trying to retrieve a non-existing store', () => {
17
- using(new Injector(), (i) => {
16
+ it('Should throw if trying to retrieve a non-existing store', async () => {
17
+ await usingAsync(new Injector(), async (i) => {
18
18
  const sm = i.getInstance(StoreManager);
19
19
  expect(() => sm.getStoreFor(class {
20
20
  t;
21
21
  }, 't')).toThrow();
22
22
  });
23
23
  });
24
- it('Should throw if trying to retrieve an existing store with a different primary key', () => {
25
- using(new Injector(), (i) => {
24
+ it('Should throw if trying to retrieve an existing store with a different primary key', async () => {
25
+ await usingAsync(new Injector(), async (i) => {
26
26
  const sm = i.getInstance(StoreManager);
27
27
  sm.addStore(new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
28
28
  expect(() => sm.getStoreFor(TestClass, 'booleanValue')).toThrowError('Primary keys not match');
29
29
  });
30
30
  });
31
- it('Can set up stores with an extension method', () => {
32
- using(new Injector(), (i) => {
31
+ it('Can set up stores with an extension method', async () => {
32
+ await usingAsync(new Injector(), async (i) => {
33
33
  i.getInstance(StoreManager).addStore(new InMemoryStore({
34
34
  model: Test,
35
35
  primaryKey: 'id',
@@ -37,18 +37,40 @@ describe('StoreManager', () => {
37
37
  expect(i.getInstance(StoreManager).getStoreFor(Test, 'id')).toBeInstanceOf(InMemoryStore);
38
38
  });
39
39
  });
40
- it('Dispose should throw if failed to dispose one or more store', async () => {
40
+ it('should throw if failed to dispose async one or more store', async () => {
41
+ await usingAsync(new Injector(), async (i) => {
42
+ const sm = i.getInstance(StoreManager);
43
+ const MockStore = class extends InMemoryStore {
44
+ [Symbol.asyncDispose] = () => Promise.reject(':(');
45
+ };
46
+ sm.addStore(new MockStore({
47
+ model: Test,
48
+ primaryKey: 'id',
49
+ }));
50
+ try {
51
+ await sm[Symbol.asyncDispose]();
52
+ }
53
+ catch (error) {
54
+ expect(error).toBeInstanceOf(AggregatedError);
55
+ expect(error.rejections).toHaveLength(1);
56
+ }
57
+ i.cachedSingletons.clear();
58
+ });
59
+ });
60
+ it('should throw if failed to dispose one or more store', async () => {
41
61
  await usingAsync(new Injector(), async (i) => {
42
62
  const sm = i.getInstance(StoreManager);
43
63
  const MockStore = class extends InMemoryStore {
44
- dispose = () => Promise.reject(':(');
64
+ [Symbol.dispose] = () => {
65
+ throw new Error(':(');
66
+ };
45
67
  };
46
68
  sm.addStore(new MockStore({
47
69
  model: Test,
48
70
  primaryKey: 'id',
49
71
  }));
50
72
  try {
51
- await sm.dispose();
73
+ await sm[Symbol.asyncDispose]();
52
74
  }
53
75
  catch (error) {
54
76
  expect(error).toBeInstanceOf(AggregatedError);
@@ -1 +1 @@
1
- {"version":3,"file":"store-manager.spec.js","sourceRoot":"","sources":["../src/store-manager.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store-manager.spec.js","sourceRoot":"","sources":["../src/store-manager.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,IAAI;CAGT;AAED,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;YACtC,MAAM,CAAC,GAAG,EAAE,CACV,EAAE,CAAC,WAAW,CACZ;gBACE,CAAC,CAAS;aACX,EACD,GAAG,CACJ,CACF,CAAC,OAAO,EAAE,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;QACjG,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;YACtC,EAAE,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACtE,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAA;QAChG,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,CAClC,IAAI,aAAa,CAAC;gBAChB,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,IAAI;aACjB,CAAC,CACH,CAAA;YAED,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;QAC3F,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;YACtC,MAAM,SAAS,GAAG,KAAM,SAAQ,aAAuB;gBAC9C,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;aAC1D,CAAA;YAED,EAAE,CAAC,QAAQ,CACT,IAAI,SAAS,CAAC;gBACZ,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,IAAI;aACjB,CAAC,CACH,CAAA;YACD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAA;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;gBAC7C,MAAM,CAAE,KAAyB,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC/D,CAAC;YACD,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAA;QAC5B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;YACtC,MAAM,SAAS,GAAG,KAAM,SAAQ,aAAuB;gBAC9C,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE;oBAC7B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;gBACvB,CAAC,CAAA;aACF,CAAA;YAED,EAAE,CAAC,QAAQ,CACT,IAAI,SAAS,CAAC;gBACZ,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,IAAI;aACjB,CAAC,CACH,CAAA;YACD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAA;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;gBAC7C,MAAM,CAAE,KAAyB,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC/D,CAAC;YACD,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAA;QAC5B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@furystack/core",
3
- "version": "14.0.4",
3
+ "version": "15.0.0",
4
4
  "description": "Core FuryStack package",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -40,13 +40,13 @@
40
40
  },
41
41
  "homepage": "https://github.com/furystack/furystack",
42
42
  "devDependencies": {
43
- "@types/node": "^20.12.13",
44
- "typescript": "^5.4.5",
45
- "vitest": "^1.6.0"
43
+ "@types/node": "^20.14.10",
44
+ "typescript": "^5.5.3",
45
+ "vitest": "^2.0.0"
46
46
  },
47
47
  "dependencies": {
48
- "@furystack/inject": "^11.0.3",
49
- "@furystack/utils": "^7.0.2"
48
+ "@furystack/inject": "^12.0.0",
49
+ "@furystack/utils": "^8.0.0"
50
50
  },
51
51
  "gitHead": "1045d854bfd8c475b7035471d130d401417a2321"
52
52
  }
@@ -1,7 +1,7 @@
1
1
  import { Injector } from '@furystack/inject'
2
- import { globalDisposables, exitHandler } from './global-disposables.js'
2
+ import { describe, expect, it, vi } from 'vitest'
3
+ import { exitHandler, globalDisposables } from './global-disposables.js'
3
4
  import { disposeOnProcessExit } from './helpers.js'
4
- import { describe, it, expect, vi } from 'vitest'
5
5
 
6
6
  describe('Global Disposables', () => {
7
7
  it('Should be empty by default', () => {
@@ -21,14 +21,14 @@ describe('Global Disposables', () => {
21
21
  disposeOnProcessExit(i)
22
22
  expect(globalDisposables).toContain(i)
23
23
  globalDisposables.delete(i)
24
- await i.dispose()
24
+ await i[Symbol.asyncDispose]()
25
25
  })
26
26
  it('Should dispose the injector on exit', async () => {
27
27
  const i = new Injector()
28
- i.dispose = vi.fn(i.dispose)
28
+ i[Symbol.asyncDispose] = vi.fn(i[Symbol.asyncDispose])
29
29
  disposeOnProcessExit(i)
30
30
  await exitHandler()
31
- expect(i.dispose).toBeCalled()
31
+ expect(i[Symbol.asyncDispose]).toBeCalled()
32
32
  globalDisposables.delete(i)
33
33
  })
34
34
  })
@@ -1,19 +1,33 @@
1
- import type { Disposable } from '@furystack/utils'
1
+ import { isAsyncDisposable, isDisposable } from '@furystack/utils'
2
2
 
3
3
  /**
4
4
  * Readonly set that stores references of the disposables that should be disposed on process exit
5
5
  */
6
- export const globalDisposables: Set<Disposable> = new Set()
6
+ export const globalDisposables: Set<Disposable | AsyncDisposable> = new Set()
7
7
 
8
8
  /**
9
9
  * Will be triggered via process event listeners
10
10
  */
11
- export const exitHandler = (async () => {
12
- const result = await Promise.allSettled([...globalDisposables].map((d) => d.dispose()))
13
- const fails = result.filter((r) => r.status === 'rejected')
14
- if (fails && fails.length) {
15
- console.warn(`There was an error during disposing '${fails.length}' global disposable objects`, fails)
16
- }
11
+ export const exitHandler = (() => {
12
+ Promise.allSettled(
13
+ [...globalDisposables].map(async (d) => {
14
+ if (isAsyncDisposable(d)) {
15
+ await d[Symbol.asyncDispose]()
16
+ }
17
+ if (isDisposable(d)) {
18
+ d[Symbol.dispose]()
19
+ }
20
+ }),
21
+ )
22
+ .then((result) => {
23
+ const fails = result.filter((r) => r.status === 'rejected')
24
+ if (fails && fails.length) {
25
+ console.warn(`There was an error during disposing '${fails.length}' global disposable objects`, fails)
26
+ }
27
+ })
28
+ .catch((error) => {
29
+ console.error('Error during disposing global disposables', error)
30
+ })
17
31
  }).bind(null)
18
32
 
19
33
  // do something when app is closing
package/src/helpers.ts CHANGED
@@ -1,16 +1,15 @@
1
1
  import type { Injector } from '@furystack/inject'
2
2
  import { globalDisposables } from './global-disposables.js'
3
3
  import { IdentityContext } from './identity-context.js'
4
- import type { Disposable } from '@furystack/utils'
5
- import { StoreManager } from './store-manager.js'
6
4
  import type { PhysicalStore } from './models/physical-store.js'
5
+ import { StoreManager } from './store-manager.js'
7
6
 
8
7
  /**
9
8
  * The disposable will be disposed on process exit
10
9
  * @param disposable The Disposable object to dispose on process exit
11
10
  * @returns A set of global disposables
12
11
  */
13
- export const disposeOnProcessExit = (disposable: Disposable) => globalDisposables.add(disposable)
12
+ export const disposeOnProcessExit = (disposable: Disposable | AsyncDisposable) => globalDisposables.add(disposable)
14
13
 
15
14
  /**
16
15
  * @param injector The Injector instance
@@ -1,12 +1,12 @@
1
1
  import { Injector } from '@furystack/inject'
2
- import { using, usingAsync } from '@furystack/utils'
2
+ import { usingAsync } from '@furystack/utils'
3
+ import { describe, expect, it, vi } from 'vitest'
4
+ import { getCurrentUser, isAuthenticated, isAuthorized } from './helpers.js'
3
5
  import { IdentityContext } from './identity-context.js'
4
- import { isAuthorized, isAuthenticated, getCurrentUser } from './helpers.js'
5
- import { describe, it, expect, vi } from 'vitest'
6
6
 
7
7
  describe('IdentityContext', () => {
8
- it('Should be retrieved from an Injector', () => {
9
- using(new Injector(), (i) => {
8
+ it('Should be retrieved from an Injector', async () => {
9
+ await usingAsync(new Injector(), async (i) => {
10
10
  const ctx = i.getInstance(IdentityContext)
11
11
  expect(ctx).toBeInstanceOf(IdentityContext)
12
12
  })
@@ -14,7 +14,7 @@ describe('InMemoryStore', () => {
14
14
  it('dispose should empty the cache', async () => {
15
15
  const f = createStore()
16
16
  await f.add(createMockEntity())
17
- f.dispose()
17
+ f[Symbol.dispose]()
18
18
  const count = await f.count()
19
19
  expect(count).toBe(0)
20
20
  })
@@ -1,7 +1,7 @@
1
1
  import type { Constructable } from '@furystack/inject'
2
- import type { PhysicalStore, FindOptions, PartialResult, FilterType, CreateResult } from './models/physical-store.js'
3
- import { selectFields, isOperator, isLogicalOperator } from './models/physical-store.js'
4
2
  import { EventHub } from '@furystack/utils'
3
+ import type { CreateResult, FilterType, FindOptions, PartialResult, PhysicalStore } from './models/physical-store.js'
4
+ import { isLogicalOperator, isOperator, selectFields } from './models/physical-store.js'
5
5
 
6
6
  export class InMemoryStore<T, TPrimaryKey extends keyof T>
7
7
  extends EventHub<{
@@ -192,8 +192,9 @@ export class InMemoryStore<T, TPrimaryKey extends keyof T>
192
192
  this.emit('onEntityUpdated', { id, change: data })
193
193
  }
194
194
 
195
- public dispose() {
195
+ public [Symbol.dispose]() {
196
196
  this.cache.clear()
197
+ super[Symbol.dispose]()
197
198
  }
198
199
 
199
200
  public readonly primaryKey: TPrimaryKey
@@ -1,10 +1,10 @@
1
- import { using, usingAsync } from '@furystack/utils'
2
1
  import { Injector } from '@furystack/inject'
3
- import { StoreManager } from './store-manager.js'
4
- import { InMemoryStore } from './in-memory-store.js'
5
- import { AggregatedError } from './errors/aggregated-error.js'
2
+ import { usingAsync } from '@furystack/utils'
3
+ import { describe, expect, it } from 'vitest'
6
4
  import { TestClass } from './create-physical-store-tests.js'
7
- import { describe, it, expect } from 'vitest'
5
+ import { AggregatedError } from './errors/aggregated-error.js'
6
+ import { InMemoryStore } from './in-memory-store.js'
7
+ import { StoreManager } from './store-manager.js'
8
8
 
9
9
  class Test {
10
10
  declare id: number
@@ -12,14 +12,14 @@ class Test {
12
12
  }
13
13
 
14
14
  describe('StoreManager', () => {
15
- it('Can be retrieved from an injector', () => {
16
- using(new Injector(), (i) => {
15
+ it('Can be retrieved from an injector', async () => {
16
+ await usingAsync(new Injector(), async (i) => {
17
17
  expect(i.getInstance(StoreManager)).toBeInstanceOf(StoreManager)
18
18
  })
19
19
  })
20
20
 
21
- it('Should throw if trying to retrieve a non-existing store', () => {
22
- using(new Injector(), (i) => {
21
+ it('Should throw if trying to retrieve a non-existing store', async () => {
22
+ await usingAsync(new Injector(), async (i) => {
23
23
  const sm = i.getInstance(StoreManager)
24
24
  expect(() =>
25
25
  sm.getStoreFor(
@@ -32,16 +32,16 @@ describe('StoreManager', () => {
32
32
  })
33
33
  })
34
34
 
35
- it('Should throw if trying to retrieve an existing store with a different primary key', () => {
36
- using(new Injector(), (i) => {
35
+ it('Should throw if trying to retrieve an existing store with a different primary key', async () => {
36
+ await usingAsync(new Injector(), async (i) => {
37
37
  const sm = i.getInstance(StoreManager)
38
38
  sm.addStore(new InMemoryStore({ model: TestClass, primaryKey: 'id' }))
39
39
  expect(() => sm.getStoreFor(TestClass, 'booleanValue')).toThrowError('Primary keys not match')
40
40
  })
41
41
  })
42
42
 
43
- it('Can set up stores with an extension method', () => {
44
- using(new Injector(), (i) => {
43
+ it('Can set up stores with an extension method', async () => {
44
+ await usingAsync(new Injector(), async (i) => {
45
45
  i.getInstance(StoreManager).addStore(
46
46
  new InMemoryStore({
47
47
  model: Test,
@@ -53,11 +53,36 @@ describe('StoreManager', () => {
53
53
  })
54
54
  })
55
55
 
56
- it('Dispose should throw if failed to dispose one or more store', async () => {
56
+ it('should throw if failed to dispose async one or more store', async () => {
57
+ await usingAsync(new Injector(), async (i) => {
58
+ const sm = i.getInstance(StoreManager)
59
+ const MockStore = class extends InMemoryStore<any, any> {
60
+ public [Symbol.asyncDispose] = () => Promise.reject(':(')
61
+ }
62
+
63
+ sm.addStore(
64
+ new MockStore({
65
+ model: Test,
66
+ primaryKey: 'id',
67
+ }),
68
+ )
69
+ try {
70
+ await sm[Symbol.asyncDispose]()
71
+ } catch (error) {
72
+ expect(error).toBeInstanceOf(AggregatedError)
73
+ expect((error as AggregatedError).rejections).toHaveLength(1)
74
+ }
75
+ i.cachedSingletons.clear()
76
+ })
77
+ })
78
+
79
+ it('should throw if failed to dispose one or more store', async () => {
57
80
  await usingAsync(new Injector(), async (i) => {
58
81
  const sm = i.getInstance(StoreManager)
59
82
  const MockStore = class extends InMemoryStore<any, any> {
60
- public dispose = () => Promise.reject(':(')
83
+ public [Symbol.dispose] = () => {
84
+ throw new Error(':(')
85
+ }
61
86
  }
62
87
 
63
88
  sm.addStore(
@@ -67,7 +92,7 @@ describe('StoreManager', () => {
67
92
  }),
68
93
  )
69
94
  try {
70
- await sm.dispose()
95
+ await sm[Symbol.asyncDispose]()
71
96
  } catch (error) {
72
97
  expect(error).toBeInstanceOf(AggregatedError)
73
98
  expect((error as AggregatedError).rejections).toHaveLength(1)
@@ -1,6 +1,6 @@
1
1
  import type { Constructable } from '@furystack/inject'
2
2
  import { Injectable } from '@furystack/inject'
3
- import type { Disposable } from '@furystack/utils'
3
+ import { isAsyncDisposable, isDisposable } from '@furystack/utils'
4
4
  import { AggregatedError } from './errors/aggregated-error.js'
5
5
  import type { PhysicalStore } from './models/physical-store.js'
6
6
 
@@ -8,16 +8,25 @@ import type { PhysicalStore } from './models/physical-store.js'
8
8
  * Manager class for store instances
9
9
  */
10
10
  @Injectable({ lifetime: 'singleton' })
11
- export class StoreManager implements Disposable {
11
+ export class StoreManager implements AsyncDisposable {
12
12
  /**
13
13
  * Disposes the StoreManager and all store instances
14
14
  */
15
- public async dispose() {
16
- const result = await Promise.allSettled([...this.stores.entries()].map(async ([_model, store]) => store.dispose()))
17
- const fails = result.filter((r) => r.status === 'rejected') as PromiseRejectedResult[]
15
+ public async [Symbol.asyncDispose]() {
16
+ const result = await Promise.allSettled(
17
+ [...this.stores.entries()].map(async ([_model, store]) => {
18
+ if (isDisposable(store)) {
19
+ store[Symbol.dispose]()
20
+ }
21
+ if (isAsyncDisposable(store)) {
22
+ await store[Symbol.asyncDispose]()
23
+ }
24
+ }),
25
+ )
26
+ const fails = result.filter((r) => r.status === 'rejected')
18
27
  if (fails && fails.length) {
19
28
  const error = new AggregatedError(
20
- `There was an error during disposing ${fails.length} stores: ${fails.map((f) => f.reason)}`,
29
+ `There was an error during disposing ${fails.length} stores: ${fails.map((f) => f.reason as string).join(', ')}`,
21
30
  fails,
22
31
  )
23
32
  throw error