@futdevpro/nts-dynamo 1.9.14 → 1.9.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/.copilot/patterns.json +7 -7
  2. package/.eslintrc.json +1 -1
  3. package/.github/workflows/main.yml +206 -0
  4. package/HOWTO.md +15 -15
  5. package/README.md +140 -140
  6. package/build/_constants/mocks/auth-service.mock.d.ts +1 -1
  7. package/build/_constants/mocks/auth-service.mock.d.ts.map +1 -1
  8. package/build/_constants/mocks/auth-service.mock.js +1 -1
  9. package/build/_constants/mocks/auth-service.mock.js.map +1 -1
  10. package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
  11. package/build/_models/control-models/endpoint-params.control-model.js +2 -0
  12. package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
  13. package/build/_models/control-models/socket-event.control-model.js +1 -1
  14. package/build/_modules/usage/usage.controller.js +1 -1
  15. package/build/_modules/usage/usage.controller.js.map +1 -1
  16. package/build/_services/base/db.service.js +3 -3
  17. package/build/_services/base/db.service.js.map +1 -1
  18. package/build/_services/core/auth.service.d.ts +3 -3
  19. package/build/_services/core/auth.service.d.ts.map +1 -1
  20. package/build/_services/core/global.service.d.ts.map +1 -1
  21. package/build/_services/core/global.service.js +1 -0
  22. package/build/_services/core/global.service.js.map +1 -1
  23. package/build/_services/route/controller.service.d.ts +3 -3
  24. package/build/_services/route/controller.service.js +2 -2
  25. package/build/_services/route/routing-module.service.d.ts +1 -0
  26. package/build/_services/route/routing-module.service.d.ts.map +1 -1
  27. package/build/_services/route/routing-module.service.js +17 -23
  28. package/build/_services/route/routing-module.service.js.map +1 -1
  29. package/build/_services/server/app.server.d.ts.map +1 -1
  30. package/build/_services/server/app.server.js +4 -1
  31. package/build/_services/server/app.server.js.map +1 -1
  32. package/build/_services/socket/socket-client.service.d.ts.map +1 -1
  33. package/build/_services/socket/socket-client.service.js +1 -0
  34. package/build/_services/socket/socket-client.service.js.map +1 -1
  35. package/nodemon.json +17 -15
  36. package/package.json +6 -6
  37. package/src/_constants/global-settings.const.ts +27 -27
  38. package/src/_constants/index.ts +2 -2
  39. package/src/_constants/mocks/app-extended-server.mock.ts +198 -198
  40. package/src/_constants/mocks/app-params.mock.ts +9 -9
  41. package/src/_constants/mocks/app-server.mock.ts +185 -185
  42. package/src/_constants/mocks/auth-service.mock.ts +28 -28
  43. package/src/_constants/mocks/controller.mock.ts +16 -16
  44. package/src/_constants/mocks/data-model.mock.ts +83 -83
  45. package/src/_constants/mocks/email-service-collection.mock.ts +13 -13
  46. package/src/_constants/mocks/email-service.mock.ts +19 -19
  47. package/src/_constants/mocks/email-template.mock.html +14 -14
  48. package/src/_constants/mocks/endpoint.mock.ts +90 -90
  49. package/src/_constants/mocks/socket-client.mock.ts +43 -43
  50. package/src/_constants/mocks/socket-server.mock.ts +43 -43
  51. package/src/_enums/data-model-type.enum.ts +14 -14
  52. package/src/_enums/data-service-function.enum.ts +15 -15
  53. package/src/_enums/http/http-call-type.enum.ts +12 -12
  54. package/src/_enums/http/http-response-type.enum.ts +7 -7
  55. package/src/_enums/http/socket-event-type.enum.ts +18 -18
  56. package/src/_enums/index.ts +13 -13
  57. package/src/_enums/predefined-data-types.enum.ts +27 -27
  58. package/src/_enums/route-security.enum.ts +12 -12
  59. package/src/_enums/socket-security.enum.ts +11 -11
  60. package/src/_models/control-models/api-call-params.control-model.ts +126 -126
  61. package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
  62. package/src/_models/control-models/app-params.control-model.ts +45 -45
  63. package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
  64. package/src/_models/control-models/endpoint-params.control-model.ts +309 -307
  65. package/src/_models/control-models/http-settings.control-model.ts +29 -29
  66. package/src/_models/control-models/index.ts +13 -13
  67. package/src/_models/control-models/socket-client-service-params.control-model.ts +28 -28
  68. package/src/_models/control-models/socket-event.control-model.ts +150 -150
  69. package/src/_models/control-models/socket-presence.control-model.ts +207 -207
  70. package/src/_models/control-models/socket-server-service-params.control-model.ts +20 -20
  71. package/src/_models/control-models/system-control.control-model.ts +12 -12
  72. package/src/_models/index.ts +9 -9
  73. package/src/_models/interfaces/certification-settings.interface.ts +7 -7
  74. package/src/_models/interfaces/global-service-settings.interface.ts +45 -45
  75. package/src/_models/interfaces/global-settings.interface.ts +83 -83
  76. package/src/_models/interfaces/index.ts +7 -7
  77. package/src/_models/interfaces/routing-module-settings.interface.ts +20 -20
  78. package/src/_models/types/db-filter.type.ts +108 -108
  79. package/src/_models/types/db-update.type.ts +100 -100
  80. package/src/_models/types/index.ts +5 -5
  81. package/src/_modules/api-service.index.ts +12 -12
  82. package/src/_modules/app-extended.index.ts +28 -28
  83. package/src/_modules/app.index.ts +24 -24
  84. package/src/_modules/auth.index.ts +7 -7
  85. package/src/_modules/constants.index.ts +2 -2
  86. package/src/_modules/controller.index.ts +10 -10
  87. package/src/_modules/custom-data/custom-data.controller.ts +69 -69
  88. package/src/_modules/custom-data/custom-data.data-service.ts +20 -20
  89. package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +23 -23
  90. package/src/_modules/custom-data/index.ts +6 -6
  91. package/src/_modules/custom-data-module.index.ts +2 -2
  92. package/src/_modules/data-service.index.ts +9 -9
  93. package/src/_modules/email.index.ts +8 -8
  94. package/src/_modules/enums.index.ts +2 -2
  95. package/src/_modules/extended.index.ts +8 -8
  96. package/src/_modules/models.index.ts +2 -2
  97. package/src/_modules/services.index.ts +2 -2
  98. package/src/_modules/test/get-test-routing-module.util.ts +23 -23
  99. package/src/_modules/test/index.ts +5 -5
  100. package/src/_modules/test/test.controller.ts +115 -115
  101. package/src/_modules/test-module.index.ts +2 -2
  102. package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
  103. package/src/_modules/usage/index.ts +7 -7
  104. package/src/_modules/usage/usage.controller.ts +120 -120
  105. package/src/_modules/usage/usage.data-service.ts +172 -172
  106. package/src/_modules/usage-module.index.ts +2 -2
  107. package/src/_services/base/data.service.ts +921 -921
  108. package/src/_services/base/db.service.spec.ts +32 -32
  109. package/src/_services/base/db.service.ts +1063 -1063
  110. package/src/_services/base/singleton.service.ts +21 -21
  111. package/src/_services/core/api.service.ts +453 -453
  112. package/src/_services/core/auth.service.ts +172 -172
  113. package/src/_services/core/email.service.ts +678 -678
  114. package/src/_services/core/global.service.ts +270 -269
  115. package/src/_services/core/service-collection.service.ts +5 -5
  116. package/src/_services/index.ts +23 -23
  117. package/src/_services/route/controller.service.ts +129 -129
  118. package/src/_services/route/routing-module.service.ts +293 -273
  119. package/src/_services/server/app-extended.server.spec.ts +76 -76
  120. package/src/_services/server/app-extended.server.ts +520 -520
  121. package/src/_services/server/app.server.spec.ts +67 -67
  122. package/src/_services/server/app.server.ts +1181 -1179
  123. package/src/_services/shared.service.spec.ts +19 -19
  124. package/src/_services/shared.static-service.ts +73 -73
  125. package/src/_services/socket/socket-client.service.ts +236 -235
  126. package/src/_services/socket/socket-server.service.spec.ts +11 -11
  127. package/src/_services/socket/socket-server.service.ts +761 -761
  128. package/src/index.ts +18 -18
  129. package/tsconfig.json +41 -46
  130. package/build/tsconfig.tsbuildinfo +0 -1
  131. package/src/_enums/http/http-call-type.enum.d.ts +0 -12
  132. package/src/_enums/http/http-call-type.enum.d.ts.map +0 -1
  133. package/src/_enums/http/http-call-type.enum.js +0 -16
  134. package/src/_enums/http/http-call-type.enum.js.map +0 -1
  135. package/src/_enums/http/http-response-type.enum.d.ts +0 -7
  136. package/src/_enums/http/http-response-type.enum.d.ts.map +0 -1
  137. package/src/_enums/http/http-response-type.enum.js +0 -11
  138. package/src/_enums/http/http-response-type.enum.js.map +0 -1
  139. package/src/_enums/http/socket-event-type.enum.d.ts +0 -15
  140. package/src/_enums/http/socket-event-type.enum.d.ts.map +0 -1
  141. package/src/_enums/http/socket-event-type.enum.js +0 -19
  142. package/src/_enums/http/socket-event-type.enum.js.map +0 -1
@@ -1,172 +1,172 @@
1
-
2
- import { Request, Response } from 'express';
3
-
4
- import { DynamoFM_Error } from '@futdevpro/fsm-dynamo';
5
-
6
- import { DynamoNTS_SingletonService } from '../base/singleton.service';
7
-
8
- /**
9
- * Extend this class as an Auth Service implementation
10
- *
11
- * You should use singleton instance getting function by implementing a
12
- * static getInstance() function
13
- * @example
14
- * export class AuthService extends DynamoBEAuthService {
15
- *
16
- * static getInstance(): AuthService {
17
- * return AuthService.getSingletonInstance();
18
- * }
19
- * ...
20
- */
21
- export abstract class DynamoNTS_AuthService extends DynamoNTS_SingletonService {
22
-
23
- readonly serviceName: string = 'AuthService';
24
-
25
- readonly defaultErrorUserMsg =
26
- `We encountered an unhandled BackEnd Auth Error, ` +
27
- `\nplease contact the responsible development team.`;
28
-
29
- /**
30
- * this function returns the 'authorization' header from the Request,
31
- * or throws error, if its missing
32
- *
33
- * @param req
34
- * @returns
35
- */
36
- getTokenFromRequest(req: Request): string {
37
- const authHeader = req?.headers?.['authorization'];
38
-
39
- if (!authHeader) {
40
- throw new DynamoFM_Error({
41
- status: 401,
42
- errorCode: 'NTS-AS0-GT0',
43
- addECToUserMsg: true,
44
- message: 'AuthHeader missing!',
45
- userMessage: this.defaultErrorUserMsg,
46
- issuerService: this.serviceName,
47
- confidentialContent: { headers: req?.headers },
48
- });
49
- }
50
-
51
- const token = authHeader.split(' ')[1];
52
-
53
- if (!token) {
54
- throw new DynamoFM_Error({
55
- status: 401,
56
- errorCode: 'NTS-AS0-GT1',
57
- addECToUserMsg: true,
58
- message: 'Token missing!',
59
- userMessage: this.defaultErrorUserMsg,
60
- issuerService: this.serviceName,
61
- confidentialContent: { headers: req?.headers },
62
- });
63
- }
64
-
65
- return token;
66
- }
67
-
68
- /**
69
- * You need to implement a token validation logic,
70
- * when if the token is invalid, or the authentication fails, it sends or throws an error
71
- *
72
- * @example
73
- *
74
- * async authenticateToken(req: Request, res: Response, next: NextFunction) {
75
- * try {
76
- * let token = AuthService.getTokenFromRequest(req);
77
- * token = await AuthService.verifyToken(token);
78
- *
79
- * DynamoFM_Log.success('token authenticated');
80
- * res.setHeader('authorization', `Bearer ${token}`);
81
- * next();
82
- * } catch (error) {
83
- * error = new DynamoFM_Error({
84
- * status: 401,
85
- * message: `authenticateToken (WB-ERROR)`,
86
- * addECToUserMsg: true,
87
- * userMessage: `Authorization failed.`,
88
- * error
89
- * });
90
- * DynamoFM_Log.error(error?.message, error);
91
- *
92
- * res.status(error.status);
93
- * res.send(error);
94
- * }
95
- * }
96
- * */
97
- abstract authenticate_token: (req: Request, res: Response) => Promise<void>;
98
-
99
- /**
100
- * You need to implement a token validation logic,
101
- * when if the token is invalid, or the authentication fails, it sends or throws an error
102
- *
103
- * @param req
104
- * @param res
105
- * @param next
106
- *
107
- * @example
108
- *
109
- * async authenticateTokenSelf(req: Request, res: Response, next: NextFunction): Promise<void> {
110
- * try {
111
- * let token = AuthService.getTokenFromRequest(req);
112
- * token = await AuthService.verifyTokenSelf(token, req?.params?.userId);
113
- * DynamoFM_Log.success('selftoken authenticated');
114
- *
115
- * res.setHeader('authorization', `Bearer ${token}`);
116
- * next();
117
- * } catch (error) {
118
- * error = new DynamoFM_Error({
119
- * status: 401,
120
- * message: `authenticateTokenSelf (WB-ERROR)`,
121
- * addECToUserMsg: true,
122
- * userMessage: `Authorization failed.`,
123
- * error
124
- * });
125
- * DynamoFM_Log.error(error?.message, error);
126
- *
127
- * res.status(error.status);
128
- * res.send(error);
129
- * }
130
- * }
131
- *
132
- */
133
- abstract authenticate_tokenSelf: (req: Request, res: Response) => Promise<void>;
134
-
135
- /**
136
- * Authenticate Token for Permission to Access UsageData
137
- * @param req
138
- * @param res
139
- * @param next
140
- *
141
- * @example
142
- * You need to implement a token validation logic,
143
- * when if the token is invalid, or the authentication fails, it sends or throws an error
144
- *
145
- * async authTokenPermAccUsageData(req: Request, res: Response, next: NextFunction): Promise<void> {
146
- * AuthService.authTokenAndPerm(req, res, next, Permission.accessUsageData);
147
- * }
148
- */
149
- abstract authenticate_tokenPermAccUsageData: (req: Request, res: Response) => Promise<void>;
150
-
151
- /**
152
- * The DynamoBE System is using this to get issuer, that will be set on DBServices
153
- * @param req
154
- *
155
- * @example
156
- * getAccountIdFromRequest(req: Request): string {
157
- * try {
158
- * const authHeader = req.headers['authorization'];
159
- * const token = authHeader.split(' ')[1];
160
- * return this.getAccountIdFromToken(token);
161
- * } catch {
162
- * return undefined;
163
- * }
164
- * }
165
- */
166
- abstract getIssuerFromRequest(req: Request): string;
167
- /**
168
- * Basic Module: UsageModule uses this function
169
- * @param req
170
- */
171
- abstract getUsernameFromRequest(req: Request): string;
172
- }
1
+
2
+ import { Request, Response } from 'express';
3
+
4
+ import { DynamoFM_Error } from '@futdevpro/fsm-dynamo';
5
+
6
+ import { DynamoNTS_SingletonService } from '../base/singleton.service';
7
+
8
+ /**
9
+ * Extend this class as an Auth Service implementation
10
+ *
11
+ * You should use singleton instance getting function by implementing a
12
+ * static getInstance() function
13
+ * @example
14
+ * export class AuthService extends DynamoBEAuthService {
15
+ *
16
+ * static getInstance(): AuthService {
17
+ * return AuthService.getSingletonInstance();
18
+ * }
19
+ * ...
20
+ */
21
+ export abstract class DynamoNTS_AuthService extends DynamoNTS_SingletonService {
22
+
23
+ readonly serviceName: string = 'AuthService';
24
+
25
+ readonly defaultErrorUserMsg =
26
+ `We encountered an unhandled BackEnd Auth Error, ` +
27
+ `\nplease contact the responsible development team.`;
28
+
29
+ /**
30
+ * this function returns the 'authorization' header from the Request,
31
+ * or throws error, if its missing
32
+ *
33
+ * @param req
34
+ * @returns
35
+ */
36
+ getTokenFromRequest(req: Request): string {
37
+ const authHeader = req?.headers?.['authorization'];
38
+
39
+ if (!authHeader) {
40
+ throw new DynamoFM_Error({
41
+ status: 401,
42
+ errorCode: 'NTS-AS0-GT0',
43
+ addECToUserMsg: true,
44
+ message: 'AuthHeader missing!',
45
+ userMessage: this.defaultErrorUserMsg,
46
+ issuerService: this.serviceName,
47
+ confidentialContent: { headers: req?.headers },
48
+ });
49
+ }
50
+
51
+ const token = authHeader.split(' ')[1];
52
+
53
+ if (!token) {
54
+ throw new DynamoFM_Error({
55
+ status: 401,
56
+ errorCode: 'NTS-AS0-GT1',
57
+ addECToUserMsg: true,
58
+ message: 'Token missing!',
59
+ userMessage: this.defaultErrorUserMsg,
60
+ issuerService: this.serviceName,
61
+ confidentialContent: { headers: req?.headers },
62
+ });
63
+ }
64
+
65
+ return token;
66
+ }
67
+
68
+ /**
69
+ * You need to implement a token validation logic,
70
+ * when if the token is invalid, or the authentication fails, it sends or throws an error
71
+ *
72
+ * @example
73
+ *
74
+ * async authenticateToken(req: Request, res: Response, next: NextFunction) {
75
+ * try {
76
+ * let token = AuthService.getTokenFromRequest(req);
77
+ * token = await AuthService.verifyToken(token);
78
+ *
79
+ * DynamoFM_Log.success('token authenticated');
80
+ * res.setHeader('authorization', `Bearer ${token}`);
81
+ * next();
82
+ * } catch (error) {
83
+ * error = new DynamoFM_Error({
84
+ * status: 401,
85
+ * message: `authenticateToken (WB-ERROR)`,
86
+ * addECToUserMsg: true,
87
+ * userMessage: `Authorization failed.`,
88
+ * error
89
+ * });
90
+ * DynamoFM_Log.error(error?.message, error);
91
+ *
92
+ * res.status(error.status);
93
+ * res.send(error);
94
+ * }
95
+ * }
96
+ * */
97
+ abstract authenticate_token: (req: Request, res: Response) => Promise<void>;
98
+
99
+ /**
100
+ * You need to implement a token validation logic,
101
+ * when if the token is invalid, or the authentication fails, it sends or throws an error
102
+ *
103
+ * @param req
104
+ * @param res
105
+ * @param next
106
+ *
107
+ * @example
108
+ *
109
+ * async authenticate_tokenSelf(req: Request, res: Response, next: NextFunction): Promise<void> {
110
+ * try {
111
+ * let token = AuthService.getTokenFromRequest(req);
112
+ * token = await AuthService.verifyTokenSelf(token, req?.params?.userId);
113
+ * DynamoFM_Log.success('selftoken authenticated');
114
+ *
115
+ * res.setHeader('authorization', `Bearer ${token}`);
116
+ * next();
117
+ * } catch (error) {
118
+ * error = new DynamoFM_Error({
119
+ * status: 401,
120
+ * message: `authenticate_tokenSelf (WB-ERROR)`,
121
+ * addECToUserMsg: true,
122
+ * userMessage: `Authorization failed.`,
123
+ * error
124
+ * });
125
+ * DynamoFM_Log.error(error?.message, error);
126
+ *
127
+ * res.status(error.status);
128
+ * res.send(error);
129
+ * }
130
+ * }
131
+ *
132
+ */
133
+ abstract authenticate_tokenSelf: (req: Request, res: Response) => Promise<void>;
134
+
135
+ /**
136
+ * Authenticate Token for Permission to Access UsageData
137
+ * @param req
138
+ * @param res
139
+ * @param next
140
+ *
141
+ * @example
142
+ * You need to implement a token validation logic,
143
+ * when if the token is invalid, or the authentication fails, it sends or throws an error
144
+ *
145
+ * async authTokenPermAccUsageData(req: Request, res: Response, next: NextFunction): Promise<void> {
146
+ * AuthService.authTokenAndPerm(req, res, next, Permission.accessUsageData);
147
+ * }
148
+ */
149
+ abstract authenticate_tokenPerm_accUsageData: (req: Request, res: Response) => Promise<void>;
150
+
151
+ /**
152
+ * The DynamoBE System is using this to get issuer, that will be set on DBServices
153
+ * @param req
154
+ *
155
+ * @example
156
+ * getAccountIdFromRequest(req: Request): string {
157
+ * try {
158
+ * const authHeader = req.headers['authorization'];
159
+ * const token = authHeader.split(' ')[1];
160
+ * return this.getAccountIdFromToken(token);
161
+ * } catch {
162
+ * return undefined;
163
+ * }
164
+ * }
165
+ */
166
+ abstract getIssuerFromRequest(req: Request): string;
167
+ /**
168
+ * Basic Module: UsageModule uses this function
169
+ * @param req
170
+ */
171
+ abstract getUsernameFromRequest(req: Request): string;
172
+ }