@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.
Files changed (72) hide show
  1. package/build/_collections/archive.util.d.ts +1 -1
  2. package/build/_collections/archive.util.d.ts.map +1 -1
  3. package/build/_collections/archive.util.js +1 -1
  4. package/build/_collections/archive.util.js.map +1 -1
  5. package/build/_collections/global-settings.const.d.ts.map +1 -1
  6. package/build/_collections/global-settings.const.js +1 -0
  7. package/build/_collections/global-settings.const.js.map +1 -1
  8. package/build/_models/control-models/endpoint-params.control-model.d.ts +13 -8
  9. package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
  10. package/build/_models/control-models/endpoint-params.control-model.js +52 -19
  11. package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
  12. package/build/_models/interfaces/global-settings.interface.d.ts +4 -0
  13. package/build/_models/interfaces/global-settings.interface.d.ts.map +1 -1
  14. package/build/_models/types/db-filter.type.d.ts +1 -1
  15. package/build/_models/types/db-filter.type.d.ts.map +1 -1
  16. package/build/_modules/socket/_models/socket-presence.control-model.d.ts.map +1 -1
  17. package/build/_modules/socket/_models/socket-presence.control-model.js +13 -5
  18. package/build/_modules/socket/_models/socket-presence.control-model.js.map +1 -1
  19. package/build/_modules/socket/_services/app-extended.server.d.ts +3 -3
  20. package/build/_modules/socket/_services/app-extended.server.d.ts.map +1 -1
  21. package/build/_modules/socket/_services/app-extended.server.js +33 -21
  22. package/build/_modules/socket/_services/app-extended.server.js.map +1 -1
  23. package/build/_modules/socket/_services/socket-server.service.d.ts +2 -2
  24. package/build/_modules/socket/_services/socket-server.service.d.ts.map +1 -1
  25. package/build/_modules/socket/_services/socket-server.service.js +20 -26
  26. package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
  27. package/build/_services/base/archive-data.service.d.ts.map +1 -1
  28. package/build/_services/base/archive-data.service.js +3 -0
  29. package/build/_services/base/archive-data.service.js.map +1 -1
  30. package/build/_services/base/data.service.d.ts +9 -3
  31. package/build/_services/base/data.service.d.ts.map +1 -1
  32. package/build/_services/base/data.service.js +102 -7
  33. package/build/_services/base/data.service.js.map +1 -1
  34. package/build/_services/base/db.service.d.ts +6 -1
  35. package/build/_services/base/db.service.d.ts.map +1 -1
  36. package/build/_services/base/db.service.js +133 -114
  37. package/build/_services/base/db.service.js.map +1 -1
  38. package/build/_services/base/singleton.service-base.d.ts +1 -1
  39. package/build/_services/base/singleton.service-base.d.ts.map +1 -1
  40. package/build/_services/base/singleton.service-base.js +1 -0
  41. package/build/_services/base/singleton.service-base.js.map +1 -1
  42. package/build/_services/base/singleton.service.d.ts.map +1 -1
  43. package/build/_services/base/singleton.service.js +0 -1
  44. package/build/_services/base/singleton.service.js.map +1 -1
  45. package/build/_services/core/global.service.d.ts.map +1 -1
  46. package/build/_services/core/global.service.js +36 -23
  47. package/build/_services/core/global.service.js.map +1 -1
  48. package/build/_services/route/routing-module.service.d.ts +1 -1
  49. package/build/_services/route/routing-module.service.d.ts.map +1 -1
  50. package/build/_services/route/routing-module.service.js +19 -2
  51. package/build/_services/route/routing-module.service.js.map +1 -1
  52. package/build/_services/server/app.server.d.ts +2 -2
  53. package/build/_services/server/app.server.d.ts.map +1 -1
  54. package/build/_services/server/app.server.js +12 -6
  55. package/build/_services/server/app.server.js.map +1 -1
  56. package/package.json +3 -3
  57. package/src/_collections/archive.util.ts +1 -1
  58. package/src/_collections/global-settings.const.ts +1 -0
  59. package/src/_models/control-models/endpoint-params.control-model.ts +79 -31
  60. package/src/_models/interfaces/global-settings.interface.ts +5 -0
  61. package/src/_models/types/db-filter.type.ts +1 -1
  62. package/src/_modules/socket/_models/socket-presence.control-model.ts +19 -7
  63. package/src/_modules/socket/_services/app-extended.server.ts +10 -8
  64. package/src/_modules/socket/_services/socket-server.service.ts +30 -42
  65. package/src/_services/base/archive-data.service.ts +4 -0
  66. package/src/_services/base/data.service.ts +148 -14
  67. package/src/_services/base/db.service.ts +165 -140
  68. package/src/_services/base/singleton.service-base.ts +2 -1
  69. package/src/_services/base/singleton.service.ts +2 -3
  70. package/src/_services/core/global.service.ts +53 -34
  71. package/src/_services/route/routing-module.service.ts +23 -4
  72. 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
- errorHandler ??
183
- (async (error: any): Promise<void> => {
184
- try {
185
- DyFM_Log.warn(
186
- `globalErrorHandler not set! (set in app.getGlobalServiceCollection)`,
187
- '\nwill use default-logging',
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
- if (
191
- DyNTS_global_settings.log_settings.highDetailedLogs ||
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?.emailServiceCollection) {
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
- new Error(`Routing module setup failed (${this.route}).`)
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
- new Error(`DynamoBEController setup failed. Please check the setupEndpoints() method.`)
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: ', (p_passWhatIsThis_maybeThePromise as Promise<any>)?.toString(),
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: 'Unhandled Rejection!',
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
- private async asyncConstruct(extended?: boolean): Promise<void> {
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 {