@futdevpro/nts-dynamo 1.15.195 → 1.15.197

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.
@@ -0,0 +1,101 @@
1
+ import { URL } from 'url';
2
+ /**
3
+ * BFR-FSMED-013 — SSRF-safe, KORLÁTOS remote-metadata kliens.
4
+ *
5
+ * Egy nyilvános felületről érkező URL letöltése a klasszikus SSRF-felület: a szerver a saját
6
+ * hálózati pozíciójából kér le tetszőleges címet. A védelemnek ezért **minden DNS-válaszra és
7
+ * minden redirect-hopra** érvényesnek kell lennie, nem csak az első URL-re — különben egy
8
+ * **DNS-rebinding** vagy egy belső címre mutató redirect átviszi a kérést a privát hálózatba.
9
+ *
10
+ * Amit kikényszerít:
11
+ * - URL-normalizálás, credential-es URL (`user:pass@`) TILTVA;
12
+ * - protokoll-policy (alapból csak `https:`);
13
+ * - **minden** feloldott IP ellenőrzése (privát / loopback / link-local / reserved / CGNAT),
14
+ * IPv4-in-IPv6 és vegyes jelölés kezelésével;
15
+ * - redirect-limit, és **hopokként újra-ellenőrzött** cél;
16
+ * - timeout, maximális válasz-méret (bounded stream — a body sosem olvasható korlátlanul),
17
+ * engedélyezett content-type lista;
18
+ * - stabil `reason` kódok és REDAKTÁLT diagnosztika (a hibába nem kerül credential).
19
+ */
20
+ /** Stabil, gépileg feldolgozható elutasítási okok. */
21
+ export declare enum DyNTS_SafeFetchReason_Type {
22
+ invalidUrl = "invalid-url",
23
+ credentialsInUrl = "credentials-in-url",
24
+ protocolNotAllowed = "protocol-not-allowed",
25
+ hostNotResolvable = "host-not-resolvable",
26
+ blockedAddress = "blocked-address",
27
+ tooManyRedirects = "too-many-redirects",
28
+ contentTypeNotAllowed = "content-type-not-allowed",
29
+ responseTooLarge = "response-too-large",
30
+ timeout = "timeout",
31
+ requestFailed = "request-failed"
32
+ }
33
+ /** A kliens beállításai — minden korlát explicit, alapértelmezés a szigorúbb. */
34
+ export interface DyNTS_SafeFetch_Options_Interface {
35
+ allowedProtocols?: string[];
36
+ maxRedirects?: number;
37
+ timeoutMs?: number;
38
+ maxResponseBytes?: number;
39
+ allowedContentTypes?: string[];
40
+ /** Injektálható DNS-feloldó — teszthez és a rebinding-mátrixhoz. */
41
+ resolve?: (hostname: string) => Promise<string[]>;
42
+ /** Injektálható transport — teszthez, illetve saját HTTP-réteghez (proxy, mTLS). */
43
+ transport?: DyNTS_SafeFetch_Transport;
44
+ }
45
+ /** Egyetlen HTTP-hop kimenete — a body itt MÁR korlátos. */
46
+ export interface DyNTS_SafeFetch_TransportResult_Interface {
47
+ status: number;
48
+ headers: Record<string, string | string[] | undefined>;
49
+ body: string;
50
+ bytes: number;
51
+ truncated: boolean;
52
+ }
53
+ /** Injektálható transport-szignatúra. */
54
+ export type DyNTS_SafeFetch_Transport = (url: URL, options: DyNTS_SafeFetch_Options_Interface) => Promise<DyNTS_SafeFetch_TransportResult_Interface>;
55
+ /** Sikeres letöltés eredménye — a body KORLÁTOS. */
56
+ export interface DyNTS_SafeFetch_Result_Interface {
57
+ finalUrl: string;
58
+ /** A bejárt hopok, az eredeti URL-lel kezdve — auditálható redirect-lánc. */
59
+ redirectChain: string[];
60
+ status: number;
61
+ contentType: string;
62
+ bytes: number;
63
+ body: string;
64
+ truncated: boolean;
65
+ }
66
+ /** Elutasítás — stabil kóddal és redaktált diagnosztikával. */
67
+ export declare class DyNTS_SafeFetch_Error extends Error {
68
+ readonly reason: DyNTS_SafeFetchReason_Type;
69
+ readonly diagnostic?: Record<string, unknown>;
70
+ constructor(reason: DyNTS_SafeFetchReason_Type, message: string, diagnostic?: Record<string, unknown>);
71
+ }
72
+ export declare class DyNTS_SafeRemoteFetch_Util {
73
+ private static readonly defaults;
74
+ /**
75
+ * IP-cím blokkolandó-e. IPv4 és IPv6 (a **IPv4-in-IPv6** alakkal együtt: `::ffff:10.0.0.1`).
76
+ *
77
+ * ⚠️ Ez a döntő pont: a hostnév ártalmatlan lehet, miközben egy KÜLSŐ DNS-szerver privát címre
78
+ * oldja fel (DNS-rebinding). Ezért a szűrés a FELOLDOTT CÍMEN történik, nem a néven.
79
+ */
80
+ static isBlockedAddress(address: string): boolean;
81
+ /** Privát / loopback / link-local / reserved / CGNAT IPv4. */
82
+ private static isBlockedIpv4;
83
+ /** Loopback / link-local / unique-local / unspecified IPv6. */
84
+ private static isBlockedIpv6;
85
+ /** URL-normalizálás + protokoll- és credential-ellenőrzés. */
86
+ static assertUrlIsAllowed(rawUrl: string, options?: DyNTS_SafeFetch_Options_Interface): URL;
87
+ /** A host MINDEN feloldott címét ellenőrzi — egyetlen blokkolt cím is elutasít. */
88
+ static assertHostResolvesToPublicAddress(hostname: string, options?: DyNTS_SafeFetch_Options_Interface): Promise<string[]>;
89
+ /** Content-type engedélyezett-e (a paramétereket levágva). */
90
+ static isContentTypeAllowed(contentType: string, options?: DyNTS_SafeFetch_Options_Interface): boolean;
91
+ /**
92
+ * KORLÁTOS letöltés: minden hopon újra-ellenőrzött cél, bounded body, timeout.
93
+ *
94
+ * A body-t soha nem olvassuk korlátlanul: a `maxResponseBytes` fölött a kapcsolatot elvágjuk
95
+ * (a `Content-Length` HIÁNYA nem mentesít — a stream-limit a valódi védelem).
96
+ */
97
+ static fetchMetadata(rawUrl: string, options?: DyNTS_SafeFetch_Options_Interface): Promise<DyNTS_SafeFetch_Result_Interface>;
98
+ /** Egyetlen HTTP-hívás bounded stream-olvasással és timeouttal (az alapértelmezett transport). */
99
+ static request(url: URL, options?: DyNTS_SafeFetch_Options_Interface): Promise<DyNTS_SafeFetch_TransportResult_Interface>;
100
+ }
101
+ //# sourceMappingURL=safe-remote-fetch.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-remote-fetch.util.d.ts","sourceRoot":"","sources":["../../src/_collections/safe-remote-fetch.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyNTS_SafeRemoteFetch_Util = exports.DyNTS_SafeFetch_Error = exports.DyNTS_SafeFetchReason_Type = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const dns = tslib_1.__importStar(require("dns"));
6
+ const http = tslib_1.__importStar(require("http"));
7
+ const https = tslib_1.__importStar(require("https"));
8
+ const url_1 = require("url");
9
+ /**
10
+ * BFR-FSMED-013 — SSRF-safe, KORLÁTOS remote-metadata kliens.
11
+ *
12
+ * Egy nyilvános felületről érkező URL letöltése a klasszikus SSRF-felület: a szerver a saját
13
+ * hálózati pozíciójából kér le tetszőleges címet. A védelemnek ezért **minden DNS-válaszra és
14
+ * minden redirect-hopra** érvényesnek kell lennie, nem csak az első URL-re — különben egy
15
+ * **DNS-rebinding** vagy egy belső címre mutató redirect átviszi a kérést a privát hálózatba.
16
+ *
17
+ * Amit kikényszerít:
18
+ * - URL-normalizálás, credential-es URL (`user:pass@`) TILTVA;
19
+ * - protokoll-policy (alapból csak `https:`);
20
+ * - **minden** feloldott IP ellenőrzése (privát / loopback / link-local / reserved / CGNAT),
21
+ * IPv4-in-IPv6 és vegyes jelölés kezelésével;
22
+ * - redirect-limit, és **hopokként újra-ellenőrzött** cél;
23
+ * - timeout, maximális válasz-méret (bounded stream — a body sosem olvasható korlátlanul),
24
+ * engedélyezett content-type lista;
25
+ * - stabil `reason` kódok és REDAKTÁLT diagnosztika (a hibába nem kerül credential).
26
+ */
27
+ /** Stabil, gépileg feldolgozható elutasítási okok. */
28
+ var DyNTS_SafeFetchReason_Type;
29
+ (function (DyNTS_SafeFetchReason_Type) {
30
+ DyNTS_SafeFetchReason_Type["invalidUrl"] = "invalid-url";
31
+ DyNTS_SafeFetchReason_Type["credentialsInUrl"] = "credentials-in-url";
32
+ DyNTS_SafeFetchReason_Type["protocolNotAllowed"] = "protocol-not-allowed";
33
+ DyNTS_SafeFetchReason_Type["hostNotResolvable"] = "host-not-resolvable";
34
+ DyNTS_SafeFetchReason_Type["blockedAddress"] = "blocked-address";
35
+ DyNTS_SafeFetchReason_Type["tooManyRedirects"] = "too-many-redirects";
36
+ DyNTS_SafeFetchReason_Type["contentTypeNotAllowed"] = "content-type-not-allowed";
37
+ DyNTS_SafeFetchReason_Type["responseTooLarge"] = "response-too-large";
38
+ DyNTS_SafeFetchReason_Type["timeout"] = "timeout";
39
+ DyNTS_SafeFetchReason_Type["requestFailed"] = "request-failed";
40
+ })(DyNTS_SafeFetchReason_Type || (exports.DyNTS_SafeFetchReason_Type = DyNTS_SafeFetchReason_Type = {}));
41
+ /** Elutasítás — stabil kóddal és redaktált diagnosztikával. */
42
+ class DyNTS_SafeFetch_Error extends Error {
43
+ reason;
44
+ diagnostic;
45
+ constructor(reason, message, diagnostic) {
46
+ super(message);
47
+ this.reason = reason;
48
+ this.diagnostic = diagnostic;
49
+ this.name = 'DyNTS_SafeFetch_Error';
50
+ }
51
+ }
52
+ exports.DyNTS_SafeFetch_Error = DyNTS_SafeFetch_Error;
53
+ class DyNTS_SafeRemoteFetch_Util {
54
+ static defaults = {
55
+ allowedProtocols: ['https:'],
56
+ maxRedirects: 3,
57
+ timeoutMs: 5_000,
58
+ maxResponseBytes: 256 * 1024,
59
+ allowedContentTypes: ['text/html', 'application/json', 'text/plain', 'application/xml', 'text/xml'],
60
+ };
61
+ /**
62
+ * IP-cím blokkolandó-e. IPv4 és IPv6 (a **IPv4-in-IPv6** alakkal együtt: `::ffff:10.0.0.1`).
63
+ *
64
+ * ⚠️ Ez a döntő pont: a hostnév ártalmatlan lehet, miközben egy KÜLSŐ DNS-szerver privát címre
65
+ * oldja fel (DNS-rebinding). Ezért a szűrés a FELOLDOTT CÍMEN történik, nem a néven.
66
+ */
67
+ static isBlockedAddress(address) {
68
+ const value = `${address ?? ''}`.trim().toLowerCase().replace(/^\[|\]$/g, '');
69
+ if (!value.length) {
70
+ return true;
71
+ }
72
+ // IPv4-in-IPv6 (`::ffff:10.0.0.1`) és a `::ffff:0a00:0001` hexa-alak → az IPv4-re vezetjük vissza
73
+ const mappedIpv4 = value.match(/^::ffff:(\d{1,3}(?:\.\d{1,3}){3})$/);
74
+ if (mappedIpv4) {
75
+ return DyNTS_SafeRemoteFetch_Util.isBlockedIpv4(mappedIpv4[1]);
76
+ }
77
+ if (value.includes(':')) {
78
+ return DyNTS_SafeRemoteFetch_Util.isBlockedIpv6(value);
79
+ }
80
+ return DyNTS_SafeRemoteFetch_Util.isBlockedIpv4(value);
81
+ }
82
+ /** Privát / loopback / link-local / reserved / CGNAT IPv4. */
83
+ static isBlockedIpv4(address) {
84
+ const parts = address.split('.').map((p) => Number(p));
85
+ if (parts.length !== 4 || parts.some((n) => !Number.isInteger(n) || n < 0 || n > 255)) {
86
+ return true;
87
+ }
88
+ const [a, b] = parts;
89
+ return a === 0 // "this network"
90
+ || a === 10 // privát
91
+ || a === 127 // loopback
92
+ || (a === 169 && b === 254) // link-local
93
+ || (a === 172 && b >= 16 && b <= 31) // privát
94
+ || (a === 192 && b === 168) // privát
95
+ || (a === 100 && b >= 64 && b <= 127) // CGNAT
96
+ || (a === 192 && b === 0) // IETF protocol assignments / TEST-NET-1
97
+ || a === 198 && (b === 18 || b === 19) // benchmark
98
+ || a >= 224; // multicast + reserved
99
+ }
100
+ /** Loopback / link-local / unique-local / unspecified IPv6. */
101
+ static isBlockedIpv6(address) {
102
+ if (address === '::' || address === '::1') {
103
+ return true;
104
+ }
105
+ return /^fe[89ab]/.test(address) // link-local
106
+ || /^f[cd]/.test(address) // unique-local
107
+ || /^ff/.test(address); // multicast
108
+ }
109
+ /** URL-normalizálás + protokoll- és credential-ellenőrzés. */
110
+ static assertUrlIsAllowed(rawUrl, options) {
111
+ let url;
112
+ try {
113
+ url = new url_1.URL(`${rawUrl}`);
114
+ }
115
+ catch {
116
+ throw new DyNTS_SafeFetch_Error(DyNTS_SafeFetchReason_Type.invalidUrl, 'The URL could not be parsed.');
117
+ }
118
+ // A credential a REDIRECT-en is átöröklődhetne, és a naplóba is beszivárogna — tiltva.
119
+ if (url.username.length || url.password.length) {
120
+ throw new DyNTS_SafeFetch_Error(DyNTS_SafeFetchReason_Type.credentialsInUrl, 'A URL carrying credentials is not allowed.', { host: url.hostname });
121
+ }
122
+ const allowed = options?.allowedProtocols ?? DyNTS_SafeRemoteFetch_Util.defaults.allowedProtocols;
123
+ if (!allowed.includes(url.protocol)) {
124
+ throw new DyNTS_SafeFetch_Error(DyNTS_SafeFetchReason_Type.protocolNotAllowed, `The '${url.protocol}' protocol is not allowed.`, { protocol: url.protocol, allowed: allowed });
125
+ }
126
+ return url;
127
+ }
128
+ /** A host MINDEN feloldott címét ellenőrzi — egyetlen blokkolt cím is elutasít. */
129
+ static async assertHostResolvesToPublicAddress(hostname, options) {
130
+ const resolver = options?.resolve
131
+ ?? (async (host) => {
132
+ const records = await dns.promises.lookup(host, { all: true });
133
+ return records.map((r) => r.address);
134
+ });
135
+ let addresses;
136
+ try {
137
+ addresses = await resolver(hostname);
138
+ }
139
+ catch {
140
+ throw new DyNTS_SafeFetch_Error(DyNTS_SafeFetchReason_Type.hostNotResolvable, 'The host could not be resolved.', { host: hostname });
141
+ }
142
+ if (!addresses?.length) {
143
+ throw new DyNTS_SafeFetch_Error(DyNTS_SafeFetchReason_Type.hostNotResolvable, 'The host resolved to no address.', { host: hostname });
144
+ }
145
+ const blocked = addresses.filter((address) => DyNTS_SafeRemoteFetch_Util.isBlockedAddress(address));
146
+ if (blocked.length) {
147
+ throw new DyNTS_SafeFetch_Error(DyNTS_SafeFetchReason_Type.blockedAddress, 'The host resolves to a non-public address.', { host: hostname, blockedCount: blocked.length });
148
+ }
149
+ return addresses;
150
+ }
151
+ /** Content-type engedélyezett-e (a paramétereket levágva). */
152
+ static isContentTypeAllowed(contentType, options) {
153
+ const allowed = options?.allowedContentTypes
154
+ ?? DyNTS_SafeRemoteFetch_Util.defaults.allowedContentTypes;
155
+ const value = `${contentType ?? ''}`.split(';')[0].trim().toLowerCase();
156
+ return allowed.includes(value);
157
+ }
158
+ /**
159
+ * KORLÁTOS letöltés: minden hopon újra-ellenőrzött cél, bounded body, timeout.
160
+ *
161
+ * A body-t soha nem olvassuk korlátlanul: a `maxResponseBytes` fölött a kapcsolatot elvágjuk
162
+ * (a `Content-Length` HIÁNYA nem mentesít — a stream-limit a valódi védelem).
163
+ */
164
+ static async fetchMetadata(rawUrl, options) {
165
+ const maxRedirects = options?.maxRedirects ?? DyNTS_SafeRemoteFetch_Util.defaults.maxRedirects;
166
+ const transport = options?.transport ?? DyNTS_SafeRemoteFetch_Util.request;
167
+ const redirectChain = [];
168
+ let currentUrl = rawUrl;
169
+ for (let hop = 0; hop <= maxRedirects; hop++) {
170
+ const url = DyNTS_SafeRemoteFetch_Util.assertUrlIsAllowed(currentUrl, options);
171
+ await DyNTS_SafeRemoteFetch_Util.assertHostResolvesToPublicAddress(url.hostname, options);
172
+ redirectChain.push(url.toString());
173
+ const response = await transport(url, options ?? {});
174
+ const location = `${response.headers.location ?? ''}` || undefined;
175
+ if (response.status >= 300 && response.status < 400 && location) {
176
+ // A redirect celja UJRA vegigmegy a teljes ellenorzesen: URL-policy, credential-tiltas ES
177
+ // DNS-feloldas. Ez zarja a "publikus elso hop, privat masodik hop" utat.
178
+ currentUrl = new url_1.URL(location, url).toString();
179
+ continue;
180
+ }
181
+ const contentType = `${response.headers['content-type'] ?? ''}`;
182
+ if (!DyNTS_SafeRemoteFetch_Util.isContentTypeAllowed(contentType, options)) {
183
+ throw new DyNTS_SafeFetch_Error(DyNTS_SafeFetchReason_Type.contentTypeNotAllowed, 'The response content-type is not allowed.', { contentType: contentType.split(';')[0], finalUrl: url.toString() });
184
+ }
185
+ return {
186
+ finalUrl: url.toString(),
187
+ redirectChain: redirectChain,
188
+ status: response.status,
189
+ contentType: contentType,
190
+ bytes: response.bytes,
191
+ body: response.body,
192
+ truncated: response.truncated,
193
+ };
194
+ }
195
+ throw new DyNTS_SafeFetch_Error(DyNTS_SafeFetchReason_Type.tooManyRedirects, 'The redirect limit was exceeded.', { maxRedirects: maxRedirects, hops: redirectChain.length });
196
+ }
197
+ /** Egyetlen HTTP-hívás bounded stream-olvasással és timeouttal (az alapértelmezett transport). */
198
+ static request(url, options) {
199
+ const timeoutMs = options?.timeoutMs ?? DyNTS_SafeRemoteFetch_Util.defaults.timeoutMs;
200
+ const maxBytes = options?.maxResponseBytes ?? DyNTS_SafeRemoteFetch_Util.defaults.maxResponseBytes;
201
+ const lib = url.protocol === 'http:' ? http : https;
202
+ return new Promise((resolve, reject) => {
203
+ const request = lib.request(url, { method: 'GET', timeout: timeoutMs }, (response) => {
204
+ let size = 0;
205
+ let truncated = false;
206
+ const chunks = [];
207
+ response.on('data', (chunk) => {
208
+ size += chunk.length;
209
+ if (size > maxBytes) {
210
+ truncated = true;
211
+ response.destroy();
212
+ return;
213
+ }
214
+ chunks.push(chunk);
215
+ });
216
+ response.on('end', () => {
217
+ resolve({
218
+ status: response.statusCode ?? 0,
219
+ headers: response.headers,
220
+ body: Buffer.concat(chunks).toString('utf8'),
221
+ bytes: size,
222
+ truncated: truncated,
223
+ });
224
+ });
225
+ response.on('close', () => {
226
+ if (truncated) {
227
+ resolve({
228
+ status: response.statusCode ?? 0,
229
+ headers: response.headers,
230
+ body: Buffer.concat(chunks).toString('utf8'),
231
+ bytes: size,
232
+ truncated: true,
233
+ });
234
+ }
235
+ });
236
+ });
237
+ request.on('timeout', () => {
238
+ request.destroy();
239
+ reject(new DyNTS_SafeFetch_Error(DyNTS_SafeFetchReason_Type.timeout, 'The request timed out.'));
240
+ });
241
+ request.on('error', (error) => {
242
+ // A hibaüzenet a HOSTOT tartalmazhatja, credentialt nem (azt már fentebb kizártuk).
243
+ reject(new DyNTS_SafeFetch_Error(DyNTS_SafeFetchReason_Type.requestFailed, 'The request failed.', { host: url.hostname, cause: error.name }));
244
+ });
245
+ request.end();
246
+ });
247
+ }
248
+ }
249
+ exports.DyNTS_SafeRemoteFetch_Util = DyNTS_SafeRemoteFetch_Util;
250
+ //# sourceMappingURL=safe-remote-fetch.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-remote-fetch.util.js","sourceRoot":"","sources":["../../src/_collections/safe-remote-fetch.util.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { Request, Response } from 'express';
2
2
  import { DyFM_Endpoint_SettingsBase, DyFM_HttpCallType } from '@futdevpro/fsm-dynamo';
3
3
  import { DyNTS_RouteSecurity } from '../../_enums/route-security.enum';
4
+ import { DyNTS_AdmissionShed_Interface } from '../interfaces/admission-shed.interface';
4
5
  /**
5
6
  * High level endpoint for API
6
7
  * used for specific events such as saving or getting data,
@@ -40,6 +41,28 @@ export declare class DyNTS_Endpoint_Params<T_Result = unknown, I_Inputs extends
40
41
  private readonly logResponseContent;
41
42
  readonly stackLocation: string;
42
43
  private readonly autoResolveCirculation;
44
+ /**
45
+ * BFR-OVERSEER-014 — végpontonkénti **beengedési plafon** (admission control). `undefined` = nincs
46
+ * korlát, tehát a viselkedés visszafelé teljesen kompatibilis.
47
+ */
48
+ private readonly maxConcurrent;
49
+ /** BFR-OVERSEER-014 — opcionális ledobás-callback (saját metrika/log). */
50
+ private readonly onShed;
51
+ /**
52
+ * BFR-OVERSEER-014 — az ÉPPEN futó kérések száma EZEN a végponton.
53
+ *
54
+ * ⚠️ Szándékosan példány-szintű számláló, **nem** a `DyNTS_RequestHunter` in-flight listájának
55
+ * végpont-címkére szűrése. A szűrés O(n) minden egyes kérésnél, és pont a védendő állapotban a
56
+ * legdrágább: a mért incidensben ~52 000 egyidejű kérés volt, ott a szűrő maga válna a szűk
57
+ * keresztmetszetté. Ez a számláló O(1).
58
+ */
59
+ private activeCount;
60
+ /** BFR-OVERSEER-014 — a ledobás-log ritkítása: mikor logoltunk utoljára (ms). */
61
+ private lastShedLogAtMs;
62
+ /** BFR-OVERSEER-014 — az adott végponton eddig ledobott kérések száma (diagnosztika). */
63
+ private shedCount;
64
+ /** BFR-OVERSEER-014 — a ledobás-log ritkítási ablaka. */
65
+ private static readonly shedLogIntervalMs;
43
66
  constructor(set: {
44
67
  /**
45
68
  * naming the endpoint will help to follow events on service
@@ -92,6 +115,19 @@ export declare class DyNTS_Endpoint_Params<T_Result = unknown, I_Inputs extends
92
115
  * auto resolve circulation errors
93
116
  */
94
117
  autoResolveCirculation?: boolean;
118
+ /**
119
+ * BFR-OVERSEER-014 — **beengedési plafon**: hány kérés futhat EGYIDEJŰLEG ezen a végponton.
120
+ * A plafon fölött a keretrendszer a handler ELŐTT elutasít: **503**, `handled: true`
121
+ * (retryable, a hiba-tárba nem íródik).
122
+ *
123
+ * Elhagyva nincs korlát — a meglévő végpontok viselkedése változatlan.
124
+ */
125
+ maxConcurrent?: number;
126
+ /**
127
+ * BFR-OVERSEER-014 — ledobáskor hívott callback (saját metrika/log). Hibája nem befolyásolja
128
+ * a választ: a ledobás akkor is megtörténik, ha a callback dob.
129
+ */
130
+ onShed?: (info: DyNTS_AdmissionShed_Interface) => void;
95
131
  });
96
132
  /**
97
133
  *
@@ -103,6 +139,23 @@ export declare class DyNTS_Endpoint_Params<T_Result = unknown, I_Inputs extends
103
139
  * @returns
104
140
  */
105
141
  getFullExecution(): (req: Request, res: Response) => Promise<void>;
142
+ /** BFR-OVERSEER-014 — a végpont ÉPPEN futó kéréseinek száma (diagnosztika/teszt). */
143
+ getActiveCount(): number;
144
+ /** BFR-OVERSEER-014 — az eddig ledobott kérések száma ezen a végponton (diagnosztika/teszt). */
145
+ getShedCount(): number;
146
+ /** BFR-OVERSEER-014 — el kell-e dobni ezt a kérést? Korlát nélkül SOHA. */
147
+ private shouldShed;
148
+ /**
149
+ * BFR-OVERSEER-014 — ledobás: **503** + `handled: true`, ritkított log, opcionális callback.
150
+ *
151
+ * ⚠️ **`handled: true` KÖTELEZŐ**: a hiba-tárba írás ugyanabba a torlódásba indítana még egy lassú
152
+ * DB-lekérdezést — tehát a védelem maga terhelné tovább a védendő rendszert.
153
+ *
154
+ * ⚠️ A log **ritkított**: korlátlanul logolva maga a ledobás lenne a log-áradat (a mért incidensben
155
+ * ez percenként több tízezer sort jelentene). Az elnyomott darabok száma a következő sorban látszik,
156
+ * így a ritkítás nem rejti el a nagyságrendet.
157
+ */
158
+ private reportShed;
106
159
  /**
107
160
  * BFR-OVERSEER-010: csonkolt, safe response-preview a logResponseContent-hez —
108
161
  * nem-parseolható/circular body-ra nem dob, hosszú body-t levág (log-flood ellen).
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint-params.control-model.d.ts","sourceRoot":"","sources":["../../../src/_models/control-models/endpoint-params.control-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EACsB,0BAA0B,EACrD,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAWvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,qBAAqB,CAChC,QAAQ,GAAG,OAAO,EAClB,QAAQ,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAChC,MAAM,GAAG,SAAS,CAClB,SAAQ,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;IAE9D,QAAQ,EAAE,mBAAmB,CAAC;IAQ9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;IAEtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0D;IACvF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsE;IAE5F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAC5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAU;gBAG/C,GAAG,EAAE;QACH;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;;;WAIG;QACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;QAE/B;;WAEG;QACH,IAAI,EAAE,iBAAiB,CAAC;QACxB;;;;;WAKG;QACH,QAAQ,EAAE,MAAM,CAAC;QAEjB;;;WAGG;QACH,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAClE;;;WAGG;QACH,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE1E;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB;;WAEG;QACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B;;WAEG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B;;WAEG;QACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B;;WAEG;QACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC;IAuDH;;;OAGG;YACW,MAAM;IA0BpB;;;OAGG;IACH,gBAAgB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC;IA4FlE;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAkB1B;;;;OAIG;YACW,KAAK;IA8HnB,OAAO,CAAC,eAAe;IAuDvB,qFAAqF;IACrF,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiBjC,gGAAgG;IAChG,OAAO,CAAC,kBAAkB;IAU1B,iFAAiF;IACjF,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAU/B,OAAO,CAAC,uBAAuB;CAShC"}
1
+ {"version":3,"file":"endpoint-params.control-model.d.ts","sourceRoot":"","sources":["../../../src/_models/control-models/endpoint-params.control-model.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,28 @@ class DyNTS_Endpoint_Params extends fsm_dynamo_1.DyFM_Endpoint_SettingsBase {
52
52
  logResponseContent;
53
53
  stackLocation;
54
54
  autoResolveCirculation;
55
+ /**
56
+ * BFR-OVERSEER-014 — végpontonkénti **beengedési plafon** (admission control). `undefined` = nincs
57
+ * korlát, tehát a viselkedés visszafelé teljesen kompatibilis.
58
+ */
59
+ maxConcurrent;
60
+ /** BFR-OVERSEER-014 — opcionális ledobás-callback (saját metrika/log). */
61
+ onShed;
62
+ /**
63
+ * BFR-OVERSEER-014 — az ÉPPEN futó kérések száma EZEN a végponton.
64
+ *
65
+ * ⚠️ Szándékosan példány-szintű számláló, **nem** a `DyNTS_RequestHunter` in-flight listájának
66
+ * végpont-címkére szűrése. A szűrés O(n) minden egyes kérésnél, és pont a védendő állapotban a
67
+ * legdrágább: a mért incidensben ~52 000 egyidejű kérés volt, ott a szűrő maga válna a szűk
68
+ * keresztmetszetté. Ez a számláló O(1).
69
+ */
70
+ activeCount = 0;
71
+ /** BFR-OVERSEER-014 — a ledobás-log ritkítása: mikor logoltunk utoljára (ms). */
72
+ lastShedLogAtMs = 0;
73
+ /** BFR-OVERSEER-014 — az adott végponton eddig ledobott kérések száma (diagnosztika). */
74
+ shedCount = 0;
75
+ /** BFR-OVERSEER-014 — a ledobás-log ritkítási ablaka. */
76
+ static shedLogIntervalMs = 5000;
55
77
  constructor(set) {
56
78
  try {
57
79
  super(set);
@@ -68,6 +90,18 @@ class DyNTS_Endpoint_Params extends fsm_dynamo_1.DyFM_Endpoint_SettingsBase {
68
90
  global_settings_const_1.DyNTS_global_settings.log_settings.responseContent;
69
91
  this.autoResolveCirculation = set.autoResolveCirculation ??
70
92
  global_settings_const_1.DyNTS_global_settings.autoResolveEndpointCirculationErrors;
93
+ // BFR-OVERSEER-014: csak POZITIV, veges plafon ervenyes. A 0 / negativ / NaN ertek nem
94
+ // "mindent tilts" — az egy elgepeles, ami az egesz vegpontot lekapcsolna; ilyenkor a
95
+ // biztonsagos ertelmezes a "nincs korlat" (a korabbi viselkedes), hangos figyelmeztetessel.
96
+ if (set.maxConcurrent !== undefined && !(Number.isFinite(set.maxConcurrent) && set.maxConcurrent > 0)) {
97
+ fsm_dynamo_1.DyFM_Log.warn(`Endpoint "${set.name ?? set.endpoint}": maxConcurrent must be a positive finite `
98
+ + `number — received ${set.maxConcurrent}; admission control is DISABLED for this endpoint.`);
99
+ this.maxConcurrent = undefined;
100
+ }
101
+ else {
102
+ this.maxConcurrent = set.maxConcurrent;
103
+ }
104
+ this.onShed = set.onShed;
71
105
  if (!this.endpoint) {
72
106
  throw new fsm_dynamo_1.DyFM_Error({
73
107
  status: 406,
@@ -129,6 +163,15 @@ class DyNTS_Endpoint_Params extends fsm_dynamo_1.DyFM_Endpoint_SettingsBase {
129
163
  getFullExecution() {
130
164
  let issuer;
131
165
  return async (req, res) => {
166
+ // BFR-OVERSEER-014 — BEENGEDES-KORLAT. Ez a legelso dontes: a plafon folott sem a hunter-
167
+ // regisztracio, sem az issuer-feloldas, sem a preProcess-ek nem futnak le. A mert incidensben
168
+ // (~52 000 egyideju keres) pont az volt a baj, hogy a beengedett keresek MUNKAT foglaltak,
169
+ // miközben a kliens idotullepes utan ujrakuldott — a sor gyorsabban nott, mint urult.
170
+ if (this.shouldShed()) {
171
+ this.reportShed(req, res);
172
+ return;
173
+ }
174
+ this.activeCount++;
132
175
  // ISSUE-HUNTER (2026-08-05) — keres-szintu attribucio. Ez a KOZPONTI vegrehajtasi pont,
133
176
  // minden endpoint ezen megy at, ezert itt (es CSAK itt) merunk. Koltseg: egy Map-beszuras
134
177
  // + Date.now(). A `finally` garantalja, hogy hiba/early-return eseten se szivarogjon be-
@@ -200,9 +243,75 @@ class DyNTS_Endpoint_Params extends fsm_dynamo_1.DyFM_Endpoint_SettingsBase {
200
243
  }
201
244
  finally {
202
245
  request_hunter_service_1.DyNTS_RequestHunter.getInstance().end(hunterId);
246
+ // BFR-OVERSEER-014: a `finally` garantalja, hogy hiba / early-return eseten se szivarogjon
247
+ // a szamlalo. Enelkul egy dobo endpoint par ora alatt "beragadna" a sajat plafonjaba, es a
248
+ // vedelem maga valna kiesses okava.
249
+ this.activeCount--;
203
250
  }
204
251
  };
205
252
  }
253
+ /** BFR-OVERSEER-014 — a végpont ÉPPEN futó kéréseinek száma (diagnosztika/teszt). */
254
+ getActiveCount() {
255
+ return this.activeCount;
256
+ }
257
+ /** BFR-OVERSEER-014 — az eddig ledobott kérések száma ezen a végponton (diagnosztika/teszt). */
258
+ getShedCount() {
259
+ return this.shedCount;
260
+ }
261
+ /** BFR-OVERSEER-014 — el kell-e dobni ezt a kérést? Korlát nélkül SOHA. */
262
+ shouldShed() {
263
+ return this.maxConcurrent !== undefined && this.activeCount >= this.maxConcurrent;
264
+ }
265
+ /**
266
+ * BFR-OVERSEER-014 — ledobás: **503** + `handled: true`, ritkított log, opcionális callback.
267
+ *
268
+ * ⚠️ **`handled: true` KÖTELEZŐ**: a hiba-tárba írás ugyanabba a torlódásba indítana még egy lassú
269
+ * DB-lekérdezést — tehát a védelem maga terhelné tovább a védendő rendszert.
270
+ *
271
+ * ⚠️ A log **ritkított**: korlátlanul logolva maga a ledobás lenne a log-áradat (a mért incidensben
272
+ * ez percenként több tízezer sort jelentene). Az elnyomott darabok száma a következő sorban látszik,
273
+ * így a ritkítás nem rejti el a nagyságrendet.
274
+ */
275
+ reportShed(req, res) {
276
+ this.shedCount++;
277
+ const info = {
278
+ endpointName: this.name,
279
+ endpoint: this.endpoint,
280
+ maxConcurrent: this.maxConcurrent,
281
+ activeCount: this.activeCount,
282
+ shedCount: this.shedCount,
283
+ };
284
+ const nowMs = Date.now();
285
+ if (nowMs - this.lastShedLogAtMs >= DyNTS_Endpoint_Params.shedLogIntervalMs) {
286
+ this.lastShedLogAtMs = nowMs;
287
+ fsm_dynamo_1.DyFM_Log.warn(`Admission control SHED "${this.name}": ${this.activeCount} in flight `
288
+ + `>= maxConcurrent ${this.maxConcurrent} — responding 503 (retryable). `
289
+ + `Total shed on this endpoint: ${this.shedCount}.`);
290
+ }
291
+ if (this.onShed) {
292
+ try {
293
+ this.onShed(info);
294
+ }
295
+ catch (error) {
296
+ // A ledobas NEM bukhat el azon, hogy a fogyaszto metrika-callbackje dob.
297
+ safe_diagnostic_control_service_1.DyNTS_SafeDiagnostic_ControlService.report({
298
+ code: 'DYNTS|ENDPOINT|ADMISSION_ON_SHED_FAILURE',
299
+ stage: safe_diagnostic_stage_type_enum_1.DyNTS_SafeDiagnosticStage_Type.endpoint,
300
+ error: error,
301
+ });
302
+ }
303
+ }
304
+ if (res.headersSent) {
305
+ return;
306
+ }
307
+ res.status(503).send({
308
+ errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-EP-ADM0`,
309
+ userMessage: 'The server is at capacity for this operation, please retry shortly.',
310
+ handled: true,
311
+ retryable: true,
312
+ endpointName: this.name,
313
+ });
314
+ }
206
315
  /**
207
316
  * BFR-OVERSEER-010: csonkolt, safe response-preview a logResponseContent-hez —
208
317
  * nem-parseolható/circular body-ra nem dob, hosszú body-t levág (log-flood ellen).
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint-params.control-model.js","sourceRoot":"","sources":["../../../src/_models/control-models/endpoint-params.control-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoint-params.control-model.js","sourceRoot":"","sources":["../../../src/_models/control-models/endpoint-params.control-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * BFR-OVERSEER-014 — egy beengedés-korlát miatti ledobás leírója.
3
+ *
4
+ * ⚠️ Szándékosan **tartalom-mentes**: sem a kérés body-ja, sem a fejlécei, sem az issuer nem kerül
5
+ * bele. A ledobás pont torlódás alatt történik, tömegesen — ott a tartalom-hordozó diagnosztika
6
+ * egyszerre lenne szivárgási felület és log-áradat.
7
+ */
8
+ export interface DyNTS_AdmissionShed_Interface {
9
+ /** A végpont neve (`DyNTS_Endpoint_Params.name`). */
10
+ endpointName: string;
11
+ /** A route-minta (pl. `/:accountId/report`). */
12
+ endpoint: string;
13
+ /** Az érvényes plafon. */
14
+ maxConcurrent: number | undefined;
15
+ /** Hány kérés futott a ledobás pillanatában. */
16
+ activeCount: number;
17
+ /** Hányadik ledobás ez ezen a végponton (a folyamat indulása óta). */
18
+ shedCount: number;
19
+ }
20
+ //# sourceMappingURL=admission-shed.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admission-shed.interface.d.ts","sourceRoot":"","sources":["../../../src/_models/interfaces/admission-shed.interface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,6BAA6B;IAC5C,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=admission-shed.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admission-shed.interface.js","sourceRoot":"","sources":["../../../src/_models/interfaces/admission-shed.interface.ts"],"names":[],"mappings":""}
package/build/index.d.ts CHANGED
@@ -24,6 +24,7 @@ export * from './_models/interfaces/app-version-header-settings.interface';
24
24
  export * from './_models/interfaces/request-telemetry-settings.interface';
25
25
  export * from './_models/interfaces/request-telemetry-snapshot.interface';
26
26
  export * from './_models/interfaces/db-query-options.interface';
27
+ export * from './_models/interfaces/admission-shed.interface';
27
28
  export * from './_models/interfaces/migration-entry.interface';
28
29
  export * from './_models/interfaces/mongo-transaction-settings.interface';
29
30
  export * from './_collections/security-headers.util';
@@ -32,6 +33,9 @@ export * from './_collections/signed-url.util';
32
33
  export * from './_collections/client-safe-error.util';
33
34
  export * from './_collections/client-safe-error-response.interface';
34
35
  export * from './_collections/load-shed.util';
36
+ export * from './_collections/secret-redaction.util';
37
+ export * from './_collections/dependency-host-guard.util';
38
+ export * from './_collections/safe-remote-fetch.util';
35
39
  export * from './_services/core/event-loop-diag.service';
36
40
  export * from './_services/core/request-hunter.service';
37
41
  export * from './_services/core/db-stats.service';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2BA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,qDAAqD,CAAC;AACpE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sCAAsC,CAAC;AAIrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAK7C,mEAAmE;AACnE,cAAc,uDAAuD,CAAC;AACtE,cAAc,qDAAqD,CAAC;AACpE,cAAc,wDAAwD,CAAC;AACvE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wDAAwD,CAAC;AACvE,cAAc,yDAAyD,CAAC;AACxE,cAAc,uDAAuD,CAAC;AACtE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0DAA0D,CAAC;AACzE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,2DAA2D,CAAC;AAC1E,cAAc,2DAA2D,CAAC;AAC1E,cAAc,iDAAiD,CAAC;AAChE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,2DAA2D,CAAC;AAC1E,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,qDAAqD,CAAC;AACpE,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0CAA0C,CAAC;AACzD,cAAc,yCAAyC,CAAC;AACxD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AAGrD,cAAc,wDAAwD,CAAC;AACvE,cAAc,gEAAgE,CAAA;AAC9E,cAAc,mDAAmD,CAAC;AAClE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,wDAAwD,CAAC;AACvE,cAAc,sDAAsD,CAAC;AACrE,cAAc,uDAAuD,CAAC;AAGtE,cAAc,gCAAgC,CAAC;AAG/C,cAAc,mDAAmD,CAAC;AAKlE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oDAAoD,CAAC;AACnE,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oDAAoD,CAAC;AAEnE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AAGnE,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,+BAA+B,CAAC;AAG9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AAGzD,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2BA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qCAAqC,CAAC;AACpD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,qDAAqD,CAAC;AACpE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,sCAAsC,CAAC;AAIrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,8BAA8B,CAAC;AAK7C,mEAAmE;AACnE,cAAc,uDAAuD,CAAC;AACtE,cAAc,qDAAqD,CAAC;AACpE,cAAc,wDAAwD,CAAC;AACvE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wDAAwD,CAAC;AACvE,cAAc,yDAAyD,CAAC;AACxE,cAAc,uDAAuD,CAAC;AACtE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0DAA0D,CAAC;AACzE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,2DAA2D,CAAC;AAC1E,cAAc,2DAA2D,CAAC;AAC1E,cAAc,iDAAiD,CAAC;AAChE,cAAc,+CAA+C,CAAC;AAC9D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,2DAA2D,CAAC;AAC1E,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,qDAAqD,CAAC;AACpE,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,uCAAuC,CAAC;AACtD,cAAc,0CAA0C,CAAC;AACzD,cAAc,yCAAyC,CAAC;AACxD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AAGrD,cAAc,wDAAwD,CAAC;AACvE,cAAc,gEAAgE,CAAA;AAC9E,cAAc,mDAAmD,CAAC;AAClE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,wDAAwD,CAAC;AACvE,cAAc,sDAAsD,CAAC;AACrE,cAAc,uDAAuD,CAAC;AAGtE,cAAc,gCAAgC,CAAC;AAG/C,cAAc,mDAAmD,CAAC;AAKlE,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oDAAoD,CAAC;AACnE,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oDAAoD,CAAC;AAEnE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AAGnE,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yCAAyC,CAAC;AACxD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,+BAA+B,CAAC;AAG9C,cAAc,sCAAsC,CAAC;AACrD,cAAc,0CAA0C,CAAC;AAGzD,cAAc,mCAAmC,CAAC"}
package/build/index.js CHANGED
@@ -53,6 +53,7 @@ tslib_1.__exportStar(require("./_models/interfaces/app-version-header-settings.i
53
53
  tslib_1.__exportStar(require("./_models/interfaces/request-telemetry-settings.interface"), exports);
54
54
  tslib_1.__exportStar(require("./_models/interfaces/request-telemetry-snapshot.interface"), exports);
55
55
  tslib_1.__exportStar(require("./_models/interfaces/db-query-options.interface"), exports);
56
+ tslib_1.__exportStar(require("./_models/interfaces/admission-shed.interface"), exports);
56
57
  tslib_1.__exportStar(require("./_models/interfaces/migration-entry.interface"), exports);
57
58
  tslib_1.__exportStar(require("./_models/interfaces/mongo-transaction-settings.interface"), exports);
58
59
  tslib_1.__exportStar(require("./_collections/security-headers.util"), exports);
@@ -61,6 +62,9 @@ tslib_1.__exportStar(require("./_collections/signed-url.util"), exports);
61
62
  tslib_1.__exportStar(require("./_collections/client-safe-error.util"), exports);
62
63
  tslib_1.__exportStar(require("./_collections/client-safe-error-response.interface"), exports);
63
64
  tslib_1.__exportStar(require("./_collections/load-shed.util"), exports);
65
+ tslib_1.__exportStar(require("./_collections/secret-redaction.util"), exports);
66
+ tslib_1.__exportStar(require("./_collections/dependency-host-guard.util"), exports);
67
+ tslib_1.__exportStar(require("./_collections/safe-remote-fetch.util"), exports);
64
68
  tslib_1.__exportStar(require("./_services/core/event-loop-diag.service"), exports);
65
69
  tslib_1.__exportStar(require("./_services/core/request-hunter.service"), exports);
66
70
  tslib_1.__exportStar(require("./_services/core/db-stats.service"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;IAsBI;;;AAEJ,cAAc;AACd,sEAA4C;AAC5C,8EAAoD;AACpD,wFAA8D;AAC9D,8FAAoE;AACpE,sFAA4D;AAC5D,mFAAyD;AACzD,uFAA6D;AAC7D,+EAAqD;AAGrD,QAAQ;AACR,wEAA8C;AAC9C,8EAAoD;AACpD,8EAAoD;AACpD,uEAA6C;AAG7C,6CAA6C;AAE7C,mEAAmE;AACnE,gGAAsE;AACtE,8FAAoE;AACpE,iGAAuE;AACvE,yFAA+D;AAC/D,iGAAuE;AACvE,kGAAwE;AACxE,gGAAsE;AACtE,uFAA6D;AAC7D,mGAAyE;AACzE,qGAA2E;AAC3E,oGAA0E;AAC1E,oGAA0E;AAC1E,0FAAgE;AAChE,yFAA+D;AAC/D,oGAA0E;AAC1E,+EAAqD;AACrD,iFAAuD;AACvD,yEAA+C;AAC/C,gFAAsD;AACtD,8FAAoE;AACpE,wEAA8C;AAC9C,mFAAyD;AACzD,kFAAwD;AACxD,4EAAkD;AAClD,+EAAqD;AAErD,wBAAwB;AACxB,iGAAuE;AACvE,yGAA8E;AAC9E,4FAAkE;AAClE,qGAA2E;AAC3E,iGAAuE;AACvE,+FAAqE;AACrE,gGAAsE;AAEtE,eAAe;AACf,yEAA+C;AAE/C,qBAAqB;AACrB,4FAAkE;AAGlE,WAAW;AACX,gBAAgB;AAChB,uEAA6C;AAC7C,wEAA8C;AAE9C,yEAA+C;AAC/C,6FAAmE;AACnE,0EAAgD;AAChD,gFAAsD;AACtD,6FAAmE;AAEnE,sFAA4D;AAC5D,oFAA0D;AAC1D,6FAAmE;AAEnE,gBAAgB;AAChB,4EAAkD;AAClD,gFAAsD;AACtD,wEAA8C;AAC9C,sEAA4C;AAC5C,kFAAwD;AACxD,6EAAmD;AAEnD,kBAAkB;AAClB,wEAA8C;AAE9C,iBAAiB;AACjB,+EAAqD;AACrD,mFAAyD;AAEzD,kBAAkB;AAClB,4EAAkD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;IAsBI;;;AAEJ,cAAc;AACd,sEAA4C;AAC5C,8EAAoD;AACpD,wFAA8D;AAC9D,8FAAoE;AACpE,sFAA4D;AAC5D,mFAAyD;AACzD,uFAA6D;AAC7D,+EAAqD;AAGrD,QAAQ;AACR,wEAA8C;AAC9C,8EAAoD;AACpD,8EAAoD;AACpD,uEAA6C;AAG7C,6CAA6C;AAE7C,mEAAmE;AACnE,gGAAsE;AACtE,8FAAoE;AACpE,iGAAuE;AACvE,yFAA+D;AAC/D,iGAAuE;AACvE,kGAAwE;AACxE,gGAAsE;AACtE,uFAA6D;AAC7D,mGAAyE;AACzE,qGAA2E;AAC3E,oGAA0E;AAC1E,oGAA0E;AAC1E,0FAAgE;AAChE,wFAA8D;AAC9D,yFAA+D;AAC/D,oGAA0E;AAC1E,+EAAqD;AACrD,iFAAuD;AACvD,yEAA+C;AAC/C,gFAAsD;AACtD,8FAAoE;AACpE,wEAA8C;AAC9C,+EAAqD;AACrD,oFAA0D;AAC1D,gFAAsD;AACtD,mFAAyD;AACzD,kFAAwD;AACxD,4EAAkD;AAClD,+EAAqD;AAErD,wBAAwB;AACxB,iGAAuE;AACvE,yGAA8E;AAC9E,4FAAkE;AAClE,qGAA2E;AAC3E,iGAAuE;AACvE,+FAAqE;AACrE,gGAAsE;AAEtE,eAAe;AACf,yEAA+C;AAE/C,qBAAqB;AACrB,4FAAkE;AAGlE,WAAW;AACX,gBAAgB;AAChB,uEAA6C;AAC7C,wEAA8C;AAE9C,yEAA+C;AAC/C,6FAAmE;AACnE,0EAAgD;AAChD,gFAAsD;AACtD,6FAAmE;AAEnE,sFAA4D;AAC5D,oFAA0D;AAC1D,6FAAmE;AAEnE,gBAAgB;AAChB,4EAAkD;AAClD,gFAAsD;AACtD,wEAA8C;AAC9C,sEAA4C;AAC5C,kFAAwD;AACxD,6EAAmD;AAEnD,kBAAkB;AAClB,wEAA8C;AAE9C,iBAAiB;AACjB,+EAAqD;AACrD,mFAAyD;AAEzD,kBAAkB;AAClB,4EAAkD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/nts-dynamo",
3
- "version": "01.15.195",
3
+ "version": "01.15.197",
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",