@futdevpro/nts-dynamo 1.15.192 → 1.15.194

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/build/_collections/dependency-host-guard.util.d.ts +46 -0
  2. package/build/_collections/dependency-host-guard.util.d.ts.map +1 -0
  3. package/build/_collections/dependency-host-guard.util.js +69 -0
  4. package/build/_collections/dependency-host-guard.util.js.map +1 -0
  5. package/build/_collections/global-settings.const.d.ts.map +1 -1
  6. package/build/_collections/global-settings.const.js +2 -0
  7. package/build/_collections/global-settings.const.js.map +1 -1
  8. package/build/_collections/secret-redaction.util.d.ts +51 -0
  9. package/build/_collections/secret-redaction.util.d.ts.map +1 -0
  10. package/build/_collections/secret-redaction.util.js +100 -0
  11. package/build/_collections/secret-redaction.util.js.map +1 -0
  12. package/build/_models/interfaces/global-log-settings.interface.d.ts +14 -0
  13. package/build/_models/interfaces/global-log-settings.interface.d.ts.map +1 -1
  14. package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.d.ts +20 -1
  15. package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.d.ts.map +1 -1
  16. package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.js +30 -1
  17. package/build/_modules/server/safe-diagnostic/safe-diagnostic.control-service.js.map +1 -1
  18. package/build/_services/base/api.service-base.d.ts +17 -0
  19. package/build/_services/base/api.service-base.d.ts.map +1 -1
  20. package/build/_services/base/api.service-base.js +59 -0
  21. package/build/_services/base/api.service-base.js.map +1 -1
  22. package/package.json +1 -1
@@ -0,0 +1,46 @@
1
+ /**
2
+ * BFR-FSMED-008 — NEM-LOKÁLIS dependency-host guard.
3
+ *
4
+ * A mért incidens: a Social Media test-környezetben az auth-target `http://0.0.0.0:39005/api` lett.
5
+ * Ez `local`-ban helyes, `test`/`prod`-ban viszont azt jelenti, hogy a szolgáltatás **önmagához**
6
+ * próbál csatlakozni — és a hiba csak az ELSŐ tényleges login-kísérletnél derült ki, akkor is egy
7
+ * általános „server is not available" üzenettel, amiből nem látszott sem a függőség neve, sem az,
8
+ * hogy a **konfiguráció** a hibás, nem a távoli szerver.
9
+ *
10
+ * A guard ezért **konfigurációs hibát** jelez, nem elérhetőségit — és a diagnózishoz szükséges
11
+ * minden mezőt STRUKTURÁLTAN ad vissza, hogy a hívó ne szövegből parse-oljon.
12
+ */
13
+ export interface DyNTS_DependencyHostViolation_Interface {
14
+ /** A függőség neve (pl. az auth-szolgáltatás) — melyik downstream targetről van szó. */
15
+ dependency: string;
16
+ /** A ténylegesen konfigurált URL. */
17
+ targetUrl: string;
18
+ /** A futó környezet, amiben ez tiltott. */
19
+ environment: string;
20
+ /** Az env-var, aminek a helyes értéket hordoznia kellene (ha a fogyasztó megadja). */
21
+ requiredEnvironmentVariable?: string;
22
+ /** Konkrét teendő — nem általános tanács. */
23
+ remediation: string;
24
+ /** A konkrét ok (hiányzó / lokális / malformed host). */
25
+ reason: 'missing' | 'malformed' | 'local-host';
26
+ }
27
+ export declare class DyNTS_DependencyHostGuard_Util {
28
+ /** Lokális hostok — `test`/`prod` környezetben ezek downstream-targetként hibák. */
29
+ private static readonly localHosts;
30
+ /** Azok a környezetek, ahol a lokális host TILOS. */
31
+ private static readonly strictEnvironments;
32
+ /**
33
+ * Megvizsgál egy downstream URL-t. `null`, ha rendben van — különben a strukturált sértés.
34
+ *
35
+ * ⚠️ `local` (és minden nem-strict) környezetben SOHA nem jelez: ott a `localhost` a helyes érték.
36
+ */
37
+ static inspect(params: {
38
+ dependency: string;
39
+ targetUrl: string | undefined;
40
+ environment: string;
41
+ requiredEnvironmentVariable?: string;
42
+ }): DyNTS_DependencyHostViolation_Interface | null;
43
+ /** Ember-olvasható egysoros összefoglaló a naplóhoz / hibaüzenethez. */
44
+ static describe(violation: DyNTS_DependencyHostViolation_Interface): string;
45
+ }
46
+ //# sourceMappingURL=dependency-host-guard.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-host-guard.util.d.ts","sourceRoot":"","sources":["../../src/_collections/dependency-host-guard.util.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,uCAAuC;IACtD,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;CAChD;AAED,qBAAa,8BAA8B;IAEzC,oFAAoF;IACpF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAE/B;IAEH,qDAAqD;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAEvC;IAEH;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,WAAW,EAAE,MAAM,CAAC;QACpB,2BAA2B,CAAC,EAAE,MAAM,CAAC;KACtC,GAAG,uCAAuC,GAAG,IAAI;IAkDlD,wEAAwE;IACxE,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,uCAAuC,GAAG,MAAM;CAI5E"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyNTS_DependencyHostGuard_Util = void 0;
4
+ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
5
+ class DyNTS_DependencyHostGuard_Util {
6
+ /** Lokális hostok — `test`/`prod` környezetben ezek downstream-targetként hibák. */
7
+ static localHosts = new Set([
8
+ '0.0.0.0', '127.0.0.1', 'localhost', '::1', '[::1]',
9
+ ]);
10
+ /** Azok a környezetek, ahol a lokális host TILOS. */
11
+ static strictEnvironments = new Set([
12
+ `${fsm_dynamo_1.DyFM_EnvironmentFlag.test}`, `${fsm_dynamo_1.DyFM_EnvironmentFlag.prod}`,
13
+ ]);
14
+ /**
15
+ * Megvizsgál egy downstream URL-t. `null`, ha rendben van — különben a strukturált sértés.
16
+ *
17
+ * ⚠️ `local` (és minden nem-strict) környezetben SOHA nem jelez: ott a `localhost` a helyes érték.
18
+ */
19
+ static inspect(params) {
20
+ const { dependency, targetUrl, environment, requiredEnvironmentVariable } = params;
21
+ if (!DyNTS_DependencyHostGuard_Util.strictEnvironments.has(environment)) {
22
+ return null;
23
+ }
24
+ const base = {
25
+ dependency: dependency,
26
+ targetUrl: `${targetUrl ?? ''}`,
27
+ environment: environment,
28
+ requiredEnvironmentVariable: requiredEnvironmentVariable,
29
+ };
30
+ if (!targetUrl || !`${targetUrl}`.trim().length) {
31
+ return {
32
+ ...base,
33
+ reason: 'missing',
34
+ remediation: requiredEnvironmentVariable
35
+ ? `Set '${requiredEnvironmentVariable}' to the public URL of '${dependency}' and redeploy.`
36
+ : `Configure the base URL of '${dependency}' and redeploy.`,
37
+ };
38
+ }
39
+ let hostname;
40
+ try {
41
+ hostname = new URL(`${targetUrl}`).hostname.toLowerCase();
42
+ }
43
+ catch {
44
+ return {
45
+ ...base,
46
+ reason: 'malformed',
47
+ remediation: `'${targetUrl}' is not a valid absolute URL. Use the 'https://host[:port]/path' form`
48
+ + `${requiredEnvironmentVariable ? ` in '${requiredEnvironmentVariable}'` : ''} and redeploy.`,
49
+ };
50
+ }
51
+ if (DyNTS_DependencyHostGuard_Util.localHosts.has(hostname)) {
52
+ return {
53
+ ...base,
54
+ reason: 'local-host',
55
+ remediation: `In '${environment}' the '${dependency}' target must NOT be a local host ('${hostname}') — `
56
+ + `that makes the service call ITSELF. Point it at the deployed '${dependency}' host`
57
+ + `${requiredEnvironmentVariable ? ` via '${requiredEnvironmentVariable}'` : ''} and redeploy.`,
58
+ };
59
+ }
60
+ return null;
61
+ }
62
+ /** Ember-olvasható egysoros összefoglaló a naplóhoz / hibaüzenethez. */
63
+ static describe(violation) {
64
+ return `Dependency '${violation.dependency}' is misconfigured in '${violation.environment}' `
65
+ + `(${violation.reason}): '${violation.targetUrl}'. ${violation.remediation}`;
66
+ }
67
+ }
68
+ exports.DyNTS_DependencyHostGuard_Util = DyNTS_DependencyHostGuard_Util;
69
+ //# sourceMappingURL=dependency-host-guard.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-host-guard.util.js","sourceRoot":"","sources":["../../src/_collections/dependency-host-guard.util.ts"],"names":[],"mappings":";;;AAAA,sDAA6D;AA6B7D,MAAa,8BAA8B;IAEzC,oFAAoF;IAC5E,MAAM,CAAU,UAAU,GAAgB,IAAI,GAAG,CAAS;QAChE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO;KACpD,CAAC,CAAC;IAEH,qDAAqD;IAC7C,MAAM,CAAU,kBAAkB,GAAgB,IAAI,GAAG,CAAS;QACxE,GAAG,iCAAoB,CAAC,IAAI,EAAE,EAAE,GAAG,iCAAoB,CAAC,IAAI,EAAE;KAC/D,CAAC,CAAC;IAEH;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,MAKd;QACC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,2BAA2B,EAAE,GAAG,MAAM,CAAC;QAEnF,IAAI,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAA4E;YACpF,UAAU,EAAE,UAAU;YACtB,SAAS,EAAE,GAAG,SAAS,IAAI,EAAE,EAAE;YAC/B,WAAW,EAAE,WAAW;YACxB,2BAA2B,EAAE,2BAA2B;SACzD,CAAC;QAEF,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAChD,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,2BAA2B;oBACtC,CAAC,CAAC,QAAQ,2BAA2B,2BAA2B,UAAU,iBAAiB;oBAC3F,CAAC,CAAC,8BAA8B,UAAU,iBAAiB;aAC9D,CAAC;QACJ,CAAC;QAED,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,IAAI,SAAS,wEAAwE;sBAC9F,GAAG,2BAA2B,CAAC,CAAC,CAAC,QAAQ,2BAA2B,GAAG,CAAC,CAAC,CAAC,EAAE,gBAAgB;aACjG,CAAC;QACJ,CAAC;QAED,IAAI,8BAA8B,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,YAAY;gBACpB,WAAW,EACT,OAAO,WAAW,UAAU,UAAU,uCAAuC,QAAQ,OAAO;sBAC1F,iEAAiE,UAAU,QAAQ;sBACnF,GAAG,2BAA2B,CAAC,CAAC,CAAC,SAAS,2BAA2B,GAAG,CAAC,CAAC,CAAC,EAAE,gBAAgB;aAClG,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wEAAwE;IACxE,MAAM,CAAC,QAAQ,CAAC,SAAkD;QAChE,OAAO,eAAe,SAAS,CAAC,UAAU,0BAA0B,SAAS,CAAC,WAAW,IAAI;cACzF,IAAI,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,SAAS,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;IAClF,CAAC;;AA5EH,wEA6EC"}
@@ -1 +1 @@
1
- {"version":3,"file":"global-settings.const.d.ts","sourceRoot":"","sources":["../../src/_collections/global-settings.const.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AAIxF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,qBAiHnC,CAAC"}
1
+ {"version":3,"file":"global-settings.const.d.ts","sourceRoot":"","sources":["../../src/_collections/global-settings.const.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AAIxF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,qBAmHnC,CAAC"}
@@ -24,6 +24,8 @@ exports.DyNTS_global_settings = {
24
24
  request: true,
25
25
  requestsContent: false,
26
26
  responseContent: false,
27
+ // BFR-MASTERPROMPTER-046 / BFR-CTM-018: alapbol NEM naplozzuk az okot (content-free kontraktus).
28
+ safeDiagnosticCause: false,
27
29
  requestStackLocation: false,
28
30
  socket_allEvents: true,
29
31
  socket_mainEvents: true,
@@ -1 +1 @@
1
- {"version":3,"file":"global-settings.const.js","sourceRoot":"","sources":["../../src/_collections/global-settings.const.ts"],"names":[],"mappings":";;;AAEA,uEAAoE;AAEpE,yFAAsF;AACtF,mFAAgF;AAEhF;;;GAGG;AACU,QAAA,qBAAqB,GAA0B;IAC1D,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,iBAAiB;IAChC,oBAAoB,EAAE,yCAAmB,CAAC,IAAI;IAC9C,qBAAqB,EAAE,2CAAoB,CAAC,IAAI;IAEhD,eAAe,EAAE,EAAE;IACnB,gBAAgB,EAAE,GAAG;IACrB,YAAY,EAAE,IAAA,6DAA6B,GAAE;IAE7C,oCAAoC,EAAE,IAAI;IAC1C,oBAAoB,EAAE,IAAI;IAE1B,YAAY,EAAE;QACZ,gBAAgB,EAAE,KAAK;QAEvB,KAAK,EAAE,KAAK;QAEZ,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,KAAK;QACtB,eAAe,EAAE,KAAK;QACtB,oBAAoB,EAAE,KAAK;QAE3B,gBAAgB,EAAE,IAAI;QACtB,iBAAiB,EAAE,IAAI;QACvB,mBAAmB,EAAE,KAAK;QAE1B,UAAU,EAAE,IAAI;QAChB,mBAAmB,EAAE,KAAK;QAC1B,mBAAmB,EAAE,KAAK;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE,IAAI;QAEhB,cAAc,EAAE,KAAK;QAErB,YAAY,EAAE,KAAK;QAEnB,aAAa,EAAE;YACb,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,IAAI;SACjB;KACF;IAED,kBAAkB,EAAE,IAAI;IAExB,iFAAiF;IACjF,oFAAoF;IACpF,kEAAkE;IAClE,aAAa,EAAE;QACb,QAAQ,EAAE,KAAK;KAChB;IAED,YAAY,EAAE,IAAI;IAElB,eAAe,EAAE,IAAI;IAErB,aAAa,EAAE,IAAI;IAEnB,kBAAkB,EAAE,IAAI;IAExB,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;KACpB;IAED,6FAA6F;IAC7F,0FAA0F;IAC1F,+FAA+F;IAC/F,eAAe,EAAE;QACf,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,IAAI;KACtB;IAED,yFAAyF;IACzF,yFAAyF;IACzF,uFAAuF;IACvF,WAAW,EAAE;QACX,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,KAAK;QACrB,oBAAoB,EAAE,EAAE;QACxB,qBAAqB,EAAE,EAAE;QACzB,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,GAAG;QACpB,kHAAkH;QAClH,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,oBAAoB,EAAE,IAAI;QAC1B,uBAAuB,EAAE,KAAK;QAC9B,sBAAsB,EAAE,CAAC;QACzB,QAAQ,EAAE,GAAG;QACb,WAAW,EAAE,KAAK;QAClB,8FAA8F;QAC9F,eAAe,EAAE,KAAK;QACtB,uBAAuB,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC;KACvE;IACD,+FAA+F;IAC/F,aAAa,EAAE;QACb,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,GAAG;KACrB;IAED,+FAA+F;IAC/F,iGAAiG;IACjG,iGAAiG;IACjG,gGAAgG;IAChG,uBAAuB,EAAE;QACvB,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,MAAM;QACtB,qBAAqB,EAAE,MAAM;QAC7B,sBAAsB,EAAE,EAAE;QAC1B,iBAAiB,EAAE,OAAO;KAC3B;CACF,CAAC"}
1
+ {"version":3,"file":"global-settings.const.js","sourceRoot":"","sources":["../../src/_collections/global-settings.const.ts"],"names":[],"mappings":";;;AAEA,uEAAoE;AAEpE,yFAAsF;AACtF,mFAAgF;AAEhF;;;GAGG;AACU,QAAA,qBAAqB,GAA0B;IAC1D,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,iBAAiB;IAChC,oBAAoB,EAAE,yCAAmB,CAAC,IAAI;IAC9C,qBAAqB,EAAE,2CAAoB,CAAC,IAAI;IAEhD,eAAe,EAAE,EAAE;IACnB,gBAAgB,EAAE,GAAG;IACrB,YAAY,EAAE,IAAA,6DAA6B,GAAE;IAE7C,oCAAoC,EAAE,IAAI;IAC1C,oBAAoB,EAAE,IAAI;IAE1B,YAAY,EAAE;QACZ,gBAAgB,EAAE,KAAK;QAEvB,KAAK,EAAE,KAAK;QAEZ,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,KAAK;QACtB,eAAe,EAAE,KAAK;QACtB,iGAAiG;QACjG,mBAAmB,EAAE,KAAK;QAC1B,oBAAoB,EAAE,KAAK;QAE3B,gBAAgB,EAAE,IAAI;QACtB,iBAAiB,EAAE,IAAI;QACvB,mBAAmB,EAAE,KAAK;QAE1B,UAAU,EAAE,IAAI;QAChB,mBAAmB,EAAE,KAAK;QAC1B,mBAAmB,EAAE,KAAK;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE,IAAI;QAEhB,cAAc,EAAE,KAAK;QAErB,YAAY,EAAE,KAAK;QAEnB,aAAa,EAAE;YACb,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,IAAI;SACjB;KACF;IAED,kBAAkB,EAAE,IAAI;IAExB,iFAAiF;IACjF,oFAAoF;IACpF,kEAAkE;IAClE,aAAa,EAAE;QACb,QAAQ,EAAE,KAAK;KAChB;IAED,YAAY,EAAE,IAAI;IAElB,eAAe,EAAE,IAAI;IAErB,aAAa,EAAE,IAAI;IAEnB,kBAAkB,EAAE,IAAI;IAExB,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;KACpB;IAED,6FAA6F;IAC7F,0FAA0F;IAC1F,+FAA+F;IAC/F,eAAe,EAAE;QACf,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,IAAI;KACtB;IAED,yFAAyF;IACzF,yFAAyF;IACzF,uFAAuF;IACvF,WAAW,EAAE;QACX,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,KAAK;QACrB,oBAAoB,EAAE,EAAE;QACxB,qBAAqB,EAAE,EAAE;QACzB,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,GAAG;QACpB,kHAAkH;QAClH,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,oBAAoB,EAAE,IAAI;QAC1B,uBAAuB,EAAE,KAAK;QAC9B,sBAAsB,EAAE,CAAC;QACzB,QAAQ,EAAE,GAAG;QACb,WAAW,EAAE,KAAK;QAClB,8FAA8F;QAC9F,eAAe,EAAE,KAAK;QACtB,uBAAuB,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC;KACvE;IACD,+FAA+F;IAC/F,aAAa,EAAE;QACb,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,GAAG;KACrB;IAED,+FAA+F;IAC/F,iGAAiG;IACjG,iGAAiG;IACjG,gGAAgG;IAChG,uBAAuB,EAAE;QACvB,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,MAAM;QACtB,qBAAqB,EAAE,MAAM;QAC7B,sBAAsB,EAAE,EAAE;QAC1B,iBAAiB,EAAE,OAAO;KAC3B;CACF,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * BFR-OLDLIGHTSITE-005 + BFR-MASTERPROMPTER-046 — VALUE-PATTERN based secret redaction.
3
+ *
4
+ * Two measured needs meet here:
5
+ *
6
+ * 1. **Connection URIs must never be logged with credentials** (`mongodb://user:secret@host/db`).
7
+ * The startup / connection-error paths logged the full `dbUri`, which is a direct secret
8
+ * disclosure, and a consumer-side logger config cannot safely work around it.
9
+ *
10
+ * 2. **A framework failure must stay diagnosable.** The safe-diagnostic reporter used the raw
11
+ * error only to derive a 4-value `causeType` and then dropped it, so a bootstrap failure was
12
+ * undiagnosable even in principle — colliding with the `core-error-debuggable` hard rule.
13
+ *
14
+ * The resolution is the same util: keep the diagnostic content, remove the credential.
15
+ *
16
+ * ⚠️ Deliberately VALUE-PATTERN based, not field-name based: name-based redaction is measurably
17
+ * leaky (a `key` field with an innocent name, a snake_case variant, or a credential embedded in a
18
+ * free-text message all slip through). Here we match the SHAPE of the secret wherever it appears —
19
+ * including inside an error message or a stack trace.
20
+ */
21
+ export declare class DyNTS_SecretRedaction_Util {
22
+ /** Ami a maszkolt érték helyére kerül. */
23
+ private static readonly mask;
24
+ /**
25
+ * Connection-URI userinfo maszkolása: `scheme://user:secret@host/db` → `scheme://***@host/db`.
26
+ * A séma, a host, a port és az adatbázis-név MEGMARAD — ezek a diagnosztika hordozói.
27
+ * SRV-alak (`mongodb+srv://`) és percent-encode-olt userinfo is kezelt.
28
+ */
29
+ static redactConnectionUri(value: string): string;
30
+ /**
31
+ * Ismert token-alakok maszkolása szabad szövegben (npm / GitHub / OpenAI-Anthropic / AWS /
32
+ * Google / Slack / Stripe / Google OAuth client secret), valamint a `key=value` alakú
33
+ * query-paraméterek, ahol a kulcs titok-jellegű.
34
+ */
35
+ static redactKnownTokens(value: string): string;
36
+ /** A teljes szöveg-szintű redakció (URI userinfo + ismert token-alakok). */
37
+ static redactText(value: string): string;
38
+ /**
39
+ * Egy hiba diagnosztikai alakja NAPLÓZÁSRA — a tartalom megmarad, a credential nem.
40
+ *
41
+ * Azért nem a nyers hibát adjuk tovább: a mért fixtúra szerint a nyers ok tartalmazhat teljes
42
+ * `mongodb://user:secret@host/db` URI-t. Így a bootstrap-bukás oka (üzenet + stack + név)
43
+ * megmarad a szerver-naplóban, a jelszó viszont nem.
44
+ */
45
+ static redactErrorForLog(error: unknown): {
46
+ name?: string;
47
+ message: string;
48
+ stack?: string;
49
+ } | unknown;
50
+ }
51
+ //# sourceMappingURL=secret-redaction.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-redaction.util.d.ts","sourceRoot":"","sources":["../../src/_collections/secret-redaction.util.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,0BAA0B;IAErC,0CAA0C;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAE7C;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAWjD;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IA+B/C,4EAA4E;IAC5E,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAMxC;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;CAuBvG"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyNTS_SecretRedaction_Util = void 0;
4
+ /**
5
+ * BFR-OLDLIGHTSITE-005 + BFR-MASTERPROMPTER-046 — VALUE-PATTERN based secret redaction.
6
+ *
7
+ * Two measured needs meet here:
8
+ *
9
+ * 1. **Connection URIs must never be logged with credentials** (`mongodb://user:secret@host/db`).
10
+ * The startup / connection-error paths logged the full `dbUri`, which is a direct secret
11
+ * disclosure, and a consumer-side logger config cannot safely work around it.
12
+ *
13
+ * 2. **A framework failure must stay diagnosable.** The safe-diagnostic reporter used the raw
14
+ * error only to derive a 4-value `causeType` and then dropped it, so a bootstrap failure was
15
+ * undiagnosable even in principle — colliding with the `core-error-debuggable` hard rule.
16
+ *
17
+ * The resolution is the same util: keep the diagnostic content, remove the credential.
18
+ *
19
+ * ⚠️ Deliberately VALUE-PATTERN based, not field-name based: name-based redaction is measurably
20
+ * leaky (a `key` field with an innocent name, a snake_case variant, or a credential embedded in a
21
+ * free-text message all slip through). Here we match the SHAPE of the secret wherever it appears —
22
+ * including inside an error message or a stack trace.
23
+ */
24
+ class DyNTS_SecretRedaction_Util {
25
+ /** Ami a maszkolt érték helyére kerül. */
26
+ static mask = '***';
27
+ /**
28
+ * Connection-URI userinfo maszkolása: `scheme://user:secret@host/db` → `scheme://***@host/db`.
29
+ * A séma, a host, a port és az adatbázis-név MEGMARAD — ezek a diagnosztika hordozói.
30
+ * SRV-alak (`mongodb+srv://`) és percent-encode-olt userinfo is kezelt.
31
+ */
32
+ static redactConnectionUri(value) {
33
+ if (typeof value !== 'string' || !value.length) {
34
+ return value;
35
+ }
36
+ return value.replace(/\b([a-zA-Z][a-zA-Z0-9+.-]*:\/\/)([^\s/@]+)@/g, (_match, scheme) => `${scheme}${DyNTS_SecretRedaction_Util.mask}@`);
37
+ }
38
+ /**
39
+ * Ismert token-alakok maszkolása szabad szövegben (npm / GitHub / OpenAI-Anthropic / AWS /
40
+ * Google / Slack / Stripe / Google OAuth client secret), valamint a `key=value` alakú
41
+ * query-paraméterek, ahol a kulcs titok-jellegű.
42
+ */
43
+ static redactKnownTokens(value) {
44
+ if (typeof value !== 'string' || !value.length) {
45
+ return value;
46
+ }
47
+ const patterns = [
48
+ /\bnpm_[A-Za-z0-9]{36}\b/g,
49
+ /\bgh[posur]_[A-Za-z0-9]{36,}\b/g,
50
+ /\bgithub_pat_[A-Za-z0-9_]{22,}\b/g,
51
+ /\bsk-(?:ant-|proj-)?[A-Za-z0-9_-]{20,}\b/g,
52
+ /\bAKIA[0-9A-Z]{16}\b/g,
53
+ /\bAIza[0-9A-Za-z_-]{35}\b/g,
54
+ /\bGOCSPX-[A-Za-z0-9_-]{20,}\b/g,
55
+ /\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g,
56
+ /\b[sr]k_live_[A-Za-z0-9]{20,}\b/g,
57
+ ];
58
+ let redacted = value;
59
+ for (const pattern of patterns) {
60
+ redacted = redacted.replace(pattern, DyNTS_SecretRedaction_Util.mask);
61
+ }
62
+ // `?token=…` / `&apiKey=…` alakú query-paraméterek értéke
63
+ redacted = redacted.replace(/([?&](?:[A-Za-z0-9_-]*(?:token|secret|password|passwd|key|passphrase)[A-Za-z0-9_-]*)=)[^&\s]+/gi, (_match, prefix) => `${prefix}${DyNTS_SecretRedaction_Util.mask}`);
64
+ return redacted;
65
+ }
66
+ /** A teljes szöveg-szintű redakció (URI userinfo + ismert token-alakok). */
67
+ static redactText(value) {
68
+ return DyNTS_SecretRedaction_Util.redactKnownTokens(DyNTS_SecretRedaction_Util.redactConnectionUri(value));
69
+ }
70
+ /**
71
+ * Egy hiba diagnosztikai alakja NAPLÓZÁSRA — a tartalom megmarad, a credential nem.
72
+ *
73
+ * Azért nem a nyers hibát adjuk tovább: a mért fixtúra szerint a nyers ok tartalmazhat teljes
74
+ * `mongodb://user:secret@host/db` URI-t. Így a bootstrap-bukás oka (üzenet + stack + név)
75
+ * megmarad a szerver-naplóban, a jelszó viszont nem.
76
+ */
77
+ static redactErrorForLog(error) {
78
+ if (error === null || error === undefined) {
79
+ return error;
80
+ }
81
+ if (typeof error === 'string') {
82
+ return DyNTS_SecretRedaction_Util.redactText(error);
83
+ }
84
+ if (error instanceof Error) {
85
+ return {
86
+ name: error.name,
87
+ message: DyNTS_SecretRedaction_Util.redactText(error.message),
88
+ stack: error.stack ? DyNTS_SecretRedaction_Util.redactText(error.stack) : undefined,
89
+ };
90
+ }
91
+ try {
92
+ return JSON.parse(DyNTS_SecretRedaction_Util.redactText(JSON.stringify(error)));
93
+ }
94
+ catch {
95
+ return { message: DyNTS_SecretRedaction_Util.redactText(String(error)) };
96
+ }
97
+ }
98
+ }
99
+ exports.DyNTS_SecretRedaction_Util = DyNTS_SecretRedaction_Util;
100
+ //# sourceMappingURL=secret-redaction.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-redaction.util.js","sourceRoot":"","sources":["../../src/_collections/secret-redaction.util.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAa,0BAA0B;IAErC,0CAA0C;IAClC,MAAM,CAAU,IAAI,GAAW,KAAK,CAAC;IAE7C;;;;OAIG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAa;QACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,KAAK,CAAC,OAAO,CAClB,8CAA8C,EAC9C,CAAC,MAAc,EAAE,MAAc,EAAU,EAAE,CAAC,GAAG,MAAM,GAAG,0BAA0B,CAAC,IAAI,GAAG,CAC3F,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAa;QACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAa;YACzB,0BAA0B;YAC1B,iCAAiC;YACjC,mCAAmC;YACnC,2CAA2C;YAC3C,uBAAuB;YACvB,4BAA4B;YAC5B,gCAAgC;YAChC,mCAAmC;YACnC,kCAAkC;SACnC,CAAC;QAEF,IAAI,QAAQ,GAAW,KAAK,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC;QAED,0DAA0D;QAC1D,QAAQ,GAAG,QAAQ,CAAC,OAAO,CACzB,iGAAiG,EACjG,CAAC,MAAc,EAAE,MAAc,EAAU,EAAE,CAAC,GAAG,MAAM,GAAG,0BAA0B,CAAC,IAAI,EAAE,CAC1F,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,4EAA4E;IAC5E,MAAM,CAAC,UAAU,CAAC,KAAa;QAC7B,OAAO,0BAA0B,CAAC,iBAAiB,CACjD,0BAA0B,CAAC,mBAAmB,CAAC,KAAK,CAAC,CACtD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAc;QACrC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,0BAA0B,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,0BAA0B,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC7D,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;aACpF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,0BAA0B,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3E,CAAC;IACH,CAAC;;AA7FH,gEA8FC"}
@@ -29,6 +29,20 @@ export interface DyNTS_GlobalLog_Settings {
29
29
  * this is an application wide default setting for route debug logs
30
30
  */
31
31
  responseContent?: boolean;
32
+ /**
33
+ * BFR-MASTERPROMPTER-046 — log the REDACTED cause of a safe-diagnostic failure to the SERVER log.
34
+ *
35
+ * Default: **false** — the `dynts-safe-diagnostic/1` contract (BFR-CTM-018) is content-free by
36
+ * design, and that default is NOT changed here: a framework failure never emits raw content on
37
+ * its own. Turning this on is an explicit operator decision for environments where a bootstrap
38
+ * failure would otherwise be undiagnosable (the measured master-prompter case: the whole evidence
39
+ * was a code, a stage and a fingerprint, which collides with `core-error-debuggable`).
40
+ *
41
+ * Even when enabled, the cause goes through `DyNTS_SecretRedaction_Util` first (connection-URI
42
+ * userinfo and known token shapes masked), so the diagnostic content survives but the credential
43
+ * does not. The OUTGOING response is unaffected in either case.
44
+ */
45
+ safeDiagnosticCause?: boolean;
32
46
  /**
33
47
  * this is an application wide default setting for route debug logs
34
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"global-log-settings.interface.d.ts","sourceRoot":"","sources":["../../../src/_models/interfaces/global-log-settings.interface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAG/B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAG9B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,aAAa,CAAC,EAAE;QACd,2DAA2D;QAC3D,OAAO,EAAE,OAAO,CAAC;QACjB,kDAAkD;QAClD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB;;;;;;;;;;;;;;;WAeG;QACH,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB;;;;;;WAMG;QACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACrE,CAAC;IAEF;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE;QACT,+DAA+D;QAC/D,OAAO,EAAE,OAAO,CAAC;QACjB,yEAAyE;QACzE,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,sDAAsD;QACtD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,4CAA4C;QAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,sEAAsE;QACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,0EAA0E;QAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,mEAAmE;QACnE,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,4CAA4C;QAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,4CAA4C;QAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;CACH"}
1
+ {"version":3,"file":"global-log-settings.interface.d.ts","sourceRoot":"","sources":["../../../src/_models/interfaces/global-log-settings.interface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;;;;;;;OAYG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAG/B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAG9B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,aAAa,CAAC,EAAE;QACd,2DAA2D;QAC3D,OAAO,EAAE,OAAO,CAAC;QACjB,kDAAkD;QAClD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB;;;;;;;;;;;;;;;WAeG;QACH,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB;;;;;;WAMG;QACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACrE,CAAC;IAEF;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE;QACT,+DAA+D;QAC/D,OAAO,EAAE,OAAO,CAAC;QACjB,yEAAyE;QACzE,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,sDAAsD;QACtD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,4CAA4C;QAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,sEAAsE;QACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,0EAA0E;QAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,mEAAmE;QACnE,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,4CAA4C;QAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,4CAA4C;QAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;CACH"}
@@ -7,7 +7,26 @@ export declare class DyNTS_SafeDiagnostic_ControlService {
7
7
  private static readonly defaultStatus;
8
8
  /** Returns an immutable exact allowlist and never reflects raw failure content. */
9
9
  static project(input: DyNTS_SafeDiagnosticInput_Interface): DyNTS_SafeDiagnostic_Interface;
10
- /** Logs only the projected allowlist and returns the same immutable diagnostic. */
10
+ /**
11
+ * Logs the projected allowlist for correlation AND the RAW cause for server-side debugging,
12
+ * then returns the same immutable diagnostic.
13
+ *
14
+ * BFR-MASTERPROMPTER-046 — the redaction is right for the OUTGOING response, but it was also
15
+ * applied to the SERVER-SIDE LOG: `report()` used the raw error only to derive a 4-value
16
+ * `causeType` and then dropped it. A bootstrap failure therefore became undiagnosable even in
17
+ * principle — the whole evidence was a code, a stage and a fingerprint. That collides with the
18
+ * `core-error-debuggable` global hard rule ("errors carry debug-level detail") and it made a
19
+ * measured CI failure unresolvable (master-prompter 01.15.990, 2026-09-01).
20
+ *
21
+ * The two logs are deliberately SEPARATE lines: the projection line stays content-free (safe to
22
+ * forward anywhere), while the cause line is explicitly marked server-only and never leaves the
23
+ * process. They share the fingerprint, so the public correlation id still leads to the cause.
24
+ *
25
+ * ⚠️ The cause is REDACTED before logging (BFR-OLDLIGHTSITE-005): a raw failure can carry a full
26
+ * `mongodb://user:secret@host/db` connection URI — the measured spec fixture is exactly that.
27
+ * `DyNTS_SecretRedaction_Util` keeps the diagnostic content (name, message, stack) and removes
28
+ * the credential, so neither requirement has to lose to the other.
29
+ */
11
30
  static report(input: DyNTS_SafeDiagnosticInput_Interface): DyNTS_SafeDiagnostic_Interface;
12
31
  /** Creates a framework error that carries only the safe diagnostic allowlist. */
13
32
  static toError(diagnostic: DyNTS_SafeDiagnostic_Interface): DyFM_Error;
@@ -1 +1 @@
1
- {"version":3,"file":"safe-diagnostic.control-service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/safe-diagnostic/safe-diagnostic.control-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAY,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EACL,mCAAmC,EACnC,8BAA8B,EAC/B,MAAM,6BAA6B,CAAC;AAErC,kFAAkF;AAClF,qBAAa,mCAAmC;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAwD;IAC/F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAgD;IACnF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAe;IAEpD,mFAAmF;IACnF,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,mCAAmC,GAAG,8BAA8B;IAsB1F,mFAAmF;IACnF,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,mCAAmC,GAAG,8BAA8B;IAQzF,iFAAiF;IACjF,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,8BAA8B,GAAG,UAAU;IAUtE,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,OAAO,CAAC,MAAM,CAAC,YAAY;IAwB3B,OAAO,CAAC,MAAM,CAAC,SAAS;IAQxB,OAAO,CAAC,MAAM,CAAC,cAAc;CAG9B"}
1
+ {"version":3,"file":"safe-diagnostic.control-service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/server/safe-diagnostic/safe-diagnostic.control-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAY,MAAM,uBAAuB,CAAC;AAM7D,OAAO,EACL,mCAAmC,EACnC,8BAA8B,EAC/B,MAAM,6BAA6B,CAAC;AAErC,kFAAkF;AAClF,qBAAa,mCAAmC;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAwD;IAC/F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAgD;IACnF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAe;IAEpD,mFAAmF;IACnF,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,mCAAmC,GAAG,8BAA8B;IAsB1F;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,mCAAmC,GAAG,8BAA8B;IAsBzF,iFAAiF;IACjF,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,8BAA8B,GAAG,UAAU;IAUtE,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,OAAO,CAAC,MAAM,CAAC,YAAY;IAwB3B,OAAO,CAAC,MAAM,CAAC,SAAS;IAQxB,OAAO,CAAC,MAAM,CAAC,cAAc;CAG9B"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DyNTS_SafeDiagnostic_ControlService = void 0;
4
4
  const crypto_1 = require("crypto");
5
5
  const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
6
+ const secret_redaction_util_1 = require("../../../_collections/secret-redaction.util");
7
+ const global_settings_const_1 = require("../../../_collections/global-settings.const");
6
8
  const safe_diagnostic_cause_type_enum_1 = require("./safe-diagnostic-cause.type-enum");
7
9
  /** Projects arbitrary failures to a versioned, content-free public diagnostic. */
8
10
  class DyNTS_SafeDiagnostic_ControlService {
@@ -30,10 +32,37 @@ class DyNTS_SafeDiagnostic_ControlService {
30
32
  status: status,
31
33
  });
32
34
  }
33
- /** Logs only the projected allowlist and returns the same immutable diagnostic. */
35
+ /**
36
+ * Logs the projected allowlist for correlation AND the RAW cause for server-side debugging,
37
+ * then returns the same immutable diagnostic.
38
+ *
39
+ * BFR-MASTERPROMPTER-046 — the redaction is right for the OUTGOING response, but it was also
40
+ * applied to the SERVER-SIDE LOG: `report()` used the raw error only to derive a 4-value
41
+ * `causeType` and then dropped it. A bootstrap failure therefore became undiagnosable even in
42
+ * principle — the whole evidence was a code, a stage and a fingerprint. That collides with the
43
+ * `core-error-debuggable` global hard rule ("errors carry debug-level detail") and it made a
44
+ * measured CI failure unresolvable (master-prompter 01.15.990, 2026-09-01).
45
+ *
46
+ * The two logs are deliberately SEPARATE lines: the projection line stays content-free (safe to
47
+ * forward anywhere), while the cause line is explicitly marked server-only and never leaves the
48
+ * process. They share the fingerprint, so the public correlation id still leads to the cause.
49
+ *
50
+ * ⚠️ The cause is REDACTED before logging (BFR-OLDLIGHTSITE-005): a raw failure can carry a full
51
+ * `mongodb://user:secret@host/db` connection URI — the measured spec fixture is exactly that.
52
+ * `DyNTS_SecretRedaction_Util` keeps the diagnostic content (name, message, stack) and removes
53
+ * the credential, so neither requirement has to lose to the other.
54
+ */
34
55
  static report(input) {
35
56
  const diagnostic = this.project(input);
36
57
  fsm_dynamo_1.DyFM_Log.error('[DyNTS safe diagnostic]', diagnostic);
58
+ // A content-free kontraktus (BFR-CTM-018) a DEFAULT: az ok-naplozas OPT-IN, es akkor is
59
+ // redaktalva megy ki. Igy a ket bejelentes (MP-046 diagnosztizalhatosag vs. CTM-018
60
+ // content-free) egyszerre teljesul, es a meglevo szerzodest nem irjuk felul egyoldaluan.
61
+ if (global_settings_const_1.DyNTS_global_settings.log_settings?.safeDiagnosticCause === true
62
+ && input.error !== undefined && input.error !== null) {
63
+ fsm_dynamo_1.DyFM_Log.error(`[DyNTS safe diagnostic] SERVER-ONLY cause (fingerprint ${diagnostic.fingerprint}, `
64
+ + `stage ${diagnostic.stage}) - never sent to a client:`, secret_redaction_util_1.DyNTS_SecretRedaction_Util.redactErrorForLog(input.error));
65
+ }
37
66
  return diagnostic;
38
67
  }
39
68
  /** Creates a framework error that carries only the safe diagnostic allowlist. */
@@ -1 +1 @@
1
- {"version":3,"file":"safe-diagnostic.control-service.js","sourceRoot":"","sources":["../../../../src/_modules/server/safe-diagnostic/safe-diagnostic.control-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safe-diagnostic.control-service.js","sourceRoot":"","sources":["../../../../src/_modules/server/safe-diagnostic/safe-diagnostic.control-service.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,23 @@ export declare abstract class DyNTS_ApiService_Base extends DyNTS_SingletonServi
4
4
  abstract get testEndpoint(): string;
5
5
  abstract get connectingSystemName(): string;
6
6
  runApiCallWithAvailabilityCheck<T>(apiCall: () => Promise<T>, issuer: string): Promise<T>;
7
+ /**
8
+ * BFR-FSMED-008 — az az env-var, aminek ennek a fuggosegnek a base URL-jet hordoznia kell.
9
+ * A fogyaszto felulirhatja; a guard ezt teszi a remediation-be, hogy az uzenet KONKRET legyen.
10
+ */
11
+ get requiredBaseUrlEnvVar(): string | undefined;
12
+ /**
13
+ * BFR-FSMED-008 — BOOTSTRAP/PREFLIGHT: a downstream target nem lehet lokalis host `test`/`prod`
14
+ * kornyezetben, es nem lehet hianyzo vagy malformed.
15
+ *
16
+ * A mert incidens: az auth-target `http://0.0.0.0:39005/api` lett a test-kornyezetben — a
17
+ * szolgaltatas ONMAGAHOZ probalt csatlakozni —, es ez csak az ELSO valos login-kiserletnel derult
18
+ * ki, akkor is egy altalanos "server is not available" uzenettel, amibol nem latszott, hogy a
19
+ * KONFIGURACIO a hibas. Bootstrapben hivva ez mar indulaskor kimondja a bajt.
20
+ *
21
+ * @throws {DyFM_Error} `DyNTS-ASB-DEP0` (503) — strukturalt `additionalContent`-tel.
22
+ */
23
+ assertDependencyHostIsValid(issuer?: string): void;
7
24
  checkServerAvailability(issuer: string): Promise<void>;
8
25
  testGet(issuer: string): Promise<void>;
9
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api.service-base.d.ts","sourceRoot":"","sources":["../../../src/_services/base/api.service-base.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAI7D,8BAAsB,qBAAsB,SAAQ,sBAAsB;IAOxE,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC;IAC/B,QAAQ,KAAK,YAAY,IAAI,MAAM,CAAC;IACpC,QAAQ,KAAK,oBAAoB,IAAI,MAAM,CAAC;IAEtC,+BAA+B,CAAC,CAAC,EACrC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,CAAC,CAAC;IAUP,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBtD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB7C"}
1
+ {"version":3,"file":"api.service-base.d.ts","sourceRoot":"","sources":["../../../src/_services/base/api.service-base.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAO7D,8BAAsB,qBAAsB,SAAQ,sBAAsB;IAOxE,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC;IAC/B,QAAQ,KAAK,YAAY,IAAI,MAAM,CAAC;IACpC,QAAQ,KAAK,oBAAoB,IAAI,MAAM,CAAC;IAEtC,+BAA+B,CAAC,CAAC,EACrC,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,CAAC,CAAC;IAUb;;;OAGG;IACH,IAAI,qBAAqB,IAAI,MAAM,GAAG,SAAS,CAE9C;IAED;;;;;;;;;;OAUG;IACH,2BAA2B,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IA0B5C,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4CtD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB7C"}
@@ -5,6 +5,7 @@ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
5
5
  const singleton_service_1 = require("./singleton.service");
6
6
  const api_service_1 = require("../core/api.service");
7
7
  const __1 = require("../..");
8
+ const dependency_host_guard_util_1 = require("../../_collections/dependency-host-guard.util");
8
9
  class DyNTS_ApiService_Base extends singleton_service_1.DyNTS_SingletonService {
9
10
  async runApiCallWithAvailabilityCheck(apiCall, issuer) {
10
11
  try {
@@ -15,16 +16,74 @@ class DyNTS_ApiService_Base extends singleton_service_1.DyNTS_SingletonService {
15
16
  throw error;
16
17
  }
17
18
  }
19
+ /**
20
+ * BFR-FSMED-008 — az az env-var, aminek ennek a fuggosegnek a base URL-jet hordoznia kell.
21
+ * A fogyaszto felulirhatja; a guard ezt teszi a remediation-be, hogy az uzenet KONKRET legyen.
22
+ */
23
+ get requiredBaseUrlEnvVar() {
24
+ return undefined;
25
+ }
26
+ /**
27
+ * BFR-FSMED-008 — BOOTSTRAP/PREFLIGHT: a downstream target nem lehet lokalis host `test`/`prod`
28
+ * kornyezetben, es nem lehet hianyzo vagy malformed.
29
+ *
30
+ * A mert incidens: az auth-target `http://0.0.0.0:39005/api` lett a test-kornyezetben — a
31
+ * szolgaltatas ONMAGAHOZ probalt csatlakozni —, es ez csak az ELSO valos login-kiserletnel derult
32
+ * ki, akkor is egy altalanos "server is not available" uzenettel, amibol nem latszott, hogy a
33
+ * KONFIGURACIO a hibas. Bootstrapben hivva ez mar indulaskor kimondja a bajt.
34
+ *
35
+ * @throws {DyFM_Error} `DyNTS-ASB-DEP0` (503) — strukturalt `additionalContent`-tel.
36
+ */
37
+ assertDependencyHostIsValid(issuer) {
38
+ const violation = dependency_host_guard_util_1.DyNTS_DependencyHostGuard_Util.inspect({
39
+ dependency: this.connectingSystemName,
40
+ targetUrl: this.baseUrl,
41
+ environment: `${__1.DyNTS_global_settings.env_settings?.environment ?? ''}`,
42
+ requiredEnvironmentVariable: this.requiredBaseUrlEnvVar,
43
+ });
44
+ if (!violation) {
45
+ return;
46
+ }
47
+ throw new fsm_dynamo_1.DyFM_Error({
48
+ ...this.getDefaultErrorSettings('assertDependencyHostIsValid', new Error(dependency_host_guard_util_1.DyNTS_DependencyHostGuard_Util.describe(violation)), issuer),
49
+ status: 503,
50
+ userMessage: `${this.connectingSystemName} is not configured correctly for this environment.`,
51
+ errorCode: `${__1.DyNTS_global_settings.systemShortCodeName}|DyNTS-ASB-DEP0`,
52
+ additionalContent: { ...violation },
53
+ });
54
+ }
18
55
  async checkServerAvailability(issuer) {
56
+ // BFR-FSMED-008: ELOSZOR a konfiguraciot merjuk. Ha a target lokalis hostra mutat `test`/`prod`-ban,
57
+ // az NEM elerhetosegi hiba — es a "server is not available" uzenet ilyenkor FELREVEZET: a tavoli
58
+ // szervert kuldi keresni, holott a sajat konfiguracio a hibas.
59
+ this.assertDependencyHostIsValid(issuer);
19
60
  try {
20
61
  await this.testGet(issuer);
21
62
  }
22
63
  catch (error) {
64
+ const violation = dependency_host_guard_util_1.DyNTS_DependencyHostGuard_Util.inspect({
65
+ dependency: this.connectingSystemName,
66
+ targetUrl: this.baseUrl,
67
+ environment: `${__1.DyNTS_global_settings.env_settings?.environment ?? ''}`,
68
+ requiredEnvironmentVariable: this.requiredBaseUrlEnvVar,
69
+ });
23
70
  throw new fsm_dynamo_1.DyFM_Error({
24
71
  ...this.getDefaultErrorSettings('checkServerAvailability', new Error(`${this.connectingSystemName} server is not available` +
25
72
  `\n baseUrl: ${this.baseUrl}`), issuer),
26
73
  userMessage: `${this.connectingSystemName} server is not available`,
27
74
  errorCode: `${__1.DyNTS_global_settings.systemShortCodeName}|DyNTS-ASB-CSA0`,
75
+ // BFR-FSMED-008: a strukturalt kontextus a RUNTIME hibaba is bekerul — eddig csak a felso
76
+ // endpoint-wrapper formazott `endpointInfo` SZOVEGEBEN volt, amibol gepileg nem lehetett
77
+ // kiolvasni, melyik fuggoseg, milyen URL-lel, milyen kornyezetben bukott.
78
+ additionalContent: {
79
+ dependency: this.connectingSystemName,
80
+ targetUrl: this.baseUrl,
81
+ environment: `${__1.DyNTS_global_settings.env_settings?.environment ?? ''}`,
82
+ requiredEnvironmentVariable: this.requiredBaseUrlEnvVar,
83
+ remediation: violation
84
+ ? violation.remediation
85
+ : `Verify that '${this.connectingSystemName}' is deployed and reachable at the target URL.`,
86
+ },
28
87
  });
29
88
  }
30
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api.service-base.js","sourceRoot":"","sources":["../../../src/_services/base/api.service-base.ts"],"names":[],"mappings":";;;AAAA,sDAG+B;AAE/B,2DAA6D;AAC7D,qDAAuD;AACvD,6BAAoE;AAEpE,MAAsB,qBAAsB,SAAQ,0CAAsB;IAWxE,KAAK,CAAC,+BAA+B,CACnC,OAAyB,EACzB,MAAc;QAEd,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;YAE3C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAc;QAC1C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,uBAAuB,CAC7B,yBAAyB,EACzB,IAAI,KAAK,CACP,GAAG,IAAI,CAAC,oBAAoB,0BAA0B;oBACtD,kBAAkB,IAAI,CAAC,OAAO,EAAE,CACjC,EACD,MAAM,CACP;gBACD,WAAW,EAAE,GAAG,IAAI,CAAC,oBAAoB,0BAA0B;gBACnE,SAAS,EAAE,GAAG,yBAAqB,CAAC,mBAAmB,iBAAiB;aACzE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,uBAAU,CAAC;gBACnB,GAAG,IAAI,CAAC,uBAAuB,CAC7B,SAAS,EACT,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,oBAAoB,EAAE,CAAC,EACrE,MAAM,CACP;aACF,CAAC,CAAC;QACL,CAAC;QAED,MAAM,8BAAgB,CAAC,YAAY,CACjC,IAAI,wBAAoB,CAAC;YACvB,IAAI,EAAE,GAAG,IAAI,CAAC,oBAAoB,UAAU;YAC5C,IAAI,EAAE,8BAAiB,CAAC,GAAG;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,YAAY;SAC5B,CAAC,CACH,CAAC;QAEF,qBAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,oBAAoB,eAAe,CAAC,CAAC;IAChE,CAAC;CACF;AAjED,sDAiEC"}
1
+ {"version":3,"file":"api.service-base.js","sourceRoot":"","sources":["../../../src/_services/base/api.service-base.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.192",
3
+ "version": "01.15.194",
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",