@furystack/core 11.3.1 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +28 -8
- package/src/create-physical-store-tests.ts +1 -0
- package/src/global-disposable.spec.ts +2 -1
- package/src/helpers.ts +1 -2
- package/src/identity-context.spec.ts +4 -3
- package/src/in-memory-store.spec.ts +1 -0
- package/src/in-memory-store.ts +0 -1
- package/src/index.ts +0 -1
- package/src/models/physical-store.ts +0 -5
- package/src/store-manager.spec.ts +1 -0
- package/src/store-manager.ts +0 -2
- package/types/create-physical-store-tests.d.ts.map +1 -1
- package/types/helpers.d.ts +1 -2
- package/types/helpers.d.ts.map +1 -1
- package/types/in-memory-store.d.ts +0 -1
- package/types/in-memory-store.d.ts.map +1 -1
- package/types/index.d.ts +0 -1
- package/types/index.d.ts.map +1 -1
- package/types/models/physical-store.d.ts +0 -5
- package/types/models/physical-store.d.ts.map +1 -1
- package/types/store-manager.d.ts +0 -2
- package/types/store-manager.d.ts.map +1 -1
- package/dist/create-physical-store-tests.js +0 -451
- package/dist/create-physical-store-tests.js.map +0 -1
- package/dist/errors/aggregated-error.js +0 -15
- package/dist/errors/aggregated-error.js.map +0 -1
- package/dist/errors/authorization-error.js +0 -7
- package/dist/errors/authorization-error.js.map +0 -1
- package/dist/errors/index.js +0 -19
- package/dist/errors/index.js.map +0 -1
- package/dist/global-disposable.spec.js +0 -33
- package/dist/global-disposable.spec.js.map +0 -1
- package/dist/global-disposables.js +0 -29
- package/dist/global-disposables.js.map +0 -1
- package/dist/helpers.js +0 -48
- package/dist/helpers.js.map +0 -1
- package/dist/identity-context.js +0 -26
- package/dist/identity-context.js.map +0 -1
- package/dist/identity-context.spec.js +0 -41
- package/dist/identity-context.spec.js.map +0 -1
- package/dist/in-memory-store.js +0 -190
- package/dist/in-memory-store.js.map +0 -1
- package/dist/in-memory-store.spec.js +0 -20
- package/dist/in-memory-store.spec.js.map +0 -1
- package/dist/index.js +0 -26
- package/dist/index.js.map +0 -1
- package/dist/models/physical-store.js +0 -36
- package/dist/models/physical-store.js.map +0 -1
- package/dist/models/user.js +0 -10
- package/dist/models/user.js.map +0 -1
- package/dist/store-manager.js +0 -64
- package/dist/store-manager.js.map +0 -1
- package/dist/store-manager.spec.js +0 -64
- package/dist/store-manager.spec.js.map +0 -1
- package/types/global-disposable.spec.d.ts +0 -2
- package/types/global-disposable.spec.d.ts.map +0 -1
- package/types/identity-context.spec.d.ts +0 -2
- package/types/identity-context.spec.d.ts.map +0 -1
- package/types/in-memory-store.spec.d.ts +0 -2
- package/types/in-memory-store.spec.d.ts.map +0 -1
- package/types/store-manager.spec.d.ts +0 -2
- package/types/store-manager.spec.d.ts.map +0 -1
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.exitHandler = exports.globalDisposables = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Readonly set that stores references of the disposables that should be disposed on process exit
|
|
6
|
-
*/
|
|
7
|
-
exports.globalDisposables = new Set();
|
|
8
|
-
/**
|
|
9
|
-
* Will be triggered via process event listeners
|
|
10
|
-
*/
|
|
11
|
-
exports.exitHandler = (async () => {
|
|
12
|
-
const result = await Promise.allSettled([...exports.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
|
-
}
|
|
17
|
-
}).bind(null);
|
|
18
|
-
// do something when app is closing
|
|
19
|
-
globalThis.process?.on?.('exit', exports.exitHandler);
|
|
20
|
-
// catches ctrl+c event
|
|
21
|
-
globalThis.process?.on?.('SIGINT', exports.exitHandler);
|
|
22
|
-
globalThis.process?.on?.('SIGTERM', () => exports.exitHandler);
|
|
23
|
-
// catches "kill pid" (for example: nodemon restart)
|
|
24
|
-
globalThis.process?.on?.('SIGUSR1', exports.exitHandler);
|
|
25
|
-
globalThis.process?.on?.('SIGUSR2', exports.exitHandler);
|
|
26
|
-
// catches uncaught exceptions
|
|
27
|
-
globalThis.process?.on?.('uncaughtException', exports.exitHandler);
|
|
28
|
-
globalThis.window?.addEventListener('beforeunload', exports.exitHandler);
|
|
29
|
-
//# sourceMappingURL=global-disposables.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"global-disposables.js","sourceRoot":"","sources":["../src/global-disposables.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,iBAAiB,GAAoB,IAAI,GAAG,EAAE,CAAA;AAE3D;;GAEG;AACU,QAAA,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;IACrC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,yBAAiB,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;QACzB,OAAO,CAAC,IAAI,CAAC,wCAAwC,KAAK,CAAC,MAAM,6BAA6B,EAAE,KAAK,CAAC,CAAA;KACvG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEb,mCAAmC;AACnC,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,mBAAW,CAAC,CAAA;AAE7C,uBAAuB;AACvB,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,mBAAW,CAAC,CAAA;AAE/C,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,mBAAW,CAAC,CAAA;AAEtD,oDAAoD;AACpD,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,mBAAW,CAAC,CAAA;AAChD,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,mBAAW,CAAC,CAAA;AAEhD,8BAA8B;AAC9B,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,mBAAmB,EAAE,mBAAW,CAAC,CAGzD;AAAC,UAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,cAAc,EAAE,mBAAW,CAAC,CAAA"}
|
package/dist/helpers.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addStore = exports.getStoreManager = exports.getCurrentUser = exports.isAuthorized = exports.isAuthenticated = exports.disposeOnProcessExit = void 0;
|
|
4
|
-
const global_disposables_1 = require("./global-disposables");
|
|
5
|
-
const identity_context_1 = require("./identity-context");
|
|
6
|
-
const store_manager_1 = require("./store-manager");
|
|
7
|
-
/**
|
|
8
|
-
* The disposable will be disposed on process exit
|
|
9
|
-
*
|
|
10
|
-
* @param disposable The Disposable object to dispose on process exit
|
|
11
|
-
* @returns A set of global disposables
|
|
12
|
-
*/
|
|
13
|
-
const disposeOnProcessExit = (disposable) => global_disposables_1.globalDisposables.add(disposable);
|
|
14
|
-
exports.disposeOnProcessExit = disposeOnProcessExit;
|
|
15
|
-
/**
|
|
16
|
-
* @param injector The Injector instance
|
|
17
|
-
* @returns the current authentication status from the identity context
|
|
18
|
-
*/
|
|
19
|
-
const isAuthenticated = async (injector) => injector.getInstance(identity_context_1.IdentityContext).isAuthenticated();
|
|
20
|
-
exports.isAuthenticated = isAuthenticated;
|
|
21
|
-
/**
|
|
22
|
-
* @param injector The Injector instance
|
|
23
|
-
* @param {...any} roles A list of roles
|
|
24
|
-
* @returns if the current authorization status from the identity context
|
|
25
|
-
*/
|
|
26
|
-
const isAuthorized = async (injector, ...roles) => injector.getInstance(identity_context_1.IdentityContext).isAuthorized(...roles);
|
|
27
|
-
exports.isAuthorized = isAuthorized;
|
|
28
|
-
/**
|
|
29
|
-
* @param injector The Injector instance
|
|
30
|
-
* @returns The current user from the identity context
|
|
31
|
-
*/
|
|
32
|
-
const getCurrentUser = async (injector) => injector.getInstance(identity_context_1.IdentityContext).getCurrentUser();
|
|
33
|
-
exports.getCurrentUser = getCurrentUser;
|
|
34
|
-
/**
|
|
35
|
-
* @param injector The Injector instance
|
|
36
|
-
* @returns A Store Manager instance to setup stores
|
|
37
|
-
*/
|
|
38
|
-
const getStoreManager = (injector) => injector.getInstance(store_manager_1.StoreManager);
|
|
39
|
-
exports.getStoreManager = getStoreManager;
|
|
40
|
-
/**
|
|
41
|
-
*
|
|
42
|
-
* @param injector The Injector instance
|
|
43
|
-
* @param store The store to add
|
|
44
|
-
* @returns The Store Manager instance for chaining
|
|
45
|
-
*/
|
|
46
|
-
const addStore = (injector, store) => (0, exports.getStoreManager)(injector).addStore(store);
|
|
47
|
-
exports.addStore = addStore;
|
|
48
|
-
//# sourceMappingURL=helpers.js.map
|
package/dist/helpers.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;AACA,6DAAwD;AACxD,yDAAoD;AAEpD,mDAA8C;AAG9C;;;;;GAKG;AACI,MAAM,oBAAoB,GAAG,CAAC,UAAsB,EAAE,EAAE,CAAC,sCAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAApF,QAAA,oBAAoB,wBAAgE;AAEjG;;;GAGG;AACI,MAAM,eAAe,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,kCAAe,CAAC,CAAC,eAAe,EAAE,CAAA;AAAvG,QAAA,eAAe,mBAAwF;AAEpH;;;;GAIG;AACI,MAAM,YAAY,GAAG,KAAK,EAAE,QAAkB,EAAE,GAAG,KAAe,EAAE,EAAE,CAC3E,QAAQ,CAAC,WAAW,CAAC,kCAAe,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAA;AADjD,QAAA,YAAY,gBACqC;AAE9D;;;GAGG;AACI,MAAM,cAAc,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,kCAAe,CAAC,CAAC,cAAc,EAAE,CAAA;AAArG,QAAA,cAAc,kBAAuF;AAElH;;;GAGG;AACI,MAAM,eAAe,GAAG,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,4BAAY,CAAC,CAAA;AAA5E,QAAA,eAAe,mBAA6D;AAEzF;;;;;GAKG;AACI,MAAM,QAAQ,GAAG,CAAiC,QAAkB,EAAE,KAAoC,EAAE,EAAE,CACnH,IAAA,uBAAe,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAD9B,QAAA,QAAQ,YACsB"}
|
package/dist/identity-context.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.IdentityContext = void 0;
|
|
10
|
-
const inject_1 = require("@furystack/inject");
|
|
11
|
-
let IdentityContext = class IdentityContext {
|
|
12
|
-
async isAuthenticated() {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
async isAuthorized(..._roles) {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
async getCurrentUser() {
|
|
19
|
-
throw Error('No IdentityContext');
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
IdentityContext = __decorate([
|
|
23
|
-
(0, inject_1.Injectable)({ lifetime: 'scoped' })
|
|
24
|
-
], IdentityContext);
|
|
25
|
-
exports.IdentityContext = IdentityContext;
|
|
26
|
-
//# sourceMappingURL=identity-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"identity-context.js","sourceRoot":"","sources":["../src/identity-context.ts"],"names":[],"mappings":";;;;;;;;;AAAA,8CAA8C;AAI9C,IAAa,eAAe,GAA5B,MAAa,eAAe;IACnB,KAAK,CAAC,eAAe;QAC1B,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,GAAG,MAAgB;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACnC,CAAC;CACF,CAAA;AAZY,eAAe;IAD3B,IAAA,mBAAU,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;GACtB,eAAe,CAY3B;AAZY,0CAAe"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const inject_1 = require("@furystack/inject");
|
|
4
|
-
const utils_1 = require("@furystack/utils");
|
|
5
|
-
const identity_context_1 = require("./identity-context");
|
|
6
|
-
const helpers_1 = require("./helpers");
|
|
7
|
-
describe('IdentityContext', () => {
|
|
8
|
-
it('Should be retrieved from an Injector', () => {
|
|
9
|
-
(0, utils_1.using)(new inject_1.Injector(), (i) => {
|
|
10
|
-
const ctx = i.getInstance(identity_context_1.IdentityContext);
|
|
11
|
-
expect(ctx).toBeInstanceOf(identity_context_1.IdentityContext);
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
it('isAuthenticated should be called from helper', async () => {
|
|
15
|
-
await (0, utils_1.usingAsync)(new inject_1.Injector(), async (i) => {
|
|
16
|
-
const ctx = i.getInstance(identity_context_1.IdentityContext);
|
|
17
|
-
const spy = jest.spyOn(ctx, 'isAuthenticated');
|
|
18
|
-
const isAuth = await (0, helpers_1.isAuthenticated)(i);
|
|
19
|
-
expect(isAuth).toBeFalsy();
|
|
20
|
-
expect(spy).toBeCalledTimes(1);
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
it('isAuthorized should be called from helper', async () => {
|
|
24
|
-
await (0, utils_1.usingAsync)(new inject_1.Injector(), async (i) => {
|
|
25
|
-
const ctx = i.getInstance(identity_context_1.IdentityContext);
|
|
26
|
-
const spy = jest.spyOn(ctx, 'isAuthorized');
|
|
27
|
-
const isAuth = await (0, helpers_1.isAuthorized)(i);
|
|
28
|
-
expect(isAuth).toBeFalsy();
|
|
29
|
-
expect(spy).toBeCalledTimes(1);
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
it('getCurrentUser should be called from helper', async () => {
|
|
33
|
-
await (0, utils_1.usingAsync)(new inject_1.Injector(), async (i) => {
|
|
34
|
-
const ctx = i.getInstance(identity_context_1.IdentityContext);
|
|
35
|
-
const spy = jest.spyOn(ctx, 'getCurrentUser');
|
|
36
|
-
await expect((0, helpers_1.getCurrentUser)(i)).rejects.toThrowError('');
|
|
37
|
-
expect(spy).toBeCalledTimes(1);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
//# sourceMappingURL=identity-context.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"identity-context.spec.js","sourceRoot":"","sources":["../src/identity-context.spec.ts"],"names":[],"mappings":";;AAAA,8CAA4C;AAC5C,4CAAoD;AACpD,yDAAoD;AACpD,uCAAyE;AAEzE,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,IAAA,aAAK,EAAC,IAAI,iBAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,kCAAe,CAAC,CAAA;YAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,kCAAe,CAAC,CAAA;QAC7C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,IAAA,kBAAU,EAAC,IAAI,iBAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,kCAAe,CAAC,CAAA;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,MAAM,IAAA,yBAAe,EAAC,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,IAAA,kBAAU,EAAC,IAAI,iBAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,kCAAe,CAAC,CAAA;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;YAC3C,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAY,EAAC,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,IAAA,kBAAU,EAAC,IAAI,iBAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,kCAAe,CAAC,CAAA;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;YAC7C,MAAM,MAAM,CAAC,IAAA,wBAAc,EAAC,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"}
|
package/dist/in-memory-store.js
DELETED
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InMemoryStore = void 0;
|
|
4
|
-
const physical_store_1 = require("./models/physical-store");
|
|
5
|
-
class InMemoryStore {
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
8
|
-
* @param keys The keys to remove from the store
|
|
9
|
-
*/
|
|
10
|
-
async remove(...keys) {
|
|
11
|
-
keys.map((key) => this.cache.delete(key));
|
|
12
|
-
}
|
|
13
|
-
async add(...entries) {
|
|
14
|
-
const created = entries.map((e) => {
|
|
15
|
-
const entry = { ...e };
|
|
16
|
-
if (this.cache.has(entry[this.primaryKey])) {
|
|
17
|
-
throw new Error('Item with the primary key already exists.');
|
|
18
|
-
}
|
|
19
|
-
this.cache.set(entry[this.primaryKey], entry);
|
|
20
|
-
return entry;
|
|
21
|
-
});
|
|
22
|
-
return { created };
|
|
23
|
-
}
|
|
24
|
-
filterInternal(values, filter) {
|
|
25
|
-
if (!filter) {
|
|
26
|
-
return values;
|
|
27
|
-
}
|
|
28
|
-
return values.filter((item) => {
|
|
29
|
-
for (const key in filter) {
|
|
30
|
-
if ((0, physical_store_1.isLogicalOperator)(key)) {
|
|
31
|
-
const filterValue = filter[key];
|
|
32
|
-
switch (key) {
|
|
33
|
-
case '$and':
|
|
34
|
-
if (filterValue.some((v) => !this.filterInternal([item], v).length)) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
break;
|
|
38
|
-
case '$or':
|
|
39
|
-
if (filterValue.some((v) => this.filterInternal([item], v).length)) {
|
|
40
|
-
break;
|
|
41
|
-
}
|
|
42
|
-
return false;
|
|
43
|
-
default:
|
|
44
|
-
throw new Error(`The logical operation '${key}' is not a valid operation`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
else if (typeof filter[key] === 'object') {
|
|
48
|
-
for (const filterKey in filter[key]) {
|
|
49
|
-
if ((0, physical_store_1.isOperator)(filterKey)) {
|
|
50
|
-
const itemValue = item[key];
|
|
51
|
-
const filterValue = filter[key][filterKey];
|
|
52
|
-
switch (filterKey) {
|
|
53
|
-
case '$eq':
|
|
54
|
-
if (filterValue !== itemValue) {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
break;
|
|
58
|
-
case '$ne':
|
|
59
|
-
if (filterValue === itemValue) {
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
break;
|
|
63
|
-
case '$in':
|
|
64
|
-
if (!filterValue.includes(itemValue)) {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
break;
|
|
68
|
-
case '$nin':
|
|
69
|
-
if (filterValue.includes(itemValue)) {
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
break;
|
|
73
|
-
case '$lt':
|
|
74
|
-
if (itemValue < filterValue) {
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
return false;
|
|
78
|
-
case '$lte':
|
|
79
|
-
if (itemValue <= filterValue) {
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
return false;
|
|
83
|
-
case '$gt':
|
|
84
|
-
if (itemValue > filterValue) {
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
return false;
|
|
88
|
-
case '$gte':
|
|
89
|
-
if (itemValue >= filterValue) {
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
return false;
|
|
93
|
-
case '$regex':
|
|
94
|
-
if (!new RegExp(filterValue).test(itemValue.toString())) {
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
break;
|
|
98
|
-
case '$startsWith':
|
|
99
|
-
if (!itemValue.startsWith(filterValue)) {
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
break;
|
|
103
|
-
case '$endsWith':
|
|
104
|
-
if (!itemValue.endsWith(filterValue)) {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
break;
|
|
108
|
-
case '$like':
|
|
109
|
-
if (!this.evaluateLike(itemValue, filterValue)) {
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
break;
|
|
113
|
-
default:
|
|
114
|
-
throw new Error(`The expression (${filterKey}) is not supported by '${this.constructor.name}'!`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
throw new Error(`The filter key '${filterKey}' is not a valid operation`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
throw new Error(`The filter has to be an object, got ${typeof filter[key]} for field '${key}'`);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return true;
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
async find(searchOptions) {
|
|
130
|
-
let value = this.filterInternal([...this.cache.values()], searchOptions.filter);
|
|
131
|
-
if (searchOptions.order) {
|
|
132
|
-
for (const fieldName of Object.keys(searchOptions.order)) {
|
|
133
|
-
value = value.sort((a, b) => {
|
|
134
|
-
const order = searchOptions.order[fieldName];
|
|
135
|
-
if (a[fieldName] < b[fieldName])
|
|
136
|
-
return order === 'ASC' ? -1 : 1;
|
|
137
|
-
if (a[fieldName] > b[fieldName])
|
|
138
|
-
return order === 'ASC' ? 1 : -1;
|
|
139
|
-
return 0;
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
if (searchOptions.top || searchOptions.skip) {
|
|
144
|
-
value = value.slice(searchOptions.skip, (searchOptions.skip || 0) + (searchOptions.top || this.cache.size));
|
|
145
|
-
}
|
|
146
|
-
if (searchOptions.select) {
|
|
147
|
-
value = value.map((item) => {
|
|
148
|
-
return (0, physical_store_1.selectFields)(item, ...searchOptions.select);
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
return value;
|
|
152
|
-
}
|
|
153
|
-
async count(filter) {
|
|
154
|
-
return this.filterInternal([...this.cache.values()], filter).length;
|
|
155
|
-
}
|
|
156
|
-
async update(id, data) {
|
|
157
|
-
if (!this.cache.has(id)) {
|
|
158
|
-
throw Error(`Entity not found with id '${id}', cannot update!`);
|
|
159
|
-
}
|
|
160
|
-
this.cache.set(id, {
|
|
161
|
-
...this.cache.get(id),
|
|
162
|
-
...data,
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
dispose() {
|
|
166
|
-
this.cache.clear();
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Creates an InMemoryStore that can be used for testing purposes.
|
|
170
|
-
*
|
|
171
|
-
* @param options Options for the In Memory Store
|
|
172
|
-
* @param options.primaryKey The name of the primary key field
|
|
173
|
-
* @param options.model The Entity Model
|
|
174
|
-
*/
|
|
175
|
-
constructor(options) {
|
|
176
|
-
this.cache = new Map();
|
|
177
|
-
this.get = async (key, select) => {
|
|
178
|
-
const item = this.cache.get(key);
|
|
179
|
-
return item && select ? (0, physical_store_1.selectFields)(item, ...select) : item;
|
|
180
|
-
};
|
|
181
|
-
this.evaluateLike = (value, likeString) => {
|
|
182
|
-
const likeRegex = `^${likeString.replace(/%/g, '.*')}$`;
|
|
183
|
-
return value.match(new RegExp(likeRegex, 'i'));
|
|
184
|
-
};
|
|
185
|
-
this.primaryKey = options.primaryKey;
|
|
186
|
-
this.model = options.model;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
exports.InMemoryStore = InMemoryStore;
|
|
190
|
-
//# sourceMappingURL=in-memory-store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const in_memory_store_1 = require("./in-memory-store");
|
|
4
|
-
const create_physical_store_tests_1 = require("./create-physical-store-tests");
|
|
5
|
-
describe('InMemoryStore', () => {
|
|
6
|
-
const createStore = () => new in_memory_store_1.InMemoryStore({ model: create_physical_store_tests_1.TestClass, primaryKey: 'id' });
|
|
7
|
-
(0, create_physical_store_tests_1.createStoreTest)({
|
|
8
|
-
createStore,
|
|
9
|
-
typeName: 'InMemoryStore',
|
|
10
|
-
// skipAdvancedTests: true, // TODO
|
|
11
|
-
});
|
|
12
|
-
it('dispose should empty the cache', async () => {
|
|
13
|
-
const f = createStore();
|
|
14
|
-
await f.add((0, create_physical_store_tests_1.createMockEntity)());
|
|
15
|
-
f.dispose();
|
|
16
|
-
const count = await f.count();
|
|
17
|
-
expect(count).toBe(0);
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
//# sourceMappingURL=in-memory-store.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-store.spec.js","sourceRoot":"","sources":["../src/in-memory-store.spec.ts"],"names":[],"mappings":";;AAAA,uDAAiD;AACjD,+EAA4F;AAE5F,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,+BAAa,CAAC,EAAE,KAAK,EAAE,uCAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;IAEnF,IAAA,6CAAe,EAAC;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,IAAA,8CAAgB,GAAE,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"}
|
package/dist/index.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./errors"), exports);
|
|
18
|
-
__exportStar(require("./models/physical-store"), exports);
|
|
19
|
-
__exportStar(require("./models/user"), exports);
|
|
20
|
-
__exportStar(require("./in-memory-store"), exports);
|
|
21
|
-
__exportStar(require("./store-manager"), exports);
|
|
22
|
-
__exportStar(require("./global-disposables"), exports);
|
|
23
|
-
__exportStar(require("./identity-context"), exports);
|
|
24
|
-
__exportStar(require("./create-physical-store-tests"), exports);
|
|
25
|
-
__exportStar(require("./helpers"), exports);
|
|
26
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,0DAAuC;AACvC,gDAA6B;AAC7B,oDAAiC;AACjC,kDAA+B;AAC/B,uDAAoC;AACpC,qDAAkC;AAClC,gEAA6C;AAC7C,4CAAyB"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.selectFields = exports.t = exports.isOperator = exports.isLogicalOperator = exports.allOperators = exports.LogicalOperators = exports.ArrayComparisonOperators = exports.SingleComparisonOperators = exports.StringComparisonOperators = exports.NumberComparisonOperators = void 0;
|
|
4
|
-
exports.NumberComparisonOperators = ['$gt', '$gte', '$lt', '$lte'];
|
|
5
|
-
exports.StringComparisonOperators = ['$startsWith', '$endsWith', '$like', '$regex'];
|
|
6
|
-
exports.SingleComparisonOperators = ['$eq', '$ne'];
|
|
7
|
-
exports.ArrayComparisonOperators = ['$in', '$nin'];
|
|
8
|
-
exports.LogicalOperators = ['$and', '$not', '$nor', '$or'];
|
|
9
|
-
exports.allOperators = [
|
|
10
|
-
...exports.SingleComparisonOperators,
|
|
11
|
-
...exports.NumberComparisonOperators,
|
|
12
|
-
...exports.ArrayComparisonOperators,
|
|
13
|
-
...exports.LogicalOperators,
|
|
14
|
-
...exports.StringComparisonOperators,
|
|
15
|
-
];
|
|
16
|
-
const isLogicalOperator = (propertyString) => exports.LogicalOperators.includes(propertyString);
|
|
17
|
-
exports.isLogicalOperator = isLogicalOperator;
|
|
18
|
-
const isOperator = (propertyString) => exports.allOperators.includes(propertyString);
|
|
19
|
-
exports.isOperator = isOperator;
|
|
20
|
-
exports.t = {
|
|
21
|
-
a: { $eq: 3 },
|
|
22
|
-
b: { $in: ['a', 'b', 'c'] },
|
|
23
|
-
$and: [{ a: { $eq: 2 } }],
|
|
24
|
-
};
|
|
25
|
-
const selectFields = (entry, ...fields) => {
|
|
26
|
-
const returnValue = {};
|
|
27
|
-
Object.keys(entry).map((key) => {
|
|
28
|
-
const field = key;
|
|
29
|
-
if (fields.includes(field)) {
|
|
30
|
-
returnValue[field] = entry[field];
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
return returnValue;
|
|
34
|
-
};
|
|
35
|
-
exports.selectFields = selectFields;
|
|
36
|
-
//# sourceMappingURL=physical-store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"physical-store.js","sourceRoot":"","sources":["../../src/models/physical-store.ts"],"names":[],"mappings":";;;AAGa,QAAA,yBAAyB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAA;AAEnE,QAAA,yBAAyB,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAA;AACpF,QAAA,yBAAyB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAU,CAAA;AAEnD,QAAA,wBAAwB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAU,CAAA;AACnD,QAAA,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAU,CAAA;AAE3D,QAAA,YAAY,GAAG;IAC1B,GAAG,iCAAyB;IAC5B,GAAG,iCAAyB;IAC5B,GAAG,gCAAwB;IAC3B,GAAG,wBAAgB;IACnB,GAAG,iCAAyB;CACpB,CAAA;AAUH,MAAM,iBAAiB,GAAG,CAAC,cAAsB,EAAuD,EAAE,CAC/G,wBAAgB,CAAC,QAAQ,CAAC,cAAmD,CAAC,CAAA;AADnE,QAAA,iBAAiB,qBACkD;AAEzE,MAAM,UAAU,GAAG,CAAC,cAAsB,EAAmD,EAAE,CACpG,oBAAY,CAAC,QAAQ,CAAC,cAA+C,CAAC,CAAA;AAD3D,QAAA,UAAU,cACiD;AAE3D,QAAA,CAAC,GAAqD;IACjE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;IACb,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAC3B,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;CAC1B,CAAA;AAuCM,MAAM,YAAY,GAAG,CAAkD,KAAQ,EAAE,GAAG,MAAc,EAAE,EAAE;IAC3G,MAAM,WAAW,GAAG,EAA8B,CAAA;IAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAmB,GAAqB,CAAA;QACnD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC1B,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;SAClC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AATY,QAAA,YAAY,gBASxB"}
|
package/dist/models/user.js
DELETED
package/dist/models/user.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,IAAI;CAUhB;AAVD,oBAUC"}
|
package/dist/store-manager.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.StoreManager = void 0;
|
|
10
|
-
const inject_1 = require("@furystack/inject");
|
|
11
|
-
const errors_1 = require("./errors");
|
|
12
|
-
/**
|
|
13
|
-
* Manager class for store instances
|
|
14
|
-
*/
|
|
15
|
-
let StoreManager = class StoreManager {
|
|
16
|
-
constructor() {
|
|
17
|
-
this.stores = new Map();
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Disposes the StoreManager and all store instances
|
|
21
|
-
*/
|
|
22
|
-
async dispose() {
|
|
23
|
-
const result = await Promise.allSettled([...this.stores.entries()].map(async ([_model, store]) => store.dispose()));
|
|
24
|
-
const fails = result.filter((r) => r.status === 'rejected');
|
|
25
|
-
if (fails && fails.length) {
|
|
26
|
-
const error = new errors_1.AggregatedError(`There was an error during disposing ${fails.length} stores: ${fails.map((f) => f.reason)}`, fails);
|
|
27
|
-
throw error;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Returns a store model for a constructable object.
|
|
32
|
-
* Throws error if no store is registered
|
|
33
|
-
*
|
|
34
|
-
* @param model The Constructable object
|
|
35
|
-
* @param primaryKey The Primary Key field
|
|
36
|
-
* @throws if the Store is not registered
|
|
37
|
-
* @returns a Store object
|
|
38
|
-
*/
|
|
39
|
-
getStoreFor(model, primaryKey) {
|
|
40
|
-
const instance = this.stores.get(model);
|
|
41
|
-
if (!instance) {
|
|
42
|
-
throw Error(`Store not found for '${model.name}'`);
|
|
43
|
-
}
|
|
44
|
-
if (primaryKey !== instance.primaryKey) {
|
|
45
|
-
throw Error('Primary keys not match');
|
|
46
|
-
}
|
|
47
|
-
return instance;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Adds a store instance to the StoreManager class
|
|
51
|
-
*
|
|
52
|
-
* @param store The store to add
|
|
53
|
-
* @returns the StoreManager instance for chaining
|
|
54
|
-
*/
|
|
55
|
-
addStore(store) {
|
|
56
|
-
this.stores.set(store.model, store);
|
|
57
|
-
return this;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
StoreManager = __decorate([
|
|
61
|
-
(0, inject_1.Injectable)({ lifetime: 'singleton' })
|
|
62
|
-
], StoreManager);
|
|
63
|
-
exports.StoreManager = StoreManager;
|
|
64
|
-
//# sourceMappingURL=store-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-manager.js","sourceRoot":"","sources":["../src/store-manager.ts"],"names":[],"mappings":";;;;;;;;;AACA,8CAA8C;AAE9C,qCAA0C;AAG1C;;GAEG;AAEH,IAAa,YAAY,GAAzB,MAAa,YAAY;IAAzB;QAeU,WAAM,GAAyD,IAAI,GAAG,EAAE,CAAA;IAoClF,CAAC;IAlDC;;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;YACzB,MAAM,KAAK,GAAG,IAAI,wBAAe,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;SACZ;IACH,CAAC;IAGD;;;;;;;;OAQG;IACI,WAAW,CAIhB,KAAuB,EAAE,UAAuB;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,KAAK,CAAC,wBAAwB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAA;SACnD;QACD,IAAI,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE;YACtC,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAA;SACtC;QACD,OAAO,QAAiB,CAAA;IAC1B,CAAC;IAED;;;;;OAKG;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;AAnDY,YAAY;IADxB,IAAA,mBAAU,EAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,YAAY,CAmDxB;AAnDY,oCAAY"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const utils_1 = require("@furystack/utils");
|
|
4
|
-
const inject_1 = require("@furystack/inject");
|
|
5
|
-
const store_manager_1 = require("./store-manager");
|
|
6
|
-
const in_memory_store_1 = require("./in-memory-store");
|
|
7
|
-
const errors_1 = require("./errors");
|
|
8
|
-
const create_physical_store_tests_1 = require("./create-physical-store-tests");
|
|
9
|
-
class Test {
|
|
10
|
-
}
|
|
11
|
-
describe('StoreManager', () => {
|
|
12
|
-
it('Can be retrieved from an injector', () => {
|
|
13
|
-
(0, utils_1.using)(new inject_1.Injector(), (i) => {
|
|
14
|
-
expect(i.getInstance(store_manager_1.StoreManager)).toBeInstanceOf(store_manager_1.StoreManager);
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
it('Should throw if trying to retrieve a non-existing store', () => {
|
|
18
|
-
(0, utils_1.using)(new inject_1.Injector(), (i) => {
|
|
19
|
-
const sm = i.getInstance(store_manager_1.StoreManager);
|
|
20
|
-
expect(() => sm.getStoreFor(class {
|
|
21
|
-
}, 't')).toThrow();
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
it('Should throw if trying to retrieve an existing store with a different primary key', () => {
|
|
25
|
-
(0, utils_1.using)(new inject_1.Injector(), (i) => {
|
|
26
|
-
const sm = i.getInstance(store_manager_1.StoreManager);
|
|
27
|
-
sm.addStore(new in_memory_store_1.InMemoryStore({ model: create_physical_store_tests_1.TestClass, primaryKey: 'id' }));
|
|
28
|
-
expect(() => sm.getStoreFor(create_physical_store_tests_1.TestClass, 'booleanValue')).toThrowError('Primary keys not match');
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
it('Can set up stores with an extension method', () => {
|
|
32
|
-
(0, utils_1.using)(new inject_1.Injector(), (i) => {
|
|
33
|
-
i.getInstance(store_manager_1.StoreManager).addStore(new in_memory_store_1.InMemoryStore({
|
|
34
|
-
model: Test,
|
|
35
|
-
primaryKey: 'id',
|
|
36
|
-
}));
|
|
37
|
-
expect(i.getInstance(store_manager_1.StoreManager).getStoreFor(Test, 'id')).toBeInstanceOf(in_memory_store_1.InMemoryStore);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
it('Dispose should throw if failed to dispose one or more store', async () => {
|
|
41
|
-
await (0, utils_1.usingAsync)(new inject_1.Injector(), async (i) => {
|
|
42
|
-
const sm = i.getInstance(store_manager_1.StoreManager);
|
|
43
|
-
const MockStore = class extends in_memory_store_1.InMemoryStore {
|
|
44
|
-
constructor() {
|
|
45
|
-
super(...arguments);
|
|
46
|
-
this.dispose = () => Promise.reject(':(');
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
sm.addStore(new MockStore({
|
|
50
|
-
model: Test,
|
|
51
|
-
primaryKey: 'id',
|
|
52
|
-
}));
|
|
53
|
-
try {
|
|
54
|
-
await sm.dispose();
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
expect(error).toBeInstanceOf(errors_1.AggregatedError);
|
|
58
|
-
expect(error.rejections).toHaveLength(1);
|
|
59
|
-
}
|
|
60
|
-
i.cachedSingletons.clear();
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
//# sourceMappingURL=store-manager.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store-manager.spec.js","sourceRoot":"","sources":["../src/store-manager.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"global-disposable.spec.d.ts","sourceRoot":"","sources":["../src/global-disposable.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"identity-context.spec.d.ts","sourceRoot":"","sources":["../src/identity-context.spec.ts"],"names":[],"mappings":""}
|