@futdevpro/nts-dynamo 1.9.15 → 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.
- package/.copilot/patterns.json +7 -7
- package/.github/workflows/main.yml +206 -0
- package/HOWTO.md +15 -15
- package/README.md +140 -140
- package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.js +2 -0
- package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
- package/build/_models/control-models/socket-event.control-model.js +1 -1
- package/build/_services/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +1 -0
- package/build/_services/core/global.service.js.map +1 -1
- package/build/_services/route/routing-module.service.d.ts +1 -0
- package/build/_services/route/routing-module.service.d.ts.map +1 -1
- package/build/_services/route/routing-module.service.js +17 -23
- package/build/_services/route/routing-module.service.js.map +1 -1
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +4 -1
- package/build/_services/server/app.server.js.map +1 -1
- package/build/_services/socket/socket-client.service.d.ts.map +1 -1
- package/build/_services/socket/socket-client.service.js +1 -0
- package/build/_services/socket/socket-client.service.js.map +1 -1
- package/nodemon.json +17 -15
- package/package.json +5 -5
- package/src/_constants/global-settings.const.ts +27 -27
- package/src/_constants/index.ts +2 -2
- package/src/_constants/mocks/app-extended-server.mock.ts +198 -198
- package/src/_constants/mocks/app-params.mock.ts +9 -9
- package/src/_constants/mocks/app-server.mock.ts +185 -185
- package/src/_constants/mocks/auth-service.mock.ts +28 -28
- package/src/_constants/mocks/controller.mock.ts +16 -16
- package/src/_constants/mocks/data-model.mock.ts +83 -83
- package/src/_constants/mocks/email-service-collection.mock.ts +13 -13
- package/src/_constants/mocks/email-service.mock.ts +19 -19
- package/src/_constants/mocks/email-template.mock.html +14 -14
- package/src/_constants/mocks/endpoint.mock.ts +90 -90
- package/src/_constants/mocks/socket-client.mock.ts +43 -43
- package/src/_constants/mocks/socket-server.mock.ts +43 -43
- package/src/_enums/data-model-type.enum.ts +14 -14
- package/src/_enums/data-service-function.enum.ts +15 -15
- package/src/_enums/http/http-call-type.enum.ts +12 -12
- package/src/_enums/http/http-response-type.enum.ts +7 -7
- package/src/_enums/http/socket-event-type.enum.ts +18 -18
- package/src/_enums/index.ts +13 -13
- package/src/_enums/predefined-data-types.enum.ts +27 -27
- package/src/_enums/route-security.enum.ts +12 -12
- package/src/_enums/socket-security.enum.ts +11 -11
- package/src/_models/control-models/api-call-params.control-model.ts +126 -126
- package/src/_models/control-models/app-ext-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/app-params.control-model.ts +45 -45
- package/src/_models/control-models/app-system-controls.control-model.ts +9 -9
- package/src/_models/control-models/endpoint-params.control-model.ts +309 -307
- package/src/_models/control-models/http-settings.control-model.ts +29 -29
- package/src/_models/control-models/index.ts +13 -13
- package/src/_models/control-models/socket-client-service-params.control-model.ts +28 -28
- package/src/_models/control-models/socket-event.control-model.ts +150 -150
- package/src/_models/control-models/socket-presence.control-model.ts +207 -207
- package/src/_models/control-models/socket-server-service-params.control-model.ts +20 -20
- package/src/_models/control-models/system-control.control-model.ts +12 -12
- package/src/_models/index.ts +9 -9
- package/src/_models/interfaces/certification-settings.interface.ts +7 -7
- package/src/_models/interfaces/global-service-settings.interface.ts +45 -45
- package/src/_models/interfaces/global-settings.interface.ts +83 -83
- package/src/_models/interfaces/index.ts +7 -7
- package/src/_models/interfaces/routing-module-settings.interface.ts +20 -20
- package/src/_models/types/db-filter.type.ts +108 -108
- package/src/_models/types/db-update.type.ts +100 -100
- package/src/_models/types/index.ts +5 -5
- package/src/_modules/api-service.index.ts +12 -12
- package/src/_modules/app-extended.index.ts +28 -28
- package/src/_modules/app.index.ts +24 -24
- package/src/_modules/auth.index.ts +7 -7
- package/src/_modules/constants.index.ts +2 -2
- package/src/_modules/controller.index.ts +10 -10
- package/src/_modules/custom-data/custom-data.controller.ts +69 -69
- package/src/_modules/custom-data/custom-data.data-service.ts +20 -20
- package/src/_modules/custom-data/get-custom-data-routing-module.util.ts +23 -23
- package/src/_modules/custom-data/index.ts +6 -6
- package/src/_modules/custom-data-module.index.ts +2 -2
- package/src/_modules/data-service.index.ts +9 -9
- package/src/_modules/email.index.ts +8 -8
- package/src/_modules/enums.index.ts +2 -2
- package/src/_modules/extended.index.ts +8 -8
- package/src/_modules/models.index.ts +2 -2
- package/src/_modules/services.index.ts +2 -2
- package/src/_modules/test/get-test-routing-module.util.ts +23 -23
- package/src/_modules/test/index.ts +5 -5
- package/src/_modules/test/test.controller.ts +115 -115
- package/src/_modules/test-module.index.ts +2 -2
- package/src/_modules/usage/get-usage-routing-module.util.ts +22 -22
- package/src/_modules/usage/index.ts +7 -7
- package/src/_modules/usage/usage.controller.ts +120 -120
- package/src/_modules/usage/usage.data-service.ts +172 -172
- package/src/_modules/usage-module.index.ts +2 -2
- package/src/_services/base/data.service.ts +921 -921
- package/src/_services/base/db.service.spec.ts +32 -32
- package/src/_services/base/db.service.ts +1063 -1063
- package/src/_services/base/singleton.service.ts +21 -21
- package/src/_services/core/api.service.ts +453 -453
- package/src/_services/core/auth.service.ts +172 -172
- package/src/_services/core/email.service.ts +678 -678
- package/src/_services/core/global.service.ts +270 -269
- package/src/_services/core/service-collection.service.ts +5 -5
- package/src/_services/index.ts +23 -23
- package/src/_services/route/controller.service.ts +129 -129
- package/src/_services/route/routing-module.service.ts +293 -273
- package/src/_services/server/app-extended.server.spec.ts +76 -76
- package/src/_services/server/app-extended.server.ts +520 -520
- package/src/_services/server/app.server.spec.ts +67 -67
- package/src/_services/server/app.server.ts +1181 -1179
- package/src/_services/shared.service.spec.ts +19 -19
- package/src/_services/shared.static-service.ts +73 -73
- package/src/_services/socket/socket-client.service.ts +236 -235
- package/src/_services/socket/socket-server.service.spec.ts +11 -11
- package/src/_services/socket/socket-server.service.ts +761 -761
- package/src/index.ts +18 -18
- package/tsconfig.json +41 -41
- package/build/tsconfig.tsbuildinfo +0 -1
|
@@ -1,273 +1,293 @@
|
|
|
1
|
-
|
|
2
|
-
import { Router } from 'express';
|
|
3
|
-
|
|
4
|
-
import { DynamoFM_Error, DynamoFM_ErrorLevel, DynamoFM_Log } from '@futdevpro/fsm-dynamo';
|
|
5
|
-
|
|
6
|
-
import { DynamoNTS_globalSettings } from '../../_constants/global-settings.const';
|
|
7
|
-
import { DynamoNTS_RouteSecurity } from '../../_enums/route-security.enum';
|
|
8
|
-
import { DynamoNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
|
|
9
|
-
import { DynamoNTS_Controller } from './controller.service';
|
|
10
|
-
import {
|
|
11
|
-
DynamoNTS_RoutingModule_Settings
|
|
12
|
-
} from '../../_models/interfaces/routing-module-settings.interface';
|
|
13
|
-
import {
|
|
14
|
-
DynamoNTS_Endpoint_Params
|
|
15
|
-
} from '../../_models/control-models/endpoint-params.control-model';
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Routing Module
|
|
19
|
-
* Handling route setup and control
|
|
20
|
-
*
|
|
21
|
-
* You can add routes and controllers for them
|
|
22
|
-
* @example
|
|
23
|
-
* // Setting up Routes
|
|
24
|
-
* setupRoutingModules(): void {
|
|
25
|
-
* this.httpPort = env.port;
|
|
26
|
-
|
|
27
|
-
* this.routingModules = [
|
|
28
|
-
* new DynamoNTS_RoutingModule({
|
|
29
|
-
* route: '/user',
|
|
30
|
-
* controllers: [
|
|
31
|
-
* UserController.getInstance(),
|
|
32
|
-
* UserDataController.getInstance(),
|
|
33
|
-
* UserOptionsController.getInstance(),
|
|
34
|
-
* UserStatisticsController.getInstance(),
|
|
35
|
-
* UserAchievementsController.getInstance(),
|
|
36
|
-
* UserNotificationsController.getInstance()
|
|
37
|
-
* ]
|
|
38
|
-
* }),
|
|
39
|
-
* new DynamoNTS_RoutingModule({
|
|
40
|
-
* route: '/match',
|
|
41
|
-
* controllers: [
|
|
42
|
-
* MatchController.getInstance(),
|
|
43
|
-
* MatchDistributionController.getInstance(),
|
|
44
|
-
* MatchStatisticsController.getInstance(),
|
|
45
|
-
* ]
|
|
46
|
-
* }),
|
|
47
|
-
* new DynamoNTS_RoutingModule({
|
|
48
|
-
* route: '/server',
|
|
49
|
-
* controllers: [
|
|
50
|
-
* ServerController.getInstance(),
|
|
51
|
-
* ]
|
|
52
|
-
* }),
|
|
53
|
-
|
|
54
|
-
* getTestRoutingModule(),
|
|
55
|
-
* getUsageRoutingModule()
|
|
56
|
-
* ];
|
|
57
|
-
* }
|
|
58
|
-
*/
|
|
59
|
-
export class DynamoNTS_RoutingModule {
|
|
60
|
-
|
|
61
|
-
serviceName: string;
|
|
62
|
-
|
|
63
|
-
security: DynamoNTS_RouteSecurity;
|
|
64
|
-
route: string;
|
|
65
|
-
|
|
66
|
-
private controllers: DynamoNTS_Controller[];
|
|
67
|
-
endpoints: DynamoNTS_Endpoint_Params[] = [];
|
|
68
|
-
|
|
69
|
-
openRouter: Router = Router();
|
|
70
|
-
secureRouter: Router = Router();
|
|
71
|
-
|
|
72
|
-
protected log: boolean = DynamoNTS_globalSettings.logSetup;
|
|
73
|
-
|
|
74
|
-
defaultErrorUserMsg =
|
|
75
|
-
`We encountered an uncaught BackEnd Build Error, ` +
|
|
76
|
-
`\nplease contact the responsible development team.`;
|
|
77
|
-
|
|
78
|
-
constructor(
|
|
79
|
-
set: DynamoNTS_RoutingModule_Settings
|
|
80
|
-
){
|
|
81
|
-
try {
|
|
82
|
-
this.serviceName = set.route.replace('/', '') + 'RoutingModule';
|
|
83
|
-
this.route = DynamoNTS_globalSettings.baseUrl + set.route;
|
|
84
|
-
this.controllers = set.controllers ?? [];
|
|
85
|
-
this.setupRoutes();
|
|
86
|
-
this.mountRoutes(set.securityOverride);
|
|
87
|
-
|
|
88
|
-
if (this.log) console.log(
|
|
89
|
-
`routing module setup done: ${this.route} security: ${this.security}\n`
|
|
90
|
-
);
|
|
91
|
-
} catch (error) {
|
|
92
|
-
/* DynamoFM_Log.error(`\nRouting module setup failed (${this.route})`, error); */
|
|
93
|
-
throw new DynamoFM_Error({
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
additionalContent: set,
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* You must setup endpoints and required services for this function
|
|
107
|
-
*/
|
|
108
|
-
private setupRoutes(): void {
|
|
109
|
-
this.controllers.forEach((controller: DynamoNTS_Controller): void => {
|
|
110
|
-
try {
|
|
111
|
-
controller.setupEndpoints();
|
|
112
|
-
} catch (error) {
|
|
113
|
-
throw new DynamoFM_Error({
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
} else if (this.security
|
|
146
|
-
this.security =
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
)
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
errorStack.
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
case DynamoNTS_HttpCallType.
|
|
242
|
-
this.secureRouter.
|
|
243
|
-
break;
|
|
244
|
-
|
|
245
|
-
case DynamoNTS_HttpCallType.
|
|
246
|
-
this.secureRouter.
|
|
247
|
-
break;
|
|
248
|
-
|
|
249
|
-
case DynamoNTS_HttpCallType.
|
|
250
|
-
this.secureRouter.
|
|
251
|
-
break;
|
|
252
|
-
|
|
253
|
-
case DynamoNTS_HttpCallType.
|
|
254
|
-
this.secureRouter.
|
|
255
|
-
break;
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
1
|
+
|
|
2
|
+
import { Router } from 'express';
|
|
3
|
+
|
|
4
|
+
import { DynamoFM_AnyError, DynamoFM_Error, DynamoFM_ErrorLevel, DynamoFM_Error_Settings, DynamoFM_Log } from '@futdevpro/fsm-dynamo';
|
|
5
|
+
|
|
6
|
+
import { DynamoNTS_globalSettings } from '../../_constants/global-settings.const';
|
|
7
|
+
import { DynamoNTS_RouteSecurity } from '../../_enums/route-security.enum';
|
|
8
|
+
import { DynamoNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
|
|
9
|
+
import { DynamoNTS_Controller } from './controller.service';
|
|
10
|
+
import {
|
|
11
|
+
DynamoNTS_RoutingModule_Settings
|
|
12
|
+
} from '../../_models/interfaces/routing-module-settings.interface';
|
|
13
|
+
import {
|
|
14
|
+
DynamoNTS_Endpoint_Params
|
|
15
|
+
} from '../../_models/control-models/endpoint-params.control-model';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Routing Module
|
|
19
|
+
* Handling route setup and control
|
|
20
|
+
*
|
|
21
|
+
* You can add routes and controllers for them
|
|
22
|
+
* @example
|
|
23
|
+
* // Setting up Routes
|
|
24
|
+
* setupRoutingModules(): void {
|
|
25
|
+
* this.httpPort = env.port;
|
|
26
|
+
|
|
27
|
+
* this.routingModules = [
|
|
28
|
+
* new DynamoNTS_RoutingModule({
|
|
29
|
+
* route: '/user',
|
|
30
|
+
* controllers: [
|
|
31
|
+
* UserController.getInstance(),
|
|
32
|
+
* UserDataController.getInstance(),
|
|
33
|
+
* UserOptionsController.getInstance(),
|
|
34
|
+
* UserStatisticsController.getInstance(),
|
|
35
|
+
* UserAchievementsController.getInstance(),
|
|
36
|
+
* UserNotificationsController.getInstance()
|
|
37
|
+
* ]
|
|
38
|
+
* }),
|
|
39
|
+
* new DynamoNTS_RoutingModule({
|
|
40
|
+
* route: '/match',
|
|
41
|
+
* controllers: [
|
|
42
|
+
* MatchController.getInstance(),
|
|
43
|
+
* MatchDistributionController.getInstance(),
|
|
44
|
+
* MatchStatisticsController.getInstance(),
|
|
45
|
+
* ]
|
|
46
|
+
* }),
|
|
47
|
+
* new DynamoNTS_RoutingModule({
|
|
48
|
+
* route: '/server',
|
|
49
|
+
* controllers: [
|
|
50
|
+
* ServerController.getInstance(),
|
|
51
|
+
* ]
|
|
52
|
+
* }),
|
|
53
|
+
|
|
54
|
+
* getTestRoutingModule(),
|
|
55
|
+
* getUsageRoutingModule()
|
|
56
|
+
* ];
|
|
57
|
+
* }
|
|
58
|
+
*/
|
|
59
|
+
export class DynamoNTS_RoutingModule {
|
|
60
|
+
|
|
61
|
+
serviceName: string;
|
|
62
|
+
|
|
63
|
+
security: DynamoNTS_RouteSecurity;
|
|
64
|
+
route: string;
|
|
65
|
+
|
|
66
|
+
private controllers: DynamoNTS_Controller[];
|
|
67
|
+
endpoints: DynamoNTS_Endpoint_Params[] = [];
|
|
68
|
+
|
|
69
|
+
openRouter: Router = Router();
|
|
70
|
+
secureRouter: Router = Router();
|
|
71
|
+
|
|
72
|
+
protected log: boolean = DynamoNTS_globalSettings.logSetup;
|
|
73
|
+
|
|
74
|
+
defaultErrorUserMsg =
|
|
75
|
+
`We encountered an uncaught BackEnd Build Error, ` +
|
|
76
|
+
`\nplease contact the responsible development team.`;
|
|
77
|
+
|
|
78
|
+
constructor(
|
|
79
|
+
set: DynamoNTS_RoutingModule_Settings
|
|
80
|
+
){
|
|
81
|
+
try {
|
|
82
|
+
this.serviceName = set.route.replace('/', '') + 'RoutingModule';
|
|
83
|
+
this.route = DynamoNTS_globalSettings.baseUrl + set.route;
|
|
84
|
+
this.controllers = set.controllers ?? [];
|
|
85
|
+
this.setupRoutes();
|
|
86
|
+
this.mountRoutes(set.securityOverride);
|
|
87
|
+
|
|
88
|
+
if (this.log) console.log(
|
|
89
|
+
`routing module setup done: ${this.route} security: ${this.security}\n`
|
|
90
|
+
);
|
|
91
|
+
} catch (error) {
|
|
92
|
+
/* DynamoFM_Log.error(`\nRouting module setup failed (${this.route})`, error); */
|
|
93
|
+
throw new DynamoFM_Error({
|
|
94
|
+
...this.getDefaultErrorSettings(
|
|
95
|
+
'constructor',
|
|
96
|
+
new Error(`Routing module setup failed (${this.route}).`)
|
|
97
|
+
),
|
|
98
|
+
|
|
99
|
+
errorCode: 'NTS-RMS-000',
|
|
100
|
+
additionalContent: set,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* You must setup endpoints and required services for this function
|
|
107
|
+
*/
|
|
108
|
+
private setupRoutes(): void {
|
|
109
|
+
this.controllers.forEach((controller: DynamoNTS_Controller): void => {
|
|
110
|
+
try {
|
|
111
|
+
controller.setupEndpoints();
|
|
112
|
+
} catch (error) {
|
|
113
|
+
throw new DynamoFM_Error({
|
|
114
|
+
...this.getDefaultErrorSettings(
|
|
115
|
+
'setupRoutes',
|
|
116
|
+
new Error(`DynamoBEController setup failed. Please check the setupEndpoints() method.`)
|
|
117
|
+
),
|
|
118
|
+
|
|
119
|
+
errorCode: 'NTS-RMS-SR1',
|
|
120
|
+
level: DynamoFM_ErrorLevel.critical,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (controller?.endpoints?.length) {
|
|
125
|
+
this.endpoints.push(...controller.endpoints);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
*
|
|
132
|
+
* @param securityOverride
|
|
133
|
+
*/
|
|
134
|
+
private mountRoutes(securityOverride?: DynamoNTS_RouteSecurity): void {
|
|
135
|
+
if (securityOverride) {
|
|
136
|
+
this.security = securityOverride;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
this.endpoints.forEach((endpoint: DynamoNTS_Endpoint_Params): void => {
|
|
140
|
+
if (securityOverride) {
|
|
141
|
+
endpoint.security = securityOverride;
|
|
142
|
+
} else {
|
|
143
|
+
if (!endpoint.security) {
|
|
144
|
+
DynamoFM_Log.error(`Endpoint security not set: ${endpoint.endpoint}\n`);
|
|
145
|
+
} else if (!this.security) {
|
|
146
|
+
this.security = endpoint.security;
|
|
147
|
+
} else if (this.security !== endpoint.security) {
|
|
148
|
+
this.security = DynamoNTS_RouteSecurity.both;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (this.log) console.log(
|
|
153
|
+
`endpoint mount (${endpoint.security}): ${this.route}${endpoint.endpoint}`
|
|
154
|
+
);
|
|
155
|
+
const existingEndPoints: DynamoNTS_Endpoint_Params[] = this.endpoints.filter(
|
|
156
|
+
(e_params: DynamoNTS_Endpoint_Params): boolean => e_params.endpoint === endpoint.endpoint
|
|
157
|
+
);
|
|
158
|
+
|
|
159
|
+
if (1 < existingEndPoints.length) {
|
|
160
|
+
const error = new Error(`ENDPOINT DUPLICATION: ${endpoint.endpoint}`);
|
|
161
|
+
const errorStack: string[] = error.stack.split('\n');
|
|
162
|
+
|
|
163
|
+
errorStack.splice(1, 4);
|
|
164
|
+
error.stack = errorStack.join('\n');
|
|
165
|
+
|
|
166
|
+
throw error;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
try {
|
|
170
|
+
if (endpoint.security !== DynamoNTS_RouteSecurity.secure) {
|
|
171
|
+
this.mountOpenRoute(endpoint);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (endpoint.security !== DynamoNTS_RouteSecurity.open) {
|
|
175
|
+
this.mountSecureRoute(endpoint);
|
|
176
|
+
}
|
|
177
|
+
} catch (error) {
|
|
178
|
+
DynamoFM_Log.error(`\nRouting module setup failed (${this.route})`, error);
|
|
179
|
+
|
|
180
|
+
throw new DynamoFM_Error({
|
|
181
|
+
...this.getDefaultErrorSettings(
|
|
182
|
+
'mountRoutes',
|
|
183
|
+
new Error(`DYNAMO-NTS ERROR: Failed to mount routes.`)
|
|
184
|
+
),
|
|
185
|
+
|
|
186
|
+
errorCode: 'NTS-RMS-100',
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
*
|
|
194
|
+
* @param endpointParams
|
|
195
|
+
*/
|
|
196
|
+
private mountOpenRoute(endpointParams: DynamoNTS_Endpoint_Params): void {
|
|
197
|
+
switch (endpointParams.type) {
|
|
198
|
+
case DynamoNTS_HttpCallType.get:
|
|
199
|
+
this.openRouter.get(endpointParams.endpoint, endpointParams.getFullExecution());
|
|
200
|
+
break;
|
|
201
|
+
|
|
202
|
+
case DynamoNTS_HttpCallType.post:
|
|
203
|
+
this.openRouter.post(endpointParams.endpoint, endpointParams.getFullExecution());
|
|
204
|
+
break;
|
|
205
|
+
|
|
206
|
+
case DynamoNTS_HttpCallType.put:
|
|
207
|
+
this.openRouter.put(endpointParams.endpoint, endpointParams.getFullExecution());
|
|
208
|
+
break;
|
|
209
|
+
|
|
210
|
+
case DynamoNTS_HttpCallType.patch:
|
|
211
|
+
this.openRouter.patch(endpointParams.endpoint, endpointParams.getFullExecution());
|
|
212
|
+
break;
|
|
213
|
+
|
|
214
|
+
case DynamoNTS_HttpCallType.delete:
|
|
215
|
+
this.openRouter.delete(endpointParams.endpoint, endpointParams.getFullExecution());
|
|
216
|
+
break;
|
|
217
|
+
|
|
218
|
+
default:
|
|
219
|
+
DynamoFM_Log.error(`INVALID route type: ${endpointParams.type} - ${endpointParams.name}`);
|
|
220
|
+
|
|
221
|
+
throw new DynamoFM_Error({
|
|
222
|
+
...this.getDefaultErrorSettings(
|
|
223
|
+
'mountOpenRoute',
|
|
224
|
+
new Error(
|
|
225
|
+
`DYNAMO-NTS ERROR: INVALID route type: ` +
|
|
226
|
+
`${endpointParams.type} - ${endpointParams.name}`
|
|
227
|
+
),
|
|
228
|
+
),
|
|
229
|
+
|
|
230
|
+
errorCode: 'NTS-RMS-200',
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
*
|
|
237
|
+
* @param endpointParams
|
|
238
|
+
*/
|
|
239
|
+
private mountSecureRoute(endpointParams: DynamoNTS_Endpoint_Params): void {
|
|
240
|
+
switch (endpointParams.type) {
|
|
241
|
+
case DynamoNTS_HttpCallType.get:
|
|
242
|
+
this.secureRouter.get(endpointParams.endpoint, endpointParams.getFullExecution());
|
|
243
|
+
break;
|
|
244
|
+
|
|
245
|
+
case DynamoNTS_HttpCallType.post:
|
|
246
|
+
this.secureRouter.post(endpointParams.endpoint, endpointParams.getFullExecution());
|
|
247
|
+
break;
|
|
248
|
+
|
|
249
|
+
case DynamoNTS_HttpCallType.put:
|
|
250
|
+
this.secureRouter.put(endpointParams.endpoint, endpointParams.getFullExecution());
|
|
251
|
+
break;
|
|
252
|
+
|
|
253
|
+
case DynamoNTS_HttpCallType.patch:
|
|
254
|
+
this.secureRouter.patch(endpointParams.endpoint, endpointParams.getFullExecution());
|
|
255
|
+
break;
|
|
256
|
+
|
|
257
|
+
case DynamoNTS_HttpCallType.delete:
|
|
258
|
+
this.secureRouter.delete(endpointParams.endpoint, endpointParams.getFullExecution());
|
|
259
|
+
break;
|
|
260
|
+
|
|
261
|
+
default:
|
|
262
|
+
DynamoFM_Log.error(
|
|
263
|
+
`DYNAMO-NTS ERROR: INVALID route type: ${endpointParams.type} - ${endpointParams.name}`
|
|
264
|
+
);
|
|
265
|
+
|
|
266
|
+
throw new DynamoFM_Error({
|
|
267
|
+
...this.getDefaultErrorSettings(
|
|
268
|
+
'mountSecureRoute',
|
|
269
|
+
new Error(
|
|
270
|
+
`DYNAMO-NTS ERROR: INVALID route type: ` +
|
|
271
|
+
`${endpointParams.type} - ${endpointParams.name}`
|
|
272
|
+
),
|
|
273
|
+
),
|
|
274
|
+
|
|
275
|
+
errorCode: 'NTS-RMS-300',
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
private getDefaultErrorSettings(
|
|
281
|
+
fnName: string,
|
|
282
|
+
error: DynamoFM_AnyError
|
|
283
|
+
): DynamoFM_Error_Settings {
|
|
284
|
+
return {
|
|
285
|
+
status: 500,
|
|
286
|
+
message: (error as Error)?.message ?? `${fnName} was UNSUCCESSFUL (NTS)`,
|
|
287
|
+
issuerService: this.constructor?.name,
|
|
288
|
+
userMessage: (error as DynamoFM_Error)?.__userMessage ?? this.defaultErrorUserMsg,
|
|
289
|
+
addECToUserMsg: true,
|
|
290
|
+
error: error,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
}
|