@futdevpro/nts-dynamo 1.9.40 → 1.9.42
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/build/_collections/archive.util.d.ts +1 -1
- package/build/_collections/archive.util.d.ts.map +1 -1
- package/build/_collections/archive.util.js +1 -1
- package/build/_collections/archive.util.js.map +1 -1
- package/build/_collections/global-settings.const.d.ts.map +1 -1
- package/build/_collections/global-settings.const.js +1 -0
- package/build/_collections/global-settings.const.js.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.d.ts +13 -8
- package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.js +52 -19
- package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
- package/build/_models/interfaces/global-settings.interface.d.ts +4 -0
- package/build/_models/interfaces/global-settings.interface.d.ts.map +1 -1
- package/build/_models/types/db-filter.type.d.ts +1 -1
- package/build/_models/types/db-filter.type.d.ts.map +1 -1
- package/build/_modules/socket/_models/socket-presence.control-model.d.ts.map +1 -1
- package/build/_modules/socket/_models/socket-presence.control-model.js +13 -5
- package/build/_modules/socket/_models/socket-presence.control-model.js.map +1 -1
- package/build/_modules/socket/_services/app-extended.server.d.ts +3 -3
- package/build/_modules/socket/_services/app-extended.server.d.ts.map +1 -1
- package/build/_modules/socket/_services/app-extended.server.js +33 -21
- package/build/_modules/socket/_services/app-extended.server.js.map +1 -1
- package/build/_modules/socket/_services/socket-server.service.d.ts +2 -2
- package/build/_modules/socket/_services/socket-server.service.d.ts.map +1 -1
- package/build/_modules/socket/_services/socket-server.service.js +20 -26
- package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
- package/build/_services/base/archive-data.service.d.ts.map +1 -1
- package/build/_services/base/archive-data.service.js +3 -0
- package/build/_services/base/archive-data.service.js.map +1 -1
- package/build/_services/base/data.service.d.ts +9 -3
- package/build/_services/base/data.service.d.ts.map +1 -1
- package/build/_services/base/data.service.js +102 -7
- package/build/_services/base/data.service.js.map +1 -1
- package/build/_services/base/db.service.d.ts +6 -1
- package/build/_services/base/db.service.d.ts.map +1 -1
- package/build/_services/base/db.service.js +133 -114
- package/build/_services/base/db.service.js.map +1 -1
- package/build/_services/base/singleton.service-base.d.ts +1 -1
- package/build/_services/base/singleton.service-base.d.ts.map +1 -1
- package/build/_services/base/singleton.service-base.js +1 -0
- package/build/_services/base/singleton.service-base.js.map +1 -1
- package/build/_services/base/singleton.service.d.ts.map +1 -1
- package/build/_services/base/singleton.service.js +0 -1
- package/build/_services/base/singleton.service.js.map +1 -1
- package/build/_services/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +36 -23
- package/build/_services/core/global.service.js.map +1 -1
- package/build/_services/route/routing-module.service.d.ts +1 -1
- package/build/_services/route/routing-module.service.d.ts.map +1 -1
- package/build/_services/route/routing-module.service.js +19 -2
- package/build/_services/route/routing-module.service.js.map +1 -1
- package/build/_services/server/app.server.d.ts +2 -2
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +12 -6
- package/build/_services/server/app.server.js.map +1 -1
- package/package.json +3 -3
- package/src/_collections/archive.util.ts +1 -1
- package/src/_collections/global-settings.const.ts +1 -0
- package/src/_models/control-models/endpoint-params.control-model.ts +79 -31
- package/src/_models/interfaces/global-settings.interface.ts +5 -0
- package/src/_models/types/db-filter.type.ts +1 -1
- package/src/_modules/socket/_models/socket-presence.control-model.ts +19 -7
- package/src/_modules/socket/_services/app-extended.server.ts +10 -8
- package/src/_modules/socket/_services/socket-server.service.ts +30 -42
- package/src/_services/base/archive-data.service.ts +4 -0
- package/src/_services/base/data.service.ts +148 -14
- package/src/_services/base/db.service.ts +165 -140
- package/src/_services/base/singleton.service-base.ts +2 -1
- package/src/_services/base/singleton.service.ts +2 -3
- package/src/_services/core/global.service.ts +53 -34
- package/src/_services/route/routing-module.service.ts +23 -4
- package/src/_services/server/app.server.ts +18 -9
|
@@ -52,6 +52,7 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
52
52
|
|
|
53
53
|
authService: DyNTS_AuthService;
|
|
54
54
|
dbServiceCollection: DyNTS_Service_Collection<DyNTS_DBService<any>>;
|
|
55
|
+
/* dataServiceCollection: DyNTS_Service_Collection<any>; */
|
|
55
56
|
emailServiceCollection: DyNTS_Service_Collection<DyNTS_EmailService>;
|
|
56
57
|
|
|
57
58
|
static readonly defaultErrorUserMsg: string =
|
|
@@ -88,6 +89,22 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
88
89
|
this.instance.dbServiceCollection = {};
|
|
89
90
|
|
|
90
91
|
dbModels?.forEach((dbModel: DyFM_DataModel_Params): void => {
|
|
92
|
+
if (!dbModel) {
|
|
93
|
+
throw new DyFM_Error({
|
|
94
|
+
...this.getDefaultErrorSettings(
|
|
95
|
+
'setDBServices',
|
|
96
|
+
new Error(`given dbModel is empty!`),
|
|
97
|
+
'DyNTS_GlobalService'
|
|
98
|
+
),
|
|
99
|
+
|
|
100
|
+
errorCode: 'NTS-GS0-SDBS2',
|
|
101
|
+
additionalContent: {
|
|
102
|
+
dbModels: dbModels,
|
|
103
|
+
dbModelNames: dbModels.map((dbModel: DyFM_DataModel_Params) => dbModel.dataName),
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
|
|
91
108
|
if (dbModel.addArchive) {
|
|
92
109
|
const archiveModel: DyFM_DataModel_Params = new DyFM_DataModel_Params({
|
|
93
110
|
...dbModel,
|
|
@@ -178,35 +195,39 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
178
195
|
|
|
179
196
|
private static async setErrorHandler(errorHandler?: DyNTS_GlobalErrorHandlerFn): Promise<void> {
|
|
180
197
|
try {
|
|
181
|
-
DyNTS_GlobalService.globalErrorHandler =
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
198
|
+
DyNTS_GlobalService.globalErrorHandler = (async (error: any): Promise<void> => {
|
|
199
|
+
try {
|
|
200
|
+
if (errorHandler) {
|
|
201
|
+
await errorHandler(error);
|
|
202
|
+
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
DyFM_Log.warn(
|
|
207
|
+
`globalErrorHandler not set! (set in app.getGlobalServiceCollection)`,
|
|
208
|
+
'\nwill use default-logging',
|
|
209
|
+
);
|
|
210
|
+
|
|
211
|
+
if (
|
|
212
|
+
DyNTS_global_settings.log_settings.highDetailedLogs ||
|
|
213
|
+
!(error instanceof DyFM_Error)
|
|
214
|
+
) {
|
|
215
|
+
DyFM_Log.H_error(
|
|
216
|
+
`Error caught by globalErrorHandler.`,
|
|
217
|
+
`\n ERROR:`, error?.replaceAll?.('at', ' at') ?? error
|
|
188
218
|
);
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
!(error instanceof DyFM_Error)
|
|
193
|
-
) {
|
|
194
|
-
DyFM_Log.H_error(
|
|
195
|
-
`Error caught by globalErrorHandler.`,
|
|
196
|
-
`\n ERROR:`, error?.replaceAll?.('at', ' at') ?? error
|
|
197
|
-
);
|
|
198
|
-
} else /* if (!error.___logged) */ {
|
|
199
|
-
error.logSimple(
|
|
200
|
-
`Error caught by globalErrorHandler.`
|
|
201
|
-
);
|
|
202
|
-
}
|
|
203
|
-
} catch (error) {
|
|
204
|
-
DyFM_Log.error(
|
|
205
|
-
`NTS GLOBAL MULTILEVEL ERROR: \nFailed to handle error on globalErrorHandler.`,
|
|
206
|
-
error
|
|
219
|
+
} else /* if (!error.___logged) */ {
|
|
220
|
+
error.logSimple(
|
|
221
|
+
`Error caught by globalErrorHandler.`
|
|
207
222
|
);
|
|
208
223
|
}
|
|
209
|
-
})
|
|
224
|
+
} catch (error) {
|
|
225
|
+
DyFM_Log.error(
|
|
226
|
+
`NTS GLOBAL MULTILEVEL ERROR: \nFailed to handle error on globalErrorHandler.`,
|
|
227
|
+
error
|
|
228
|
+
);
|
|
229
|
+
}
|
|
230
|
+
});
|
|
210
231
|
} catch (error) {
|
|
211
232
|
throw new DyFM_Error({
|
|
212
233
|
...this.getDefaultErrorSettings('setErrorHandler', error, 'DyNTS_GlobalService'),
|
|
@@ -275,15 +296,11 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
275
296
|
if (collection[key]) {
|
|
276
297
|
return collection[key] as DyNTS_DBService<T>;
|
|
277
298
|
} else {
|
|
278
|
-
let keys: string = `${Object.keys(collection)}`;
|
|
279
|
-
|
|
280
|
-
keys = keys.replace(/,/g, '\n ');
|
|
281
|
-
|
|
282
299
|
throw new Error(
|
|
283
300
|
`\n DyNTS_GlobalService.getDBService failed, ERROR: ` +
|
|
284
|
-
`\n no dbService on collection with this key: ${key}!` +
|
|
301
|
+
`\n no dbService on collection with this key: "${key}"!` +
|
|
285
302
|
`\n The available dbServices on collection:` +
|
|
286
|
-
`\n ${keys}\n`
|
|
303
|
+
`\n ${Object.keys(collection).join(', ')}\n`
|
|
287
304
|
);
|
|
288
305
|
}
|
|
289
306
|
}
|
|
@@ -293,12 +310,14 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
293
310
|
* @returns
|
|
294
311
|
*/
|
|
295
312
|
static getEmailServiceCollection(): DyNTS_Service_Collection<DyNTS_EmailService> {
|
|
296
|
-
if (!this.instance
|
|
313
|
+
if (!this.instance.emailServiceCollection) {
|
|
297
314
|
throw new Error(
|
|
298
315
|
`\n Unique Email Service Collection missing!` +
|
|
299
316
|
`\n Please create a Unique Email Service Collection extending ` +
|
|
300
317
|
`DynamoBEEmailServiceCollection, ` +
|
|
301
|
-
`\n and Setup with DyNTS_GlobalServiceC.setServices(...)\n`
|
|
318
|
+
`\n and Setup with DyNTS_GlobalServiceC.setServices(...)\n` +
|
|
319
|
+
`\n available emailServiceCollection: ` +
|
|
320
|
+
`${Object().keys(this.instance.emailServiceCollection).join(', ')}\n`
|
|
302
321
|
);
|
|
303
322
|
}
|
|
304
323
|
|
|
@@ -65,7 +65,7 @@ export class DyNTS_RoutingModule {
|
|
|
65
65
|
security: DyNTS_RouteSecurity;
|
|
66
66
|
route: string;
|
|
67
67
|
|
|
68
|
-
private controllers: DyNTS_Controller[];
|
|
68
|
+
private readonly controllers: DyNTS_Controller[];
|
|
69
69
|
endpoints: DyNTS_Endpoint_Params[] = [];
|
|
70
70
|
|
|
71
71
|
openRouter: Router = Router();
|
|
@@ -93,13 +93,29 @@ export class DyNTS_RoutingModule {
|
|
|
93
93
|
`routing module setup done: ${this.route} security: ${this.security}\n`
|
|
94
94
|
);
|
|
95
95
|
} catch (error) {
|
|
96
|
+
/* if (
|
|
97
|
+
DyNTS_global_settings.log_settings.highDetailedLogs ||
|
|
98
|
+
!(error instanceof DyFM_Error)
|
|
99
|
+
) {
|
|
100
|
+
DyFM_Log.H_error(
|
|
101
|
+
`Routing module setup failed (${this.route}).`,
|
|
102
|
+
`\n ERROR:`, error
|
|
103
|
+
);
|
|
104
|
+
} else {
|
|
105
|
+
error.logSimple(
|
|
106
|
+
`Routing module setup failed (${this.route}).` +
|
|
107
|
+
'\nmessages:\n' + error._messages.join(' \n')
|
|
108
|
+
);
|
|
109
|
+
} */
|
|
110
|
+
|
|
96
111
|
/* DyFM_Log.error(`\nRouting module setup failed (${this.route})`, error); */
|
|
97
112
|
throw new DyFM_Error({
|
|
98
113
|
...this.getDefaultErrorSettings(
|
|
99
|
-
'constructor',
|
|
100
|
-
|
|
114
|
+
'DyNTS_RoutingModule.constructor',
|
|
115
|
+
error
|
|
101
116
|
),
|
|
102
117
|
|
|
118
|
+
message: `Routing module setup failed (${this.route}).`,
|
|
103
119
|
errorCode: 'NTS-RMS-000',
|
|
104
120
|
additionalContent: set,
|
|
105
121
|
});
|
|
@@ -117,9 +133,12 @@ export class DyNTS_RoutingModule {
|
|
|
117
133
|
throw new DyFM_Error({
|
|
118
134
|
...this.getDefaultErrorSettings(
|
|
119
135
|
'setupRoutes',
|
|
120
|
-
|
|
136
|
+
error
|
|
121
137
|
),
|
|
122
138
|
|
|
139
|
+
message:
|
|
140
|
+
`DyNTS_Controller setup failed. (${controller?.constructor?.name}) ` +
|
|
141
|
+
`Please check the setupEndpoints() method.`,
|
|
123
142
|
errorCode: 'NTS-RMS-SR1',
|
|
124
143
|
level: DyFM_ErrorLevel.critical,
|
|
125
144
|
});
|
|
@@ -268,14 +268,14 @@ export abstract class DyNTS_App extends DyNTS_SingletonService {
|
|
|
268
268
|
}
|
|
269
269
|
debugLog: boolean = DyNTS_global_settings.log_settings.server_debug;
|
|
270
270
|
|
|
271
|
-
constructor(extended?: boolean){
|
|
271
|
+
constructor(/* extended?: boolean */){
|
|
272
272
|
super();
|
|
273
273
|
|
|
274
274
|
process.on(
|
|
275
275
|
'unhandledRejection',
|
|
276
276
|
(reason_theError: object, p_passWhatIsThis_maybeThePromise: any): void => {
|
|
277
277
|
DyFM_Log.H_error(
|
|
278
|
-
'Unhandled Rejection:
|
|
278
|
+
'Unhandled Rejection:', (p_passWhatIsThis_maybeThePromise as Promise<any>)?.toString(),
|
|
279
279
|
'\n Rejection reason:', (reason_theError as Error)?.stack?.split('at')?.[0],
|
|
280
280
|
/* '\n ErrorCode:', (reason as any)?.code, */
|
|
281
281
|
'\n\n Stack:',
|
|
@@ -286,7 +286,10 @@ export abstract class DyNTS_App extends DyNTS_SingletonService {
|
|
|
286
286
|
DyNTS_GlobalService.globalErrorHandler?.(
|
|
287
287
|
new DyFM_Error({
|
|
288
288
|
errorCode: 'NTS-AS0-BASE-UR',
|
|
289
|
-
message:
|
|
289
|
+
message:
|
|
290
|
+
`Unhandled Rejection!: "${(reason_theError as Error)?.stack?.split('at')?.[0]}"`,
|
|
291
|
+
userMessage: this.defaultErrorUserMsg,
|
|
292
|
+
addECToUserMsg: true,
|
|
290
293
|
error: reason_theError as Error,
|
|
291
294
|
additionalContent: {
|
|
292
295
|
reason: reason_theError,
|
|
@@ -295,14 +298,20 @@ export abstract class DyNTS_App extends DyNTS_SingletonService {
|
|
|
295
298
|
level: DyFM_ErrorLevel.critical,
|
|
296
299
|
})
|
|
297
300
|
);
|
|
298
|
-
|
|
299
301
|
} catch (error) {
|
|
300
302
|
DyFM_Log.error('globalErrorHandler (MULTILEVEL) ERROR:', error);
|
|
301
303
|
}
|
|
302
304
|
}
|
|
303
305
|
);
|
|
304
306
|
|
|
305
|
-
this.asyncConstruct(extended).catch((error: any): void => {
|
|
307
|
+
this.asyncConstruct(/* extended */).catch((error: any): void => {
|
|
308
|
+
if (error instanceof DyFM_Error) {
|
|
309
|
+
DyFM_Log.H_warn(
|
|
310
|
+
'(constructor asyncConstruct.catch) additional error content:\n',
|
|
311
|
+
error?.additionalContent
|
|
312
|
+
);
|
|
313
|
+
}
|
|
314
|
+
|
|
306
315
|
if (
|
|
307
316
|
DyNTS_global_settings.log_settings.highDetailedLogs ||
|
|
308
317
|
!(error instanceof DyFM_Error)
|
|
@@ -313,15 +322,15 @@ export abstract class DyNTS_App extends DyNTS_SingletonService {
|
|
|
313
322
|
);
|
|
314
323
|
} else {
|
|
315
324
|
error.logSimple(
|
|
316
|
-
`Application: "${this.params?.name}" start failed. (constructor asyncConstruct.catch)`
|
|
325
|
+
`Application: "${this.params?.name}" start failed. (constructor asyncConstruct.catch)` +
|
|
326
|
+
'\n all error messages (from this stack):\n\n"' +
|
|
327
|
+
error._messages.join('"\n\n"') + '"\n\n'
|
|
317
328
|
);
|
|
318
329
|
}
|
|
319
|
-
|
|
320
|
-
DyFM_Log.H_warn('asyncConstruct error\n', error?.additionalContent);
|
|
321
330
|
});
|
|
322
331
|
}
|
|
323
332
|
|
|
324
|
-
|
|
333
|
+
protected async asyncConstruct(extended?: boolean): Promise<void> {
|
|
325
334
|
if (this.fnLogs && this.deepLog) DyFM_Log.log('\nfn:. asyncConstruct');
|
|
326
335
|
|
|
327
336
|
try {
|