@futdevpro/nts-dynamo 1.15.330 → 1.15.331

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.
@@ -12,5 +12,10 @@ export interface DyNTS_ClientSafeError_Response {
12
12
  __userMessages?: string[];
13
13
  ___status?: number;
14
14
  level?: string | number;
15
+ /**
16
+ * The context the thrower DELIBERATELY marked public (`DyFM_Error` `publicContext`, BFR-CCAPREVISIONED-011) — the
17
+ * only diagnostic context that crosses the public boundary; a plain JSON object, size-capped.
18
+ */
19
+ __publicContext?: Record<string, unknown>;
15
20
  }
16
21
  //# sourceMappingURL=client-safe-error-response.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-safe-error-response.interface.d.ts","sourceRoot":"","sources":["../../src/_collections/client-safe-error-response.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"client-safe-error-response.interface.d.ts","sourceRoot":"","sources":["../../src/_collections/client-safe-error-response.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C"}
@@ -7,6 +7,8 @@ import { DyNTS_ClientSafeError_Response } from './client-safe-error-response.int
7
7
  */
8
8
  export declare class DyNTS_ClientSafeError_Util {
9
9
  private static readonly genericClientMessage;
10
+ /** The serialized size cap of `__publicContext` — a public field must not become a data channel. */
11
+ static readonly maxPublicContextBytes: number;
10
12
  /**
11
13
  * Converts any thrown value to a newly allocated public response object.
12
14
  *
@@ -17,6 +19,11 @@ export declare class DyNTS_ClientSafeError_Util {
17
19
  static toClientSafe(error: unknown): DyNTS_ClientSafeError_Response | {
18
20
  message: string;
19
21
  };
22
+ /**
23
+ * A plain object that survives a JSON round trip within the size cap — returned as a fresh copy (no references into
24
+ * the source error); anything else (arrays, class instances, cycles, oversized) is dropped.
25
+ */
26
+ private static publicJsonObject;
20
27
  private static nonEmptyString;
21
28
  private static stringArray;
22
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client-safe-error.util.d.ts","sourceRoot":"","sources":["../../src/_collections/client-safe-error.util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAExF;;;;;GAKG;AACH,qBAAa,0BAA0B;IAErC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CACsC;IAElF;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,8BAA8B,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAyCzF,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B,OAAO,CAAC,MAAM,CAAC,WAAW;CAS3B"}
1
+ {"version":3,"file":"client-safe-error.util.d.ts","sourceRoot":"","sources":["../../src/_collections/client-safe-error.util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAExF;;;;;GAKG;AACH,qBAAa,0BAA0B;IAErC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CACsC;IAElF,oGAAoG;IACpG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAQ;IAErD;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,8BAA8B,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAkDzF;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAoB/B,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B,OAAO,CAAC,MAAM,CAAC,WAAW;CAS3B"}
@@ -10,6 +10,8 @@ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
10
10
  */
11
11
  class DyNTS_ClientSafeError_Util {
12
12
  static genericClientMessage = 'An internal error occurred.\nPlease contact the responsible development team.';
13
+ /** The serialized size cap of `__publicContext` — a public field must not become a data channel. */
14
+ static maxPublicContextBytes = 4096;
13
15
  /**
14
16
  * Converts any thrown value to a newly allocated public response object.
15
17
  *
@@ -48,8 +50,35 @@ class DyNTS_ClientSafeError_Util {
48
50
  if (typeof level === 'string' || (typeof level === 'number' && Number.isFinite(level))) {
49
51
  response.level = level;
50
52
  }
53
+ // BFR-CCAPREVISIONED-011: the ONLY diagnostic context allowed out — what the thrower explicitly marked public.
54
+ // `additionalContent` and `stack` stay server-side. Read via Reflect: works with any fsm-dynamo version.
55
+ const publicContext = DyNTS_ClientSafeError_Util.publicJsonObject(Reflect.get(source, '__publicContext'));
56
+ if (publicContext !== undefined) {
57
+ response.__publicContext = publicContext;
58
+ }
51
59
  return response;
52
60
  }
61
+ /**
62
+ * A plain object that survives a JSON round trip within the size cap — returned as a fresh copy (no references into
63
+ * the source error); anything else (arrays, class instances, cycles, oversized) is dropped.
64
+ */
65
+ static publicJsonObject(value) {
66
+ if (typeof value !== 'object' || value === null || Array.isArray(value)
67
+ || Object.getPrototypeOf(value) !== Object.prototype) {
68
+ return undefined;
69
+ }
70
+ try {
71
+ const serialized = JSON.stringify(value);
72
+ if (serialized.length > DyNTS_ClientSafeError_Util.maxPublicContextBytes) {
73
+ return undefined;
74
+ }
75
+ const copy = JSON.parse(serialized);
76
+ return typeof copy === 'object' && copy !== null && Object.keys(copy).length ? Object(copy) : undefined;
77
+ }
78
+ catch {
79
+ return undefined;
80
+ }
81
+ }
53
82
  static nonEmptyString(value) {
54
83
  return typeof value === 'string' && value.length > 0 ? value : undefined;
55
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client-safe-error.util.js","sourceRoot":"","sources":["../../src/_collections/client-safe-error.util.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAInD;;;;;GAKG;AACH,MAAa,0BAA0B;IAE7B,MAAM,CAAU,oBAAoB,GAC1C,+EAA+E,CAAC;IAElF;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,CAAC,KAAc;QAChC,IAAI,CAAC,uBAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,0BAA0B,CAAC,oBAAoB,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,MAAM,GAAe,KAAK,CAAC;QACjC,MAAM,WAAW,GAAW,0BAA0B,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;eACtF,0BAA0B,CAAC,oBAAoB,CAAC;QACrD,MAAM,QAAQ,GAAmC;YAC/C,QAAQ,EAAE,WAAW;YACrB,aAAa,EAAE,WAAW;SAC3B,CAAC;QACF,MAAM,SAAS,GAAuB,0BAA0B,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnG,MAAM,UAAU,GAAyB,0BAA0B,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpG,MAAM,YAAY,GAAyB,0BAA0B,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACzG,MAAM,MAAM,GAAY,MAAM,CAAC,SAAS,CAAC;QACzC,MAAM,KAAK,GAAY,MAAM,CAAC,KAAK,CAAC;QAEpC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC;QAClC,CAAC;QAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;QACpC,CAAC;QAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC,cAAc,GAAG,YAAY,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC;QAC9B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACvF,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QACzB,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,KAAc;QAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,KAAc;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAa,KAAK,CAAC,MAAM,CAAC,CAAC,KAAc,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;QAEvG,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,OAAO,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;;AAjEH,gEAkEC"}
1
+ {"version":3,"file":"client-safe-error.util.js","sourceRoot":"","sources":["../../src/_collections/client-safe-error.util.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAInD;;;;;GAKG;AACH,MAAa,0BAA0B;IAE7B,MAAM,CAAU,oBAAoB,GAC1C,+EAA+E,CAAC;IAElF,oGAAoG;IACpG,MAAM,CAAU,qBAAqB,GAAW,IAAI,CAAC;IAErD;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,CAAC,KAAc;QAChC,IAAI,CAAC,uBAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,0BAA0B,CAAC,oBAAoB,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,MAAM,GAAe,KAAK,CAAC;QACjC,MAAM,WAAW,GAAW,0BAA0B,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;eACtF,0BAA0B,CAAC,oBAAoB,CAAC;QACrD,MAAM,QAAQ,GAAmC;YAC/C,QAAQ,EAAE,WAAW;YACrB,aAAa,EAAE,WAAW;SAC3B,CAAC;QACF,MAAM,SAAS,GAAuB,0BAA0B,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnG,MAAM,UAAU,GAAyB,0BAA0B,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpG,MAAM,YAAY,GAAyB,0BAA0B,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACzG,MAAM,MAAM,GAAY,MAAM,CAAC,SAAS,CAAC;QACzC,MAAM,KAAK,GAAY,MAAM,CAAC,KAAK,CAAC;QAEpC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC;QAClC,CAAC;QAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;QACpC,CAAC;QAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC,cAAc,GAAG,YAAY,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC;QAC9B,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACvF,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QACzB,CAAC;QAED,+GAA+G;QAC/G,yGAAyG;QACzG,MAAM,aAAa,GACjB,0BAA0B,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAEtF,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,QAAQ,CAAC,eAAe,GAAG,aAAa,CAAC;QAC3C,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,gBAAgB,CAAC,KAAc;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;eAClE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAEjD,IAAI,UAAU,CAAC,MAAM,GAAG,0BAA0B,CAAC,qBAAqB,EAAE,CAAC;gBACzE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE7C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1G,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,KAAc;QAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,KAAc;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAa,KAAK,CAAC,MAAM,CAAC,CAAC,KAAc,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;QAEvG,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,OAAO,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;;AArGH,gEAsGC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/nts-dynamo",
3
- "version": "01.15.330",
3
+ "version": "01.15.331",
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",
@@ -512,7 +512,7 @@
512
512
  }
513
513
  },
514
514
  "devDependencies": {
515
- "@futdevpro/fsm-dynamo": "1.20.78",
515
+ "@futdevpro/fsm-dynamo": "1.20.80",
516
516
  "@futdevpro/dynamo-eslint": "1.20.29",
517
517
  "@discordjs/opus": "^0.10.0",
518
518
  "@discordjs/voice": "^0.18.0",