@futdevpro/nts-dynamo 1.9.39 → 1.9.41
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 +3 -0
- package/build/_collections/archive.util.d.ts.map +1 -0
- package/build/_collections/archive.util.js +9 -0
- package/build/_collections/archive.util.js.map +1 -0
- 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 +60 -10
- 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/_modules/socket/_models/socket-client-service-params.control-model.d.ts.map +1 -1
- package/build/_modules/socket/_models/socket-client-service-params.control-model.js +1 -1
- package/build/_modules/socket/_models/socket-client-service-params.control-model.js.map +1 -1
- package/build/_modules/socket/_models/socket-presence.control-model.js +1 -1
- 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.js +3 -3
- package/build/_modules/socket/_services/socket-server.service.js.map +1 -1
- package/build/_services/base/archive-data.service.d.ts +24 -0
- package/build/_services/base/archive-data.service.d.ts.map +1 -0
- package/build/_services/base/archive-data.service.js +135 -0
- package/build/_services/base/archive-data.service.js.map +1 -0
- package/build/_services/base/data.service.d.ts +3 -2
- package/build/_services/base/data.service.d.ts.map +1 -1
- package/build/_services/base/data.service.js +28 -30
- package/build/_services/base/data.service.js.map +1 -1
- package/build/_services/base/db.service.d.ts +6 -5
- package/build/_services/base/db.service.d.ts.map +1 -1
- package/build/_services/base/db.service.js +31 -14
- 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/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +46 -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 +18 -10
- package/build/_services/server/app.server.js.map +1 -1
- package/build/index.d.ts +7 -6
- package/build/index.d.ts.map +1 -1
- package/build/index.js +12 -6
- package/build/index.js.map +1 -1
- package/package.json +3 -3
- package/src/_collections/archive.util.ts +9 -0
- package/src/_collections/global-settings.const.ts +1 -0
- package/src/_models/control-models/endpoint-params.control-model.ts +98 -21
- package/src/_models/interfaces/global-settings.interface.ts +5 -0
- package/src/_modules/socket/_models/socket-client-service-params.control-model.ts +2 -1
- package/src/_modules/socket/_models/socket-presence.control-model.ts +1 -1
- package/src/_modules/socket/_services/app-extended.server.ts +10 -8
- package/src/_modules/socket/_services/socket-server.service.ts +3 -3
- package/src/_services/base/archive-data.service.ts +207 -0
- package/src/_services/base/data.service.ts +50 -45
- package/src/_services/base/db.service.ts +41 -14
- package/src/_services/base/singleton.service-base.ts +2 -1
- package/src/_services/core/global.service.ts +66 -34
- package/src/_services/route/routing-module.service.ts +23 -4
- package/src/_services/server/app.server.ts +42 -29
- package/src/index.ts +16 -6
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,sCAAsC,CAAC;AAIrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AAGpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AAKtD,cAAc,wDAAwD,CAAC;AACvE,cAAc,uDAAuD,CAAC;AACtE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wDAAwD,CAAC;AAGvE,cAAc,wDAAwD,CAAC;AACvE,cAAc,mDAAmD,CAAC;AAClE,cAAc,sDAAsD,CAAC;AACrE,cAAc,wDAAwD,CAAC;AAGvE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,sCAAsC,CAAC;AAIrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AAGpD,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AAKtD,cAAc,wDAAwD,CAAC;AACvE,cAAc,uDAAuD,CAAC;AACtE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wDAAwD,CAAC;AAGvE,cAAc,wDAAwD,CAAC;AACvE,cAAc,mDAAmD,CAAC;AAClE,cAAc,sDAAsD,CAAC;AACrE,cAAc,wDAAwD,CAAC;AAGvE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAK/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,6CAA6C,CAAC;AAG5D,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AAGnD,cAAc,+BAA+B,CAAC;AAG9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AAGzD,cAAc,mCAAmC,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -26,17 +26,23 @@ tslib_1.__exportStar(require("./_models/control-models/endpoint-params.control-m
|
|
|
26
26
|
tslib_1.__exportStar(require("./_models/types/db-filter.type"), exports);
|
|
27
27
|
tslib_1.__exportStar(require("./_models/types/db-update.type"), exports);
|
|
28
28
|
// SERVICES
|
|
29
|
+
// services/CORE
|
|
29
30
|
tslib_1.__exportStar(require("./_services/core/api.service"), exports);
|
|
30
|
-
tslib_1.__exportStar(require("./_services/server/app.server"), exports);
|
|
31
31
|
tslib_1.__exportStar(require("./_services/core/auth.service"), exports);
|
|
32
|
-
tslib_1.__exportStar(require("./_services/route/controller.service"), exports);
|
|
33
|
-
tslib_1.__exportStar(require("./_services/base/data.service"), exports);
|
|
34
|
-
tslib_1.__exportStar(require("./_services/base/db.service"), exports);
|
|
35
32
|
tslib_1.__exportStar(require("./_services/core/email.service"), exports);
|
|
36
33
|
tslib_1.__exportStar(require("./_services/core/global.service"), exports);
|
|
34
|
+
tslib_1.__exportStar(require("./_services/core/service-collection.service"), exports);
|
|
35
|
+
// services/BASE
|
|
36
|
+
tslib_1.__exportStar(require("./_services/base/archive-data.service"), exports);
|
|
37
|
+
tslib_1.__exportStar(require("./_services/base/data.service"), exports);
|
|
38
|
+
tslib_1.__exportStar(require("./_services/base/db.service"), exports);
|
|
39
|
+
tslib_1.__exportStar(require("./_services/base/singleton.service"), exports);
|
|
40
|
+
// services/SERVER
|
|
41
|
+
tslib_1.__exportStar(require("./_services/server/app.server"), exports);
|
|
42
|
+
// services/ROUTE
|
|
43
|
+
tslib_1.__exportStar(require("./_services/route/controller.service"), exports);
|
|
37
44
|
tslib_1.__exportStar(require("./_services/route/controller.service"), exports);
|
|
38
45
|
tslib_1.__exportStar(require("./_services/route/routing-module.service"), exports);
|
|
39
|
-
|
|
46
|
+
// services/SHARED
|
|
40
47
|
tslib_1.__exportStar(require("./_services/shared.static-service"), exports);
|
|
41
|
-
tslib_1.__exportStar(require("./_services/base/singleton.service"), exports);
|
|
42
48
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,cAAc;AACd,+EAAqD;AAGrD,QAAQ;AACR,wEAA8C;AAC9C,8EAAoD;AACpD,uEAA6C;AAC7C,8EAAoD;AAEpD,aAAa;AACb,4EAAkD;AAClD,gFAAsD;AAGtD,6CAA6C;AAC7C,oBAAoB;AACpB,iGAAuE;AACvE,gGAAsE;AACtE,yFAA+D;AAC/D,iGAAuE;AAEvE,wBAAwB;AACxB,iGAAuE;AACvE,4FAAkE;AAClE,+FAAqE;AACrE,iGAAuE;AAEvE,eAAe;AACf,yEAA+C;AAC/C,yEAA+C;AAG/C,WAAW;AACX,uEAA6C;AAC7C,wEAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,cAAc;AACd,+EAAqD;AAGrD,QAAQ;AACR,wEAA8C;AAC9C,8EAAoD;AACpD,uEAA6C;AAC7C,8EAAoD;AAEpD,aAAa;AACb,4EAAkD;AAClD,gFAAsD;AAGtD,6CAA6C;AAC7C,oBAAoB;AACpB,iGAAuE;AACvE,gGAAsE;AACtE,yFAA+D;AAC/D,iGAAuE;AAEvE,wBAAwB;AACxB,iGAAuE;AACvE,4FAAkE;AAClE,+FAAqE;AACrE,iGAAuE;AAEvE,eAAe;AACf,yEAA+C;AAC/C,yEAA+C;AAG/C,WAAW;AACX,gBAAgB;AAChB,uEAA6C;AAC7C,wEAA8C;AAC9C,yEAA+C;AAC/C,0EAAgD;AAChD,sFAA4D;AAE5D,gBAAgB;AAChB,gFAAsD;AACtD,wEAA8C;AAC9C,sEAA4C;AAC5C,6EAAmD;AAEnD,kBAAkB;AAClB,wEAA8C;AAE9C,iBAAiB;AACjB,+EAAqD;AACrD,+EAAqD;AACrD,mFAAyD;AAEzD,kBAAkB;AAClB,4EAAkD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/nts-dynamo",
|
|
3
|
-
"version": "01.09.
|
|
3
|
+
"version": "01.09.41",
|
|
4
4
|
"description": "Dynamic NodeTS (NodeJS-Typescript), MongoDB Backend System Framework by Future Development Program Ltd.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"prep": "npm i rimraf nodemon -g",
|
|
@@ -90,11 +90,11 @@
|
|
|
90
90
|
},
|
|
91
91
|
"homepage": "https:/futdevpro.hu/projects/dynamo",
|
|
92
92
|
"DISABLED": {
|
|
93
|
-
"@futdevpro/fsm-dynamo": "file:../tgz-collection/dynamo-fsm/futdevpro-fsm-dynamo-01.09.
|
|
93
|
+
"@futdevpro/fsm-dynamo": "file:../tgz-collection/dynamo-fsm/futdevpro-fsm-dynamo-01.09.38.tgz",
|
|
94
94
|
"empty": ""
|
|
95
95
|
},
|
|
96
96
|
"peerDependencies": {
|
|
97
|
-
"@futdevpro/fsm-dynamo": "~1.9.
|
|
97
|
+
"@futdevpro/fsm-dynamo": "~1.9.38",
|
|
98
98
|
|
|
99
99
|
"@types/express": "~4.17.17",
|
|
100
100
|
"@types/geoip-lite": "~1.4.1",
|
|
@@ -7,6 +7,7 @@ export const DyNTS_global_settings: DyNTS_Global_Settings = {
|
|
|
7
7
|
baseUrl: '/api',
|
|
8
8
|
defaultRouteSecurity: DyNTS_RouteSecurity.open,
|
|
9
9
|
defaultSocketSecurity: DyNTS_SocketSecurity.open,
|
|
10
|
+
autoResolveEndpointCirculationErrors: true,
|
|
10
11
|
|
|
11
12
|
log_settings: {
|
|
12
13
|
highDetailedLogs: false,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { Request, Response } from 'express';
|
|
4
4
|
|
|
5
|
-
import { DyFM_Array, DyFM_Error, DyFM_errorFlag, DyFM_Log } from '@futdevpro/fsm-dynamo';
|
|
5
|
+
import { DyFM_Array, DyFM_Error, DyFM_errorFlag, DyFM_Log, DyFM_Shared } from '@futdevpro/fsm-dynamo';
|
|
6
6
|
import { DyNTS_RouteSecurity } from '../../_enums/route-security.enum';
|
|
7
7
|
import { DyNTS_HttpCallType } from '../../_enums/http/http-call-type.enum';
|
|
8
8
|
import { DyNTS_global_settings } from '../../_collections/global-settings.const';
|
|
@@ -23,16 +23,17 @@ export class DyNTS_Endpoint_Params {
|
|
|
23
23
|
/* TODO: ENCRYPTION !!EZTET
|
|
24
24
|
useEncryptionKey?: string; */
|
|
25
25
|
|
|
26
|
-
private pathParams: string[];
|
|
26
|
+
private readonly pathParams: string[];
|
|
27
27
|
|
|
28
|
-
private preProcesses: ((req: Request, res: Response) => Promise<void>)[];
|
|
29
|
-
private tasks: ((req: Request, res: Response, issuer?: string) => Promise<void>)[];
|
|
28
|
+
private readonly preProcesses: ((req: Request, res: Response) => Promise<void>)[];
|
|
29
|
+
private readonly tasks: ((req: Request, res: Response, issuer?: string) => Promise<void>)[];
|
|
30
30
|
|
|
31
|
-
private logRequest: boolean;
|
|
32
|
-
private logRequestsParams: boolean;
|
|
33
|
-
private logRequestsContent: boolean;
|
|
34
|
-
private logResponseContent: boolean;
|
|
35
|
-
private stack: string;
|
|
31
|
+
private readonly logRequest: boolean;
|
|
32
|
+
private readonly logRequestsParams: boolean;
|
|
33
|
+
private readonly logRequestsContent: boolean;
|
|
34
|
+
private readonly logResponseContent: boolean;
|
|
35
|
+
private readonly stack: string;
|
|
36
|
+
private readonly autoResolveCirculation: boolean;
|
|
36
37
|
|
|
37
38
|
constructor(
|
|
38
39
|
set: {
|
|
@@ -85,6 +86,10 @@ export class DyNTS_Endpoint_Params {
|
|
|
85
86
|
* log settings for response content
|
|
86
87
|
*/
|
|
87
88
|
logResponseContent?: boolean,
|
|
89
|
+
/**
|
|
90
|
+
* auto resolve circulation errors
|
|
91
|
+
*/
|
|
92
|
+
autoResolveCirculation?: boolean,
|
|
88
93
|
}
|
|
89
94
|
) {
|
|
90
95
|
try {
|
|
@@ -101,6 +106,8 @@ export class DyNTS_Endpoint_Params {
|
|
|
101
106
|
set.logRequestsContent ?? DyNTS_global_settings.log_settings.requestsContent;
|
|
102
107
|
this.logResponseContent =
|
|
103
108
|
set.logResponseContent ?? DyNTS_global_settings.log_settings.responseContent;
|
|
109
|
+
this.autoResolveCirculation =
|
|
110
|
+
set.autoResolveCirculation ?? DyNTS_global_settings.autoResolveEndpointCirculationErrors;
|
|
104
111
|
|
|
105
112
|
if (!this.endpoint) {
|
|
106
113
|
throw new DyFM_Error({
|
|
@@ -233,7 +240,8 @@ export class DyNTS_Endpoint_Params {
|
|
|
233
240
|
req: Request,
|
|
234
241
|
res: Response,
|
|
235
242
|
error: Error | DyFM_Error,
|
|
236
|
-
issuer: string
|
|
243
|
+
issuer: string,
|
|
244
|
+
autoSecondTry?: boolean
|
|
237
245
|
): Promise<void> {
|
|
238
246
|
try {
|
|
239
247
|
let msg: string = `Endpoint caught an error. '${this.name}' (${this.endpoint})`;
|
|
@@ -284,10 +292,27 @@ export class DyNTS_Endpoint_Params {
|
|
|
284
292
|
|
|
285
293
|
try {
|
|
286
294
|
JSON.stringify(error);
|
|
287
|
-
} catch (
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
295
|
+
} catch (stringifyError) {
|
|
296
|
+
if (this.autoResolveCirculation) {
|
|
297
|
+
try {
|
|
298
|
+
error = DyFM_Shared.resolveCirculation(error);
|
|
299
|
+
JSON.stringify(error);
|
|
300
|
+
} catch (resolveError) {
|
|
301
|
+
DyFM_Log.H_error(
|
|
302
|
+
'DyNTS_Endpoint_Params: error object is not serializable, and not resolvable!'
|
|
303
|
+
);
|
|
304
|
+
|
|
305
|
+
error = new DyFM_Error({
|
|
306
|
+
error: new Error('UNRESOLVABLE UNSERIALIZABLE ERROR'),
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
} else {
|
|
310
|
+
DyFM_Log.H_error('DyNTS_Endpoint_Params: error object is not serializable!');
|
|
311
|
+
|
|
312
|
+
error = new DyFM_Error({
|
|
313
|
+
error: new Error('UNSERIALIZABLE ERROR'),
|
|
314
|
+
});
|
|
315
|
+
}
|
|
291
316
|
}
|
|
292
317
|
|
|
293
318
|
res.status((error as DyFM_Error)?.___status ?? 501);
|
|
@@ -310,19 +335,37 @@ export class DyNTS_Endpoint_Params {
|
|
|
310
335
|
|
|
311
336
|
DyFM_Log.error('');
|
|
312
337
|
|
|
313
|
-
} catch (
|
|
314
|
-
this.multiLevelError(
|
|
338
|
+
} catch (errorLvl2) {
|
|
339
|
+
this.multiLevelError(
|
|
340
|
+
errorLvl2,
|
|
341
|
+
{
|
|
342
|
+
req: req,
|
|
343
|
+
res: res,
|
|
344
|
+
error: error,
|
|
345
|
+
issuer: issuer,
|
|
346
|
+
autoSecondTry: autoSecondTry,
|
|
347
|
+
}
|
|
348
|
+
);
|
|
315
349
|
}
|
|
316
350
|
}
|
|
317
351
|
|
|
318
|
-
private multiLevelError(
|
|
352
|
+
private multiLevelError(
|
|
353
|
+
errorLvl2: any,
|
|
354
|
+
errorInputs: {
|
|
355
|
+
req: Request,
|
|
356
|
+
res: Response,
|
|
357
|
+
error: Error | DyFM_Error,
|
|
358
|
+
issuer: string,
|
|
359
|
+
autoSecondTry: boolean
|
|
360
|
+
}
|
|
361
|
+
): void {
|
|
319
362
|
if (DyNTS_global_settings.log_settings.highDetailedLogs) {
|
|
320
363
|
DyFM_Log.H_error(
|
|
321
364
|
`\n\nDYNAMO MULTILEVEL ERROR:DyNTS_EndpointParams: error: ` +
|
|
322
365
|
`(${this.name}, ${this.endpoint})` +
|
|
323
366
|
`\n(DYNAMO MULTILEVEL ERROR means, that the ERROR HANDLING is ALSO FAILED, ` +
|
|
324
367
|
`and the error message was not sent.)` +
|
|
325
|
-
`\nERROR:`,
|
|
368
|
+
`\nERROR:`, errorLvl2,
|
|
326
369
|
'\n'
|
|
327
370
|
);
|
|
328
371
|
} else {
|
|
@@ -334,16 +377,50 @@ export class DyNTS_Endpoint_Params {
|
|
|
334
377
|
);
|
|
335
378
|
}
|
|
336
379
|
|
|
380
|
+
try {
|
|
381
|
+
JSON.stringify(errorInputs.error);
|
|
382
|
+
} catch (errorLvl2Replication) {
|
|
383
|
+
DyFM_Log.error(' ...response object is not serializable!');
|
|
384
|
+
let resolvedError: any;
|
|
385
|
+
|
|
386
|
+
try {
|
|
387
|
+
resolvedError = DyFM_Shared.resolveCirculation(errorInputs.error);
|
|
388
|
+
} catch (errorLvl3) {
|
|
389
|
+
DyFM_Log.error(' ...response object is not resolvable!');
|
|
390
|
+
DyFM_Log.error(' ...', errorLvl3);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
if (resolvedError) {
|
|
394
|
+
if (this.autoResolveCirculation && !errorInputs.autoSecondTry) {
|
|
395
|
+
this.error(
|
|
396
|
+
errorInputs.req,
|
|
397
|
+
errorInputs.res,
|
|
398
|
+
resolvedError,
|
|
399
|
+
errorInputs.issuer,
|
|
400
|
+
true
|
|
401
|
+
);
|
|
402
|
+
|
|
403
|
+
DyFM_Log.warn(' ...automatic circulation error resolution was successful!');
|
|
404
|
+
|
|
405
|
+
return;
|
|
406
|
+
} else {
|
|
407
|
+
DyFM_Log.error(
|
|
408
|
+
' ...response object is resolvable! (use DyFM_Shared.resolveCirculation)'
|
|
409
|
+
);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
337
414
|
if (
|
|
338
415
|
DyNTS_global_settings.log_settings.highDetailedLogs ||
|
|
339
|
-
!(
|
|
416
|
+
!(errorLvl2 instanceof DyFM_Error)
|
|
340
417
|
) {
|
|
341
418
|
DyFM_Log.H_error(
|
|
342
419
|
`Endpoint "${this.endpoint}" caught an error and FAILED TO RESOLVE. (${this.name})`,
|
|
343
|
-
'\n ERROR:',
|
|
420
|
+
'\n ERROR:', errorLvl2
|
|
344
421
|
);
|
|
345
422
|
} else {
|
|
346
|
-
|
|
423
|
+
errorLvl2.logSimple(
|
|
347
424
|
`Endpoint "${this.endpoint}" caught an error and FAILED TO RESOLVE. (${this.name})`
|
|
348
425
|
);
|
|
349
426
|
}
|
|
@@ -15,6 +15,7 @@ export class DyNTS_SocketClientService_Params extends DyFM_SocketClient_Params {
|
|
|
15
15
|
) {
|
|
16
16
|
super(set);
|
|
17
17
|
|
|
18
|
-
DyFM_Log.H_info(
|
|
18
|
+
DyFM_Log.H_info(
|
|
19
|
+
'DyNTS_SocketClientService_Params (test this with custom address!)', this.address);
|
|
19
20
|
}
|
|
20
21
|
}
|
|
@@ -105,7 +105,7 @@ export class DyNTS_SocketPresence {
|
|
|
105
105
|
if (!socket.connected) {
|
|
106
106
|
DyFM_Log.warn(
|
|
107
107
|
`Emitting event '${event}' on socket(${this.serviceName})-(${index}) failed!` +
|
|
108
|
-
`\
|
|
108
|
+
`\n ERROR: socket[${socket.id}] is not connected! (it will be removed...)`
|
|
109
109
|
);
|
|
110
110
|
|
|
111
111
|
/* errors.push(
|
|
@@ -119,7 +119,7 @@ import { DyNTS_global_settings } from '../../../_collections/global-settings.con
|
|
|
119
119
|
*/
|
|
120
120
|
export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
121
121
|
|
|
122
|
-
private systemControlsExt: DyNTS_AppExtSysControls = new DyNTS_AppExtSysControls();
|
|
122
|
+
private readonly systemControlsExt: DyNTS_AppExtSysControls = new DyNTS_AppExtSysControls();
|
|
123
123
|
override get started(): boolean { return this.systemControlsExt.appExtended.started; }
|
|
124
124
|
private httpsSocketSettingUpCount: number = 0;
|
|
125
125
|
private httpSocketSettingUpCount: number = 0;
|
|
@@ -138,12 +138,12 @@ export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
|
138
138
|
* ];
|
|
139
139
|
*/
|
|
140
140
|
protected socketServices: DyNTS_SocketServerService<any>[];
|
|
141
|
-
private allSocketServers: SocketIO.Server[] = [];
|
|
141
|
+
private readonly allSocketServers: SocketIO.Server[] = [];
|
|
142
142
|
|
|
143
143
|
constructor(){
|
|
144
|
-
super(true);
|
|
144
|
+
super(/* true */);
|
|
145
145
|
|
|
146
|
-
this.asyncConstructExt().catch((error: DyFM_AnyError): void => {
|
|
146
|
+
/* this.asyncConstructExt().catch((error: DyFM_AnyError): void => {
|
|
147
147
|
if (
|
|
148
148
|
DyNTS_global_settings.log_settings.highDetailedLogs ||
|
|
149
149
|
!(error instanceof DyFM_Error)
|
|
@@ -159,13 +159,15 @@ export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
|
159
159
|
`(DyNTS_AppExtended constructor catch)`
|
|
160
160
|
);
|
|
161
161
|
}
|
|
162
|
-
});
|
|
162
|
+
}); */
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
protected override async asyncConstruct(extended = true): Promise<void> {
|
|
166
166
|
if (this.fnLogs && this.deepLog) console.log('\nfn:. asyncConstruct-extended');
|
|
167
167
|
|
|
168
168
|
try {
|
|
169
|
+
await super.asyncConstruct(true);
|
|
170
|
+
|
|
169
171
|
this.systemControlsExt.appExtended.init = true;
|
|
170
172
|
|
|
171
173
|
this.socketServices = this.getSocketServices();
|
|
@@ -194,7 +196,7 @@ export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
|
194
196
|
DyFM_Log.H_success(`"${this.params.name}" started successfully.`);
|
|
195
197
|
|
|
196
198
|
} catch (error) {
|
|
197
|
-
if (
|
|
199
|
+
/* if (
|
|
198
200
|
DyNTS_global_settings.log_settings.highDetailedLogs ||
|
|
199
201
|
!(error instanceof DyFM_Error)
|
|
200
202
|
) {
|
|
@@ -206,7 +208,7 @@ export abstract class DyNTS_AppExtended extends DyNTS_App {
|
|
|
206
208
|
error.logSimple(
|
|
207
209
|
`Extended Application: "${this.params?.name}" start failed. (asyncConstructExt catch)`
|
|
208
210
|
);
|
|
209
|
-
}
|
|
211
|
+
} */
|
|
210
212
|
|
|
211
213
|
throw new DyFM_Error({
|
|
212
214
|
errorCode: 'NTS-AES-001',
|
|
@@ -678,13 +678,13 @@ export abstract class DyNTS_SocketServerService<
|
|
|
678
678
|
if (DyNTS_global_settings.log_settings.socket_eventContent) {
|
|
679
679
|
DyFM_Log.success(
|
|
680
680
|
` <--= emitted socket(${this.params.name}) event: "${event}", ` +
|
|
681
|
-
`\n
|
|
682
|
-
`\n
|
|
681
|
+
`\n presenceId: "${id}", sockets: ${presence.sockets.length}` +
|
|
682
|
+
`\n content:`, content
|
|
683
683
|
);
|
|
684
684
|
} else {
|
|
685
685
|
DyFM_Log.success(
|
|
686
686
|
` <--= emitted socket(${this.params.name}) event: "${event}", ` +
|
|
687
|
-
`\n
|
|
687
|
+
`\n presenceId: ${id}, sockets: ${presence.sockets.length}`
|
|
688
688
|
);
|
|
689
689
|
}
|
|
690
690
|
} catch (error) {
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
|
|
2
|
+
import {
|
|
3
|
+
DyFM_Metadata, DyFM_DataModel_Params, DyFM_Error
|
|
4
|
+
} from '@futdevpro/fsm-dynamo';
|
|
5
|
+
|
|
6
|
+
import { DyNTS_DataService } from './data.service';
|
|
7
|
+
import { DyNTS_getArchivedDBName } from '../../_collections/archive.util';
|
|
8
|
+
import { DyNTS_GlobalService } from '../core/global.service';
|
|
9
|
+
import { DyNTS_DBService } from './db.service';
|
|
10
|
+
import { DyNTS_DBFilterSimple } from '../../_models/types/db-filter.type';
|
|
11
|
+
|
|
12
|
+
// TODO: 3 type of archiving service system:
|
|
13
|
+
// 1.: within list (data have a list that have elements to archive)
|
|
14
|
+
// 2.: separate db elements needs to be archived
|
|
15
|
+
// 3.: from separate db elements to archive list elements
|
|
16
|
+
|
|
17
|
+
export class DyNTS_ArchiveDataService<T extends DyFM_Metadata> extends DyNTS_DataService<T> {
|
|
18
|
+
|
|
19
|
+
originalDBService: DyNTS_DBService<T>;
|
|
20
|
+
|
|
21
|
+
constructor(
|
|
22
|
+
/**
|
|
23
|
+
* Initial data, this will be used by functions on default
|
|
24
|
+
*/
|
|
25
|
+
data: T,
|
|
26
|
+
/**
|
|
27
|
+
* DB data prams will be used to connect to usable dbService on GlobalService
|
|
28
|
+
*/
|
|
29
|
+
dataParams: DyFM_DataModel_Params,
|
|
30
|
+
/**
|
|
31
|
+
* Initial set for issuer to be able to follow the issuer's activity
|
|
32
|
+
*/
|
|
33
|
+
issuer: string
|
|
34
|
+
) {
|
|
35
|
+
const originalDataParams = { ...dataParams };
|
|
36
|
+
|
|
37
|
+
dataParams = {
|
|
38
|
+
...dataParams,
|
|
39
|
+
dataName: DyNTS_getArchivedDBName(dataParams.dataName),
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
super(data, dataParams, issuer);
|
|
43
|
+
|
|
44
|
+
this.originalDBService = DyNTS_GlobalService.getDBService<T>(originalDataParams);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async archiveDataById(id: string): Promise<T> {
|
|
48
|
+
try {
|
|
49
|
+
if (!id) {
|
|
50
|
+
throw new DyFM_Error({
|
|
51
|
+
...this.getDefaultErrorSettings(
|
|
52
|
+
'archiveDataById',
|
|
53
|
+
new Error('archiveDataById failed, id is missing!')
|
|
54
|
+
),
|
|
55
|
+
|
|
56
|
+
errorCode: 'NTS-ADS-ADI1',
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const data = await this.originalDBService.getDataById(id);
|
|
61
|
+
|
|
62
|
+
if (!data) {
|
|
63
|
+
throw new DyFM_Error({
|
|
64
|
+
...this.getDefaultErrorSettings(
|
|
65
|
+
'archiveDataById',
|
|
66
|
+
new Error('archiveDataById failed, data not found!')
|
|
67
|
+
),
|
|
68
|
+
|
|
69
|
+
errorCode: 'NTS-ADS-ADI2',
|
|
70
|
+
additionalContent: {
|
|
71
|
+
id: id,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return await this.archiveData(data);
|
|
77
|
+
} catch (error) {
|
|
78
|
+
throw new DyFM_Error({
|
|
79
|
+
...this.getDefaultErrorSettings(
|
|
80
|
+
'archiveDataById',
|
|
81
|
+
error
|
|
82
|
+
),
|
|
83
|
+
|
|
84
|
+
errorCode: 'NTS-ADS-ADI0',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
async getDataByOriginalId(originalId: string, dontSetToService?: boolean): Promise<T> {
|
|
90
|
+
try {
|
|
91
|
+
return await this.findData(
|
|
92
|
+
{
|
|
93
|
+
_originalId: originalId,
|
|
94
|
+
} as DyNTS_DBFilterSimple<T>,
|
|
95
|
+
dontSetToService
|
|
96
|
+
);
|
|
97
|
+
} catch (error) {
|
|
98
|
+
throw new DyFM_Error({
|
|
99
|
+
...this.getDefaultErrorSettings(
|
|
100
|
+
'getDataByOriginalId',
|
|
101
|
+
error
|
|
102
|
+
),
|
|
103
|
+
|
|
104
|
+
errorCode: 'NTS-ADS-GDOI0',
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
async archiveData(data?: T, dontSetToService?: boolean): Promise<T> {
|
|
110
|
+
try {
|
|
111
|
+
data = this.ensureData(data);
|
|
112
|
+
|
|
113
|
+
if (data?._originalId) {
|
|
114
|
+
throw new DyFM_Error({
|
|
115
|
+
...this.getDefaultErrorSettings(
|
|
116
|
+
'archiveData',
|
|
117
|
+
new Error(
|
|
118
|
+
`archiveData failed, originalId is already exists! (${this.dataParams.dataName})`
|
|
119
|
+
)
|
|
120
|
+
),
|
|
121
|
+
|
|
122
|
+
errorCode: 'NTS-ADS-AD1',
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (data?._archived) {
|
|
127
|
+
throw new DyFM_Error({
|
|
128
|
+
...this.getDefaultErrorSettings(
|
|
129
|
+
'archiveData',
|
|
130
|
+
new Error(
|
|
131
|
+
`archiveData failed, data is already archived! (${this.dataParams.dataName})`
|
|
132
|
+
)
|
|
133
|
+
),
|
|
134
|
+
|
|
135
|
+
errorCode: 'NTS-ADS-AD2',
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (!data?._id) {
|
|
140
|
+
throw new DyFM_Error({
|
|
141
|
+
...this.getDefaultErrorSettings(
|
|
142
|
+
'archiveData',
|
|
143
|
+
new Error(`archiveData failed, id is missing! (${this.dataParams.dataName})`)
|
|
144
|
+
),
|
|
145
|
+
|
|
146
|
+
errorCode: 'NTS-ADS-AD3',
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
await this.originalDBService.deleteDataById(data._id);
|
|
151
|
+
|
|
152
|
+
data._originalId = data._id;
|
|
153
|
+
data._archived = new Date();
|
|
154
|
+
delete data._id;
|
|
155
|
+
|
|
156
|
+
return await this.saveData(data, dontSetToService);
|
|
157
|
+
} catch (error) {
|
|
158
|
+
throw new DyFM_Error({
|
|
159
|
+
...this.getDefaultErrorSettings(
|
|
160
|
+
'archiveData',
|
|
161
|
+
error
|
|
162
|
+
),
|
|
163
|
+
|
|
164
|
+
errorCode: 'NTS-ADS-AD0',
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
override async saveData(data?: T, dontSetToService?: boolean): Promise<T> {
|
|
170
|
+
try {
|
|
171
|
+
data = this.ensureData(data);
|
|
172
|
+
|
|
173
|
+
if (!data?._originalId) {
|
|
174
|
+
throw new DyFM_Error({
|
|
175
|
+
...this.getDefaultErrorSettings(
|
|
176
|
+
'saveData',
|
|
177
|
+
new Error(`saveData failed, originalId is missing! (${this.dataParams.dataName})`)
|
|
178
|
+
),
|
|
179
|
+
|
|
180
|
+
errorCode: 'NTS-ADS-SD1',
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (!data?._archived) {
|
|
185
|
+
throw new DyFM_Error({
|
|
186
|
+
...this.getDefaultErrorSettings(
|
|
187
|
+
'saveData',
|
|
188
|
+
new Error(`saveData failed, data is not archived! (${this.dataParams.dataName})`)
|
|
189
|
+
),
|
|
190
|
+
|
|
191
|
+
errorCode: 'NTS-ADS-SD2',
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return await super.saveData(data, dontSetToService);
|
|
196
|
+
} catch (error) {
|
|
197
|
+
throw new DyFM_Error({
|
|
198
|
+
...this.getDefaultErrorSettings(
|
|
199
|
+
'saveData',
|
|
200
|
+
error
|
|
201
|
+
),
|
|
202
|
+
|
|
203
|
+
errorCode: 'NTS-ADS-SD0',
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|