@futdevpro/nts-dynamo 1.9.33 → 1.9.34
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/_models/control-models/system-control.control-model.d.ts +1 -1
- package/build/_models/control-models/system-control.control-model.d.ts.map +1 -1
- package/build/_models/control-models/system-control.control-model.js +1 -1
- package/build/_models/control-models/system-control.control-model.js.map +1 -1
- package/build/_modules/socket/_services/app-extended.server.d.ts.map +1 -1
- package/build/_modules/socket/_services/app-extended.server.js +32 -30
- package/build/_modules/socket/_services/app-extended.server.js.map +1 -1
- package/build/_modules/socket/_services/app-extended.server.spec.js +51 -14
- package/build/_modules/socket/_services/app-extended.server.spec.js.map +1 -1
- package/build/_services/core/email.service.d.ts.map +1 -1
- package/build/_services/core/email.service.js +6 -9
- package/build/_services/core/email.service.js.map +1 -1
- package/build/_services/core/global.service.d.ts +14 -4
- package/build/_services/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +72 -15
- package/build/_services/core/global.service.js.map +1 -1
- package/build/_services/server/app.server.d.ts +2 -0
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +63 -59
- package/build/_services/server/app.server.js.map +1 -1
- package/build/_services/server/app.server.spec.js +21 -6
- package/build/_services/server/app.server.spec.js.map +1 -1
- package/package.json +1 -1
- package/src/_models/control-models/system-control.control-model.ts +1 -1
- package/src/_modules/socket/_services/app-extended.server.spec.ts +59 -20
- package/src/_modules/socket/_services/app-extended.server.ts +48 -42
- package/src/_services/core/email.service.ts +12 -14
- package/src/_services/core/global.service.ts +43 -22
- package/src/_services/server/app.server.spec.ts +26 -7
- package/src/_services/server/app.server.ts +103 -144
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DyFM_delay } from '@futdevpro/fsm-dynamo';
|
|
1
|
+
import { DyFM_delay, DyFM_Error, DyFM_Log } from '@futdevpro/fsm-dynamo';
|
|
2
2
|
import {
|
|
3
3
|
DyNTS_AppExtendedBase_Mock, DyNTS_AppExtendedFull_Mock, DyNTS_AppWbMock_Mock
|
|
4
4
|
} from '../../mock/app-extended-server.mock';
|
|
@@ -8,17 +8,29 @@ describe('DyNTS_AppExtended;', (): void => {
|
|
|
8
8
|
let app: DyNTS_AppExtendedBase_Mock;
|
|
9
9
|
|
|
10
10
|
beforeEach(async (): Promise<void> => {
|
|
11
|
-
|
|
11
|
+
try {
|
|
12
|
+
app = new DyNTS_AppExtendedBase_Mock();
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
await DyFM_delay(100);
|
|
15
|
+
|
|
16
|
+
await app.ready();
|
|
17
|
+
|
|
18
|
+
await DyFM_delay(100);
|
|
19
|
+
} catch (error) {
|
|
20
|
+
DyFM_Log.test('test beforeEach error:', (error as DyFM_Error)?._message);
|
|
21
|
+
}
|
|
16
22
|
});
|
|
17
23
|
|
|
18
24
|
afterEach(async (): Promise<void> => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
try {
|
|
26
|
+
await DyFM_delay(100);
|
|
27
|
+
|
|
28
|
+
await app.stop();
|
|
29
|
+
|
|
30
|
+
app = null;
|
|
31
|
+
} catch (error) {
|
|
32
|
+
DyFM_Log.test('test afterEach error:', (error as DyFM_Error)?._message);
|
|
33
|
+
}
|
|
22
34
|
});
|
|
23
35
|
|
|
24
36
|
it('should be created', (): void => {
|
|
@@ -34,17 +46,29 @@ describe('DyNTS_AppExtended;', (): void => {
|
|
|
34
46
|
let app: DyNTS_AppExtendedFull_Mock;
|
|
35
47
|
|
|
36
48
|
beforeEach(async (): Promise<void> => {
|
|
37
|
-
|
|
49
|
+
try {
|
|
50
|
+
app = new DyNTS_AppExtendedFull_Mock();
|
|
38
51
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
52
|
+
await DyFM_delay(100);
|
|
53
|
+
|
|
54
|
+
await app.ready();
|
|
55
|
+
|
|
56
|
+
await DyFM_delay(100);
|
|
57
|
+
} catch (error) {
|
|
58
|
+
DyFM_Log.test('test beforeEach error:', (error as DyFM_Error)?._message);
|
|
59
|
+
}
|
|
42
60
|
});
|
|
43
61
|
|
|
44
62
|
afterEach(async (): Promise<void> => {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
63
|
+
try {
|
|
64
|
+
await DyFM_delay(100);
|
|
65
|
+
|
|
66
|
+
await app.stop();
|
|
67
|
+
|
|
68
|
+
app = null;
|
|
69
|
+
} catch (error) {
|
|
70
|
+
DyFM_Log.test('test afterEach error:', (error as DyFM_Error)?._message);
|
|
71
|
+
}
|
|
48
72
|
});
|
|
49
73
|
|
|
50
74
|
it('should be created', (): void => {
|
|
@@ -60,14 +84,29 @@ describe('DyNTS_AppExtended;', (): void => {
|
|
|
60
84
|
let app: DyNTS_AppWbMock_Mock;
|
|
61
85
|
|
|
62
86
|
beforeEach(async (): Promise<void> => {
|
|
63
|
-
|
|
64
|
-
|
|
87
|
+
try {
|
|
88
|
+
app = new DyNTS_AppWbMock_Mock();
|
|
89
|
+
|
|
90
|
+
await DyFM_delay(100);
|
|
91
|
+
|
|
92
|
+
await app.ready();
|
|
93
|
+
|
|
94
|
+
await DyFM_delay(100);
|
|
95
|
+
} catch (error) {
|
|
96
|
+
DyFM_Log.test('test beforeEach error:', (error as DyFM_Error)?._message);
|
|
97
|
+
}
|
|
65
98
|
});
|
|
66
99
|
|
|
67
100
|
afterEach(async (): Promise<void> => {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
101
|
+
try {
|
|
102
|
+
await DyFM_delay(100);
|
|
103
|
+
|
|
104
|
+
await app.stop();
|
|
105
|
+
|
|
106
|
+
app = null;
|
|
107
|
+
} catch (error) {
|
|
108
|
+
DyFM_Log.test('test afterEach error:', (error as DyFM_Error)?._message);
|
|
109
|
+
}
|
|
71
110
|
});
|
|
72
111
|
|
|
73
112
|
it('should be created', (): void => {
|
|
@@ -191,7 +191,7 @@ export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
|
191
191
|
console.log(this.params.title);
|
|
192
192
|
console.log(`Version: ${this.params.version}`);
|
|
193
193
|
}
|
|
194
|
-
DyFM_Log.H_success(
|
|
194
|
+
DyFM_Log.H_success(`"${this.params.name}" started successfully.`);
|
|
195
195
|
|
|
196
196
|
} catch (error) {
|
|
197
197
|
if (
|
|
@@ -216,20 +216,20 @@ export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
|
216
216
|
systemControls: this.systemControls,
|
|
217
217
|
systemControlsExt: this.systemControlsExt,
|
|
218
218
|
systemReadies: {
|
|
219
|
-
app: this.systemControls.app.
|
|
220
|
-
appExtended: this.systemControlsExt.appExtended.
|
|
221
|
-
mongoose: this.systemControls.mongoose.
|
|
222
|
-
httpServer: this.systemControls.httpServer.
|
|
223
|
-
httpsServer: this.systemControls.httpsServer.
|
|
224
|
-
httpSocketServer: this.systemControlsExt.httpSocketServer.
|
|
225
|
-
httpsSocketServer: this.systemControlsExt.httpsSocketServer.
|
|
219
|
+
app: this.systemControls.app.getIsReady(),
|
|
220
|
+
appExtended: this.systemControlsExt.appExtended.getIsReady(),
|
|
221
|
+
mongoose: this.systemControls.mongoose.getIsReady(),
|
|
222
|
+
httpServer: this.systemControls.httpServer.getIsReady(),
|
|
223
|
+
httpsServer: this.systemControls.httpsServer.getIsReady(),
|
|
224
|
+
httpSocketServer: this.systemControlsExt.httpSocketServer.getIsReady(),
|
|
225
|
+
httpsSocketServer: this.systemControlsExt.httpsSocketServer.getIsReady(),
|
|
226
226
|
},
|
|
227
227
|
},
|
|
228
228
|
});
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
override async ready(timeout: number =
|
|
232
|
+
override async ready(timeout: number = this.defaultReadyTimeout): Promise<void> {
|
|
233
233
|
if (this.fnLogs) console.log('\nfn:. ready-extended');
|
|
234
234
|
|
|
235
235
|
try {
|
|
@@ -239,17 +239,21 @@ export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
|
239
239
|
const start: number = +new Date();
|
|
240
240
|
|
|
241
241
|
if (this.constructErrors.length) {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
242
|
+
if (this.deepLog) {
|
|
243
|
+
if (DyNTS_global_settings.log_settings.highDetailedLogs) {
|
|
244
|
+
DyFM_Log.H_error(
|
|
245
|
+
`Extended Application: "${this.params.name}" start failed. ` +
|
|
246
|
+
`(ready; constructErrors check +1)`,
|
|
247
|
+
`\n construct ERRORS:`, this.constructErrors
|
|
248
|
+
);
|
|
249
|
+
} else {
|
|
250
|
+
DyFM_Log.H_error(
|
|
251
|
+
`Extended Application: "${this.params.name}" start failed. ` +
|
|
252
|
+
`(ready; constructErrors check +1)`,
|
|
253
|
+
`\n construct ERRORS:`, this.getSimplifiedConstructErrors(),
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
253
257
|
|
|
254
258
|
throw new DyFM_Error({
|
|
255
259
|
message: `${this.params?.name} start failed.`,
|
|
@@ -262,11 +266,11 @@ export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
|
262
266
|
if (this.systemControlsExt.appExtended.init) {
|
|
263
267
|
ready = (
|
|
264
268
|
this.superStarted &&
|
|
265
|
-
this.systemControlsExt.httpSocketServer.
|
|
266
|
-
this.systemControlsExt.httpsSocketServer.
|
|
269
|
+
this.systemControlsExt.httpSocketServer.getIsReady() &&
|
|
270
|
+
this.systemControlsExt.httpsSocketServer.getIsReady()
|
|
267
271
|
);
|
|
268
272
|
} else {
|
|
269
|
-
DyFM_Log.error(
|
|
273
|
+
DyFM_Log.error(`"${this.params.name}" APP NOT INITIALIZED while trying to get ready.`);
|
|
270
274
|
}
|
|
271
275
|
|
|
272
276
|
if (!ready) {
|
|
@@ -275,17 +279,19 @@ export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
|
275
279
|
}
|
|
276
280
|
|
|
277
281
|
if (this.constructErrors.length) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
282
|
+
if (this.deepLog) {
|
|
283
|
+
if (DyNTS_global_settings.log_settings.highDetailedLogs) {
|
|
284
|
+
DyFM_Log.H_error(
|
|
285
|
+
`Extended Application: "${this.params.name}" start failed. (ready; TIMEOUT check +2)`,
|
|
286
|
+
`\n construct ERRORS:`, this.constructErrors
|
|
287
|
+
);
|
|
288
|
+
} else {
|
|
289
|
+
DyFM_Log.H_error(
|
|
290
|
+
`Extended Application: "${this.params.name}" start failed. (ready; TIMEOUT check +2)`,
|
|
291
|
+
`\n construct ERRORS:`, this.getSimplifiedConstructErrors(),
|
|
292
|
+
);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
289
295
|
|
|
290
296
|
throw new DyFM_Error({
|
|
291
297
|
message: `${this.params?.name} start failed. TIMEOUT`,
|
|
@@ -329,13 +335,13 @@ export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
|
329
335
|
systemControls: this.systemControls,
|
|
330
336
|
systemControlsExt: this.systemControlsExt,
|
|
331
337
|
systemReadies: {
|
|
332
|
-
app: this.systemControls.app.
|
|
333
|
-
appExtended: this.systemControlsExt.appExtended.
|
|
334
|
-
mongoose: this.systemControls.mongoose.
|
|
335
|
-
httpServer: this.systemControls.httpServer.
|
|
336
|
-
httpsServer: this.systemControls.httpsServer.
|
|
337
|
-
httpSocketServer: this.systemControlsExt.httpSocketServer.
|
|
338
|
-
httpsSocketServer: this.systemControlsExt.httpsSocketServer.
|
|
338
|
+
app: this.systemControls.app.getIsReady(),
|
|
339
|
+
appExtended: this.systemControlsExt.appExtended.getIsReady(),
|
|
340
|
+
mongoose: this.systemControls.mongoose.getIsReady(),
|
|
341
|
+
httpServer: this.systemControls.httpServer.getIsReady(),
|
|
342
|
+
httpsServer: this.systemControls.httpsServer.getIsReady(),
|
|
343
|
+
httpSocketServer: this.systemControlsExt.httpSocketServer.getIsReady(),
|
|
344
|
+
httpsSocketServer: this.systemControlsExt.httpsSocketServer.getIsReady(),
|
|
339
345
|
},
|
|
340
346
|
},
|
|
341
347
|
error: this.constructErrors?.[0] ?? new Error(),
|
|
@@ -387,7 +393,7 @@ export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
|
387
393
|
|
|
388
394
|
await DyFM_delay(100);
|
|
389
395
|
|
|
390
|
-
DyFM_Log.H_info(
|
|
396
|
+
DyFM_Log.H_info(`"${this.params.name}" stopped successfully.`);
|
|
391
397
|
}
|
|
392
398
|
} catch (error) {
|
|
393
399
|
throw new DyFM_Error({
|
|
@@ -118,9 +118,6 @@ export class DyNTS_EmailService /* extends DyNTS_SingletonService */ {
|
|
|
118
118
|
...this._getDefaultErrorSettings('asyncPostConstruct', error, 'SYSTEM'),
|
|
119
119
|
|
|
120
120
|
errorCode: 'NTS-ES0-APC0',
|
|
121
|
-
message:
|
|
122
|
-
`\nDynamoBEEmailService ERROR, ` +
|
|
123
|
-
`\nThe emailService construction failed for ${this.serviceName}.`,
|
|
124
121
|
});
|
|
125
122
|
}
|
|
126
123
|
}
|
|
@@ -144,9 +141,7 @@ export class DyNTS_EmailService /* extends DyNTS_SingletonService */ {
|
|
|
144
141
|
throw new DyFM_Error({
|
|
145
142
|
...this._getDefaultErrorSettings(
|
|
146
143
|
'sendEmail',
|
|
147
|
-
new Error(
|
|
148
|
-
`No email template component is given!`
|
|
149
|
-
),
|
|
144
|
+
new Error(`No email template component is given!`),
|
|
150
145
|
issuer
|
|
151
146
|
),
|
|
152
147
|
|
|
@@ -470,20 +465,23 @@ export class DyNTS_EmailService /* extends DyNTS_SingletonService */ {
|
|
|
470
465
|
private async loadComponent(component: DyNTS_EmailTemplateComponent): Promise<void> {
|
|
471
466
|
try {
|
|
472
467
|
if (this.componentsBySelector[component.selector]) {
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
errorCode: 'NTS-ES0-LC1',
|
|
477
|
-
message: `Template already loaded! (${component.name})`,
|
|
478
|
-
});
|
|
468
|
+
DyFM_Log.warn('Email component already loaded! (it will be skipped)', component.selector);
|
|
469
|
+
|
|
470
|
+
return;
|
|
479
471
|
}
|
|
480
472
|
|
|
481
473
|
if (!component.templatePath && !component.template) {
|
|
482
474
|
throw new DyFM_Error({
|
|
483
|
-
...this._getDefaultErrorSettings(
|
|
475
|
+
...this._getDefaultErrorSettings(
|
|
476
|
+
'loadComponent',
|
|
477
|
+
new Error(`Component missing template and templatePath! (${component.name})`),
|
|
478
|
+
'SYSTEM'
|
|
479
|
+
),
|
|
484
480
|
|
|
485
481
|
errorCode: 'NTS-ES0-LC2',
|
|
486
|
-
|
|
482
|
+
additionalContent: {
|
|
483
|
+
component: component,
|
|
484
|
+
},
|
|
487
485
|
});
|
|
488
486
|
}
|
|
489
487
|
|
|
@@ -4,7 +4,9 @@ import { Request, Response } from 'express';
|
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
6
|
DyFM_Metadata, DyFM_DataModel_Params, DyFM_Log, DyFM_Error, DyFM_Array,
|
|
7
|
-
DyFM_errorFlag
|
|
7
|
+
DyFM_errorFlag,
|
|
8
|
+
DyFM_AnyError,
|
|
9
|
+
DyFM_Error_Settings
|
|
8
10
|
} from '@futdevpro/fsm-dynamo';
|
|
9
11
|
import { DyNTS_App_Params } from '../../_models/control-models/app-params.control-model';
|
|
10
12
|
|
|
@@ -49,13 +51,12 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
49
51
|
authService: DyNTS_AuthService;
|
|
50
52
|
dbServiceCollection: DyNTS_Service_Collection<DyNTS_DBService<any>>;
|
|
51
53
|
emailServiceCollection: DyNTS_Service_Collection<DyNTS_EmailService>;
|
|
54
|
+
|
|
55
|
+
static readonly defaultErrorUserMsg: string =
|
|
56
|
+
`We encountered an unhandled Control Service Error, ` +
|
|
57
|
+
`\nplease contact the responsible development team.`;
|
|
52
58
|
|
|
53
|
-
static globalErrorHandler?:
|
|
54
|
-
err: any,
|
|
55
|
-
req?: Request,
|
|
56
|
-
res?: Response,
|
|
57
|
-
issuer?: string
|
|
58
|
-
) => Promise<void>;
|
|
59
|
+
static globalErrorHandler?: DyNTS_GlobalErrorHandlerFn;
|
|
59
60
|
|
|
60
61
|
/**
|
|
61
62
|
* You need to setup global Services through this function
|
|
@@ -73,8 +74,8 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
73
74
|
await this.setErrorHandler(set?.errorHandler);
|
|
74
75
|
} catch (error) {
|
|
75
76
|
throw new DyFM_Error({
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
...this.getDefaultErrorSettings('setServices', error, 'DyNTS_GlobalService'),
|
|
78
|
+
|
|
78
79
|
errorCode: 'NTS-GS0-SS0',
|
|
79
80
|
});
|
|
80
81
|
}
|
|
@@ -86,8 +87,12 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
86
87
|
dbModels?.forEach((dbModel: DyFM_DataModel_Params): void => {
|
|
87
88
|
if (!dbModel.constructed) {
|
|
88
89
|
throw new DyFM_Error({
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
...this.getDefaultErrorSettings(
|
|
91
|
+
'setDBServices',
|
|
92
|
+
new Error(`dbModel is not constructed!`),
|
|
93
|
+
'DyNTS_GlobalService'
|
|
94
|
+
),
|
|
95
|
+
|
|
91
96
|
errorCode: 'NTS-GS0-SDBS1',
|
|
92
97
|
additionalContent: {
|
|
93
98
|
dbModel: dbModel,
|
|
@@ -101,9 +106,8 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
101
106
|
DyFM_Log.error(`Failed to create DyNTS_DBService (${dbModel.dataName}).`, error);
|
|
102
107
|
|
|
103
108
|
throw new DyFM_Error({
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
error: error,
|
|
109
|
+
...this.getDefaultErrorSettings('setDBServices', error, 'DyNTS_GlobalService'),
|
|
110
|
+
|
|
107
111
|
additionalContent: {
|
|
108
112
|
dbModel: dbModel,
|
|
109
113
|
},
|
|
@@ -112,8 +116,8 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
112
116
|
});
|
|
113
117
|
} catch (error) {
|
|
114
118
|
throw new DyFM_Error({
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
...this.getDefaultErrorSettings('setDBServices', error, 'DyNTS_GlobalService'),
|
|
120
|
+
|
|
117
121
|
errorCode: 'NTS-GS0-SDBS0',
|
|
118
122
|
});
|
|
119
123
|
}
|
|
@@ -128,8 +132,8 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
128
132
|
}
|
|
129
133
|
} catch (error) {
|
|
130
134
|
throw new DyFM_Error({
|
|
131
|
-
|
|
132
|
-
|
|
135
|
+
...this.getDefaultErrorSettings('setAuthService', error, 'DyNTS_GlobalService'),
|
|
136
|
+
|
|
133
137
|
errorCode: 'NTS-GS0-SAS0',
|
|
134
138
|
});
|
|
135
139
|
}
|
|
@@ -150,8 +154,8 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
150
154
|
);
|
|
151
155
|
} catch (error) {
|
|
152
156
|
throw new DyFM_Error({
|
|
153
|
-
|
|
154
|
-
|
|
157
|
+
...this.getDefaultErrorSettings('setEmailServices', error, 'DyNTS_GlobalService'),
|
|
158
|
+
|
|
155
159
|
errorCode: 'NTS-GS0-SS4',
|
|
156
160
|
});
|
|
157
161
|
}
|
|
@@ -190,8 +194,8 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
190
194
|
});
|
|
191
195
|
} catch (error) {
|
|
192
196
|
throw new DyFM_Error({
|
|
193
|
-
|
|
194
|
-
|
|
197
|
+
...this.getDefaultErrorSettings('setErrorHandler', error, 'DyNTS_GlobalService'),
|
|
198
|
+
|
|
195
199
|
errorCode: 'NTS-GS0-SEH0',
|
|
196
200
|
});
|
|
197
201
|
}
|
|
@@ -338,4 +342,21 @@ export class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
338
342
|
${names}\n`);
|
|
339
343
|
}
|
|
340
344
|
} */
|
|
345
|
+
|
|
346
|
+
protected static getDefaultErrorSettings(
|
|
347
|
+
fnName: string,
|
|
348
|
+
error: DyFM_AnyError,
|
|
349
|
+
issuer: string
|
|
350
|
+
): DyFM_Error_Settings {
|
|
351
|
+
return {
|
|
352
|
+
status: (error as DyFM_Error)?.___status ?? 500,
|
|
353
|
+
message: (error as Error)?.message ??
|
|
354
|
+
`${fnName} was UNSUCCESSFUL (${DyNTS_global_settings.systemShortCodeName})`,
|
|
355
|
+
addECToUserMsg: !(error as DyFM_Error)?.__userMessage,
|
|
356
|
+
userMessage: (error as DyFM_Error)?.__userMessage ?? this.defaultErrorUserMsg,
|
|
357
|
+
issuer: issuer,
|
|
358
|
+
issuerService: this.constructor?.name,
|
|
359
|
+
error: error,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
341
362
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { DyFM_Log, DyFM_delay } from '@futdevpro/fsm-dynamo';
|
|
2
|
+
import { DyFM_Error, DyFM_Log, DyFM_delay } from '@futdevpro/fsm-dynamo';
|
|
3
3
|
import { DyNTS_AppBase_Mock, DyNTS_AppFull_Mock } from '../../_modules/mock/app-server.mock';
|
|
4
4
|
|
|
5
5
|
describe('DyNTS_App AND DyNTS_AppExtended?;', (): void => {
|
|
@@ -15,15 +15,23 @@ describe('DyNTS_App AND DyNTS_AppExtended?;', (): void => {
|
|
|
15
15
|
await DyFM_delay(100);
|
|
16
16
|
|
|
17
17
|
await app.ready();
|
|
18
|
+
|
|
19
|
+
await DyFM_delay(100);
|
|
18
20
|
} catch (error) {
|
|
19
|
-
DyFM_Log.test('error', error);
|
|
21
|
+
DyFM_Log.test('test beforeEach error:', (error as DyFM_Error)?._message);
|
|
20
22
|
}
|
|
21
23
|
});
|
|
22
24
|
|
|
23
25
|
afterEach(async (): Promise<void> => {
|
|
24
|
-
|
|
26
|
+
try {
|
|
27
|
+
await DyFM_delay(100);
|
|
28
|
+
|
|
29
|
+
await app.stop();
|
|
25
30
|
|
|
26
|
-
|
|
31
|
+
app = null;
|
|
32
|
+
} catch (error) {
|
|
33
|
+
DyFM_Log.test('test afterEach error:', (error as DyFM_Error)?._message);
|
|
34
|
+
}
|
|
27
35
|
});
|
|
28
36
|
|
|
29
37
|
it('should be created', (): void => {
|
|
@@ -41,16 +49,27 @@ describe('DyNTS_App AND DyNTS_AppExtended?;', (): void => {
|
|
|
41
49
|
beforeEach(async (): Promise<void> => {
|
|
42
50
|
try {
|
|
43
51
|
app = new DyNTS_AppFull_Mock();
|
|
52
|
+
|
|
53
|
+
await DyFM_delay(100);
|
|
54
|
+
|
|
44
55
|
await app.ready();
|
|
56
|
+
|
|
57
|
+
await DyFM_delay(100);
|
|
45
58
|
} catch (error) {
|
|
46
|
-
DyFM_Log.test('error', error);
|
|
59
|
+
DyFM_Log.test('test beforeEach error:', (error as DyFM_Error)?._message);
|
|
47
60
|
}
|
|
48
61
|
});
|
|
49
62
|
|
|
50
63
|
afterEach(async (): Promise<void> => {
|
|
51
|
-
|
|
64
|
+
try {
|
|
65
|
+
await DyFM_delay(100);
|
|
66
|
+
|
|
67
|
+
await app.stop();
|
|
52
68
|
|
|
53
|
-
|
|
69
|
+
app = null;
|
|
70
|
+
} catch (error) {
|
|
71
|
+
DyFM_Log.test('test afterEach error:', (error as DyFM_Error)?._message);
|
|
72
|
+
}
|
|
54
73
|
});
|
|
55
74
|
|
|
56
75
|
it('should be created', (): void => {
|