@abyss-project/main 1.1.2 → 1.3.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 +31 -31
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/personal-api-key.admin.api.d.ts +3 -0
- package/dist/api/personal-api-key.admin.api.js +9 -0
- package/dist/api/personal-api-key.admin.api.js.map +1 -0
- package/dist/api/personal-api-key.api.d.ts +4 -0
- package/dist/api/personal-api-key.api.js +18 -0
- package/dist/api/personal-api-key.api.js.map +1 -0
- package/dist/constants/billing-catalog.constants.js +70 -18
- package/dist/constants/billing-catalog.constants.js.map +1 -1
- package/dist/constants/enforcement-registry.constants.js +8 -0
- package/dist/constants/enforcement-registry.constants.js.map +1 -1
- package/dist/constants/public-plans.constants.js +84 -0
- package/dist/constants/public-plans.constants.js.map +1 -1
- package/dist/constants/quota-metric-kind.constants.js +2 -0
- package/dist/constants/quota-metric-kind.constants.js.map +1 -1
- package/dist/index.d.ts +12 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/server/encrypt-secret.util.d.ts +3 -0
- package/dist/server/encrypt-secret.util.js +47 -0
- package/dist/server/encrypt-secret.util.js.map +1 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/types/enum/abyss-application-event.enum.d.ts +3 -1
- package/dist/types/enum/abyss-application-event.enum.js +2 -0
- package/dist/types/enum/abyss-application-event.enum.js.map +1 -1
- package/dist/types/enum/content-scope.enum.d.ts +2 -1
- package/dist/types/enum/content-scope.enum.js +1 -0
- package/dist/types/enum/content-scope.enum.js.map +1 -1
- package/dist/types/enum/email-type.enum.d.ts +1 -0
- package/dist/types/enum/email-type.enum.js +1 -0
- package/dist/types/enum/email-type.enum.js.map +1 -1
- package/dist/types/enum/organization-billing.enum.d.ts +2 -0
- package/dist/types/enum/organization-billing.enum.js +2 -0
- package/dist/types/enum/organization-billing.enum.js.map +1 -1
- package/dist/types/interface/api/index.d.ts +2 -0
- package/dist/types/interface/api/index.js +2 -0
- package/dist/types/interface/api/index.js.map +1 -1
- package/dist/types/interface/api/requests/index.d.ts +1 -0
- package/dist/types/interface/api/requests/index.js +1 -0
- package/dist/types/interface/api/requests/index.js.map +1 -1
- package/dist/types/interface/api/requests/personal-api-key.request.d.ts +3 -0
- package/dist/types/interface/api/requests/personal-api-key.request.js +3 -0
- package/dist/types/interface/api/requests/personal-api-key.request.js.map +1 -0
- package/dist/types/interface/api/responses/index.d.ts +1 -0
- package/dist/types/interface/api/responses/index.js +1 -0
- package/dist/types/interface/api/responses/index.js.map +1 -1
- package/dist/types/interface/api/responses/personal-api-key.response.d.ts +24 -0
- package/dist/types/interface/api/responses/personal-api-key.response.js +3 -0
- package/dist/types/interface/api/responses/personal-api-key.response.js.map +1 -0
- package/dist/types/interface/index.d.ts +1 -0
- package/dist/types/interface/index.js +1 -0
- package/dist/types/interface/index.js.map +1 -1
- package/dist/types/interface/models/index.d.ts +1 -0
- package/dist/types/interface/models/index.js +1 -0
- package/dist/types/interface/models/index.js.map +1 -1
- package/dist/types/interface/models/personal-api-key.model.d.ts +14 -0
- package/dist/types/interface/models/personal-api-key.model.js +3 -0
- package/dist/types/interface/models/personal-api-key.model.js.map +1 -0
- package/dist/types/interface/models/user.model.d.ts +2 -0
- package/dist/utils/encrypt-secret.util.d.ts +3 -0
- package/dist/utils/encrypt-secret.util.js +43 -0
- package/dist/utils/encrypt-secret.util.js.map +1 -0
- package/dist/utils/resolve-user.utils.d.ts +7 -5
- package/dist/utils/resolve-user.utils.js +14 -6
- package/dist/utils/resolve-user.utils.js.map +1 -1
- package/jest.config.cjs +10 -0
- package/package.json +5 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/interface/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,0DAAwC;AACxC,4DAA0C;AAC1C,+DAA6C;AAE7C,0DAAwC;AACxC,0DAAwC;AACxC,gEAA8C;AAC9C,uEAAqD;AACrD,6EAA2D;AAC3D,6EAA2D;AAC3D,+DAA6C;AAC7C,qEAAmD;AACnD,iEAA+C;AAC/C,uEAAqD;AACrD,mEAAiD;AACjD,6DAA2C;AAC3C,0EAAwD;AACxD,oEAAkD;AAClD,6DAA2C;AAC3C,sEAAoD;AACpD,mEAAiD;AACjD,yEAAuD;AACvD,2DAAyC;AACzC,oEAAkD;AAClD,kEAAgD;AAChD,wEAAsD;AAEtD,4DAA0C;AAC1C,4DAA0C;AAC1C,kEAAgD;AAChD,yEAAuD;AACvD,+EAA6D;AAC7D,+EAA6D;AAC7D,iEAA+C;AAC/C,uEAAqD;AACrD,qEAAmD;AACnD,+DAA6C;AAC7C,mEAAiD;AACjD,yEAAuD;AACvD,qEAAmD;AACnD,+DAA6C;AAC7C,4EAA0D;AAC1D,sEAAoD;AACpD,+DAA6C;AAC7C,wEAAsD;AACtD,qEAAmD;AACnD,2EAAyD;AACzD,6DAA2C;AAC3C,sEAAoD;AACpD,oEAAkD;AAClD,0EAAwD;AAExD,wEAAsD;AACtD,0EAAwD;AACxD,kEAAgD;AAChD,oEAAkD;AAClD,sFAAoE;AACpE,yEAAuD;AACvD,2EAAyD;AACzD,0EAAwD;AACxD,4EAA0D;AAC1D,kEAAgD;AAChD,oEAAkD;AAClD,2EAAyD;AACzD,6EAA2D;AAC3D,4EAA0D;AAC1D,8EAA4D;AAC5D,0DAAwC;AACxC,4DAA0C;AAC1C,qEAAmD;AACnD,uEAAqD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/interface/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAyC;AACzC,0DAAwC;AACxC,4DAA0C;AAC1C,+DAA6C;AAE7C,0DAAwC;AACxC,0DAAwC;AACxC,gEAA8C;AAC9C,uEAAqD;AACrD,6EAA2D;AAC3D,6EAA2D;AAC3D,+DAA6C;AAC7C,qEAAmD;AACnD,iEAA+C;AAC/C,uEAAqD;AACrD,mEAAiD;AACjD,6DAA2C;AAC3C,0EAAwD;AACxD,oEAAkD;AAClD,6DAA2C;AAC3C,sEAAoD;AACpD,mEAAiD;AACjD,yEAAuD;AACvD,2DAAyC;AACzC,oEAAkD;AAClD,kEAAgD;AAChD,wEAAsD;AAEtD,4DAA0C;AAC1C,4DAA0C;AAC1C,kEAAgD;AAChD,yEAAuD;AACvD,+EAA6D;AAC7D,+EAA6D;AAC7D,iEAA+C;AAC/C,uEAAqD;AACrD,qEAAmD;AACnD,+DAA6C;AAC7C,mEAAiD;AACjD,yEAAuD;AACvD,qEAAmD;AACnD,+DAA6C;AAC7C,4EAA0D;AAC1D,sEAAoD;AACpD,+DAA6C;AAC7C,wEAAsD;AACtD,qEAAmD;AACnD,2EAAyD;AACzD,6DAA2C;AAC3C,sEAAoD;AACpD,oEAAkD;AAClD,0EAAwD;AAExD,wEAAsD;AACtD,0EAAwD;AACxD,kEAAgD;AAChD,oEAAkD;AAClD,sFAAoE;AACpE,yEAAuD;AACvD,2EAAyD;AACzD,0EAAwD;AACxD,4EAA0D;AAC1D,kEAAgD;AAChD,oEAAkD;AAClD,2EAAyD;AACzD,6EAA2D;AAC3D,4EAA0D;AAC1D,8EAA4D;AAC5D,0DAAwC;AACxC,4DAA0C;AAC1C,qEAAmD;AACnD,uEAAqD;AAGrD,sEAAoD;AACpD,wEAAsD;AAEtD,kEAAgD;AAChD,oEAAkD;AAElD,oEAAkD;AAElD,mEAAiD;AACjD,qEAAmD;AAEnD,yEAAuD;AACvD,2EAAyD;AAEzD,oEAAkD;AAClD,wEAAsD;AACtD,0EAAwD;AACxD,sEAAoD;AAEpD,gEAA8C;AAC9C,kEAAgD;AAEhD,sEAAoD;AACpD,wEAAsD;AAEtD,yEAAuD;AACvD,2EAAyD;AAEzD,2EAAyD"}
|
|
@@ -21,6 +21,7 @@ export * from './organization.request';
|
|
|
21
21
|
export * from './project-access.admin.request';
|
|
22
22
|
export * from './project-access.request';
|
|
23
23
|
export * from './project-api-key.request';
|
|
24
|
+
export * from './personal-api-key.request';
|
|
24
25
|
export * from './project.admin.request';
|
|
25
26
|
export * from './project.request';
|
|
26
27
|
export * from './support-ticket-admin.request';
|
|
@@ -37,6 +37,7 @@ __exportStar(require("./organization.request"), exports);
|
|
|
37
37
|
__exportStar(require("./project-access.admin.request"), exports);
|
|
38
38
|
__exportStar(require("./project-access.request"), exports);
|
|
39
39
|
__exportStar(require("./project-api-key.request"), exports);
|
|
40
|
+
__exportStar(require("./personal-api-key.request"), exports);
|
|
40
41
|
__exportStar(require("./project.admin.request"), exports);
|
|
41
42
|
__exportStar(require("./project.request"), exports);
|
|
42
43
|
__exportStar(require("./support-ticket-admin.request"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/requests/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,wDAAsC;AACtC,kDAAgC;AAChC,iDAA+B;AAC/B,kEAAgD;AAChD,mEAAiD;AACjD,yDAAuC;AACvC,oDAAkC;AAClC,0DAAwC;AACxC,gEAA8C;AAC9C,4DAA0C;AAC1C,sDAAoC;AACpC,uDAAqC;AACrC,0DAAwC;AACxC,6DAA2C;AAC3C,iEAA+C;AAC/C,6EAA2D;AAC3D,gEAA8C;AAC9C,+DAA6C;AAC7C,yDAAuC;AACvC,iEAA+C;AAC/C,2DAAyC;AACzC,4DAA0C;AAC1C,0DAAwC;AACxC,oDAAkC;AAClC,iEAA+C;AAC/C,+DAA6C;AAC7C,2DAAyC;AACzC,iDAA+B;AAC/B,gEAA8C;AAC9C,yDAAuC;AACvC,oEAAkD;AAClD,8DAA4C;AAC5C,uDAAqC;AACrC,iDAA+B;AAC/B,6DAA2C;AAC3C,gEAA8C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/requests/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,wDAAsC;AACtC,kDAAgC;AAChC,iDAA+B;AAC/B,kEAAgD;AAChD,mEAAiD;AACjD,yDAAuC;AACvC,oDAAkC;AAClC,0DAAwC;AACxC,gEAA8C;AAC9C,4DAA0C;AAC1C,sDAAoC;AACpC,uDAAqC;AACrC,0DAAwC;AACxC,6DAA2C;AAC3C,iEAA+C;AAC/C,6EAA2D;AAC3D,gEAA8C;AAC9C,+DAA6C;AAC7C,yDAAuC;AACvC,iEAA+C;AAC/C,2DAAyC;AACzC,4DAA0C;AAC1C,6DAA2C;AAC3C,0DAAwC;AACxC,oDAAkC;AAClC,iEAA+C;AAC/C,+DAA6C;AAC7C,2DAAyC;AACzC,iDAA+B;AAC/B,gEAA8C;AAC9C,yDAAuC;AACvC,oEAAkD;AAClD,8DAA4C;AAC5C,uDAAqC;AACrC,iDAA+B;AAC/B,6DAA2C;AAC3C,gEAA8C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personal-api-key.request.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/requests/personal-api-key.request.ts"],"names":[],"mappings":""}
|
|
@@ -23,6 +23,7 @@ export * from './organization.response';
|
|
|
23
23
|
export * from './project-access.admin.response';
|
|
24
24
|
export * from './project-access.response';
|
|
25
25
|
export * from './project-api-key.response';
|
|
26
|
+
export * from './personal-api-key.response';
|
|
26
27
|
export * from './project.admin.response';
|
|
27
28
|
export * from './project.response';
|
|
28
29
|
export * from './support-ticket.response';
|
|
@@ -39,6 +39,7 @@ __exportStar(require("./organization.response"), exports);
|
|
|
39
39
|
__exportStar(require("./project-access.admin.response"), exports);
|
|
40
40
|
__exportStar(require("./project-access.response"), exports);
|
|
41
41
|
__exportStar(require("./project-api-key.response"), exports);
|
|
42
|
+
__exportStar(require("./personal-api-key.response"), exports);
|
|
42
43
|
__exportStar(require("./project.admin.response"), exports);
|
|
43
44
|
__exportStar(require("./project.response"), exports);
|
|
44
45
|
__exportStar(require("./support-ticket.response"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/responses/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,yDAAuC;AACvC,mDAAiC;AACjC,kDAAgC;AAChC,mEAAiD;AACjD,oEAAkD;AAClD,0DAAwC;AACxC,qDAAmC;AACnC,0DAAwC;AACxC,2DAAyC;AACzC,iEAA+C;AAC/C,6DAA2C;AAC3C,uDAAqC;AACrC,wDAAsC;AACtC,2DAAyC;AACzC,2DAAyC;AACzC,qDAAmC;AACnC,8DAA4C;AAC5C,kEAAgD;AAChD,iEAA+C;AAC/C,gEAA8C;AAC9C,0DAAwC;AACxC,kEAAgD;AAChD,4DAA0C;AAC1C,6DAA2C;AAC3C,2DAAyC;AACzC,qDAAmC;AACnC,4DAA0C;AAC1C,kDAAgC;AAChC,iEAA+C;AAC/C,0DAAwC;AACxC,iEAA+C;AAC/C,iEAA+C;AAC/C,qEAAmD;AACnD,+DAA6C;AAC7C,wDAAsC;AACtC,kDAAgC;AAChC,8DAA4C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/responses/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,yDAAuC;AACvC,mDAAiC;AACjC,kDAAgC;AAChC,mEAAiD;AACjD,oEAAkD;AAClD,0DAAwC;AACxC,qDAAmC;AACnC,0DAAwC;AACxC,2DAAyC;AACzC,iEAA+C;AAC/C,6DAA2C;AAC3C,uDAAqC;AACrC,wDAAsC;AACtC,2DAAyC;AACzC,2DAAyC;AACzC,qDAAmC;AACnC,8DAA4C;AAC5C,kEAAgD;AAChD,iEAA+C;AAC/C,gEAA8C;AAC9C,0DAAwC;AACxC,kEAAgD;AAChD,4DAA0C;AAC1C,6DAA2C;AAC3C,8DAA4C;AAC5C,2DAAyC;AACzC,qDAAmC;AACnC,4DAA0C;AAC1C,kDAAgC;AAChC,iEAA+C;AAC/C,0DAAwC;AACxC,iEAA+C;AAC/C,iEAA+C;AAC/C,qEAAmD;AACnD,+DAA6C;AAC7C,wDAAsC;AACtC,kDAAgC;AAChC,8DAA4C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IResponse } from '../type-message/response';
|
|
2
|
+
export interface IGeneratePersonalApiKeyUserData {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
prefix: string;
|
|
5
|
+
last4: string;
|
|
6
|
+
}
|
|
7
|
+
export type IGeneratePersonalApiKeyUserResponse = IResponse<IGeneratePersonalApiKeyUserData>;
|
|
8
|
+
export interface IGetPersonalApiKeyUserData {
|
|
9
|
+
hasKey: boolean;
|
|
10
|
+
apiKey: string | null;
|
|
11
|
+
prefix?: string;
|
|
12
|
+
last4?: string;
|
|
13
|
+
createdAt?: Date;
|
|
14
|
+
lastUsedAt?: Date | null;
|
|
15
|
+
revokedAt?: Date | null;
|
|
16
|
+
}
|
|
17
|
+
export type IGetPersonalApiKeyUserResponse = IResponse<IGetPersonalApiKeyUserData>;
|
|
18
|
+
export type IRevokePersonalApiKeyUserResponse = void;
|
|
19
|
+
export interface IResolvePersonalApiKeyAdminData {
|
|
20
|
+
userId: string;
|
|
21
|
+
isAdmin: boolean;
|
|
22
|
+
revoked: boolean;
|
|
23
|
+
}
|
|
24
|
+
export type IResolvePersonalApiKeyAdminResponse = IResponse<IResolvePersonalApiKeyAdminData>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personal-api-key.response.js","sourceRoot":"","sources":["../../../../../src/types/interface/api/responses/personal-api-key.response.ts"],"names":[],"mappings":""}
|
|
@@ -46,6 +46,7 @@ export * from './models/team-project-access.model';
|
|
|
46
46
|
export * from './models/team-project-application-access.model';
|
|
47
47
|
export * from './models/project-api-key.model';
|
|
48
48
|
export * from './models/project-api-key-application-access.model';
|
|
49
|
+
export * from './models/personal-api-key.model';
|
|
49
50
|
export * from './models/content-ownership.model';
|
|
50
51
|
export * from './models/content-share.model';
|
|
51
52
|
export * from './models/support-ticket.model';
|
|
@@ -62,6 +62,7 @@ __exportStar(require("./models/team-project-access.model"), exports);
|
|
|
62
62
|
__exportStar(require("./models/team-project-application-access.model"), exports);
|
|
63
63
|
__exportStar(require("./models/project-api-key.model"), exports);
|
|
64
64
|
__exportStar(require("./models/project-api-key-application-access.model"), exports);
|
|
65
|
+
__exportStar(require("./models/personal-api-key.model"), exports);
|
|
65
66
|
__exportStar(require("./models/content-ownership.model"), exports);
|
|
66
67
|
__exportStar(require("./models/content-share.model"), exports);
|
|
67
68
|
__exportStar(require("./models/support-ticket.model"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,gEAA8C;AAC9C,4EAA0D;AAC1D,6DAA2C;AAC3C,mEAAiD;AACjD,yEAAuD;AACvD,+DAA6C;AAC7C,+DAA6C;AAC7C,8DAA4C;AAC5C,mEAAiD;AACjD,oEAAkD;AAGlD,2DAAyC;AACzC,sEAAoD;AAGpD,wCAAsB;AAGtB,uDAAqC;AAGrC,wDAAsC;AACtC,gEAA8C;AAC9C,8DAA4C;AAC5C,oEAAkD;AAGlD,8DAA4C;AAC5C,0EAAwD;AACxD,qEAAmD;AAGnD,+DAA6C;AAC7C,iEAA+C;AAC/C,4EAA0D;AAC1D,4EAA0D;AAC1D,8DAA4C;AAC5C,yDAAuC;AACvC,oEAAkD;AAClD,iEAA+C;AAC/C,0EAAwD;AACxD,6DAA2C;AAC3C,wEAAsD;AACtD,sEAAoD;AACpD,mEAAiD;AACjD,mEAAiD;AACjD,kEAAgD;AAChD,wEAAsD;AACtD,+DAA6C;AAC7C,8DAA4C;AAC5C,qEAAmD;AACnD,sDAAoC;AACpC,6DAA2C;AAC3C,qEAAmD;AACnD,iFAA+D;AAC/D,iEAA+C;AAC/C,oFAAkE;AAGlE,mEAAiD;AAGjD,+DAA6C;AAG7C,gEAA8C;AAC9C,wEAAsD;AACtD,2EAAyD;AACzD,oEAAkD;AAClD,yEAAuD;AAGvD,4DAA0C;AAG1C,4DAA0C;AAG1C,qEAAmD;AAGnD,qEAAmD;AAGnD,kEAAgD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,gEAA8C;AAC9C,4EAA0D;AAC1D,6DAA2C;AAC3C,mEAAiD;AACjD,yEAAuD;AACvD,+DAA6C;AAC7C,+DAA6C;AAC7C,8DAA4C;AAC5C,mEAAiD;AACjD,oEAAkD;AAGlD,2DAAyC;AACzC,sEAAoD;AAGpD,wCAAsB;AAGtB,uDAAqC;AAGrC,wDAAsC;AACtC,gEAA8C;AAC9C,8DAA4C;AAC5C,oEAAkD;AAGlD,8DAA4C;AAC5C,0EAAwD;AACxD,qEAAmD;AAGnD,+DAA6C;AAC7C,iEAA+C;AAC/C,4EAA0D;AAC1D,4EAA0D;AAC1D,8DAA4C;AAC5C,yDAAuC;AACvC,oEAAkD;AAClD,iEAA+C;AAC/C,0EAAwD;AACxD,6DAA2C;AAC3C,wEAAsD;AACtD,sEAAoD;AACpD,mEAAiD;AACjD,mEAAiD;AACjD,kEAAgD;AAChD,wEAAsD;AACtD,+DAA6C;AAC7C,8DAA4C;AAC5C,qEAAmD;AACnD,sDAAoC;AACpC,6DAA2C;AAC3C,qEAAmD;AACnD,iFAA+D;AAC/D,iEAA+C;AAC/C,oFAAkE;AAGlE,kEAAgD;AAGhD,mEAAiD;AAGjD,+DAA6C;AAG7C,gEAA8C;AAC9C,wEAAsD;AACtD,2EAAyD;AACzD,oEAAkD;AAClD,yEAAuD;AAGvD,4DAA0C;AAG1C,4DAA0C;AAG1C,qEAAmD;AAGnD,qEAAmD;AAGnD,kEAAgD"}
|
|
@@ -41,6 +41,7 @@ export * from './team-project-access.model';
|
|
|
41
41
|
export * from './team-project-application-access.model';
|
|
42
42
|
export * from './project-api-key.model';
|
|
43
43
|
export * from './project-api-key-application-access.model';
|
|
44
|
+
export * from './personal-api-key.model';
|
|
44
45
|
export * from './content-ownership.model';
|
|
45
46
|
export * from './content-share.model';
|
|
46
47
|
export * from './support-ticket.model';
|
|
@@ -57,6 +57,7 @@ __exportStar(require("./team-project-access.model"), exports);
|
|
|
57
57
|
__exportStar(require("./team-project-application-access.model"), exports);
|
|
58
58
|
__exportStar(require("./project-api-key.model"), exports);
|
|
59
59
|
__exportStar(require("./project-api-key-application-access.model"), exports);
|
|
60
|
+
__exportStar(require("./personal-api-key.model"), exports);
|
|
60
61
|
__exportStar(require("./content-ownership.model"), exports);
|
|
61
62
|
__exportStar(require("./content-share.model"), exports);
|
|
62
63
|
__exportStar(require("./support-ticket.model"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/interface/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,kDAAgC;AAChC,yDAAuC;AACvC,qEAAmD;AACnD,sDAAoC;AACpC,4DAA0C;AAC1C,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AACrC,4DAA0C;AAC1C,6DAA2C;AAG3C,oDAAkC;AAClC,+DAA6C;AAG7C,gDAA8B;AAG9B,iDAA+B;AAG/B,uDAAqC;AACrC,mEAAiD;AACjD,8DAA4C;AAG5C,wDAAsC;AACtC,0DAAwC;AACxC,qEAAmD;AACnD,qEAAmD;AACnD,uDAAqC;AACrC,kDAAgC;AAChC,6DAA2C;AAC3C,0DAAwC;AACxC,mEAAiD;AACjD,sDAAoC;AACpC,iEAA+C;AAC/C,+DAA6C;AAC7C,4DAA0C;AAC1C,4DAA0C;AAC1C,2DAAyC;AACzC,iEAA+C;AAC/C,wDAAsC;AACtC,uDAAqC;AACrC,8DAA4C;AAC5C,+CAA6B;AAC7B,sDAAoC;AACpC,8DAA4C;AAC5C,0EAAwD;AACxD,0DAAwC;AACxC,6EAA2D;AAG3D,4DAA0C;AAG1C,wDAAsC;AAGtC,yDAAuC;AACvC,iEAA+C;AAC/C,oEAAkD;AAClD,6DAA2C;AAC3C,kEAAgD;AAGhD,qDAAmC;AAGnC,qDAAmC;AAGnC,8DAA4C;AAG5C,8DAA4C;AAG5C,2DAAyC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/interface/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,kDAAgC;AAChC,yDAAuC;AACvC,qEAAmD;AACnD,sDAAoC;AACpC,4DAA0C;AAC1C,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AACrC,4DAA0C;AAC1C,6DAA2C;AAG3C,oDAAkC;AAClC,+DAA6C;AAG7C,gDAA8B;AAG9B,iDAA+B;AAG/B,uDAAqC;AACrC,mEAAiD;AACjD,8DAA4C;AAG5C,wDAAsC;AACtC,0DAAwC;AACxC,qEAAmD;AACnD,qEAAmD;AACnD,uDAAqC;AACrC,kDAAgC;AAChC,6DAA2C;AAC3C,0DAAwC;AACxC,mEAAiD;AACjD,sDAAoC;AACpC,iEAA+C;AAC/C,+DAA6C;AAC7C,4DAA0C;AAC1C,4DAA0C;AAC1C,2DAAyC;AACzC,iEAA+C;AAC/C,wDAAsC;AACtC,uDAAqC;AACrC,8DAA4C;AAC5C,+CAA6B;AAC7B,sDAAoC;AACpC,8DAA4C;AAC5C,0EAAwD;AACxD,0DAAwC;AACxC,6EAA2D;AAG3D,2DAAyC;AAGzC,4DAA0C;AAG1C,wDAAsC;AAGtC,yDAAuC;AACvC,iEAA+C;AAC/C,oEAAkD;AAClD,6DAA2C;AAC3C,kEAAgD;AAGhD,qDAAmC;AAGnC,qDAAmC;AAGnC,8DAA4C;AAG5C,8DAA4C;AAG5C,2DAAyC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IUser } from './user.model';
|
|
2
|
+
export interface IPersonalApiKey {
|
|
3
|
+
id?: string;
|
|
4
|
+
userId: string;
|
|
5
|
+
keyCiphertext?: string;
|
|
6
|
+
keyLookupHash?: string;
|
|
7
|
+
prefix: string;
|
|
8
|
+
last4: string;
|
|
9
|
+
lastUsedAt: Date | null;
|
|
10
|
+
revokedAt: Date | null;
|
|
11
|
+
updatedAt?: Date;
|
|
12
|
+
createdAt?: Date;
|
|
13
|
+
user?: IUser;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"personal-api-key.model.js","sourceRoot":"","sources":["../../../../src/types/interface/models/personal-api-key.model.ts"],"names":[],"mappings":""}
|
|
@@ -39,6 +39,8 @@ export interface IUser {
|
|
|
39
39
|
enabledServices: AbyssService[];
|
|
40
40
|
professionalStatus: UserProfessionalStatus | null;
|
|
41
41
|
lastLoginDate?: Date | null;
|
|
42
|
+
personalApiKeyLookupHash?: string | null;
|
|
43
|
+
personalApiKeyRevokedAt?: Date | null;
|
|
42
44
|
updatedAt?: Date;
|
|
43
45
|
createdAt?: Date;
|
|
44
46
|
sponsor?: IUser | null;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sha256Hex = exports.decryptSecret = exports.encryptSecret = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const VERSION = 'v1';
|
|
6
|
+
const ALGO = 'aes-256-gcm';
|
|
7
|
+
const loadMasterKey = () => {
|
|
8
|
+
const raw = process.env.ABYSS_SECRET_ENCRYPTION_KEY;
|
|
9
|
+
if (!raw) {
|
|
10
|
+
throw new Error('ABYSS_SECRET_ENCRYPTION_KEY is not set');
|
|
11
|
+
}
|
|
12
|
+
const key = Buffer.from(raw, 'base64');
|
|
13
|
+
if (key.length !== 32) {
|
|
14
|
+
throw new Error('ABYSS_SECRET_ENCRYPTION_KEY must decode to 32 bytes');
|
|
15
|
+
}
|
|
16
|
+
return key;
|
|
17
|
+
};
|
|
18
|
+
const MASTER_KEY = loadMasterKey();
|
|
19
|
+
const encryptSecret = (plaintext) => {
|
|
20
|
+
const iv = (0, crypto_1.randomBytes)(12);
|
|
21
|
+
const cipher = (0, crypto_1.createCipheriv)(ALGO, MASTER_KEY, iv);
|
|
22
|
+
const ct = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);
|
|
23
|
+
const tag = cipher.getAuthTag();
|
|
24
|
+
return `${VERSION}:${iv.toString('base64')}.${tag.toString('base64')}.${ct.toString('base64')}`;
|
|
25
|
+
};
|
|
26
|
+
exports.encryptSecret = encryptSecret;
|
|
27
|
+
const decryptSecret = (payload) => {
|
|
28
|
+
const [version, body] = payload.split(':');
|
|
29
|
+
if (version !== VERSION || !body) {
|
|
30
|
+
throw new Error('Unsupported secret payload version');
|
|
31
|
+
}
|
|
32
|
+
const [ivB64, tagB64, ctB64] = body.split('.');
|
|
33
|
+
if (!ivB64 || !tagB64 || !ctB64) {
|
|
34
|
+
throw new Error('Malformed secret payload');
|
|
35
|
+
}
|
|
36
|
+
const decipher = (0, crypto_1.createDecipheriv)(ALGO, MASTER_KEY, Buffer.from(ivB64, 'base64'));
|
|
37
|
+
decipher.setAuthTag(Buffer.from(tagB64, 'base64'));
|
|
38
|
+
return Buffer.concat([decipher.update(Buffer.from(ctB64, 'base64')), decipher.final()]).toString('utf8');
|
|
39
|
+
};
|
|
40
|
+
exports.decryptSecret = decryptSecret;
|
|
41
|
+
const sha256Hex = (input) => (0, crypto_1.createHash)('sha256').update(input, 'utf8').digest('hex');
|
|
42
|
+
exports.sha256Hex = sha256Hex;
|
|
43
|
+
//# sourceMappingURL=encrypt-secret.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encrypt-secret.util.js","sourceRoot":"","sources":["../../src/utils/encrypt-secret.util.ts"],"names":[],"mappings":";;;AAAA,mCAAmF;AAanF,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,IAAI,GAAG,aAAa,CAAC;AAE3B,MAAM,aAAa,GAAG,GAAW,EAAE;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACpD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACvC,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAGF,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;AAM5B,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAU,EAAE;IACzD,MAAM,EAAE,GAAG,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAChC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;AAClG,CAAC,CAAC;AANW,QAAA,aAAa,iBAMxB;AAOK,MAAM,aAAa,GAAG,CAAC,OAAe,EAAU,EAAE;IACvD,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,QAAQ,GAAG,IAAA,yBAAgB,EAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClF,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAC9F,MAAM,CACP,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,aAAa,iBAcxB;AAMK,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CACjD,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAD9C,QAAA,SAAS,aACqC"}
|
|
@@ -7,12 +7,14 @@ export interface IResolveUserParams {
|
|
|
7
7
|
logger: IResolveUserLogger;
|
|
8
8
|
transaction?: unknown;
|
|
9
9
|
}
|
|
10
|
-
interface
|
|
11
|
-
id: string;
|
|
10
|
+
interface IResolveUserMirror {
|
|
12
11
|
isAdmin: boolean;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
personalApiKeyLookupHash: string | null;
|
|
13
|
+
personalApiKeyRevokedAt: Date | null;
|
|
14
|
+
}
|
|
15
|
+
interface ISequelizeUserShape extends IResolveUserMirror {
|
|
16
|
+
id: string;
|
|
17
|
+
set(values: Partial<IResolveUserMirror>): any;
|
|
16
18
|
save(options?: any): Promise<any>;
|
|
17
19
|
}
|
|
18
20
|
export declare const resolveUserFromAbyssMain: <TUser extends ISequelizeUserShape>(params: IResolveUserParams) => Promise<TUser>;
|
|
@@ -4,26 +4,34 @@ exports.resolveUserFromAbyssMain = void 0;
|
|
|
4
4
|
const __1 = require("..");
|
|
5
5
|
const resolveUserFromAbyssMain = async (params) => {
|
|
6
6
|
const { userId, UserModel, logger, transaction } = params;
|
|
7
|
-
const existingUser = (await UserModel.findByPk(userId, {
|
|
7
|
+
const existingUser = (await UserModel.findByPk(userId, {
|
|
8
|
+
transaction,
|
|
9
|
+
}));
|
|
8
10
|
let isAdmin = existingUser?.isAdmin ?? false;
|
|
11
|
+
let personalApiKeyLookupHash = existingUser?.personalApiKeyLookupHash ?? null;
|
|
12
|
+
let personalApiKeyRevokedAt = existingUser?.personalApiKeyRevokedAt ?? null;
|
|
9
13
|
try {
|
|
10
14
|
const mainUser = await __1.AbyssCore.sdk.user.admin.get({ userId });
|
|
11
15
|
isAdmin = mainUser.data.user.isAdmin;
|
|
16
|
+
personalApiKeyLookupHash = mainUser.data.user.personalApiKeyLookupHash ?? null;
|
|
17
|
+
personalApiKeyRevokedAt = mainUser.data.user.personalApiKeyRevokedAt ?? null;
|
|
12
18
|
}
|
|
13
19
|
catch {
|
|
14
|
-
logger.log(`Failed to fetch user ${userId} from abyss-main, defaulting
|
|
20
|
+
logger.log(`Failed to fetch user ${userId} from abyss-main, defaulting to local mirror`);
|
|
15
21
|
}
|
|
16
22
|
const [user, created] = (await UserModel.findOrCreate({
|
|
17
23
|
where: { id: userId },
|
|
18
|
-
defaults: { id: userId, isAdmin },
|
|
24
|
+
defaults: { id: userId, isAdmin, personalApiKeyLookupHash, personalApiKeyRevokedAt },
|
|
19
25
|
transaction,
|
|
20
26
|
}));
|
|
21
27
|
if (created) {
|
|
22
28
|
logger.log(`Lazy-created user ${userId} (isAdmin: ${isAdmin})`);
|
|
23
29
|
}
|
|
24
|
-
else if (user.isAdmin !== isAdmin
|
|
25
|
-
|
|
26
|
-
user.
|
|
30
|
+
else if (user.isAdmin !== isAdmin ||
|
|
31
|
+
user.personalApiKeyLookupHash !== personalApiKeyLookupHash ||
|
|
32
|
+
Boolean(user.personalApiKeyRevokedAt) !== Boolean(personalApiKeyRevokedAt)) {
|
|
33
|
+
logger.log(`Syncing mirror for user ${userId} from abyss-main`);
|
|
34
|
+
user.set({ isAdmin, personalApiKeyLookupHash, personalApiKeyRevokedAt });
|
|
27
35
|
await user.save({ transaction });
|
|
28
36
|
}
|
|
29
37
|
return user;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-user.utils.js","sourceRoot":"","sources":["../../src/utils/resolve-user.utils.ts"],"names":[],"mappings":";;;AAAA,0BAA+B;
|
|
1
|
+
{"version":3,"file":"resolve-user.utils.js","sourceRoot":"","sources":["../../src/utils/resolve-user.utils.ts"],"names":[],"mappings":";;;AAAA,0BAA+B;AAkDxB,MAAM,wBAAwB,GAAG,KAAK,EAC3C,MAA0B,EACV,EAAE;IAClB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAE1D,MAAM,YAAY,GAAG,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;QACrD,WAAW;KACZ,CAAC,CAA+B,CAAC;IAElC,IAAI,OAAO,GAAG,YAAY,EAAE,OAAO,IAAI,KAAK,CAAC;IAC7C,IAAI,wBAAwB,GAAG,YAAY,EAAE,wBAAwB,IAAI,IAAI,CAAC;IAC9E,IAAI,uBAAuB,GAAG,YAAY,EAAE,uBAAuB,IAAI,IAAI,CAAC;IAC5E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,aAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACrC,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC;QAC/E,uBAAuB,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,GAAG,CAAC,wBAAwB,MAAM,8CAA8C,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC;QACpD,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;QACrB,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE;QACpF,WAAW;KACZ,CAAC,CAAmC,CAAC;IAEtC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,CAAC,qBAAqB,MAAM,cAAc,OAAO,GAAG,CAAC,CAAC;IAClE,CAAC;SAAM,IACL,IAAI,CAAC,OAAO,KAAK,OAAO;QACxB,IAAI,CAAC,wBAAwB,KAAK,wBAAwB;QAG1D,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,OAAO,CAAC,uBAAuB,CAAC,EAC1E,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,2BAA2B,MAAM,kBAAkB,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACzE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,IAAa,CAAC;AACvB,CAAC,CAAC;AA1CW,QAAA,wBAAwB,4BA0CnC"}
|
package/jest.config.cjs
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @type {import('jest').Config} */
|
|
2
|
+
module.exports = {
|
|
3
|
+
testEnvironment: 'node',
|
|
4
|
+
transform: {
|
|
5
|
+
'^.+\\.tsx?$': ['ts-jest', { isolatedModules: true }],
|
|
6
|
+
},
|
|
7
|
+
testMatch: ['**/tests/**/*.spec.ts'],
|
|
8
|
+
modulePathIgnorePatterns: ['dist'],
|
|
9
|
+
testTimeout: 35000,
|
|
10
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abyss-project/main",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Core package to interact with Abyss-Project",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"tsc": "tsc",
|
|
32
32
|
"build": "tsc",
|
|
33
33
|
"dev": "tsc --watch",
|
|
34
|
+
"test": "jest",
|
|
34
35
|
"prepublish": "tsc"
|
|
35
36
|
},
|
|
36
37
|
"repository": {
|
|
@@ -62,6 +63,7 @@
|
|
|
62
63
|
"@types/byte-size": "^8.1.0",
|
|
63
64
|
"@types/express": "^4.17.21",
|
|
64
65
|
"@types/express-serve-static-core": "^4.17.28",
|
|
66
|
+
"@types/jest": "^29.5.5",
|
|
65
67
|
"@types/lodash": "^4.14.177",
|
|
66
68
|
"@types/node": "^20.11.0",
|
|
67
69
|
"@types/uuid": "^9.0.0",
|
|
@@ -75,8 +77,10 @@
|
|
|
75
77
|
"eslint-plugin-node": "^11.1.0",
|
|
76
78
|
"eslint-plugin-prettier": "^3.4.0",
|
|
77
79
|
"eslint-plugin-promise": "^5.1.0",
|
|
80
|
+
"jest": "^29.7.0",
|
|
78
81
|
"prettier": "2.3.1",
|
|
79
82
|
"sequelize-cli": "^6.2.0",
|
|
83
|
+
"ts-jest": "^29.1.1",
|
|
80
84
|
"typescript": "5.4.2"
|
|
81
85
|
}
|
|
82
86
|
}
|