@futdevpro/nts-dynamo 1.15.153 → 1.15.154
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/README.md +18 -3
- package/__documentations/2026-08-22-content-free-process-error-boundary.md +91 -0
- package/build/_models/control-models/app-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/app-params.control-model.js +1 -2
- package/build/_models/control-models/app-params.control-model.js.map +1 -1
- package/build/_modules/server/index.d.ts +4 -0
- package/build/_modules/server/index.d.ts.map +1 -1
- package/build/_modules/server/index.js +5 -0
- package/build/_modules/server/index.js.map +1 -1
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.d.ts +9 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.d.ts.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.js +13 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.js.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.d.ts +20 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.d.ts.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.js +24 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.js.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.d.ts +19 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.d.ts.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.js +83 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.js.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.interface.d.ts +19 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.interface.d.ts.map +1 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.interface.js +3 -0
- package/build/_modules/server/safe-diagnostic/safe-diagnostic.interface.js.map +1 -0
- package/build/_services/core/global.service.d.ts +3 -3
- package/build/_services/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +24 -18
- 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 +71 -199
- package/build/_services/server/app.server.js.map +1 -1
- package/package.json +1 -1
- package/src/_models/control-models/app-params.control-model.spec.ts +23 -19
- package/src/_models/control-models/app-params.control-model.ts +10 -9
- package/src/_modules/server/index.ts +8 -2
- package/src/_modules/server/safe-diagnostic/safe-diagnostic-cause.type-enum.ts +8 -0
- package/src/_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum.ts +19 -0
- package/src/_modules/server/safe-diagnostic/safe-diagnostic.control-service.spec.ts +124 -0
- package/src/_modules/server/safe-diagnostic/safe-diagnostic.control-service.ts +99 -0
- package/src/_modules/server/safe-diagnostic/safe-diagnostic.interface.ts +20 -0
- package/src/_modules/server/server-status/db-readiness-probe.control-service.spec.ts +2 -2
- package/src/_services/core/global.service.ts +55 -54
- package/src/_services/server/app-safe-diagnostic.spec.ts +124 -0
- package/src/_services/server/app.server.ts +294 -347
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.server.d.ts","sourceRoot":"","sources":["../../../src/_services/server/app.server.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,GAAG,QAAQ,UAAU,CAAC,CAAC;AACtC,OAAO,OAAO,GAAG,QAAQ,SAAS,CAAC,CAAC;AAMpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAIL,UAAU,EAQX,MAAM,uBAAuB,CAAC;AAc/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uDAAuD,CAAC;AACzF,OAAO,EACL,uBAAuB,EACxB,MAAM,gEAAgE,CAAC;AAIxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;AAC/F,OAAO,EACL,4BAA4B,EAC7B,MAAM,2DAA2D,CAAC;AACnE,OAAO,EACL,4BAA4B,EAC7B,MAAM,4DAA4D,CAAC;AACpE,OAAO,EACL,2BAA2B,EAC5B,MAAM,2DAA2D,CAAC;AACnE,OAAO,EACL,mBAAmB,EACpB,MAAM,kDAAkD,CAAC;AAE1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAKnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"app.server.d.ts","sourceRoot":"","sources":["../../../src/_services/server/app.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,8 @@ const global_service_1 = require("../core/global.service");
|
|
|
30
30
|
const collection_growth_monitor_service_1 = require("../core/collection-growth-monitor.service");
|
|
31
31
|
const memory_guard_service_1 = require("../core/memory-guard.service");
|
|
32
32
|
const event_loop_diag_service_1 = require("../core/event-loop-diag.service");
|
|
33
|
+
const safe_diagnostic_stage_type_enum_1 = require("../../_modules/server/safe-diagnostic/safe-diagnostic-stage.type-enum");
|
|
34
|
+
const safe_diagnostic_control_service_1 = require("../../_modules/server/safe-diagnostic/safe-diagnostic.control-service");
|
|
33
35
|
class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
34
36
|
systemControls = new app_system_controls_control_model_1.DyNTS_AppSystemControls();
|
|
35
37
|
get started() {
|
|
@@ -85,79 +87,39 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
85
87
|
return global_settings_const_1.DyNTS_global_settings.log_settings.functions;
|
|
86
88
|
}
|
|
87
89
|
debugLog = global_settings_const_1.DyNTS_global_settings.log_settings.server_debug;
|
|
90
|
+
reportSafeDiagnostic(code, stage, error, status = 500) {
|
|
91
|
+
const configuredPrefix = global_settings_const_1.DyNTS_global_settings.systemShortCodeName;
|
|
92
|
+
const prefix = configuredPrefix && /^[A-Z][A-Z0-9_-]{1,31}$/.test(configuredPrefix)
|
|
93
|
+
? configuredPrefix
|
|
94
|
+
: 'DYNTS';
|
|
95
|
+
return safe_diagnostic_control_service_1.DyNTS_SafeDiagnostic_ControlService.report({
|
|
96
|
+
code: `${prefix}|${code}`,
|
|
97
|
+
stage: stage,
|
|
98
|
+
error: error,
|
|
99
|
+
status: status,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
forwardSafeDiagnostic(diagnostic) {
|
|
103
|
+
try {
|
|
104
|
+
const pending = global_service_1.DyNTS_GlobalService.globalErrorHandler?.(safe_diagnostic_control_service_1.DyNTS_SafeDiagnostic_ControlService.toError(diagnostic));
|
|
105
|
+
void pending?.catch((error) => {
|
|
106
|
+
this.reportSafeDiagnostic('DYNTS-AS0-GLOBAL-HANDLER-REJECTED', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.globalErrorHandler, error);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
this.reportSafeDiagnostic('DYNTS-AS0-GLOBAL-HANDLER-THREW', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.globalErrorHandler, error);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
88
113
|
constructor( /* extended?: boolean */) {
|
|
89
114
|
super();
|
|
90
115
|
/* dotenv.config() */
|
|
91
|
-
process.on('unhandledRejection', (
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
fsm_dynamo_1.DyFM_Log.H_error('Unhandled Rejection:', p_passWhatIsThis_maybeThePromise?.toString(), '\n Rejection reason:', reason_theError?.stack?.split('at')?.[0],
|
|
97
|
-
/* '\n ErrorCode:', (reason as any)?.code, */
|
|
98
|
-
'\n\n Stack:', reason_theError?.stack?.replaceAll?.('\n at', '\n at'));
|
|
99
|
-
}
|
|
100
|
-
try {
|
|
101
|
-
global_service_1.DyNTS_GlobalService.globalErrorHandler?.(new fsm_dynamo_1.DyFM_Error({
|
|
102
|
-
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-BASE-UR`,
|
|
103
|
-
message: `Unhandled Rejection!: "${reason_theError?.stack?.split('at')?.[0]}"`,
|
|
104
|
-
userMessage: this.defaultErrorUserMsg,
|
|
105
|
-
addECToUserMsg: true,
|
|
106
|
-
error: reason_theError,
|
|
107
|
-
additionalContent: {
|
|
108
|
-
reason: reason_theError,
|
|
109
|
-
rejectedPromise: p_passWhatIsThis_maybeThePromise,
|
|
110
|
-
},
|
|
111
|
-
systemVersion: global_settings_const_1.DyNTS_global_settings.systemVersion,
|
|
112
|
-
level: fsm_dynamo_1.DyFM_ErrorLevel.critical,
|
|
113
|
-
}));
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
116
|
-
fsm_dynamo_1.DyFM_Log.error('globalErrorHandler (MULTILEVEL) ERROR:', error);
|
|
117
|
-
}
|
|
116
|
+
process.on('unhandledRejection', (reason) => {
|
|
117
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-BASE-UR', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.unhandledRejection, reason);
|
|
118
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
118
119
|
});
|
|
119
120
|
this.asyncConstruct( /* extended */).catch((error) => {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
error.additionalContent.constructErrors.forEach((errorItem) => {
|
|
123
|
-
fsm_dynamo_1.DyFM_Error.logSimple('(constructor asyncConstruct.catch) error:', errorItem);
|
|
124
|
-
/* if (errorItem instanceof DyFM_Error) {
|
|
125
|
-
errorItem.logSimple(`(constructor asyncConstruct.catch) error:\n`);
|
|
126
|
-
} else {
|
|
127
|
-
DyFM_Log.H_warn(
|
|
128
|
-
'(constructor asyncConstruct.catch) additional error content:\n',
|
|
129
|
-
errorItem
|
|
130
|
-
);
|
|
131
|
-
} */
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
fsm_dynamo_1.DyFM_Log.H_warn('(constructor asyncConstruct.catch) additional error content:\n', error?.additionalContent);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
fsm_dynamo_1.DyFM_Error.logSimple('(constructor asyncConstruct.catch) error:', error);
|
|
139
|
-
/* if (
|
|
140
|
-
!DyNTS_global_settings.log_settings.highDetailedLogs &&
|
|
141
|
-
(error instanceof DyFM_Error)
|
|
142
|
-
) {
|
|
143
|
-
error.logSimple(
|
|
144
|
-
`Application: "${this.params?.name}" start failed. (constructor asyncConstruct.catch)` +
|
|
145
|
-
'\n all error messages (from this stack):\n\n"' +
|
|
146
|
-
error._messages.join('"\n\n"') + '"\n\n'
|
|
147
|
-
);
|
|
148
|
-
} else if (error instanceof DyFM_Error) {
|
|
149
|
-
DyFM_Log.H_error(
|
|
150
|
-
`Application: "${this.params?.name}" start failed. (constructor asyncConstruct.catch)`,
|
|
151
|
-
`\n ERROR:`, error
|
|
152
|
-
);
|
|
153
|
-
} */
|
|
154
|
-
const message = error?.additionalContent?.constructErrors?.flatMap((errorItem) => {
|
|
155
|
-
return errorItem?._messages ?? [];
|
|
156
|
-
})?.join?.('\n') ??
|
|
157
|
-
error?.errors?.flatMap((errorItem) => errorItem?._messages ?? [errorItem?.message])?.join?.('\n') ??
|
|
158
|
-
error?.message ??
|
|
159
|
-
'UNKNOWN';
|
|
160
|
-
fsm_dynamo_1.DyFM_Log.testError('Application start failed:\n', message);
|
|
121
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-BOOTSTRAP-FAILED', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.bootstrap, error);
|
|
122
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
161
123
|
process.exit(1);
|
|
162
124
|
});
|
|
163
125
|
}
|
|
@@ -264,8 +226,8 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
264
226
|
}
|
|
265
227
|
if (this.postProcess) {
|
|
266
228
|
await this.postProcess().catch((error) => {
|
|
267
|
-
|
|
268
|
-
|
|
229
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-POST-PROCESS-FAILED', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.postProcess, error);
|
|
230
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
269
231
|
});
|
|
270
232
|
}
|
|
271
233
|
// FR-193 — bedrock OOM korai-figyelmeztetés: feltelepítjük a heap-watchdogot, ha
|
|
@@ -278,7 +240,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
278
240
|
}
|
|
279
241
|
}
|
|
280
242
|
catch (memoryGuardError) {
|
|
281
|
-
|
|
243
|
+
this.reportSafeDiagnostic('DYNTS-AS0-MEMORY-GUARD-SKIPPED', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.memoryGuard, memoryGuardError);
|
|
282
244
|
}
|
|
283
245
|
// BFR-OVERSEER-007 — event-loop-lag diag a MemoryGuard MELLÉ: a „process él, HTTP néma" wedge
|
|
284
246
|
// belső mérése (natív histogram, olcsó). Observation-only, sosem dob; a /server/diag olvas belőle.
|
|
@@ -286,7 +248,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
286
248
|
event_loop_diag_service_1.DyNTS_EventLoopDiag.getInstance().install();
|
|
287
249
|
}
|
|
288
250
|
catch (eventLoopDiagError) {
|
|
289
|
-
|
|
251
|
+
this.reportSafeDiagnostic('DYNTS-AS0-EVENT-LOOP-DIAG-SKIPPED', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.eventLoopDiagnostic, eventLoopDiagError);
|
|
290
252
|
}
|
|
291
253
|
// FR-258 / SR-4 — proactive collection-growth monitor (companion to the MemoryGuard). Warns
|
|
292
254
|
// into the Errors-sink when a collection grows unbounded, BEFORE it can be loaded into heap and
|
|
@@ -297,7 +259,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
297
259
|
}
|
|
298
260
|
}
|
|
299
261
|
catch (cgmError) {
|
|
300
|
-
|
|
262
|
+
this.reportSafeDiagnostic('DYNTS-AS0-COLLECTION-GROWTH-MONITOR-SKIPPED', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.collectionGrowthMonitor, cgmError);
|
|
301
263
|
}
|
|
302
264
|
if (!extended) {
|
|
303
265
|
await this.ready();
|
|
@@ -311,14 +273,6 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
311
273
|
}
|
|
312
274
|
catch (error) {
|
|
313
275
|
this.constructErrors.push(error);
|
|
314
|
-
if (this.deepLog) {
|
|
315
|
-
if (global_settings_const_1.DyNTS_global_settings.log_settings.highDetailedLogs) {
|
|
316
|
-
fsm_dynamo_1.DyFM_Log.H_error(`"${this._params.name}" start failed (in asyncConstruct (highDetailedLog)). `, `\n\n construct ERRORS:`, this.constructErrors, '\n\nlast error:', error);
|
|
317
|
-
}
|
|
318
|
-
else {
|
|
319
|
-
fsm_dynamo_1.DyFM_Log.H_error(`"${this._params.name}" start failed (in asyncConstruct). `, `\n\n construct ERRORS:`, this.getSimplifiedConstructErrors(), '\n\nlast error:', error instanceof fsm_dynamo_1.DyFM_Error ? error.getErrorSimplified() : error);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
276
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
323
277
|
...this._getDefaultErrorSettings('asyncConstruct', error),
|
|
324
278
|
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-001`,
|
|
@@ -343,14 +297,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
343
297
|
let ready = false;
|
|
344
298
|
const start = +new Date();
|
|
345
299
|
if (this.constructErrors.length) {
|
|
346
|
-
|
|
347
|
-
if (global_settings_const_1.DyNTS_global_settings.log_settings.highDetailedLogs) {
|
|
348
|
-
fsm_dynamo_1.DyFM_Log.H_error(`"${this._params.name}" start failed. (ready; constructErrors check 1)`, `\n construct ERRORS:`, this.constructErrors);
|
|
349
|
-
}
|
|
350
|
-
else {
|
|
351
|
-
fsm_dynamo_1.DyFM_Log.H_error(`"${this._params.name}" start failed. (ready; constructErrors check 1)`, `\n construct ERRORS:`, this.getSimplifiedConstructErrors());
|
|
352
|
-
}
|
|
353
|
-
}
|
|
300
|
+
this.reportSafeDiagnostic('DYNTS-AS0-READINESS-CONSTRUCT-ERROR', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.readiness, this.constructErrors[0]);
|
|
354
301
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
355
302
|
...this._getDefaultErrorSettings('ready', new Error(`"${this._params.name}" start failed.`)),
|
|
356
303
|
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-R01`,
|
|
@@ -365,22 +312,12 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
365
312
|
this.systemControls.httpServer.getIsReady() &&
|
|
366
313
|
this.systemControls.httpsServer.getIsReady());
|
|
367
314
|
}
|
|
368
|
-
else {
|
|
369
|
-
fsm_dynamo_1.DyFM_Log.error(`"${this._params.name}" APP NOT INITIALIZED while trying to get ready.`);
|
|
370
|
-
}
|
|
371
315
|
if (!ready) {
|
|
372
316
|
await fsm_dynamo_1.DyFM_Async.wait(100);
|
|
373
317
|
}
|
|
374
318
|
}
|
|
375
319
|
if (timeout < +new Date() - start) {
|
|
376
|
-
|
|
377
|
-
if (global_settings_const_1.DyNTS_global_settings.log_settings.highDetailedLogs) {
|
|
378
|
-
fsm_dynamo_1.DyFM_Log.H_error(`"${this._params.name}" start failed. (ready; TIMEOUT check)`, `\n construct ERRORS:`, this.constructErrors);
|
|
379
|
-
}
|
|
380
|
-
else {
|
|
381
|
-
fsm_dynamo_1.DyFM_Log.H_error(`"${this._params.name}" start failed. (ready; TIMEOUT check)`, `\n construct ERRORS:`, this.getSimplifiedConstructErrors());
|
|
382
|
-
}
|
|
383
|
-
}
|
|
320
|
+
this.reportSafeDiagnostic('DYNTS-AS0-READINESS-TIMEOUT', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.readiness, this.constructErrors[0] ?? new Error('readiness-timeout'));
|
|
384
321
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
385
322
|
...this._getDefaultErrorSettings('ready', new Error(`"${this._params.name}" start failed. TIMEOUT`)),
|
|
386
323
|
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-R02`,
|
|
@@ -396,14 +333,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
396
333
|
});
|
|
397
334
|
}
|
|
398
335
|
if (this.constructErrors.length) {
|
|
399
|
-
|
|
400
|
-
if (global_settings_const_1.DyNTS_global_settings.log_settings.highDetailedLogs) {
|
|
401
|
-
fsm_dynamo_1.DyFM_Log.H_error(`"${this._params.name}" start failed. (ready; constructErrors check 2)`, `\n construct ERRORS:`, this.constructErrors);
|
|
402
|
-
}
|
|
403
|
-
else {
|
|
404
|
-
fsm_dynamo_1.DyFM_Log.H_error(`"${this._params.name}" start failed. (ready; constructErrors check 2)`, `\n construct ERRORS:`, this.getSimplifiedConstructErrors());
|
|
405
|
-
}
|
|
406
|
-
}
|
|
336
|
+
this.reportSafeDiagnostic('DYNTS-AS0-READINESS-LATE-CONSTRUCT-ERROR', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.readiness, this.constructErrors[0]);
|
|
407
337
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
408
338
|
...this._getDefaultErrorSettings('ready', new Error(`"${this._params.name}" start failed.`)),
|
|
409
339
|
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-R03`,
|
|
@@ -427,7 +357,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
427
357
|
if (this.systemControls.httpsServer.init && !this.systemControls.httpsServer.started) {
|
|
428
358
|
msg += `\nHTTPS Server start failed.`;
|
|
429
359
|
}
|
|
430
|
-
|
|
360
|
+
this.reportSafeDiagnostic('DYNTS-AS0-READINESS-UNKNOWN', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.readiness, this.constructErrors[0] ?? new Error('readiness-unknown'));
|
|
431
361
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
432
362
|
...this._getDefaultErrorSettings('ready', new Error(msg)),
|
|
433
363
|
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-R04`,
|
|
@@ -569,7 +499,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
569
499
|
this.mongoose.connection
|
|
570
500
|
.once('open', () => {
|
|
571
501
|
this.systemControls.mongoose.started = true;
|
|
572
|
-
fsm_dynamo_1.DyFM_Log.success(
|
|
502
|
+
fsm_dynamo_1.DyFM_Log.success('\nConnected to MongoDB.\n');
|
|
573
503
|
resolve();
|
|
574
504
|
// FR-258 / SR-2 — install declared-retention TTL indexes. DEFERRED + fire-and-forget +
|
|
575
505
|
// fully non-fatal: a create-if-missing index op (and the `indexes()` probes) must NOT
|
|
@@ -593,31 +523,13 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
593
523
|
// Ha a mongoose később mégis tudna csatlakozni, az 'open' event
|
|
594
524
|
// beállítja a started flag-et, így a runtime DB-műveletek elindulnak.
|
|
595
525
|
this.systemControls.mongoose.init = false;
|
|
596
|
-
const
|
|
597
|
-
|
|
598
|
-
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-SDB1`,
|
|
599
|
-
message: `Unable to connect to MongoDB server (${this._params.dbUri}), ` +
|
|
600
|
-
`ERROR: ${error}`,
|
|
601
|
-
level: fsm_dynamo_1.DyFM_ErrorLevel.serious,
|
|
602
|
-
});
|
|
603
|
-
fsm_dynamo_1.DyFM_Log.H_error(`\nUnable to connect to MongoDB server (${this._params.dbUri}).` +
|
|
604
|
-
`\nServer will continue WITHOUT DB connection.` +
|
|
605
|
-
`\nDB-using endpoints will fail at runtime until connection recovers.`);
|
|
606
|
-
if (this.debugLog)
|
|
607
|
-
fsm_dynamo_1.DyFM_Log.S_error(`\nMongoDB connect ERROR: `, error);
|
|
608
|
-
global_service_1.DyNTS_GlobalService.globalErrorHandler?.(d_error);
|
|
526
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-SDB1', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.databaseConnect, error, 503);
|
|
527
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
609
528
|
resolve();
|
|
610
529
|
}
|
|
611
530
|
else {
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
const d_error = new fsm_dynamo_1.DyFM_Error({
|
|
615
|
-
...this._getDefaultErrorSettings('mongoose.connection.on(error)', error),
|
|
616
|
-
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-SDB2`,
|
|
617
|
-
message: `MongoDB ERROR: ${error}`,
|
|
618
|
-
level: fsm_dynamo_1.DyFM_ErrorLevel.critical,
|
|
619
|
-
});
|
|
620
|
-
global_service_1.DyNTS_GlobalService.globalErrorHandler?.(d_error);
|
|
531
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-SDB2', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.databaseRuntime, error, 503);
|
|
532
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
621
533
|
}
|
|
622
534
|
});
|
|
623
535
|
try {
|
|
@@ -655,11 +567,13 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
655
567
|
await this.mongoose.disconnect().catch(() => undefined);
|
|
656
568
|
await this.mongoose.connect(this._params.dbUri, this._params.dbOptions);
|
|
657
569
|
},
|
|
658
|
-
log: (msg) =>
|
|
570
|
+
log: (msg) => {
|
|
571
|
+
this.reportSafeDiagnostic('DYNTS-AS0-MONGO-RECONNECT-EVENT', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.mongoReconnectGuard, msg, 503);
|
|
572
|
+
},
|
|
659
573
|
});
|
|
660
574
|
}
|
|
661
575
|
catch (guardErr) {
|
|
662
|
-
|
|
576
|
+
this.reportSafeDiagnostic('DYNTS-AS0-MONGO-RECONNECT-FAILED', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.mongoReconnectGuard, guardErr, 503);
|
|
663
577
|
}
|
|
664
578
|
}
|
|
665
579
|
/**
|
|
@@ -703,14 +617,11 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
703
617
|
}
|
|
704
618
|
else if (action === 'differs') {
|
|
705
619
|
// Live index has a different TTL — left untouched at boot (see ensureRetentionTtlIndex doc).
|
|
706
|
-
|
|
707
|
-
`declared ${Math.round(ttlSeconds / 86400)}d (${ttlSeconds}s) — left as-is (no boot-time rebuild). ` +
|
|
708
|
-
`Apply the change via maintenance if intended.`);
|
|
620
|
+
this.reportSafeDiagnostic('DYNTS-AS0-RETENTION-INDEX-DIFFERS', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.retention, new Error('retention-index-differs'));
|
|
709
621
|
}
|
|
710
622
|
}
|
|
711
623
|
catch (idxErr) {
|
|
712
|
-
|
|
713
|
-
`${idxErr instanceof Error ? idxErr.message : String(idxErr)}`);
|
|
624
|
+
this.reportSafeDiagnostic('DYNTS-AS0-RETENTION-INDEX-FAILED', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.retention, idxErr);
|
|
714
625
|
}
|
|
715
626
|
}
|
|
716
627
|
if (ensured > 0) {
|
|
@@ -718,8 +629,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
718
629
|
}
|
|
719
630
|
}
|
|
720
631
|
catch (err) {
|
|
721
|
-
|
|
722
|
-
`${err instanceof Error ? err.message : String(err)}`);
|
|
632
|
+
this.reportSafeDiagnostic('DYNTS-AS0-RETENTION-INSTALLER-FAILED', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.retention, err);
|
|
723
633
|
}
|
|
724
634
|
}
|
|
725
635
|
/**
|
|
@@ -780,7 +690,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
780
690
|
const errorStack = error.stack.split('\n');
|
|
781
691
|
errorStack.splice(1, 2);
|
|
782
692
|
error.stack = errorStack.join('\n');
|
|
783
|
-
|
|
693
|
+
this.reportSafeDiagnostic('DYNTS-AS0-OPEN-ROUTE-CONFIGURATION', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.routing, error);
|
|
784
694
|
throw error;
|
|
785
695
|
}
|
|
786
696
|
await this.initOpenExpress();
|
|
@@ -816,7 +726,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
816
726
|
const errorStack = error.stack.split('\n');
|
|
817
727
|
errorStack.splice(1, 2);
|
|
818
728
|
error.stack = errorStack.join('\n');
|
|
819
|
-
|
|
729
|
+
this.reportSafeDiagnostic('DYNTS-AS0-SECURE-ROUTE-CONFIGURATION', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.routing, error);
|
|
820
730
|
throw error;
|
|
821
731
|
}
|
|
822
732
|
await this.initSecureExpress();
|
|
@@ -895,8 +805,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
895
805
|
resolve();
|
|
896
806
|
})
|
|
897
807
|
.on('error', (error) => {
|
|
898
|
-
|
|
899
|
-
fsm_dynamo_1.DyFM_Log.error(`\nHTTPS (secure) server ERROR`, error);
|
|
808
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-HTTPS-ERROR', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.httpsServer, error, 503);
|
|
900
809
|
if (!this.systemControls.httpsServer.started) {
|
|
901
810
|
const d_error = new fsm_dynamo_1.DyFM_Error({
|
|
902
811
|
...this._getDefaultErrorSettings('startExpresses', error),
|
|
@@ -904,29 +813,16 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
904
813
|
message: `HTTPS (secure) start server ERROR`,
|
|
905
814
|
});
|
|
906
815
|
this.constructErrors.push(d_error);
|
|
907
|
-
|
|
816
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
908
817
|
reject(d_error);
|
|
909
818
|
}
|
|
910
819
|
else {
|
|
911
|
-
|
|
912
|
-
...this._getDefaultErrorSettings('httpsServer.on(error)', error),
|
|
913
|
-
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-SE2`,
|
|
914
|
-
message: `HTTPS (secure) server ERROR`,
|
|
915
|
-
level: fsm_dynamo_1.DyFM_ErrorLevel.serious,
|
|
916
|
-
});
|
|
917
|
-
global_service_1.DyNTS_GlobalService.globalErrorHandler?.(d_error);
|
|
820
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
918
821
|
}
|
|
919
822
|
})
|
|
920
823
|
.on('uncaughtException', (exception) => {
|
|
921
|
-
const
|
|
922
|
-
|
|
923
|
-
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-SE3`,
|
|
924
|
-
message: `HTTPS (secure) server uncaughtException`,
|
|
925
|
-
level: fsm_dynamo_1.DyFM_ErrorLevel.critical,
|
|
926
|
-
});
|
|
927
|
-
if (this.debugLog)
|
|
928
|
-
fsm_dynamo_1.DyFM_Log.warn(`\nHTTPS (secure) server uncaughtException`, d_error);
|
|
929
|
-
global_service_1.DyNTS_GlobalService.globalErrorHandler?.(d_error);
|
|
824
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-HTTPS-UNCAUGHT', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.httpsServer, exception);
|
|
825
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
930
826
|
});
|
|
931
827
|
});
|
|
932
828
|
}
|
|
@@ -946,8 +842,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
946
842
|
resolve();
|
|
947
843
|
})
|
|
948
844
|
.on('error', (error) => {
|
|
949
|
-
|
|
950
|
-
fsm_dynamo_1.DyFM_Log.error(`\nHTTP (open) server ERROR`, error);
|
|
845
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-HTTP-ERROR', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.httpServer, error, 503);
|
|
951
846
|
if (!this.systemControls.httpServer.started) {
|
|
952
847
|
const d_error = new fsm_dynamo_1.DyFM_Error({
|
|
953
848
|
...this._getDefaultErrorSettings('startExpresses', error),
|
|
@@ -955,30 +850,16 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
955
850
|
message: `HTTP (open) start server ERROR`,
|
|
956
851
|
});
|
|
957
852
|
this.constructErrors.push(d_error);
|
|
958
|
-
|
|
853
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
959
854
|
reject(d_error);
|
|
960
855
|
}
|
|
961
856
|
else {
|
|
962
|
-
|
|
963
|
-
...this._getDefaultErrorSettings('httpServer.on(error)', error),
|
|
964
|
-
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-SE4`,
|
|
965
|
-
message: `HTTP (open) server ERROR`,
|
|
966
|
-
level: fsm_dynamo_1.DyFM_ErrorLevel.serious,
|
|
967
|
-
});
|
|
968
|
-
global_service_1.DyNTS_GlobalService.globalErrorHandler?.(d_error);
|
|
857
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
969
858
|
}
|
|
970
859
|
})
|
|
971
860
|
.on('uncaughtException', (exception) => {
|
|
972
|
-
const
|
|
973
|
-
|
|
974
|
-
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-SE5`,
|
|
975
|
-
message: `HTTP (open) server uncaughtException`,
|
|
976
|
-
level: fsm_dynamo_1.DyFM_ErrorLevel.critical,
|
|
977
|
-
});
|
|
978
|
-
if (this.debugLog) {
|
|
979
|
-
fsm_dynamo_1.DyFM_Log.warn(`\nHTTP (open) server uncaughtException`, d_error);
|
|
980
|
-
}
|
|
981
|
-
global_service_1.DyNTS_GlobalService.globalErrorHandler?.(d_error);
|
|
861
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-HTTP-UNCAUGHT', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.httpServer, exception);
|
|
862
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
982
863
|
});
|
|
983
864
|
});
|
|
984
865
|
}
|
|
@@ -996,30 +877,21 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
996
877
|
async expressErrorHandling(error, req, res, next) {
|
|
997
878
|
try {
|
|
998
879
|
if (error) {
|
|
999
|
-
const
|
|
1000
|
-
|
|
1001
|
-
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-EEH1`,
|
|
1002
|
-
message: `Express ERROR`,
|
|
1003
|
-
additionalContent: {
|
|
1004
|
-
req,
|
|
1005
|
-
res,
|
|
1006
|
-
},
|
|
1007
|
-
level: fsm_dynamo_1.DyFM_ErrorLevel.error,
|
|
1008
|
-
});
|
|
1009
|
-
await global_service_1.DyNTS_GlobalService.globalErrorHandler?.(d_error, req, res);
|
|
880
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-EXPRESS-ERROR', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.expressFallback, error);
|
|
881
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
1010
882
|
// Kliens-safe strip (BFR-FDPAUTHSERVICE-002): az express-error út eddig NYERS error-t küldött
|
|
1011
883
|
// (0 strip) — DyFM-nél belső stack/verzió/issuer, axios-jellegű error-nál akár auth-header is
|
|
1012
884
|
// kimehetett. A strip-szabályok SSOT-ja a DyNTS_ClientSafeError_Util.
|
|
1013
885
|
res.send(client_safe_error_util_1.DyNTS_ClientSafeError_Util.toClientSafe(error));
|
|
1014
886
|
}
|
|
1015
887
|
else {
|
|
1016
|
-
|
|
1017
|
-
|
|
888
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-EXPRESS-MISSING-ERROR', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.expressFallback);
|
|
889
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
1018
890
|
}
|
|
1019
891
|
}
|
|
1020
892
|
catch (error) {
|
|
1021
|
-
|
|
1022
|
-
|
|
893
|
+
const diagnostic = this.reportSafeDiagnostic('DYNTS-AS0-EXPRESS-MULTILEVEL', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.expressFallback, error);
|
|
894
|
+
this.forwardSafeDiagnostic(diagnostic);
|
|
1023
895
|
}
|
|
1024
896
|
}
|
|
1025
897
|
/**
|
|
@@ -1049,7 +921,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
1049
921
|
errorStack.splice(1, 4);
|
|
1050
922
|
error.stack = errorStack.join('\n'); */
|
|
1051
923
|
error.stack = module.stackLocation;
|
|
1052
|
-
|
|
924
|
+
this.reportSafeDiagnostic('DYNTS-AS0-SECURE-ROUTE-DUPLICATION', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.routing, error);
|
|
1053
925
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
1054
926
|
...this._getDefaultErrorSettings('mountSecureRoutes', error),
|
|
1055
927
|
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-MSR1`,
|
|
@@ -1092,7 +964,7 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
1092
964
|
errorStack.splice(1, 4);
|
|
1093
965
|
error.stack = errorStack.join('\n'); */
|
|
1094
966
|
error.stack = module.stackLocation;
|
|
1095
|
-
|
|
967
|
+
this.reportSafeDiagnostic('DYNTS-AS0-OPEN-ROUTE-DUPLICATION', safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.routing, error);
|
|
1096
968
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
1097
969
|
...this._getDefaultErrorSettings('mountOpenRoutes', error),
|
|
1098
970
|
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-AS0-MOR1`,
|