@futdevpro/nts-dynamo 1.15.103 → 1.15.105
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/.dynamo/logs/cicd-pipeline/output.log +1607 -1547
- package/.dynamo/logs/cicd-pipeline/status.json +34 -34
- package/build/_collections/client-safe-error.util.d.ts +9 -3
- package/build/_collections/client-safe-error.util.d.ts.map +1 -1
- package/build/_collections/client-safe-error.util.js +32 -3
- package/build/_collections/client-safe-error.util.js.map +1 -1
- package/build/_modules/server/server-status/server-status.control-service.d.ts +22 -1
- package/build/_modules/server/server-status/server-status.control-service.d.ts.map +1 -1
- package/build/_modules/server/server-status/server-status.control-service.js +22 -0
- package/build/_modules/server/server-status/server-status.control-service.js.map +1 -1
- package/package.json +3 -3
- package/src/_collections/client-safe-error.util.spec.ts +58 -2
- package/src/_collections/client-safe-error.util.ts +38 -3
- package/src/_modules/server/server-status/server-status.control-service.ts +26 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"pid":
|
|
3
|
-
"startedAt": "2026-07-
|
|
4
|
-
"startedAtMs":
|
|
2
|
+
"pid": 66526,
|
|
3
|
+
"startedAt": "2026-07-20T04:28:08.610Z",
|
|
4
|
+
"startedAtMs": 1784521688610,
|
|
5
5
|
"phase": "npm-publish",
|
|
6
6
|
"pipelineComplete": false,
|
|
7
7
|
"serverRunning": false,
|
|
@@ -10,63 +10,63 @@
|
|
|
10
10
|
"steps": {
|
|
11
11
|
"validate-secrets": {
|
|
12
12
|
"status": "ok",
|
|
13
|
-
"startedAt": "2026-07-
|
|
13
|
+
"startedAt": "2026-07-20T04:28:08.632Z",
|
|
14
14
|
"logLineStart": 2,
|
|
15
|
-
"logLineEnd":
|
|
16
|
-
"durationSec": 0.
|
|
15
|
+
"logLineEnd": 8,
|
|
16
|
+
"durationSec": 0.6
|
|
17
17
|
},
|
|
18
18
|
"discord-start": {
|
|
19
19
|
"status": "ok",
|
|
20
|
-
"startedAt": "2026-07-
|
|
21
|
-
"logLineStart":
|
|
22
|
-
"logLineEnd":
|
|
23
|
-
"durationSec":
|
|
20
|
+
"startedAt": "2026-07-20T04:28:10.224Z",
|
|
21
|
+
"logLineStart": 9,
|
|
22
|
+
"logLineEnd": 14,
|
|
23
|
+
"durationSec": 4
|
|
24
24
|
},
|
|
25
25
|
"pre-flight": {
|
|
26
26
|
"status": "ok",
|
|
27
|
-
"startedAt": "2026-07-
|
|
28
|
-
"logLineStart":
|
|
29
|
-
"logLineEnd":
|
|
27
|
+
"startedAt": "2026-07-20T04:28:15.238Z",
|
|
28
|
+
"logLineStart": 15,
|
|
29
|
+
"logLineEnd": 17,
|
|
30
30
|
"durationSec": 0.2
|
|
31
31
|
},
|
|
32
32
|
"install": {
|
|
33
33
|
"status": "ok",
|
|
34
|
-
"startedAt": "2026-07-
|
|
35
|
-
"logLineStart":
|
|
36
|
-
"logLineEnd":
|
|
37
|
-
"durationSec":
|
|
34
|
+
"startedAt": "2026-07-20T04:28:16.460Z",
|
|
35
|
+
"logLineStart": 18,
|
|
36
|
+
"logLineEnd": 140,
|
|
37
|
+
"durationSec": 58.6
|
|
38
38
|
},
|
|
39
39
|
"check-dev-leftovers": {
|
|
40
40
|
"status": "ok",
|
|
41
|
-
"startedAt": "2026-07-
|
|
42
|
-
"logLineStart":
|
|
43
|
-
"logLineEnd":
|
|
44
|
-
"durationSec":
|
|
41
|
+
"startedAt": "2026-07-20T04:29:16.034Z",
|
|
42
|
+
"logLineStart": 141,
|
|
43
|
+
"logLineEnd": 148,
|
|
44
|
+
"durationSec": 5.2
|
|
45
45
|
},
|
|
46
46
|
"build": {
|
|
47
47
|
"status": "ok",
|
|
48
|
-
"startedAt": "2026-07-
|
|
49
|
-
"logLineStart":
|
|
50
|
-
"logLineEnd":
|
|
51
|
-
"durationSec":
|
|
48
|
+
"startedAt": "2026-07-20T04:29:22.263Z",
|
|
49
|
+
"logLineStart": 149,
|
|
50
|
+
"logLineEnd": 150,
|
|
51
|
+
"durationSec": 35.3
|
|
52
52
|
},
|
|
53
53
|
"test": {
|
|
54
54
|
"status": "ok",
|
|
55
|
-
"startedAt": "2026-07-
|
|
56
|
-
"logLineStart":
|
|
57
|
-
"logLineEnd":
|
|
58
|
-
"durationSec":
|
|
55
|
+
"startedAt": "2026-07-20T04:29:58.562Z",
|
|
56
|
+
"logLineStart": 151,
|
|
57
|
+
"logLineEnd": 2850,
|
|
58
|
+
"durationSec": 29.9,
|
|
59
59
|
"testSummary": {
|
|
60
|
-
"totalSpecs":
|
|
60
|
+
"totalSpecs": 1521,
|
|
61
61
|
"failures": 0,
|
|
62
|
-
"passed":
|
|
63
|
-
"testDurationSec":
|
|
62
|
+
"passed": 1521,
|
|
63
|
+
"testDurationSec": 7.706
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"npm-publish": {
|
|
67
67
|
"status": "running",
|
|
68
|
-
"startedAt": "2026-07-
|
|
69
|
-
"logLineStart":
|
|
68
|
+
"startedAt": "2026-07-20T04:30:29.525Z",
|
|
69
|
+
"logLineStart": 2851,
|
|
70
70
|
"logLineEnd": null,
|
|
71
71
|
"durationSec": null
|
|
72
72
|
}
|
|
@@ -8,11 +8,15 @@
|
|
|
8
8
|
* 1. MINDIG ki (env-független, kliens sehol nem fogyasztja → 0 regresszió):
|
|
9
9
|
* `__localStack`, `stack`, `___systemVersion`, `___issuer`, `___issuerSystem`,
|
|
10
10
|
* `___issuerService`, `confidentialContent`, `error`, `errors` (a nyers belső error-lánc
|
|
11
|
-
* stack-eket hordoz).
|
|
11
|
+
* stack-eket hordoz), `_messages` (QA2-005: technikai message-lánc — belső URL-ek, DB-hibák).
|
|
12
12
|
* 2. CSAK prod-ban ki: `additionalContent` — test/dev környezetben a diagnosztikai state-snapshot
|
|
13
|
-
* szándékosan kimegy (a hibafelület-debug erre épül), prod-ban nem.
|
|
13
|
+
* szándékosan kimegy (a hibafelület-debug erre épül), prod-ban nem. KIVÉTEL (QA2-005):
|
|
14
|
+
* az `additionalContent.requestDebug` (FR-071 header-lista/belső-IP snapshot) env-FÜGGETLENÜL
|
|
15
|
+
* strip-elve — csak az error-store-ba perzisztálódik.
|
|
14
16
|
* 3. MARAD (kliens-kompatibilitás — a FDP-kliens error-interceptorok fogyasztják):
|
|
15
|
-
* `_message`, `_errorCodes`, `__userMessage`, `___status`, `level`.
|
|
17
|
+
* `_message`, `_errorCodes`, `__userMessage`, `___status`, `level`. QA2-005: a `_message`
|
|
18
|
+
* TARTALMA a user-safe `__userMessage`-re cserélve (a technikai üzenet — belső BE-BE URL,
|
|
19
|
+
* nyers Mongo E11000 — nem hagyhatja el a szervert; a mező-ALAK a kliens-kompat miatt marad).
|
|
16
20
|
*
|
|
17
21
|
* NEM-DyFM error (plain Error / axios-error / bármi más): minimál `{ message }` shape — a plain
|
|
18
22
|
* Error eddig is üres `{}`-ként szerializálódott (non-enumerable mezők), az axios-jellegű error-ok
|
|
@@ -24,6 +28,8 @@
|
|
|
24
28
|
export declare class DyNTS_ClientSafeError_Util {
|
|
25
29
|
/** A MINDIG strip-elendő DyFM-mezők (env-független — kliens-fogyasztás nélküli leak-vektorok). */
|
|
26
30
|
private static readonly alwaysStripKeys;
|
|
31
|
+
/** QA2-005 — generikus `_message` fallback, ha az errornak nincs `__userMessage`-e. */
|
|
32
|
+
private static readonly genericClientMessage;
|
|
27
33
|
/**
|
|
28
34
|
* Az error kliens-safe formára hozása a HTTP-response-küldés előtt.
|
|
29
35
|
* DyFM_Error: in-place strip (1-3. szabályok szerint); nem-DyFM object: minimál `{ message }`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-safe-error.util.d.ts","sourceRoot":"","sources":["../../src/_collections/client-safe-error.util.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"client-safe-error.util.d.ts","sourceRoot":"","sources":["../../src/_collections/client-safe-error.util.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,0BAA0B;IAErC,kGAAkG;IAClG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAcrC;IAEF,uFAAuF;IACvF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CACsC;IAElF;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAgD7C"}
|
|
@@ -13,11 +13,15 @@ const global_settings_const_1 = require("./global-settings.const");
|
|
|
13
13
|
* 1. MINDIG ki (env-független, kliens sehol nem fogyasztja → 0 regresszió):
|
|
14
14
|
* `__localStack`, `stack`, `___systemVersion`, `___issuer`, `___issuerSystem`,
|
|
15
15
|
* `___issuerService`, `confidentialContent`, `error`, `errors` (a nyers belső error-lánc
|
|
16
|
-
* stack-eket hordoz).
|
|
16
|
+
* stack-eket hordoz), `_messages` (QA2-005: technikai message-lánc — belső URL-ek, DB-hibák).
|
|
17
17
|
* 2. CSAK prod-ban ki: `additionalContent` — test/dev környezetben a diagnosztikai state-snapshot
|
|
18
|
-
* szándékosan kimegy (a hibafelület-debug erre épül), prod-ban nem.
|
|
18
|
+
* szándékosan kimegy (a hibafelület-debug erre épül), prod-ban nem. KIVÉTEL (QA2-005):
|
|
19
|
+
* az `additionalContent.requestDebug` (FR-071 header-lista/belső-IP snapshot) env-FÜGGETLENÜL
|
|
20
|
+
* strip-elve — csak az error-store-ba perzisztálódik.
|
|
19
21
|
* 3. MARAD (kliens-kompatibilitás — a FDP-kliens error-interceptorok fogyasztják):
|
|
20
|
-
* `_message`, `_errorCodes`, `__userMessage`, `___status`, `level`.
|
|
22
|
+
* `_message`, `_errorCodes`, `__userMessage`, `___status`, `level`. QA2-005: a `_message`
|
|
23
|
+
* TARTALMA a user-safe `__userMessage`-re cserélve (a technikai üzenet — belső BE-BE URL,
|
|
24
|
+
* nyers Mongo E11000 — nem hagyhatja el a szervert; a mező-ALAK a kliens-kompat miatt marad).
|
|
21
25
|
*
|
|
22
26
|
* NEM-DyFM error (plain Error / axios-error / bármi más): minimál `{ message }` shape — a plain
|
|
23
27
|
* Error eddig is üres `{}`-ként szerializálódott (non-enumerable mezők), az axios-jellegű error-ok
|
|
@@ -38,7 +42,13 @@ class DyNTS_ClientSafeError_Util {
|
|
|
38
42
|
'confidentialContent',
|
|
39
43
|
'error',
|
|
40
44
|
'errors',
|
|
45
|
+
// QA2-005 (dynamo-builder MP-23 QA-gate, 2026-07-18): a technikai message-LÁNC — belső BE-BE
|
|
46
|
+
// URL-eket (pl. http://auth-service:39005/...), nyers DB-driver-hibákat (Mongo E11000) hordoz;
|
|
47
|
+
// a kliens nem fogyasztja (a display-lánc `__userMessage` → `_message`), az error-store-ban marad.
|
|
48
|
+
'_messages',
|
|
41
49
|
];
|
|
50
|
+
/** QA2-005 — generikus `_message` fallback, ha az errornak nincs `__userMessage`-e. */
|
|
51
|
+
static genericClientMessage = 'An internal error occurred.\nPlease contact the responsible development team.';
|
|
42
52
|
/**
|
|
43
53
|
* Az error kliens-safe formára hozása a HTTP-response-küldés előtt.
|
|
44
54
|
* DyFM_Error: in-place strip (1-3. szabályok szerint); nem-DyFM object: minimál `{ message }`.
|
|
@@ -50,6 +60,25 @@ class DyNTS_ClientSafeError_Util {
|
|
|
50
60
|
for (const key of DyNTS_ClientSafeError_Util.alwaysStripKeys) {
|
|
51
61
|
delete dyError[key];
|
|
52
62
|
}
|
|
63
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
64
|
+
// QA2-005 — info-disclosure vágás env-FÜGGETLENÜL (test-env-ben SEM mehet ki):
|
|
65
|
+
// a) `_message` (technikai üzenet): belső BE-BE URL-t / nyers Mongo-hibát hordozhat →
|
|
66
|
+
// a response-ban a user-safe `__userMessage`-dzsel helyettesítjük. A mező ALAKJA
|
|
67
|
+
// megmarad (a kliens-interceptorok / `DyFM_extractErrorMessage` fallback-lánca és a
|
|
68
|
+
// `_message`-jelenlét-heurisztikák változatlanul működnek); a TELJES technikai üzenet
|
|
69
|
+
// az error-store-ban marad (a globalErrorHandler a strip ELŐTT perzisztál).
|
|
70
|
+
// b) `additionalContent.requestDebug` (FR-071 request-snapshot: header-kulcs-lista,
|
|
71
|
+
// belső IP, params/query): csak az error-store-ba — a response-ból mindig kimarad;
|
|
72
|
+
// az additionalContent TÖBBI (app-szintű diagnosztikai) mezője non-prod env-ben marad.
|
|
73
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
74
|
+
const userMessage = dyError['__userMessage'];
|
|
75
|
+
dyError['_message'] = (typeof userMessage === 'string' && userMessage)
|
|
76
|
+
? userMessage
|
|
77
|
+
: DyNTS_ClientSafeError_Util.genericClientMessage;
|
|
78
|
+
const additionalContent = dyError['additionalContent'];
|
|
79
|
+
if (additionalContent && typeof additionalContent === 'object') {
|
|
80
|
+
delete additionalContent['requestDebug'];
|
|
81
|
+
}
|
|
53
82
|
// prod: a diagnosztikai state-snapshot sem megy ki; test/dev: szándékosan marad (debug-UX)
|
|
54
83
|
if (global_settings_const_1.DyNTS_global_settings.env_settings.environment === fsm_dynamo_1.DyFM_EnvironmentFlag.prod) {
|
|
55
84
|
delete dyError['additionalContent'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-safe-error.util.js","sourceRoot":"","sources":["../../src/_collections/client-safe-error.util.ts"],"names":[],"mappings":";;;AAAA,sDAAyE;AAEzE,mEAAgE;AAEhE
|
|
1
|
+
{"version":3,"file":"client-safe-error.util.js","sourceRoot":"","sources":["../../src/_collections/client-safe-error.util.ts"],"names":[],"mappings":";;;AAAA,sDAAyE;AAEzE,mEAAgE;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAa,0BAA0B;IAErC,kGAAkG;IAC1F,MAAM,CAAU,eAAe,GAAa;QAClD,cAAc;QACd,OAAO;QACP,kBAAkB;QAClB,WAAW;QACX,iBAAiB;QACjB,kBAAkB;QAClB,qBAAqB;QACrB,OAAO;QACP,QAAQ;QACR,6FAA6F;QAC7F,+FAA+F;QAC/F,mGAAmG;QACnG,WAAW;KACZ,CAAC;IAEF,uFAAuF;IAC/E,MAAM,CAAU,oBAAoB,GAC1C,+EAA+E,CAAC;IAElF;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,KAAc;QAChC,2EAA2E;QAC3E,IAAI,uBAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAA4B,KAA2C,CAAC;YAErF,KAAK,MAAM,GAAG,IAAI,0BAA0B,CAAC,eAAe,EAAE,CAAC;gBAC7D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC;YAED,0EAA0E;YAC1E,+EAA+E;YAC/E,wFAAwF;YACxF,sFAAsF;YACtF,yFAAyF;YACzF,2FAA2F;YAC3F,iFAAiF;YACjF,sFAAsF;YACtF,wFAAwF;YACxF,4FAA4F;YAC5F,0EAA0E;YAC1E,MAAM,WAAW,GAAY,OAAO,CAAC,eAAe,CAAC,CAAC;YAEtD,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC;gBACpE,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,0BAA0B,CAAC,oBAAoB,CAAC;YAEpD,MAAM,iBAAiB,GAAY,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAEhE,IAAI,iBAAiB,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;gBAC/D,OAAQ,iBAA6C,CAAC,cAAc,CAAC,CAAC;YACxE,CAAC;YAED,2FAA2F;YAC3F,IAAI,6CAAqB,CAAC,YAAY,CAAC,WAAW,KAAK,iCAAoB,CAAC,IAAI,EAAE,CAAC;gBACjF,OAAO,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACtC,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wFAAwF;QACxF,gEAAgE;QAChE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,IAAI,uBAAuB,EAAE,CAAC;QAC1E,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;;AA1EH,gEA2EC"}
|
|
@@ -24,8 +24,10 @@ export interface DyNTS_DbReadiness {
|
|
|
24
24
|
dbPingOk: boolean;
|
|
25
25
|
/** A szerver uptime ms-ban. */
|
|
26
26
|
uptime: number;
|
|
27
|
-
/** A
|
|
27
|
+
/** A BEDROCK (nts-dynamo) verziója — NEM az app sajátja. */
|
|
28
28
|
serverVersion: string;
|
|
29
|
+
/** AZ APP saját verziója (`DyNTS_global_settings.systemVersion`) — deploy-verifikációhoz. */
|
|
30
|
+
appVersion?: string;
|
|
29
31
|
}
|
|
30
32
|
export declare abstract class DyNTS_ServerStatus_ControlService<T_ServerStatus extends DyFM_ServerStatus, T_Error extends DyFM_Error, T_Errors extends DyFM_Errors<T_Error>, T_Errors_ControlService extends DyNTS_Errors_ControlService<T_Error, T_Errors>, T_ServerStatusSnapshot extends DyFM_ServerStatus, T_ServerStatusSnapshot_ControlService extends DyNTS_ServerStatusSnapshot_ControlService<T_ServerStatusSnapshot>> extends DyNTS_SingletonService {
|
|
31
33
|
protected abstract getErrorControlService?(set?: {
|
|
@@ -38,8 +40,27 @@ export declare abstract class DyNTS_ServerStatus_ControlService<T_ServerStatus e
|
|
|
38
40
|
}): T_ServerStatusSnapshot_ControlService;
|
|
39
41
|
protected readonly up: Date;
|
|
40
42
|
protected readonly _serverVersionNumeric: number;
|
|
43
|
+
/**
|
|
44
|
+
* A BEDROCK (nts-dynamo) verzioja — a package.json-bol importalva.
|
|
45
|
+
* FIGYELEM: ez NEM az app sajat verzioja! (Lasd `appVersion`.)
|
|
46
|
+
*/
|
|
41
47
|
get serverVersion(): string;
|
|
42
48
|
get serverVersionNumeric(): number;
|
|
49
|
+
/**
|
|
50
|
+
* AZ APP sajat verzioja (2026-07-20) — a `DyNTS_App_Params.version`-bol, amit az
|
|
51
|
+
* app-params a `DyNTS_global_settings.systemVersion`-be tolt (app-params.control-model).
|
|
52
|
+
*
|
|
53
|
+
* MIERT KELLETT: a `serverVersion` az nts-dynamo package.json-jabol jon, ezert a TELJES
|
|
54
|
+
* flottan UGYANAZT az erteket adja (pl. 01.15.104), fuggetlenul attol, hogy az app melyik
|
|
55
|
+
* verzioja fut. Emiatt minden verzio-alapu deploy-ellenorzes vak volt:
|
|
56
|
+
* - a CI/CD `deploy-verify` polling SOHA nem egyezne (app 01.15.142 vs serverVersion 01.15.104),
|
|
57
|
+
* - az Overseer verzio-drift monitorozasa nem latja az ELAVULT app-deployt,
|
|
58
|
+
* - a `fdp deploy-service --skip-if-version` gate mindig eltérést lát → sosem skippel.
|
|
59
|
+
*
|
|
60
|
+
* ADDITIV mezo: a `serverVersion` szemantikaja VALTOZATLAN marad (nulla regresszio a
|
|
61
|
+
* meglevo fogyasztoknal / e2e-knel); az uj fogyasztok az `appVersion`-t olvassak.
|
|
62
|
+
*/
|
|
63
|
+
get appVersion(): string;
|
|
43
64
|
protected _latestClientVersion: string;
|
|
44
65
|
protected _latestClientVersionNumeric: number;
|
|
45
66
|
get latestClientVersion(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-status.control-service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.control-service.ts"],"names":[],"mappings":"AAEA,OAAO,EACU,iBAAiB,EAAa,iBAAiB,EAC9D,UAAU,EAAE,qBAAqB,EAAE,WAAW,EAG9C,gCAAgC,EAGjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAS,MAAM,MAAM,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAEnF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AAErG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,qBAAqB,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,0GAA0G;IAC1G,KAAK,EAAE,OAAO,CAAC;IACf,kGAAkG;IAClG,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,QAAQ,EAAE,OAAO,CAAC;IAClB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"server-status.control-service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.control-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,27 @@ const global_service_1 = require("../../../_services/core/global.service");
|
|
|
12
12
|
class DyNTS_ServerStatus_ControlService extends singleton_service_1.DyNTS_SingletonService {
|
|
13
13
|
up = new Date();
|
|
14
14
|
_serverVersionNumeric = this.getVersionNumeric(package_json_1.version);
|
|
15
|
+
/**
|
|
16
|
+
* A BEDROCK (nts-dynamo) verzioja — a package.json-bol importalva.
|
|
17
|
+
* FIGYELEM: ez NEM az app sajat verzioja! (Lasd `appVersion`.)
|
|
18
|
+
*/
|
|
15
19
|
get serverVersion() { return package_json_1.version; }
|
|
16
20
|
get serverVersionNumeric() { return this._serverVersionNumeric; }
|
|
21
|
+
/**
|
|
22
|
+
* AZ APP sajat verzioja (2026-07-20) — a `DyNTS_App_Params.version`-bol, amit az
|
|
23
|
+
* app-params a `DyNTS_global_settings.systemVersion`-be tolt (app-params.control-model).
|
|
24
|
+
*
|
|
25
|
+
* MIERT KELLETT: a `serverVersion` az nts-dynamo package.json-jabol jon, ezert a TELJES
|
|
26
|
+
* flottan UGYANAZT az erteket adja (pl. 01.15.104), fuggetlenul attol, hogy az app melyik
|
|
27
|
+
* verzioja fut. Emiatt minden verzio-alapu deploy-ellenorzes vak volt:
|
|
28
|
+
* - a CI/CD `deploy-verify` polling SOHA nem egyezne (app 01.15.142 vs serverVersion 01.15.104),
|
|
29
|
+
* - az Overseer verzio-drift monitorozasa nem latja az ELAVULT app-deployt,
|
|
30
|
+
* - a `fdp deploy-service --skip-if-version` gate mindig eltérést lát → sosem skippel.
|
|
31
|
+
*
|
|
32
|
+
* ADDITIV mezo: a `serverVersion` szemantikaja VALTOZATLAN marad (nulla regresszio a
|
|
33
|
+
* meglevo fogyasztoknal / e2e-knel); az uj fogyasztok az `appVersion`-t olvassak.
|
|
34
|
+
*/
|
|
35
|
+
get appVersion() { return global_settings_const_1.DyNTS_global_settings.systemVersion; }
|
|
17
36
|
_latestClientVersion;
|
|
18
37
|
_latestClientVersionNumeric;
|
|
19
38
|
get latestClientVersion() { return this._latestClientVersion; }
|
|
@@ -59,6 +78,8 @@ class DyNTS_ServerStatus_ControlService extends singleton_service_1.DyNTS_Single
|
|
|
59
78
|
latestClientVersionNumeric: this.latestClientVersionNumeric,
|
|
60
79
|
serverVersion: this.serverVersion,
|
|
61
80
|
serverNumericVersion: this.serverVersionNumeric,
|
|
81
|
+
// Az APP sajat verzioja (a serverVersion a bedrock-e) — deploy-verifikaciohoz.
|
|
82
|
+
appVersion: this.appVersion,
|
|
62
83
|
uptime: +new Date() - +this.up,
|
|
63
84
|
memoryUsage: process.memoryUsage(),
|
|
64
85
|
cpuUsage: process.cpuUsage(),
|
|
@@ -135,6 +156,7 @@ class DyNTS_ServerStatus_ControlService extends singleton_service_1.DyNTS_Single
|
|
|
135
156
|
dbPingOk: dbPingOk,
|
|
136
157
|
uptime: +new Date() - +this.up,
|
|
137
158
|
serverVersion: this.serverVersion,
|
|
159
|
+
appVersion: this.appVersion,
|
|
138
160
|
};
|
|
139
161
|
}
|
|
140
162
|
async getErrorStatistics(range, issuer) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-status.control-service.js","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.control-service.ts"],"names":[],"mappings":";;;;AAEA,sDAQ+B;AAC/B,+BAA2C;AAC3C,2DAAqC;AAErC,2DAAqE;AACrE,iFAAmF;AACnF,uFAAoF;AAGpF,2EAA6E;
|
|
1
|
+
{"version":3,"file":"server-status.control-service.js","sourceRoot":"","sources":["../../../../src/_modules/server/server-status/server-status.control-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/nts-dynamo",
|
|
3
|
-
"version": "01.15.
|
|
3
|
+
"version": "01.15.105",
|
|
4
4
|
"description": "Dynamic NodeTS (NodeJS-Typescript), MongoDB Backend System Framework by Future Development Program Ltd.",
|
|
5
5
|
"DyBu_settings": {
|
|
6
6
|
"packageType": "server-package",
|
|
@@ -369,7 +369,7 @@
|
|
|
369
369
|
"@anthropic-ai/sdk": "~0.39.0",
|
|
370
370
|
"@modelcontextprotocol/sdk": "~1.29.0",
|
|
371
371
|
"better-sqlite3": "~12.4.1",
|
|
372
|
-
"@futdevpro/fsm-dynamo": "1.16.
|
|
372
|
+
"@futdevpro/fsm-dynamo": "1.16.19",
|
|
373
373
|
"@types/express": "4.17.21",
|
|
374
374
|
"@types/geoip-lite": "~1.4.1",
|
|
375
375
|
"@types/node": "~24.1.0",
|
|
@@ -403,7 +403,7 @@
|
|
|
403
403
|
}
|
|
404
404
|
},
|
|
405
405
|
"devDependencies": {
|
|
406
|
-
"@futdevpro/dynamo-eslint": "1.15.
|
|
406
|
+
"@futdevpro/dynamo-eslint": "1.15.21",
|
|
407
407
|
"@discordjs/opus": "^0.10.0",
|
|
408
408
|
"@discordjs/voice": "^0.18.0",
|
|
409
409
|
"@types/jasmine": "~4.3.5",
|
|
@@ -43,18 +43,74 @@ describe('| DyNTS_ClientSafeError_Util', (): void => {
|
|
|
43
43
|
expect(safe['errors']).toBeUndefined();
|
|
44
44
|
});
|
|
45
45
|
|
|
46
|
-
it('| MEGTARTJA a kliens-fogyasztott
|
|
46
|
+
it('| MEGTARTJA a kliens-fogyasztott mező-alakot (_message, _errorCodes, __userMessage)', (): void => {
|
|
47
47
|
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.local;
|
|
48
48
|
const error: DyFM_Error = buildRichError();
|
|
49
49
|
|
|
50
50
|
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
// QA2-005: a `_message` ALAKJA marad, de a TARTALMA a user-safe `__userMessage` —
|
|
53
|
+
// a technikai 'internal reason' (belső URL / nyers DB-hiba osztály) nem megy ki
|
|
54
|
+
expect(safe['_message']).toBe('user facing message');
|
|
53
55
|
expect(safe['__userMessage']).toBe('user facing message');
|
|
54
56
|
expect(Array.isArray(safe['_errorCodes'])).toBeTrue();
|
|
55
57
|
expect((safe['_errorCodes'] as string[]).join(',')).toContain('DyNTS-TEST-CSE0');
|
|
56
58
|
});
|
|
57
59
|
|
|
60
|
+
it('| QA2-005: a technikai _message / _messages NEM szivárog ki (test-env-ben sem)', (): void => {
|
|
61
|
+
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.test;
|
|
62
|
+
const error: DyFM_Error = new DyFM_Error({
|
|
63
|
+
message: 'API call "registerAccount" failed on the other end!\nurl: http://auth-service:39005/api/account/register' +
|
|
64
|
+
'\nerror response found: E11000 duplicate key error collection',
|
|
65
|
+
userMessage: 'Registration failed!',
|
|
66
|
+
errorCode: 'DyNTS-TEST-CSE1',
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
70
|
+
const serialized: string = JSON.stringify(safe);
|
|
71
|
+
|
|
72
|
+
expect(safe['_message']).toBe('Registration failed!');
|
|
73
|
+
expect(safe['_messages']).toBeUndefined();
|
|
74
|
+
expect(serialized).not.toContain('auth-service:39005');
|
|
75
|
+
expect(serialized).not.toContain('E11000');
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('| QA2-005: __userMessage nélkül a _message generikus szövegre cserélődik (nem a technikai)', (): void => {
|
|
79
|
+
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.test;
|
|
80
|
+
const error: DyFM_Error = new DyFM_Error({
|
|
81
|
+
message: 'raw internal detail: http://auth-service:39005/api',
|
|
82
|
+
errorCode: 'DyNTS-TEST-CSE2',
|
|
83
|
+
});
|
|
84
|
+
// a konstruktor default-userMessage viselkedésétől függetlenül: a technikai szöveg nem mehet ki
|
|
85
|
+
(error as unknown as Record<string, unknown>)['__userMessage'] = undefined;
|
|
86
|
+
|
|
87
|
+
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
88
|
+
|
|
89
|
+
expect(typeof safe['_message']).toBe('string');
|
|
90
|
+
expect(safe['_message'] as string).not.toContain('auth-service:39005');
|
|
91
|
+
expect((safe['_message'] as string).length).toBeGreaterThan(0);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it('| QA2-005: az additionalContent.requestDebug env-FÜGGETLENÜL strip-elve, a többi mező marad (non-prod)', (): void => {
|
|
95
|
+
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.test;
|
|
96
|
+
const error: DyFM_Error = new DyFM_Error({
|
|
97
|
+
message: 'internal reason',
|
|
98
|
+
userMessage: 'user facing message',
|
|
99
|
+
errorCode: 'DyNTS-TEST-CSE3',
|
|
100
|
+
additionalContent: {
|
|
101
|
+
userId: 'u1',
|
|
102
|
+
requestDebug: { headerKeys: ['authorization', 'cookie'], remoteAddress: '172.18.0.5' },
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
const safe: Record<string, unknown> = DyNTS_ClientSafeError_Util.toClientSafe(error) as Record<string, unknown>;
|
|
107
|
+
const additionalContent: Record<string, unknown> = safe['additionalContent'] as Record<string, unknown>;
|
|
108
|
+
|
|
109
|
+
expect(additionalContent).toBeDefined();
|
|
110
|
+
expect(additionalContent['userId']).toBe('u1');
|
|
111
|
+
expect(additionalContent['requestDebug']).toBeUndefined();
|
|
112
|
+
});
|
|
113
|
+
|
|
58
114
|
it('| nem-prod env: az additionalContent (diagnosztikai snapshot) MARAD', (): void => {
|
|
59
115
|
DyNTS_global_settings.env_settings.environment = DyFM_EnvironmentFlag.local;
|
|
60
116
|
const error: DyFM_Error = buildRichError();
|
|
@@ -12,11 +12,15 @@ import { DyNTS_global_settings } from './global-settings.const';
|
|
|
12
12
|
* 1. MINDIG ki (env-független, kliens sehol nem fogyasztja → 0 regresszió):
|
|
13
13
|
* `__localStack`, `stack`, `___systemVersion`, `___issuer`, `___issuerSystem`,
|
|
14
14
|
* `___issuerService`, `confidentialContent`, `error`, `errors` (a nyers belső error-lánc
|
|
15
|
-
* stack-eket hordoz).
|
|
15
|
+
* stack-eket hordoz), `_messages` (QA2-005: technikai message-lánc — belső URL-ek, DB-hibák).
|
|
16
16
|
* 2. CSAK prod-ban ki: `additionalContent` — test/dev környezetben a diagnosztikai state-snapshot
|
|
17
|
-
* szándékosan kimegy (a hibafelület-debug erre épül), prod-ban nem.
|
|
17
|
+
* szándékosan kimegy (a hibafelület-debug erre épül), prod-ban nem. KIVÉTEL (QA2-005):
|
|
18
|
+
* az `additionalContent.requestDebug` (FR-071 header-lista/belső-IP snapshot) env-FÜGGETLENÜL
|
|
19
|
+
* strip-elve — csak az error-store-ba perzisztálódik.
|
|
18
20
|
* 3. MARAD (kliens-kompatibilitás — a FDP-kliens error-interceptorok fogyasztják):
|
|
19
|
-
* `_message`, `_errorCodes`, `__userMessage`, `___status`, `level`.
|
|
21
|
+
* `_message`, `_errorCodes`, `__userMessage`, `___status`, `level`. QA2-005: a `_message`
|
|
22
|
+
* TARTALMA a user-safe `__userMessage`-re cserélve (a technikai üzenet — belső BE-BE URL,
|
|
23
|
+
* nyers Mongo E11000 — nem hagyhatja el a szervert; a mező-ALAK a kliens-kompat miatt marad).
|
|
20
24
|
*
|
|
21
25
|
* NEM-DyFM error (plain Error / axios-error / bármi más): minimál `{ message }` shape — a plain
|
|
22
26
|
* Error eddig is üres `{}`-ként szerializálódott (non-enumerable mezők), az axios-jellegű error-ok
|
|
@@ -38,8 +42,16 @@ export class DyNTS_ClientSafeError_Util {
|
|
|
38
42
|
'confidentialContent',
|
|
39
43
|
'error',
|
|
40
44
|
'errors',
|
|
45
|
+
// QA2-005 (dynamo-builder MP-23 QA-gate, 2026-07-18): a technikai message-LÁNC — belső BE-BE
|
|
46
|
+
// URL-eket (pl. http://auth-service:39005/...), nyers DB-driver-hibákat (Mongo E11000) hordoz;
|
|
47
|
+
// a kliens nem fogyasztja (a display-lánc `__userMessage` → `_message`), az error-store-ban marad.
|
|
48
|
+
'_messages',
|
|
41
49
|
];
|
|
42
50
|
|
|
51
|
+
/** QA2-005 — generikus `_message` fallback, ha az errornak nincs `__userMessage`-e. */
|
|
52
|
+
private static readonly genericClientMessage: string =
|
|
53
|
+
'An internal error occurred.\nPlease contact the responsible development team.';
|
|
54
|
+
|
|
43
55
|
/**
|
|
44
56
|
* Az error kliens-safe formára hozása a HTTP-response-küldés előtt.
|
|
45
57
|
* DyFM_Error: in-place strip (1-3. szabályok szerint); nem-DyFM object: minimál `{ message }`.
|
|
@@ -53,6 +65,29 @@ export class DyNTS_ClientSafeError_Util {
|
|
|
53
65
|
delete dyError[key];
|
|
54
66
|
}
|
|
55
67
|
|
|
68
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
69
|
+
// QA2-005 — info-disclosure vágás env-FÜGGETLENÜL (test-env-ben SEM mehet ki):
|
|
70
|
+
// a) `_message` (technikai üzenet): belső BE-BE URL-t / nyers Mongo-hibát hordozhat →
|
|
71
|
+
// a response-ban a user-safe `__userMessage`-dzsel helyettesítjük. A mező ALAKJA
|
|
72
|
+
// megmarad (a kliens-interceptorok / `DyFM_extractErrorMessage` fallback-lánca és a
|
|
73
|
+
// `_message`-jelenlét-heurisztikák változatlanul működnek); a TELJES technikai üzenet
|
|
74
|
+
// az error-store-ban marad (a globalErrorHandler a strip ELŐTT perzisztál).
|
|
75
|
+
// b) `additionalContent.requestDebug` (FR-071 request-snapshot: header-kulcs-lista,
|
|
76
|
+
// belső IP, params/query): csak az error-store-ba — a response-ból mindig kimarad;
|
|
77
|
+
// az additionalContent TÖBBI (app-szintű diagnosztikai) mezője non-prod env-ben marad.
|
|
78
|
+
// ═══════════════════════════════════════════════════════════════════════
|
|
79
|
+
const userMessage: unknown = dyError['__userMessage'];
|
|
80
|
+
|
|
81
|
+
dyError['_message'] = (typeof userMessage === 'string' && userMessage)
|
|
82
|
+
? userMessage
|
|
83
|
+
: DyNTS_ClientSafeError_Util.genericClientMessage;
|
|
84
|
+
|
|
85
|
+
const additionalContent: unknown = dyError['additionalContent'];
|
|
86
|
+
|
|
87
|
+
if (additionalContent && typeof additionalContent === 'object') {
|
|
88
|
+
delete (additionalContent as Record<string, unknown>)['requestDebug'];
|
|
89
|
+
}
|
|
90
|
+
|
|
56
91
|
// prod: a diagnosztikai state-snapshot sem megy ki; test/dev: szándékosan marad (debug-UX)
|
|
57
92
|
if (DyNTS_global_settings.env_settings.environment === DyFM_EnvironmentFlag.prod) {
|
|
58
93
|
delete dyError['additionalContent'];
|
|
@@ -40,8 +40,10 @@ export interface DyNTS_DbReadiness {
|
|
|
40
40
|
dbPingOk: boolean;
|
|
41
41
|
/** A szerver uptime ms-ban. */
|
|
42
42
|
uptime: number;
|
|
43
|
-
/** A
|
|
43
|
+
/** A BEDROCK (nts-dynamo) verziója — NEM az app sajátja. */
|
|
44
44
|
serverVersion: string;
|
|
45
|
+
/** AZ APP saját verziója (`DyNTS_global_settings.systemVersion`) — deploy-verifikációhoz. */
|
|
46
|
+
appVersion?: string;
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
export abstract class DyNTS_ServerStatus_ControlService<
|
|
@@ -64,9 +66,29 @@ export abstract class DyNTS_ServerStatus_ControlService<
|
|
|
64
66
|
protected readonly up: Date = new Date();
|
|
65
67
|
|
|
66
68
|
protected readonly _serverVersionNumeric: number = this.getVersionNumeric(_serverVersion);
|
|
69
|
+
/**
|
|
70
|
+
* A BEDROCK (nts-dynamo) verzioja — a package.json-bol importalva.
|
|
71
|
+
* FIGYELEM: ez NEM az app sajat verzioja! (Lasd `appVersion`.)
|
|
72
|
+
*/
|
|
67
73
|
get serverVersion(): string { return _serverVersion; }
|
|
68
74
|
get serverVersionNumeric(): number { return this._serverVersionNumeric; }
|
|
69
75
|
|
|
76
|
+
/**
|
|
77
|
+
* AZ APP sajat verzioja (2026-07-20) — a `DyNTS_App_Params.version`-bol, amit az
|
|
78
|
+
* app-params a `DyNTS_global_settings.systemVersion`-be tolt (app-params.control-model).
|
|
79
|
+
*
|
|
80
|
+
* MIERT KELLETT: a `serverVersion` az nts-dynamo package.json-jabol jon, ezert a TELJES
|
|
81
|
+
* flottan UGYANAZT az erteket adja (pl. 01.15.104), fuggetlenul attol, hogy az app melyik
|
|
82
|
+
* verzioja fut. Emiatt minden verzio-alapu deploy-ellenorzes vak volt:
|
|
83
|
+
* - a CI/CD `deploy-verify` polling SOHA nem egyezne (app 01.15.142 vs serverVersion 01.15.104),
|
|
84
|
+
* - az Overseer verzio-drift monitorozasa nem latja az ELAVULT app-deployt,
|
|
85
|
+
* - a `fdp deploy-service --skip-if-version` gate mindig eltérést lát → sosem skippel.
|
|
86
|
+
*
|
|
87
|
+
* ADDITIV mezo: a `serverVersion` szemantikaja VALTOZATLAN marad (nulla regresszio a
|
|
88
|
+
* meglevo fogyasztoknal / e2e-knel); az uj fogyasztok az `appVersion`-t olvassak.
|
|
89
|
+
*/
|
|
90
|
+
get appVersion(): string { return DyNTS_global_settings.systemVersion; }
|
|
91
|
+
|
|
70
92
|
protected _latestClientVersion: string;
|
|
71
93
|
protected _latestClientVersionNumeric: number;
|
|
72
94
|
get latestClientVersion(): string { return this._latestClientVersion; }
|
|
@@ -124,6 +146,8 @@ export abstract class DyNTS_ServerStatus_ControlService<
|
|
|
124
146
|
|
|
125
147
|
serverVersion: this.serverVersion,
|
|
126
148
|
serverNumericVersion: this.serverVersionNumeric,
|
|
149
|
+
// Az APP sajat verzioja (a serverVersion a bedrock-e) — deploy-verifikaciohoz.
|
|
150
|
+
appVersion: this.appVersion,
|
|
127
151
|
|
|
128
152
|
uptime: +new Date() - +this.up,
|
|
129
153
|
|
|
@@ -214,6 +238,7 @@ export abstract class DyNTS_ServerStatus_ControlService<
|
|
|
214
238
|
dbPingOk: dbPingOk,
|
|
215
239
|
uptime: +new Date() - +this.up,
|
|
216
240
|
serverVersion: this.serverVersion,
|
|
241
|
+
appVersion: this.appVersion,
|
|
217
242
|
};
|
|
218
243
|
}
|
|
219
244
|
|