@furystack/core 10.4.8 → 11.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/dist/errors/index.js +2 -2
- package/dist/errors/index.js.map +1 -1
- package/dist/global-disposable.spec.js +3 -3
- package/dist/global-disposable.spec.js.map +1 -1
- package/dist/helpers.js +48 -0
- package/dist/helpers.js.map +1 -0
- package/dist/identity-context.js +1 -1
- package/dist/identity-context.spec.js +9 -9
- package/dist/identity-context.spec.js.map +1 -1
- package/dist/in-memory-store.js +0 -4
- package/dist/in-memory-store.js.map +1 -1
- package/dist/index.js +9 -8
- package/dist/index.js.map +1 -1
- package/dist/store-manager.js +2 -2
- package/dist/store-manager.js.map +1 -1
- package/dist/store-manager.spec.js +10 -3
- package/dist/store-manager.spec.js.map +1 -1
- package/package.json +8 -9
- package/src/global-disposable.spec.ts +3 -3
- package/src/helpers.ts +49 -0
- package/src/identity-context.spec.ts +9 -9
- package/src/in-memory-store.ts +0 -4
- package/src/index.ts +2 -2
- package/src/store-manager.spec.ts +14 -8
- package/{dist → types}/create-physical-store-tests.d.ts +0 -0
- package/{dist → types}/create-physical-store-tests.d.ts.map +0 -0
- package/{dist → types}/errors/aggregated-error.d.ts +0 -0
- package/{dist → types}/errors/aggregated-error.d.ts.map +0 -0
- package/{dist → types}/errors/authorization-error.d.ts +0 -0
- package/{dist → types}/errors/authorization-error.d.ts.map +0 -0
- package/{dist → types}/errors/index.d.ts +0 -0
- package/{dist → types}/errors/index.d.ts.map +0 -0
- package/types/global-disposable.spec.d.ts +2 -0
- package/{dist → types}/global-disposable.spec.d.ts.map +1 -1
- package/{dist → types}/global-disposables.d.ts +0 -0
- package/{dist → types}/global-disposables.d.ts.map +0 -0
- package/types/helpers.d.ts +40 -0
- package/types/helpers.d.ts.map +1 -0
- package/{dist → types}/identity-context.d.ts +0 -0
- package/{dist → types}/identity-context.d.ts.map +0 -0
- package/types/identity-context.spec.d.ts +2 -0
- package/{dist → types}/identity-context.spec.d.ts.map +1 -1
- package/{dist → types}/in-memory-store.d.ts +0 -0
- package/{dist → types}/in-memory-store.d.ts.map +1 -1
- package/{dist → types}/in-memory-store.spec.d.ts +0 -0
- package/{dist → types}/in-memory-store.spec.d.ts.map +0 -0
- package/{dist → types}/index.d.ts +2 -1
- package/{dist → types}/index.d.ts.map +1 -1
- package/{dist → types}/models/physical-store.d.ts +0 -0
- package/{dist → types}/models/physical-store.d.ts.map +0 -0
- package/{dist → types}/models/user.d.ts +0 -0
- package/{dist → types}/models/user.d.ts.map +0 -0
- package/{dist → types}/store-manager.d.ts +0 -0
- package/{dist → types}/store-manager.d.ts.map +0 -0
- package/types/store-manager.spec.d.ts +2 -0
- package/{dist → types}/store-manager.spec.d.ts.map +1 -1
- package/dist/global-disposable.spec.d.ts +0 -2
- package/dist/identity-context.spec.d.ts +0 -2
- package/dist/injector-extensions.d.ts +0 -39
- package/dist/injector-extensions.d.ts.map +0 -1
- package/dist/injector-extensions.js +0 -24
- package/dist/injector-extensions.js.map +0 -1
- package/dist/store-manager.spec.d.ts +0 -2
- package/src/injector-extensions.ts +0 -68
package/dist/errors/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
tslib_1.__exportStar(require("./authorization-error"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./aggregated-error"), exports);
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/dist/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,gEAAqC;AACrC,6DAAkC"}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const inject_1 = require("@furystack/inject");
|
|
4
4
|
const utils_1 = require("@furystack/utils");
|
|
5
5
|
const global_disposables_1 = require("./global-disposables");
|
|
6
|
-
require("./
|
|
6
|
+
const helpers_1 = require("./helpers");
|
|
7
7
|
describe('Global Disposables', () => {
|
|
8
8
|
it('Should be empty by default', () => {
|
|
9
9
|
expect(global_disposables_1.globalDisposables.size).toBe(0);
|
|
@@ -17,14 +17,14 @@ describe('Global Disposables', () => {
|
|
|
17
17
|
});
|
|
18
18
|
it('Should be filled from an injector extension', () => {
|
|
19
19
|
(0, utils_1.using)(new inject_1.Injector(), (i) => {
|
|
20
|
-
|
|
20
|
+
(0, helpers_1.disposeOnProcessExit)(i);
|
|
21
21
|
expect(global_disposables_1.globalDisposables).toContain(i);
|
|
22
22
|
});
|
|
23
23
|
});
|
|
24
24
|
it('Should dispose the injector on exit', async () => {
|
|
25
25
|
(0, utils_1.usingAsync)(new inject_1.Injector(), async (i) => {
|
|
26
26
|
i.dispose = jest.fn(i.dispose);
|
|
27
|
-
|
|
27
|
+
(0, helpers_1.disposeOnProcessExit)(i);
|
|
28
28
|
await (0, global_disposables_1.exitHandler)();
|
|
29
29
|
expect(i.dispose).toBeCalled();
|
|
30
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-disposable.spec.js","sourceRoot":"","sources":["../src/global-disposable.spec.ts"],"names":[],"mappings":";;AAAA,8CAA4C;AAC5C,4CAAoD;AACpD,6DAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"global-disposable.spec.js","sourceRoot":"","sources":["../src/global-disposable.spec.ts"],"names":[],"mappings":";;AAAA,8CAA4C;AAC5C,4CAAoD;AACpD,6DAAqE;AACrE,uCAAgD;AAEhD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,sCAAiB,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,gCAAW,CAAC,CAAA;QACxD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,gCAAW,CAAC,CAAA;QAC1D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,gCAAW,CAAC,CAAA;QAC3D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,gCAAW,CAAC,CAAA;QAC3D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,gCAAW,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,IAAA,aAAK,EAAC,IAAI,iBAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAC1B,IAAA,8BAAoB,EAAC,CAAC,CAAC,CAAA;YACvB,MAAM,CAAC,sCAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,IAAA,kBAAU,EAAC,IAAI,iBAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACrC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;YAC9B,IAAA,8BAAoB,EAAC,CAAC,CAAC,CAAA;YACvB,MAAM,IAAA,gCAAW,GAAE,CAAA;YACnB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/helpers.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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
CHANGED
|
@@ -14,7 +14,7 @@ let IdentityContext = class IdentityContext {
|
|
|
14
14
|
throw Error('No IdentityContext');
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
|
-
IdentityContext =
|
|
17
|
+
IdentityContext = tslib_1.__decorate([
|
|
18
18
|
(0, inject_1.Injectable)({ lifetime: 'scoped' })
|
|
19
19
|
], IdentityContext);
|
|
20
20
|
exports.IdentityContext = IdentityContext;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const inject_1 = require("@furystack/inject");
|
|
4
4
|
const utils_1 = require("@furystack/utils");
|
|
5
5
|
const identity_context_1 = require("./identity-context");
|
|
6
|
-
require("./
|
|
6
|
+
const helpers_1 = require("./helpers");
|
|
7
7
|
describe('IdentityContext', () => {
|
|
8
8
|
it('Should be retrieved from an Injector', () => {
|
|
9
9
|
(0, utils_1.using)(new inject_1.Injector(), (i) => {
|
|
@@ -11,29 +11,29 @@ describe('IdentityContext', () => {
|
|
|
11
11
|
expect(ctx).toBeInstanceOf(identity_context_1.IdentityContext);
|
|
12
12
|
});
|
|
13
13
|
});
|
|
14
|
-
it('isAuthenticated should be called from
|
|
14
|
+
it('isAuthenticated should be called from helper', async () => {
|
|
15
15
|
await (0, utils_1.usingAsync)(new inject_1.Injector(), async (i) => {
|
|
16
16
|
const ctx = i.getInstance(identity_context_1.IdentityContext);
|
|
17
17
|
const spy = jest.spyOn(ctx, 'isAuthenticated');
|
|
18
|
-
const
|
|
19
|
-
expect(
|
|
18
|
+
const isAuth = await (0, helpers_1.isAuthenticated)(i);
|
|
19
|
+
expect(isAuth).toBeFalsy();
|
|
20
20
|
expect(spy).toBeCalledTimes(1);
|
|
21
21
|
});
|
|
22
22
|
});
|
|
23
|
-
it('isAuthorized should be called from
|
|
23
|
+
it('isAuthorized should be called from helper', async () => {
|
|
24
24
|
await (0, utils_1.usingAsync)(new inject_1.Injector(), async (i) => {
|
|
25
25
|
const ctx = i.getInstance(identity_context_1.IdentityContext);
|
|
26
26
|
const spy = jest.spyOn(ctx, 'isAuthorized');
|
|
27
|
-
const
|
|
28
|
-
expect(
|
|
27
|
+
const isAuth = await (0, helpers_1.isAuthorized)(i);
|
|
28
|
+
expect(isAuth).toBeFalsy();
|
|
29
29
|
expect(spy).toBeCalledTimes(1);
|
|
30
30
|
});
|
|
31
31
|
});
|
|
32
|
-
it('getCurrentUser should be called from
|
|
32
|
+
it('getCurrentUser should be called from helper', async () => {
|
|
33
33
|
await (0, utils_1.usingAsync)(new inject_1.Injector(), async (i) => {
|
|
34
34
|
const ctx = i.getInstance(identity_context_1.IdentityContext);
|
|
35
35
|
const spy = jest.spyOn(ctx, 'getCurrentUser');
|
|
36
|
-
await expect(
|
|
36
|
+
await expect((0, helpers_1.getCurrentUser)(i)).rejects.toThrowError('');
|
|
37
37
|
expect(spy).toBeCalledTimes(1);
|
|
38
38
|
});
|
|
39
39
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-context.spec.js","sourceRoot":"","sources":["../src/identity-context.spec.ts"],"names":[],"mappings":";;AAAA,8CAA4C;AAC5C,4CAAoD;AACpD,yDAAoD;AACpD,
|
|
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
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InMemoryStore = void 0;
|
|
4
|
-
const uuid_1 = require("uuid");
|
|
5
4
|
const physical_store_1 = require("./models/physical-store");
|
|
6
5
|
class InMemoryStore {
|
|
7
6
|
/**
|
|
@@ -30,9 +29,6 @@ class InMemoryStore {
|
|
|
30
29
|
async add(...entries) {
|
|
31
30
|
const created = entries.map((e) => {
|
|
32
31
|
const entry = { ...e };
|
|
33
|
-
if (entry[this.primaryKey] === undefined) {
|
|
34
|
-
entry[this.primaryKey] = (0, uuid_1.v4)();
|
|
35
|
-
}
|
|
36
32
|
if (this.cache.has(entry[this.primaryKey])) {
|
|
37
33
|
throw new Error('Item with the primary key already exists.');
|
|
38
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":";;;AACA
|
|
1
|
+
{"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":";;;AACA,4DAUgC;AAEhC,MAAa,aAAa;IAoKxB;;;;;;OAMG;IACH,YAAY,OASX;QA/JM,UAAK,GAA2B,IAAI,GAAG,EAAE,CAAA;QACzC,QAAG,GAAG,KAAK,EAAE,GAAmB,EAAE,MAAuB,EAAE,EAAE;YAClE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChC,OAAO,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,IAAA,6BAAY,EAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC9D,CAAC,CAAA;QA4JC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC5B,CAAC;IAtLD;;;OAGG;IACI,KAAK,CAAC,MAAM,CAAC,GAAG,IAA2B;QAChD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3C,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,GAAG,OAA8C;QAChE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,MAAM,KAAK,GAAG,EAAE,GAAG,CAAC,EAAO,CAAA;YAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE;gBAC1C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;aAC7D;YACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAA;YAC7C,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;QACF,OAAO,EAAE,OAAO,EAAE,CAAA;IACpB,CAAC;IAQO,cAAc,CAAC,MAAW,EAAE,MAAsB;QACxD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,MAAM,CAAA;SACd;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;gBACxB,IAAI,IAAA,kCAAiB,EAAC,GAAG,CAAC,EAAE;oBAC1B,MAAM,WAAW,GAAI,MAAc,CAAC,GAAG,CAAyB,CAAA;oBAChE,QAAQ,GAAG,EAAE;wBACX,KAAK,MAAM;4BACT,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;gCAClF,OAAO,KAAK,CAAA;6BACb;4BACD,MAAK;wBACP,KAAK,KAAK;4BACR,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;gCACjF,MAAK;6BACN;4BACD,OAAO,KAAK,CAAA;wBACd;4BACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,4BAA4B,CAAC,CAAA;qBAC7E;iBACF;qBAAM,IAAI,OAAQ,MAAc,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;oBACnD,KAAK,MAAM,SAAS,IAAK,MAAc,CAAC,GAAG,CAAC,EAAE;wBAC5C,IAAI,IAAA,2BAAU,EAAC,SAAS,CAAC,EAAE;4BACzB,MAAM,SAAS,GAAI,IAAY,CAAC,GAAG,CAAC,CAAA;4BACpC,MAAM,WAAW,GAAI,MAAc,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAA;4BACnD,QAAQ,SAAS,EAAE;gCACjB,KAAK,KAAK;oCACR,IAAI,WAAW,KAAK,SAAS,EAAE;wCAC7B,OAAO,KAAK,CAAA;qCACb;oCACD,MAAK;gCACP,KAAK,KAAK;oCACR,IAAI,WAAW,KAAK,SAAS,EAAE;wCAC7B,OAAO,KAAK,CAAA;qCACb;oCACD,MAAK;gCACP,KAAK,KAAK;oCACR,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;wCACpC,OAAO,KAAK,CAAA;qCACb;oCACD,MAAK;gCAEP,KAAK,MAAM;oCACT,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;wCACnC,OAAO,KAAK,CAAA;qCACb;oCACD,MAAK;gCACP,KAAK,KAAK;oCACR,IAAI,SAAS,GAAG,WAAW,EAAE;wCAC3B,MAAK;qCACN;oCACD,OAAO,KAAK,CAAA;gCACd,KAAK,MAAM;oCACT,IAAI,SAAS,IAAI,WAAW,EAAE;wCAC5B,MAAK;qCACN;oCACD,OAAO,KAAK,CAAA;gCACd,KAAK,KAAK;oCACR,IAAI,SAAS,GAAG,WAAW,EAAE;wCAC3B,MAAK;qCACN;oCACD,OAAO,KAAK,CAAA;gCACd,KAAK,MAAM;oCACT,IAAI,SAAS,IAAI,WAAW,EAAE;wCAC5B,MAAK;qCACN;oCACD,OAAO,KAAK,CAAA;gCACd,KAAK,QAAQ;oCACX,IAAI,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAE,SAAiB,CAAC,QAAQ,EAAE,CAAC,EAAE;wCAChE,OAAO,KAAK,CAAA;qCACb;oCACD,MAAK;gCACP;oCACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,SAAS,0BAA0B,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAA;6BACnG;yBACF;6BAAM;4BACL,MAAM,IAAI,KAAK,CAAC,mBAAmB,SAAS,4BAA4B,CAAC,CAAA;yBAC1E;qBACF;iBACF;qBAAM;oBACL,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAQ,MAAc,CAAC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,CAAA;iBACzG;aACF;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAiC,aAAsC;QACtF,IAAI,KAAK,GAAqC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;QAEjH,IAAI,aAAa,CAAC,KAAK,EAAE;YACvB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAmB,EAAE;gBAC1E,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC1B,MAAM,KAAK,GAAI,aAAa,CAAC,KAAa,CAAC,SAAS,CAAmB,CAAA;oBACvE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;wBAAE,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBAChE,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;wBAAE,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBAChE,OAAO,CAAC,CAAA;gBACV,CAAC,CAAC,CAAA;aACH;SACF;QAED,IAAI,aAAa,CAAC,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE;YAC3C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;SAC5G;QAED,IAAI,aAAa,CAAC,MAAM,EAAE;YACxB,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACzB,OAAO,IAAA,6BAAY,EAAC,IAAI,EAAE,GAAI,aAAa,CAAC,MAAkB,CAAC,CAAA;YACjE,CAAC,CAAC,CAAA;SACH;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,MAAsB;QACvC,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAA;IACrE,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,EAAkB,EAAE,IAAO;QAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACvB,MAAM,KAAK,CAAC,6BAA6B,EAAE,mBAAmB,CAAC,CAAA;SAChE;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE;YACjB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,GAAG,IAAI;SACR,CAAC,CAAA;IACJ,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;CAyBF;AAxLD,sCAwLC"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
require("./
|
|
4
|
+
tslib_1.__exportStar(require("./errors"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./models/physical-store"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./models/user"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./in-memory-store"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./store-manager"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./global-disposables"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./identity-context"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./create-physical-store-tests"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./helpers"), exports);
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAwB;AACxB,kEAAuC;AACvC,wDAA6B;AAC7B,4DAAiC;AACjC,0DAA+B;AAC/B,+DAAoC;AACpC,6DAAkC;AAClC,wEAA6C;AAC7C,oDAAyB"}
|
package/dist/store-manager.js
CHANGED
|
@@ -53,9 +53,9 @@ let StoreManager = class StoreManager {
|
|
|
53
53
|
return this;
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
|
-
StoreManager =
|
|
56
|
+
StoreManager = tslib_1.__decorate([
|
|
57
57
|
(0, inject_1.Injectable)({ lifetime: 'singleton' }),
|
|
58
|
-
|
|
58
|
+
tslib_1.__metadata("design:paramtypes", [inject_1.Injector])
|
|
59
59
|
], StoreManager);
|
|
60
60
|
exports.StoreManager = StoreManager;
|
|
61
61
|
//# sourceMappingURL=store-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-manager.js","sourceRoot":"","sources":["../src/store-manager.ts"],"names":[],"mappings":";;;;AAAA,8CAAuE;AAEvE,qCAA0C;AAG1C;;GAEG;AAEH,IAAa,YAAY,GAAzB,MAAa,YAAY;IAoDvB,YAAmB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QArC7B,WAAM,GAAyD,IAAI,GAAG,EAAE,CAAA;IAqCxC,CAAC;IAnDzC;;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;CAGF,CAAA;AArDY,YAAY;IADxB,IAAA,mBAAU,EAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"store-manager.js","sourceRoot":"","sources":["../src/store-manager.ts"],"names":[],"mappings":";;;;AAAA,8CAAuE;AAEvE,qCAA0C;AAG1C;;GAEG;AAEH,IAAa,YAAY,GAAzB,MAAa,YAAY;IAoDvB,YAAmB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QArC7B,WAAM,GAAyD,IAAI,GAAG,EAAE,CAAA;IAqCxC,CAAC;IAnDzC;;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;CAGF,CAAA;AArDY,YAAY;IADxB,IAAA,mBAAU,EAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;6CAqDP,iBAAQ;GApD1B,YAAY,CAqDxB;AArDY,oCAAY"}
|
|
@@ -4,8 +4,8 @@ const utils_1 = require("@furystack/utils");
|
|
|
4
4
|
const inject_1 = require("@furystack/inject");
|
|
5
5
|
const store_manager_1 = require("./store-manager");
|
|
6
6
|
const in_memory_store_1 = require("./in-memory-store");
|
|
7
|
-
require("./injector-extensions");
|
|
8
7
|
const errors_1 = require("./errors");
|
|
8
|
+
const create_physical_store_tests_1 = require("./create-physical-store-tests");
|
|
9
9
|
class Test {
|
|
10
10
|
}
|
|
11
11
|
describe('StoreManager', () => {
|
|
@@ -21,12 +21,19 @@ describe('StoreManager', () => {
|
|
|
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
|
+
(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
|
+
});
|
|
24
31
|
it('Can set up stores with an extension method', () => {
|
|
25
32
|
(0, utils_1.using)(new inject_1.Injector(), (i) => {
|
|
26
|
-
i.
|
|
33
|
+
i.getInstance(store_manager_1.StoreManager).addStore(new in_memory_store_1.InMemoryStore({
|
|
27
34
|
model: Test,
|
|
28
35
|
primaryKey: 'id',
|
|
29
|
-
}))
|
|
36
|
+
}));
|
|
30
37
|
expect(i.getInstance(store_manager_1.StoreManager).getStoreFor(Test, 'id')).toBeInstanceOf(in_memory_store_1.InMemoryStore);
|
|
31
38
|
});
|
|
32
39
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-manager.spec.js","sourceRoot":"","sources":["../src/store-manager.spec.ts"],"names":[],"mappings":";;AAAA,4CAAoD;AACpD,8CAA4C;AAC5C,mDAA8C;AAC9C,uDAAiD;AACjD,
|
|
1
|
+
{"version":3,"file":"store-manager.spec.js","sourceRoot":"","sources":["../src/store-manager.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furystack/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "11.0.0",
|
|
4
4
|
"description": "Core FuryStack package",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist",
|
|
8
|
+
"types",
|
|
8
9
|
"src"
|
|
9
10
|
],
|
|
10
11
|
"repository": {
|
|
@@ -25,17 +26,15 @@
|
|
|
25
26
|
},
|
|
26
27
|
"homepage": "https://github.com/furystack/furystack",
|
|
27
28
|
"devDependencies": {
|
|
28
|
-
"@types/jest": "^27.4.
|
|
29
|
-
"@types/node": "^17.0.
|
|
30
|
-
"@types/uuid": "^8.3.4"
|
|
29
|
+
"@types/jest": "^27.4.1",
|
|
30
|
+
"@types/node": "^17.0.30"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@furystack/inject": "^
|
|
34
|
-
"@furystack/utils": "^
|
|
33
|
+
"@furystack/inject": "^6.0.0",
|
|
34
|
+
"@furystack/utils": "^3.0.0",
|
|
35
35
|
"semaphore-async-await": "^1.5.1",
|
|
36
|
-
"tslib": "^2.
|
|
37
|
-
"uuid": "^8.3.2"
|
|
36
|
+
"tslib": "^2.4.0"
|
|
38
37
|
},
|
|
39
|
-
"typings": "./
|
|
38
|
+
"typings": "./types/index.d.ts",
|
|
40
39
|
"gitHead": "1045d854bfd8c475b7035471d130d401417a2321"
|
|
41
40
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Injector } from '@furystack/inject'
|
|
2
2
|
import { using, usingAsync } from '@furystack/utils'
|
|
3
3
|
import { globalDisposables, exitHandler } from './global-disposables'
|
|
4
|
-
import './
|
|
4
|
+
import { disposeOnProcessExit } from './helpers'
|
|
5
5
|
|
|
6
6
|
describe('Global Disposables', () => {
|
|
7
7
|
it('Should be empty by default', () => {
|
|
@@ -18,14 +18,14 @@ describe('Global Disposables', () => {
|
|
|
18
18
|
|
|
19
19
|
it('Should be filled from an injector extension', () => {
|
|
20
20
|
using(new Injector(), (i) => {
|
|
21
|
-
|
|
21
|
+
disposeOnProcessExit(i)
|
|
22
22
|
expect(globalDisposables).toContain(i)
|
|
23
23
|
})
|
|
24
24
|
})
|
|
25
25
|
it('Should dispose the injector on exit', async () => {
|
|
26
26
|
usingAsync(new Injector(), async (i) => {
|
|
27
27
|
i.dispose = jest.fn(i.dispose)
|
|
28
|
-
|
|
28
|
+
disposeOnProcessExit(i)
|
|
29
29
|
await exitHandler()
|
|
30
30
|
expect(i.dispose).toBeCalled()
|
|
31
31
|
})
|
package/src/helpers.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Injector } from '@furystack/inject/types/injector'
|
|
2
|
+
import { globalDisposables } from './global-disposables'
|
|
3
|
+
import { IdentityContext } from './identity-context'
|
|
4
|
+
import { Disposable } from '@furystack/utils'
|
|
5
|
+
import { StoreManager } from './store-manager'
|
|
6
|
+
import { PhysicalStore } from './models/physical-store'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The disposable will be disposed on process exit
|
|
10
|
+
*
|
|
11
|
+
* @param disposable The Disposable object to dispose on process exit
|
|
12
|
+
* @returns A set of global disposables
|
|
13
|
+
*/
|
|
14
|
+
export const disposeOnProcessExit = (disposable: Disposable) => globalDisposables.add(disposable)
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @param injector The Injector instance
|
|
18
|
+
* @returns the current authentication status from the identity context
|
|
19
|
+
*/
|
|
20
|
+
export const isAuthenticated = async (injector: Injector) => injector.getInstance(IdentityContext).isAuthenticated()
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @param injector The Injector instance
|
|
24
|
+
* @param {...any} roles A list of roles
|
|
25
|
+
* @returns if the current authorization status from the identity context
|
|
26
|
+
*/
|
|
27
|
+
export const isAuthorized = async (injector: Injector, ...roles: string[]) =>
|
|
28
|
+
injector.getInstance(IdentityContext).isAuthorized(...roles)
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @param injector The Injector instance
|
|
32
|
+
* @returns The current user from the identity context
|
|
33
|
+
*/
|
|
34
|
+
export const getCurrentUser = async (injector: Injector) => injector.getInstance(IdentityContext).getCurrentUser()
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @param injector The Injector instance
|
|
38
|
+
* @returns A Store Manager instance to setup stores
|
|
39
|
+
*/
|
|
40
|
+
export const getStoreManager = (injector: Injector) => injector.getInstance(StoreManager)
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* @param injector The Injector instance
|
|
45
|
+
* @param store The store to add
|
|
46
|
+
* @returns The Store Manager instance for chaining
|
|
47
|
+
*/
|
|
48
|
+
export const addStore = <T, TPrimaryKey extends keyof T>(injector: Injector, store: PhysicalStore<T, TPrimaryKey>) =>
|
|
49
|
+
getStoreManager(injector).addStore(store)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Injector } from '@furystack/inject'
|
|
2
2
|
import { using, usingAsync } from '@furystack/utils'
|
|
3
3
|
import { IdentityContext } from './identity-context'
|
|
4
|
-
import './
|
|
4
|
+
import { isAuthorized, isAuthenticated, getCurrentUser } from './helpers'
|
|
5
5
|
|
|
6
6
|
describe('IdentityContext', () => {
|
|
7
7
|
it('Should be retrieved from an Injector', () => {
|
|
@@ -11,31 +11,31 @@ describe('IdentityContext', () => {
|
|
|
11
11
|
})
|
|
12
12
|
})
|
|
13
13
|
|
|
14
|
-
it('isAuthenticated should be called from
|
|
14
|
+
it('isAuthenticated should be called from helper', async () => {
|
|
15
15
|
await usingAsync(new Injector(), async (i) => {
|
|
16
16
|
const ctx = i.getInstance(IdentityContext)
|
|
17
17
|
const spy = jest.spyOn(ctx, 'isAuthenticated')
|
|
18
|
-
const
|
|
19
|
-
expect(
|
|
18
|
+
const isAuth = await isAuthenticated(i)
|
|
19
|
+
expect(isAuth).toBeFalsy()
|
|
20
20
|
expect(spy).toBeCalledTimes(1)
|
|
21
21
|
})
|
|
22
22
|
})
|
|
23
23
|
|
|
24
|
-
it('isAuthorized should be called from
|
|
24
|
+
it('isAuthorized should be called from helper', async () => {
|
|
25
25
|
await usingAsync(new Injector(), async (i) => {
|
|
26
26
|
const ctx = i.getInstance(IdentityContext)
|
|
27
27
|
const spy = jest.spyOn(ctx, 'isAuthorized')
|
|
28
|
-
const
|
|
29
|
-
expect(
|
|
28
|
+
const isAuth = await isAuthorized(i)
|
|
29
|
+
expect(isAuth).toBeFalsy()
|
|
30
30
|
expect(spy).toBeCalledTimes(1)
|
|
31
31
|
})
|
|
32
32
|
})
|
|
33
33
|
|
|
34
|
-
it('getCurrentUser should be called from
|
|
34
|
+
it('getCurrentUser should be called from helper', async () => {
|
|
35
35
|
await usingAsync(new Injector(), async (i) => {
|
|
36
36
|
const ctx = i.getInstance(IdentityContext)
|
|
37
37
|
const spy = jest.spyOn(ctx, 'getCurrentUser')
|
|
38
|
-
await expect(
|
|
38
|
+
await expect(getCurrentUser(i)).rejects.toThrowError('')
|
|
39
39
|
expect(spy).toBeCalledTimes(1)
|
|
40
40
|
})
|
|
41
41
|
})
|
package/src/in-memory-store.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Constructable } from '@furystack/inject'
|
|
2
|
-
import { v4 } from 'uuid'
|
|
3
2
|
import {
|
|
4
3
|
PhysicalStore,
|
|
5
4
|
FindOptions,
|
|
@@ -24,9 +23,6 @@ export class InMemoryStore<T, TPrimaryKey extends keyof T> implements PhysicalSt
|
|
|
24
23
|
public async add(...entries: Array<WithOptionalId<T, TPrimaryKey>>): Promise<CreateResult<T>> {
|
|
25
24
|
const created = entries.map((e) => {
|
|
26
25
|
const entry = { ...e } as T
|
|
27
|
-
if (entry[this.primaryKey] === undefined) {
|
|
28
|
-
entry[this.primaryKey] = v4() as any
|
|
29
|
-
}
|
|
30
26
|
if (this.cache.has(entry[this.primaryKey])) {
|
|
31
27
|
throw new Error('Item with the primary key already exists.')
|
|
32
28
|
}
|
package/src/index.ts
CHANGED
|
@@ -2,8 +2,8 @@ import { using, usingAsync } from '@furystack/utils'
|
|
|
2
2
|
import { Injector } from '@furystack/inject'
|
|
3
3
|
import { StoreManager } from './store-manager'
|
|
4
4
|
import { InMemoryStore } from './in-memory-store'
|
|
5
|
-
import './injector-extensions'
|
|
6
5
|
import { AggregatedError } from './errors'
|
|
6
|
+
import { TestClass } from './create-physical-store-tests'
|
|
7
7
|
|
|
8
8
|
class Test {
|
|
9
9
|
id!: number
|
|
@@ -31,15 +31,21 @@ describe('StoreManager', () => {
|
|
|
31
31
|
})
|
|
32
32
|
})
|
|
33
33
|
|
|
34
|
+
it('Should throw if trying to retrieve an existing store with a different primary key', () => {
|
|
35
|
+
using(new Injector(), (i) => {
|
|
36
|
+
const sm = i.getInstance(StoreManager)
|
|
37
|
+
sm.addStore(new InMemoryStore({ model: TestClass, primaryKey: 'id' }))
|
|
38
|
+
expect(() => sm.getStoreFor(TestClass, 'booleanValue')).toThrowError('Primary keys not match')
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
|
|
34
42
|
it('Can set up stores with an extension method', () => {
|
|
35
43
|
using(new Injector(), (i) => {
|
|
36
|
-
i.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}),
|
|
42
|
-
),
|
|
44
|
+
i.getInstance(StoreManager).addStore(
|
|
45
|
+
new InMemoryStore({
|
|
46
|
+
model: Test,
|
|
47
|
+
primaryKey: 'id',
|
|
48
|
+
}),
|
|
43
49
|
)
|
|
44
50
|
|
|
45
51
|
expect(i.getInstance(StoreManager).getStoreFor(Test, 'id')).toBeInstanceOf(InMemoryStore)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-disposable.spec.d.ts","sourceRoot":"","sources":["../src/global-disposable.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"global-disposable.spec.d.ts","sourceRoot":"","sources":["../src/global-disposable.spec.ts"],"names":[],"mappings":""}
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Injector } from '@furystack/inject/types/injector';
|
|
2
|
+
import { Disposable } from '@furystack/utils';
|
|
3
|
+
import { StoreManager } from './store-manager';
|
|
4
|
+
import { PhysicalStore } from './models/physical-store';
|
|
5
|
+
/**
|
|
6
|
+
* The disposable will be disposed on process exit
|
|
7
|
+
*
|
|
8
|
+
* @param disposable The Disposable object to dispose on process exit
|
|
9
|
+
* @returns A set of global disposables
|
|
10
|
+
*/
|
|
11
|
+
export declare const disposeOnProcessExit: (disposable: Disposable) => Set<Disposable>;
|
|
12
|
+
/**
|
|
13
|
+
* @param injector The Injector instance
|
|
14
|
+
* @returns the current authentication status from the identity context
|
|
15
|
+
*/
|
|
16
|
+
export declare const isAuthenticated: (injector: Injector) => Promise<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* @param injector The Injector instance
|
|
19
|
+
* @param {...any} roles A list of roles
|
|
20
|
+
* @returns if the current authorization status from the identity context
|
|
21
|
+
*/
|
|
22
|
+
export declare const isAuthorized: (injector: Injector, ...roles: string[]) => Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* @param injector The Injector instance
|
|
25
|
+
* @returns The current user from the identity context
|
|
26
|
+
*/
|
|
27
|
+
export declare const getCurrentUser: (injector: Injector) => Promise<import(".").User>;
|
|
28
|
+
/**
|
|
29
|
+
* @param injector The Injector instance
|
|
30
|
+
* @returns A Store Manager instance to setup stores
|
|
31
|
+
*/
|
|
32
|
+
export declare const getStoreManager: (injector: Injector) => StoreManager;
|
|
33
|
+
/**
|
|
34
|
+
*
|
|
35
|
+
* @param injector The Injector instance
|
|
36
|
+
* @param store The store to add
|
|
37
|
+
* @returns The Store Manager instance for chaining
|
|
38
|
+
*/
|
|
39
|
+
export declare const addStore: <T, TPrimaryKey extends keyof T>(injector: Injector, store: PhysicalStore<T, TPrimaryKey>) => StoreManager;
|
|
40
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEvD;;;;;GAKG;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,8BAA2D,CAAA;AAElH;;;GAGG;AACH,eAAO,MAAM,eAAe,aAAc,QAAQ,iBAAuC,CAAA;AAEzF;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,6CAA8C,QAAQ,uDAChC,CAAA"}
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-context.spec.d.ts","sourceRoot":"","sources":["../src/identity-context.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"identity-context.spec.d.ts","sourceRoot":"","sources":["../src/identity-context.spec.ts"],"names":[],"mappings":""}
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EACL,aAAa,EACb,WAAW,EAEX,aAAa,EACb,UAAU,EAEV,YAAY,EACZ,cAAc,EAEf,MAAM,yBAAyB,CAAA;AAEhC,qBAAa,aAAa,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC;IACjG;;;OAGG;IACU,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,GAAG,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAYtF,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAY;IACzC,GAAG,QAAe,CAAC,CAAC,WAAW,CAAC,8DAGtC;IAED,OAAO,CAAC,cAAc;IAyFT,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;IAUxC,OAAO;IAId,SAAgB,UAAU,EAAE,WAAW,CAAA;IACvC,SAAgB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAEvC;;;;;;OAMG;gBACS,OAAO,EAAE;QACnB;;WAEG;QACH,UAAU,EAAE,WAAW,CAAA;QACvB;;WAEG;QACH,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;KACxB;CAIF"}
|
|
File without changes
|
|
File without changes
|
|
@@ -5,5 +5,6 @@ export * from './in-memory-store';
|
|
|
5
5
|
export * from './store-manager';
|
|
6
6
|
export * from './global-disposables';
|
|
7
7
|
export * from './identity-context';
|
|
8
|
-
|
|
8
|
+
export * from './create-physical-store-tests';
|
|
9
|
+
export * from './helpers';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,WAAW,CAAA"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-manager.spec.d.ts","sourceRoot":"","sources":["../src/store-manager.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store-manager.spec.d.ts","sourceRoot":"","sources":["../src/store-manager.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { StoreManager } from './store-manager';
|
|
2
|
-
import { User } from './models/user';
|
|
3
|
-
declare module '@furystack/inject/dist/injector' {
|
|
4
|
-
/**
|
|
5
|
-
* Defines an extended Injector instance
|
|
6
|
-
*/
|
|
7
|
-
interface Injector {
|
|
8
|
-
/**
|
|
9
|
-
* Registers a store instance to the StoreManager.
|
|
10
|
-
*
|
|
11
|
-
* Usage example:
|
|
12
|
-
* ````ts
|
|
13
|
-
* myInjector.setupStores(sm => sm.addStore(new InMemoryStore({ model: TestEntry, primaryKey: "_id" })))
|
|
14
|
-
* ````
|
|
15
|
-
* You can get the store later from the StoreManager:
|
|
16
|
-
* ````ts
|
|
17
|
-
* const myStore: IPhysicalStore<TestEntry> = myInjector.getInstance(StoreManager).getStoreFor(TestEntry)
|
|
18
|
-
* ````
|
|
19
|
-
*/
|
|
20
|
-
setupStores: (builder: (storeManager: StoreManager) => void) => this;
|
|
21
|
-
/**
|
|
22
|
-
* The disposable will be disposed on process exit
|
|
23
|
-
*/
|
|
24
|
-
disposeOnProcessExit: () => this;
|
|
25
|
-
/**
|
|
26
|
-
* returns the current authentication status from the identity context
|
|
27
|
-
*/
|
|
28
|
-
isAuthenticated: () => Promise<boolean>;
|
|
29
|
-
/**
|
|
30
|
-
* returns the current authorization status from the identity context
|
|
31
|
-
*/
|
|
32
|
-
isAuthorized: (...roles: string[]) => Promise<boolean>;
|
|
33
|
-
/**
|
|
34
|
-
*
|
|
35
|
-
*/
|
|
36
|
-
getCurrentUser: <TUser extends User>() => Promise<TUser>;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=injector-extensions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"injector-extensions.d.ts","sourceRoot":"","sources":["../src/injector-extensions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEpC,OAAO,QAAQ,iCAAiC,CAAC;IAC/C;;OAEG;IACH,UAAiB,QAAQ;QACvB;;;;;;;;;;;WAWG;QACH,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,KAAK,IAAI,KAAK,IAAI,CAAA;QAEpE;;WAEG;QACH,oBAAoB,EAAE,MAAM,IAAI,CAAA;QAEhC;;WAEG;QACH,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;QAEvC;;WAEG;QACH,YAAY,EAAE,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QAEtD;;WAEG;QACH,cAAc,EAAE,CAAC,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA;KACzD;CACF"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const injector_1 = require("@furystack/inject/dist/injector");
|
|
4
|
-
const store_manager_1 = require("./store-manager");
|
|
5
|
-
const global_disposables_1 = require("./global-disposables");
|
|
6
|
-
const identity_context_1 = require("./identity-context");
|
|
7
|
-
injector_1.Injector.prototype.setupStores = function (builder) {
|
|
8
|
-
builder(this.getInstance(store_manager_1.StoreManager));
|
|
9
|
-
return this;
|
|
10
|
-
};
|
|
11
|
-
injector_1.Injector.prototype.disposeOnProcessExit = function () {
|
|
12
|
-
global_disposables_1.globalDisposables.add(this);
|
|
13
|
-
return this;
|
|
14
|
-
};
|
|
15
|
-
injector_1.Injector.prototype.isAuthenticated = async function () {
|
|
16
|
-
return this.getInstance(identity_context_1.IdentityContext).isAuthenticated();
|
|
17
|
-
};
|
|
18
|
-
injector_1.Injector.prototype.isAuthorized = async function (...roles) {
|
|
19
|
-
return this.getInstance(identity_context_1.IdentityContext).isAuthorized(...roles);
|
|
20
|
-
};
|
|
21
|
-
injector_1.Injector.prototype.getCurrentUser = async function () {
|
|
22
|
-
return this.getInstance(identity_context_1.IdentityContext).getCurrentUser();
|
|
23
|
-
};
|
|
24
|
-
//# sourceMappingURL=injector-extensions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"injector-extensions.js","sourceRoot":"","sources":["../src/injector-extensions.ts"],"names":[],"mappings":";;AAAA,8DAA0D;AAC1D,mDAA8C;AAC9C,6DAAwD;AACxD,yDAAoD;AA4CpD,mBAAQ,CAAC,SAAS,CAAC,WAAW,GAAG,UAAU,OAAO;IAChD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,4BAAY,CAAC,CAAC,CAAA;IACvC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,mBAAQ,CAAC,SAAS,CAAC,oBAAoB,GAAG;IACxC,sCAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC3B,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,mBAAQ,CAAC,SAAS,CAAC,eAAe,GAAG,KAAK;IACxC,OAAO,IAAI,CAAC,WAAW,CAAC,kCAAe,CAAC,CAAC,eAAe,EAAE,CAAA;AAC5D,CAAC,CAAA;AAED,mBAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,KAAK,WAAW,GAAG,KAAK;IACxD,OAAO,IAAI,CAAC,WAAW,CAAC,kCAAe,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAA;AACjE,CAAC,CAAA;AAED,mBAAQ,CAAC,SAAS,CAAC,cAAc,GAAG,KAAK;IACvC,OAAO,IAAI,CAAC,WAAW,CAAC,kCAAe,CAAC,CAAC,cAAc,EAAS,CAAA;AAClE,CAAC,CAAA"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { Injector } from '@furystack/inject/dist/injector'
|
|
2
|
-
import { StoreManager } from './store-manager'
|
|
3
|
-
import { globalDisposables } from './global-disposables'
|
|
4
|
-
import { IdentityContext } from './identity-context'
|
|
5
|
-
import { User } from './models/user'
|
|
6
|
-
|
|
7
|
-
declare module '@furystack/inject/dist/injector' {
|
|
8
|
-
/**
|
|
9
|
-
* Defines an extended Injector instance
|
|
10
|
-
*/
|
|
11
|
-
export interface Injector {
|
|
12
|
-
/**
|
|
13
|
-
* Registers a store instance to the StoreManager.
|
|
14
|
-
*
|
|
15
|
-
* Usage example:
|
|
16
|
-
* ````ts
|
|
17
|
-
* myInjector.setupStores(sm => sm.addStore(new InMemoryStore({ model: TestEntry, primaryKey: "_id" })))
|
|
18
|
-
* ````
|
|
19
|
-
* You can get the store later from the StoreManager:
|
|
20
|
-
* ````ts
|
|
21
|
-
* const myStore: IPhysicalStore<TestEntry> = myInjector.getInstance(StoreManager).getStoreFor(TestEntry)
|
|
22
|
-
* ````
|
|
23
|
-
*/
|
|
24
|
-
setupStores: (builder: (storeManager: StoreManager) => void) => this
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* The disposable will be disposed on process exit
|
|
28
|
-
*/
|
|
29
|
-
disposeOnProcessExit: () => this
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* returns the current authentication status from the identity context
|
|
33
|
-
*/
|
|
34
|
-
isAuthenticated: () => Promise<boolean>
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* returns the current authorization status from the identity context
|
|
38
|
-
*/
|
|
39
|
-
isAuthorized: (...roles: string[]) => Promise<boolean>
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
*
|
|
43
|
-
*/
|
|
44
|
-
getCurrentUser: <TUser extends User>() => Promise<TUser>
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
Injector.prototype.setupStores = function (builder) {
|
|
49
|
-
builder(this.getInstance(StoreManager))
|
|
50
|
-
return this
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
Injector.prototype.disposeOnProcessExit = function () {
|
|
54
|
-
globalDisposables.add(this)
|
|
55
|
-
return this
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
Injector.prototype.isAuthenticated = async function () {
|
|
59
|
-
return this.getInstance(IdentityContext).isAuthenticated()
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
Injector.prototype.isAuthorized = async function (...roles) {
|
|
63
|
-
return this.getInstance(IdentityContext).isAuthorized(...roles)
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
Injector.prototype.getCurrentUser = async function <TUser extends User>() {
|
|
67
|
-
return this.getInstance(IdentityContext).getCurrentUser<TUser>()
|
|
68
|
-
}
|