@futdevpro/nts-dynamo 1.15.465 → 1.15.467
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/_collections/global-settings.const.d.ts.map +1 -1
- package/build/_collections/global-settings.const.js +2 -0
- package/build/_collections/global-settings.const.js.map +1 -1
- package/build/_models/interfaces/global-settings.interface.d.ts +5 -0
- package/build/_models/interfaces/global-settings.interface.d.ts.map +1 -1
- package/build/_modules/messaging/index.d.ts +9 -0
- package/build/_modules/messaging/index.d.ts.map +1 -1
- package/build/_modules/messaging/index.js +10 -0
- package/build/_modules/messaging/index.js.map +1 -1
- package/build/_modules/messaging/input-draft/msg-input-draft-call.interface.d.ts +13 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-call.interface.d.ts.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-call.interface.js +3 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-call.interface.js.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-default-settings.const.d.ts +6 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-default-settings.const.d.ts.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-default-settings.const.js +16 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-default-settings.const.js.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-routing.util.d.ts +22 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-routing.util.d.ts.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-routing.util.js +34 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-routing.util.js.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-save-result.interface.d.ts +15 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-save-result.interface.d.ts.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-save-result.interface.js +3 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-save-result.interface.js.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-settings.interface.d.ts +20 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-settings.interface.d.ts.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-settings.interface.js +3 -0
- package/build/_modules/messaging/input-draft/msg-input-draft-settings.interface.js.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.controller.d.ts +46 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.controller.d.ts.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.controller.js +139 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.controller.js.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.data-model.d.ts +38 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.data-model.d.ts.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.data-model.js +60 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.data-model.js.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.data-service.d.ts +55 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.data-service.d.ts.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.data-service.js +123 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.data-service.js.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.util.d.ts +20 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.util.d.ts.map +1 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.util.js +71 -0
- package/build/_modules/messaging/input-draft/msg-input-draft.util.js.map +1 -0
- package/build/_services/core/memory-guard.service.d.ts +32 -2
- package/build/_services/core/memory-guard.service.d.ts.map +1 -1
- package/build/_services/core/memory-guard.service.js +63 -21
- package/build/_services/core/memory-guard.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { DyNTS_DataService } from '../../../_services/base/data.service';
|
|
2
|
+
import { DyNTS_Msg_InputDraft_DataModel } from './msg-input-draft.data-model';
|
|
3
|
+
import { DyNTS_Msg_InputDraft_Settings_Interface } from './msg-input-draft-settings.interface';
|
|
4
|
+
/**
|
|
5
|
+
* BFR-CCAPREVISIONED-030 part 2 (the CCAP's `MSG_InputDraft_DataService`, generalized) - the server copy of the
|
|
6
|
+
* unsent input texts, per owner and field key.
|
|
7
|
+
*
|
|
8
|
+
* - `save`: an UPSERT (the revision grows by one); an empty save over a text keeps that text in `lastWipedContent`;
|
|
9
|
+
* - `load` / `list`: only the owner's live drafts, younger than `maxAgeMs`; these reads NEVER throw (a database error
|
|
10
|
+
* gives none: opening a page must not break on it, and it is logged);
|
|
11
|
+
* - `clear`: after a successful send (a soft delete: the text stays recoverable in the database).
|
|
12
|
+
*
|
|
13
|
+
* ⚠️ The save looks up the current record with a THROWING read: a swallowed read error would look like "no draft yet"
|
|
14
|
+
* and create a second record for the same field (revision 1 again).
|
|
15
|
+
*/
|
|
16
|
+
export declare class DyNTS_Msg_InputDraft_DataService extends DyNTS_DataService<DyNTS_Msg_InputDraft_DataModel> {
|
|
17
|
+
/** The resolved settings (expiry, list size). */
|
|
18
|
+
private readonly settings;
|
|
19
|
+
/** A service for one request (the issuer for the record metadata). */
|
|
20
|
+
constructor(set: {
|
|
21
|
+
issuer: string;
|
|
22
|
+
settings?: DyNTS_Msg_InputDraft_Settings_Interface;
|
|
23
|
+
});
|
|
24
|
+
/** Stores the field's draft (create or overwrite); a database error throws (the caller reports `saved: false`). */
|
|
25
|
+
save(set: {
|
|
26
|
+
ownerId: string;
|
|
27
|
+
fieldKey: string;
|
|
28
|
+
content: string;
|
|
29
|
+
savedByBrowserId?: string;
|
|
30
|
+
now?: Date;
|
|
31
|
+
}): Promise<DyNTS_Msg_InputDraft_DataModel>;
|
|
32
|
+
/** The field's live, not expired draft, or `null` (also on a database error, logged). */
|
|
33
|
+
load(set: {
|
|
34
|
+
ownerId: string;
|
|
35
|
+
fieldKey: string;
|
|
36
|
+
now?: Date;
|
|
37
|
+
}): Promise<DyNTS_Msg_InputDraft_DataModel | null>;
|
|
38
|
+
/** The owner's live, not expired drafts, newest first (at most `maxListCount`; `[]` on a database error, logged). */
|
|
39
|
+
list(set: {
|
|
40
|
+
ownerId: string;
|
|
41
|
+
now?: Date;
|
|
42
|
+
}): Promise<DyNTS_Msg_InputDraft_DataModel[]>;
|
|
43
|
+
/** Removes the field's draft after a send (soft delete); `false` when there was none (or on an error, logged). */
|
|
44
|
+
clear(set: {
|
|
45
|
+
ownerId: string;
|
|
46
|
+
fieldKey: string;
|
|
47
|
+
}): Promise<boolean>;
|
|
48
|
+
/** The field's live record, expired or not (THROWS on a database error). */
|
|
49
|
+
private findCurrent;
|
|
50
|
+
/** Whether the draft is older than `maxAgeMs`. */
|
|
51
|
+
private isExpired;
|
|
52
|
+
/** The oldest save time still given back. */
|
|
53
|
+
private cutoff;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=msg-input-draft.data-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msg-input-draft.data-service.d.ts","sourceRoot":"","sources":["../../../../src/_modules/messaging/input-draft/msg-input-draft.data-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAkC,MAAM,8BAA8B,CAAC;AAC9G,OAAO,EAAE,uCAAuC,EAAE,MAAM,sCAAsC,CAAC;AAG/F;;;;;;;;;;;GAWG;AACH,qBAAa,gCAAiC,SAAQ,iBAAiB,CAAC,8BAA8B,CAAC;IACrG,iDAAiD;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoD;IAE7E,sEAAsE;gBAC1D,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,uCAAuC,CAAA;KAAE;IAKvF,mHAAmH;IAC7G,IAAI,CAAC,GAAG,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,GAAG,CAAC,EAAE,IAAI,CAAC;KACZ,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAkC3C,yFAAyF;IACnF,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,8BAA8B,GAAG,IAAI,CAAC;IAYlH,qHAAqH;IAC/G,IAAI,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,8BAA8B,EAAE,CAAC;IAmB3F,kHAAkH;IAC5G,KAAK,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAuBzE,4EAA4E;YAC9D,WAAW;IAUzB,kDAAkD;IAClD,OAAO,CAAC,SAAS;IAIjB,6CAA6C;IAC7C,OAAO,CAAC,MAAM;CAGf"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyNTS_Msg_InputDraft_DataService = void 0;
|
|
4
|
+
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
5
|
+
const global_settings_const_1 = require("../../../_collections/global-settings.const");
|
|
6
|
+
const data_service_1 = require("../../../_services/base/data.service");
|
|
7
|
+
const msg_input_draft_data_model_1 = require("./msg-input-draft.data-model");
|
|
8
|
+
const msg_input_draft_util_1 = require("./msg-input-draft.util");
|
|
9
|
+
/**
|
|
10
|
+
* BFR-CCAPREVISIONED-030 part 2 (the CCAP's `MSG_InputDraft_DataService`, generalized) - the server copy of the
|
|
11
|
+
* unsent input texts, per owner and field key.
|
|
12
|
+
*
|
|
13
|
+
* - `save`: an UPSERT (the revision grows by one); an empty save over a text keeps that text in `lastWipedContent`;
|
|
14
|
+
* - `load` / `list`: only the owner's live drafts, younger than `maxAgeMs`; these reads NEVER throw (a database error
|
|
15
|
+
* gives none: opening a page must not break on it, and it is logged);
|
|
16
|
+
* - `clear`: after a successful send (a soft delete: the text stays recoverable in the database).
|
|
17
|
+
*
|
|
18
|
+
* ⚠️ The save looks up the current record with a THROWING read: a swallowed read error would look like "no draft yet"
|
|
19
|
+
* and create a second record for the same field (revision 1 again).
|
|
20
|
+
*/
|
|
21
|
+
class DyNTS_Msg_InputDraft_DataService extends data_service_1.DyNTS_DataService {
|
|
22
|
+
/** The resolved settings (expiry, list size). */
|
|
23
|
+
settings;
|
|
24
|
+
/** A service for one request (the issuer for the record metadata). */
|
|
25
|
+
constructor(set) {
|
|
26
|
+
super(new msg_input_draft_data_model_1.DyNTS_Msg_InputDraft_DataModel(), msg_input_draft_data_model_1.DyNTS_msgInputDraft_dataParams, set.issuer);
|
|
27
|
+
this.settings = msg_input_draft_util_1.DyNTS_Msg_InputDraft_Util.resolve(set.settings);
|
|
28
|
+
}
|
|
29
|
+
/** Stores the field's draft (create or overwrite); a database error throws (the caller reports `saved: false`). */
|
|
30
|
+
async save(set) {
|
|
31
|
+
try {
|
|
32
|
+
const existing = await this.findCurrent(set);
|
|
33
|
+
const draft = new msg_input_draft_data_model_1.DyNTS_Msg_InputDraft_DataModel(existing ?? {
|
|
34
|
+
ownerId: set.ownerId, fieldKey: set.fieldKey,
|
|
35
|
+
});
|
|
36
|
+
// an empty save over a text: the text is kept (the user's raw input is never lost by one wipe)
|
|
37
|
+
if (!set.content && existing?.content) {
|
|
38
|
+
draft.lastWipedContent = existing.content;
|
|
39
|
+
draft.lastWipedAt = existing.savedAt;
|
|
40
|
+
draft.lastWipedRevision = existing.revision;
|
|
41
|
+
}
|
|
42
|
+
draft.content = set.content;
|
|
43
|
+
draft.savedAt = set.now ?? new Date();
|
|
44
|
+
draft.revision = (existing?.revision ?? 0) + 1;
|
|
45
|
+
draft.savedByBrowserId = set.savedByBrowserId;
|
|
46
|
+
this.data = existing
|
|
47
|
+
? await this.dataDBService.modifyData(draft, this.issuer)
|
|
48
|
+
: await this.dataDBService.createData(draft, this.issuer);
|
|
49
|
+
return new msg_input_draft_data_model_1.DyNTS_Msg_InputDraft_DataModel(this.data);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
53
|
+
...this.getDefaultErrorSettings('save', error),
|
|
54
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-MSG-ID-S0`,
|
|
55
|
+
message: 'The input draft could not be stored.',
|
|
56
|
+
userMessage: 'The draft could not be saved on the server.',
|
|
57
|
+
additionalContent: { fieldKey: set.fieldKey, contentLength: set.content.length },
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** The field's live, not expired draft, or `null` (also on a database error, logged). */
|
|
62
|
+
async load(set) {
|
|
63
|
+
try {
|
|
64
|
+
const current = await this.findCurrent(set);
|
|
65
|
+
return current && !this.isExpired({ draft: current, now: set.now }) ? current : null;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
fsm_dynamo_1.DyFM_Log.warn(`[DyNTS_Msg_InputDraft] load failed (no draft given): '${set.fieldKey}'`, error);
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** The owner's live, not expired drafts, newest first (at most `maxListCount`; `[]` on a database error, logged). */
|
|
73
|
+
async list(set) {
|
|
74
|
+
try {
|
|
75
|
+
const filter = {
|
|
76
|
+
ownerId: set.ownerId,
|
|
77
|
+
savedAt: { $gte: this.cutoff(set.now) },
|
|
78
|
+
};
|
|
79
|
+
const found = await this.dataDBService.find(filter, false, {
|
|
80
|
+
sort: { savedAt: -1 }, limit: this.settings.maxListCount,
|
|
81
|
+
});
|
|
82
|
+
return found.map((draft) => new msg_input_draft_data_model_1.DyNTS_Msg_InputDraft_DataModel(draft));
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
fsm_dynamo_1.DyFM_Log.warn(`[DyNTS_Msg_InputDraft] list failed (an empty list given)`, error);
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/** Removes the field's draft after a send (soft delete); `false` when there was none (or on an error, logged). */
|
|
90
|
+
async clear(set) {
|
|
91
|
+
try {
|
|
92
|
+
// EVERY live record of the field: two first saves racing can create two, and clearing only the newest would
|
|
93
|
+
// bring the older (already sent) text back
|
|
94
|
+
const live = await this.dataDBService.find({ ownerId: set.ownerId, fieldKey: set.fieldKey }, false, { limit: 20 });
|
|
95
|
+
const ids = live
|
|
96
|
+
.map((draft) => draft._id)
|
|
97
|
+
.filter((id) => !!id);
|
|
98
|
+
for (const id of ids) {
|
|
99
|
+
await this.dataDBService.markDeletedById(id, this.issuer);
|
|
100
|
+
}
|
|
101
|
+
return ids.length > 0;
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
fsm_dynamo_1.DyFM_Log.warn(`[DyNTS_Msg_InputDraft] clear failed: '${set.fieldKey}'`, error);
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** The field's live record, expired or not (THROWS on a database error). */
|
|
109
|
+
async findCurrent(set) {
|
|
110
|
+
const found = await this.dataDBService.find({ ownerId: set.ownerId, fieldKey: set.fieldKey }, false, { sort: { savedAt: -1 }, limit: 1 });
|
|
111
|
+
return found[0] ? new msg_input_draft_data_model_1.DyNTS_Msg_InputDraft_DataModel(found[0]) : null;
|
|
112
|
+
}
|
|
113
|
+
/** Whether the draft is older than `maxAgeMs`. */
|
|
114
|
+
isExpired(set) {
|
|
115
|
+
return new Date(set.draft.savedAt).getTime() < this.cutoff(set.now).getTime();
|
|
116
|
+
}
|
|
117
|
+
/** The oldest save time still given back. */
|
|
118
|
+
cutoff(now) {
|
|
119
|
+
return new Date((now ?? new Date()).getTime() - this.settings.maxAgeMs);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.DyNTS_Msg_InputDraft_DataService = DyNTS_Msg_InputDraft_DataService;
|
|
123
|
+
//# sourceMappingURL=msg-input-draft.data-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msg-input-draft.data-service.js","sourceRoot":"","sources":["../../../../src/_modules/messaging/input-draft/msg-input-draft.data-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DyNTS_Msg_InputDraft_Settings_Interface } from './msg-input-draft-settings.interface';
|
|
2
|
+
/**
|
|
3
|
+
* BFR-CCAPREVISIONED-030 part 2 - the input-draft request checks (a wrong request is the caller's bug: 400, with a
|
|
4
|
+
* code; the stored text itself is never changed).
|
|
5
|
+
*/
|
|
6
|
+
export declare class DyNTS_Msg_InputDraft_Util {
|
|
7
|
+
/** The settings with every missing field taken from the defaults. */
|
|
8
|
+
static resolve(settings?: DyNTS_Msg_InputDraft_Settings_Interface): Required<DyNTS_Msg_InputDraft_Settings_Interface>;
|
|
9
|
+
/** The field key from a body / query value: a non-empty string, at most `maxFieldKeyLength` long (trimmed). */
|
|
10
|
+
static fieldKey(raw: unknown, settings: Required<DyNTS_Msg_InputDraft_Settings_Interface>): string;
|
|
11
|
+
/** The text from a body value, UNCHANGED: missing ⇒ empty; not a string or too long ⇒ 400 (never cut). */
|
|
12
|
+
static content(raw: unknown, settings: Required<DyNTS_Msg_InputDraft_Settings_Interface>): string;
|
|
13
|
+
/** An optional short id (the browser id): a non-empty string up to 200 characters, otherwise none. */
|
|
14
|
+
static optionalId(raw: unknown): string | undefined;
|
|
15
|
+
/** A 400 with the module's code. */
|
|
16
|
+
private static badRequest;
|
|
17
|
+
/** The given settings without their `undefined` fields (so they do not hide a default). */
|
|
18
|
+
private static defined;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=msg-input-draft.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msg-input-draft.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/messaging/input-draft/msg-input-draft.util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uCAAuC,EAAE,MAAM,sCAAsC,CAAC;AAE/F;;;GAGG;AACH,qBAAa,yBAAyB;IACpC,qEAAqE;IACrE,MAAM,CAAC,OAAO,CACZ,QAAQ,CAAC,EAAE,uCAAuC,GACjD,QAAQ,CAAC,uCAAuC,CAAC;IAIpD,+GAA+G;IAC/G,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,uCAAuC,CAAC,GAAG,MAAM;IAgBlG,0GAA0G;IAC1G,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,uCAAuC,CAAC,GAAG,MAAM;IAkBjG,sGAAsG;IACtG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAMnD,oCAAoC;IACpC,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB,2FAA2F;IAC3F,OAAO,CAAC,MAAM,CAAC,OAAO;CAavB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyNTS_Msg_InputDraft_Util = void 0;
|
|
4
|
+
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
5
|
+
const global_settings_const_1 = require("../../../_collections/global-settings.const");
|
|
6
|
+
const msg_input_draft_default_settings_const_1 = require("./msg-input-draft-default-settings.const");
|
|
7
|
+
/**
|
|
8
|
+
* BFR-CCAPREVISIONED-030 part 2 - the input-draft request checks (a wrong request is the caller's bug: 400, with a
|
|
9
|
+
* code; the stored text itself is never changed).
|
|
10
|
+
*/
|
|
11
|
+
class DyNTS_Msg_InputDraft_Util {
|
|
12
|
+
/** The settings with every missing field taken from the defaults. */
|
|
13
|
+
static resolve(settings) {
|
|
14
|
+
return { ...msg_input_draft_default_settings_const_1.DyNTS_msgInputDraft_defaultSettings, ...DyNTS_Msg_InputDraft_Util.defined(settings) };
|
|
15
|
+
}
|
|
16
|
+
/** The field key from a body / query value: a non-empty string, at most `maxFieldKeyLength` long (trimmed). */
|
|
17
|
+
static fieldKey(raw, settings) {
|
|
18
|
+
const fieldKey = typeof raw === 'string' ? raw.trim() : '';
|
|
19
|
+
if (!fieldKey) {
|
|
20
|
+
throw DyNTS_Msg_InputDraft_Util.badRequest({ code: 'FK1', message: 'The fieldKey is missing.' });
|
|
21
|
+
}
|
|
22
|
+
if (fieldKey.length > settings.maxFieldKeyLength) {
|
|
23
|
+
throw DyNTS_Msg_InputDraft_Util.badRequest({
|
|
24
|
+
code: 'FK2', message: `The fieldKey is longer than ${settings.maxFieldKeyLength} characters.`,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return fieldKey;
|
|
28
|
+
}
|
|
29
|
+
/** The text from a body value, UNCHANGED: missing ⇒ empty; not a string or too long ⇒ 400 (never cut). */
|
|
30
|
+
static content(raw, settings) {
|
|
31
|
+
if (raw === undefined || raw === null) {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
if (typeof raw !== 'string') {
|
|
35
|
+
throw DyNTS_Msg_InputDraft_Util.badRequest({ code: 'CT1', message: 'The content must be a text.' });
|
|
36
|
+
}
|
|
37
|
+
if (raw.length > settings.maxContentLength) {
|
|
38
|
+
throw DyNTS_Msg_InputDraft_Util.badRequest({
|
|
39
|
+
code: 'CT2', message: `The draft is longer than ${settings.maxContentLength} characters.`,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
return raw;
|
|
43
|
+
}
|
|
44
|
+
/** An optional short id (the browser id): a non-empty string up to 200 characters, otherwise none. */
|
|
45
|
+
static optionalId(raw) {
|
|
46
|
+
const id = typeof raw === 'string' ? raw.trim() : '';
|
|
47
|
+
return id && id.length <= 200 ? id : undefined;
|
|
48
|
+
}
|
|
49
|
+
/** A 400 with the module's code. */
|
|
50
|
+
static badRequest(set) {
|
|
51
|
+
return new fsm_dynamo_1.DyFM_Error({
|
|
52
|
+
status: 400,
|
|
53
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-MSG-ID-${set.code}`,
|
|
54
|
+
message: set.message,
|
|
55
|
+
userMessage: set.message,
|
|
56
|
+
issuerService: 'DyNTS_Msg_InputDraft_Util',
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/** The given settings without their `undefined` fields (so they do not hide a default). */
|
|
60
|
+
static defined(settings) {
|
|
61
|
+
const result = {};
|
|
62
|
+
Object.entries(settings ?? {}).forEach(([key, value]) => {
|
|
63
|
+
if (value !== undefined) {
|
|
64
|
+
Reflect.set(result, key, value);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.DyNTS_Msg_InputDraft_Util = DyNTS_Msg_InputDraft_Util;
|
|
71
|
+
//# sourceMappingURL=msg-input-draft.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msg-input-draft.util.js","sourceRoot":"","sources":["../../../../src/_modules/messaging/input-draft/msg-input-draft.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,6 +77,11 @@ export interface DyNTS_MemoryGuard_Config {
|
|
|
77
77
|
gcWarningFraction?: number;
|
|
78
78
|
/** GC-hányad-küszöb a `critical`-hoz (0..1). Default: 0.60. */
|
|
79
79
|
gcCriticalFraction?: number;
|
|
80
|
+
/**
|
|
81
|
+
* A GC-jel csak e heap-% FELETT lehet `critical` (alatta legfeljebb `warning`). Default: 50. Lásd
|
|
82
|
+
* `DyNTS_MemoryGuard.DEFAULT_GC_CRITICAL_MIN_HEAP_PCT`.
|
|
83
|
+
*/
|
|
84
|
+
gcCriticalMinHeapPct?: number;
|
|
80
85
|
/** `uncaughtException` crash-handler telepítése (teljes-részletű error-entry + tiszta exit). Default: true. */
|
|
81
86
|
installCrashHandlers?: boolean;
|
|
82
87
|
/** Tartós critical → tiszta exit (a wrapper újraindít). Default: false. */
|
|
@@ -92,6 +97,12 @@ export interface DyNTS_MemoryGuard_Config {
|
|
|
92
97
|
}
|
|
93
98
|
type DyNTS_MemoryGuard_State = 'normal' | 'warning' | 'critical';
|
|
94
99
|
export declare class DyNTS_MemoryGuard extends DyNTS_SingletonServiceBase {
|
|
100
|
+
/**
|
|
101
|
+
* A heap-% padló, ami ALATT a GC-jel legfeljebb `warning` (mérve 2026-10-29: négy „heap pressure CRITICAL” riasztás
|
|
102
|
+
* 1–4% heapen, 40–100% GC-vel — a valódi mark-compact thrash a heap-plafon KÖZELÉBEN jön, a 70%-os eset továbbra is
|
|
103
|
+
* `critical`).
|
|
104
|
+
*/
|
|
105
|
+
static readonly DEFAULT_GC_CRITICAL_MIN_HEAP_PCT: number;
|
|
95
106
|
static getInstance(): DyNTS_MemoryGuard;
|
|
96
107
|
private timer;
|
|
97
108
|
private isInstallationActive;
|
|
@@ -103,6 +114,7 @@ export declare class DyNTS_MemoryGuard extends DyNTS_SingletonServiceBase {
|
|
|
103
114
|
private maxHistoryCount;
|
|
104
115
|
private gcWarnFraction;
|
|
105
116
|
private gcCritFraction;
|
|
117
|
+
private gcCritMinHeapPct;
|
|
106
118
|
private isCriticalExitEnabled;
|
|
107
119
|
private sustainedCriticalPolls;
|
|
108
120
|
private exitCode;
|
|
@@ -168,7 +180,7 @@ export declare class DyNTS_MemoryGuard extends DyNTS_SingletonServiceBase {
|
|
|
168
180
|
* - gc: the GC share of the recent window;
|
|
169
181
|
* - rss: the resident memory against the physical memory.
|
|
170
182
|
*/
|
|
171
|
-
static pressureCause(event: Pick<DyNTS_MemoryGuard_Event, 'trigger' | 'gcFraction' | 'rssMb' | 'rssPct'>): string;
|
|
183
|
+
static pressureCause(event: Pick<DyNTS_MemoryGuard_Event, 'trigger' | 'gcFraction' | 'rssMb' | 'rssPct'> & Partial<Pick<DyNTS_MemoryGuard_Event, 'heapPct'>>, gcCriticalMinHeapPct?: number): string;
|
|
172
184
|
private static rssPctOfPhysical;
|
|
173
185
|
/**
|
|
174
186
|
* A fizikai RAM byte-ban. **Külön metódus a spec-mockoláshoz** — ugyanaz a seam-minta, mint a
|
|
@@ -179,8 +191,26 @@ export declare class DyNTS_MemoryGuard extends DyNTS_SingletonServiceBase {
|
|
|
179
191
|
private static normalizePct;
|
|
180
192
|
/** `true`, ha a NEHÉZ műveleteket le kell shed-elni (critical nyomás) — a fogyasztó load-shed gate-jének. */
|
|
181
193
|
shouldShedLoad(): boolean;
|
|
182
|
-
/**
|
|
194
|
+
/**
|
|
195
|
+
* A GC-hányad az utolsó `pollIntervalMs` ablakban (az ablakba eső GC-ms / ablak-ms; clamp [0..1]).
|
|
196
|
+
* Nincs GC-observer → 0.
|
|
197
|
+
*
|
|
198
|
+
* A GC-pause a SAJÁT idővonal-idején számít (`startTime` + `duration`), és csak az ablakba eső RÉSZE: a figyelő
|
|
199
|
+
* visszahívása egy eseményhurok-elakadás után egy hosszabb időszak bejegyzéseit egyszerre adja át — a visszahívás
|
|
200
|
+
* idejével bélyegezve ezek mind az aktuális ablakba estek, és a hányad a valódi többszöröse lett.
|
|
201
|
+
*/
|
|
183
202
|
private recentGcFraction;
|
|
203
|
+
/** GC perf-bejegyzések a gördülő ablakba, a saját idővonal-idejükkel (epoch ms). */
|
|
204
|
+
private addGcEntries;
|
|
205
|
+
/**
|
|
206
|
+
* A heap / GC / RSS jelek egy helyen — a `poll()` (riasztás) és a `pressure()` (load-shed) UGYANEZT olvassa.
|
|
207
|
+
*
|
|
208
|
+
* A GC-jel csak `gcCritMinHeapPct` heap FELETT lehet `critical`: a GC-pause FALIÓRA-idő, és egy kis heapen
|
|
209
|
+
* (mérve: 63 MB / 8 GB, GC 74%) ez ⛔ GC-munka, hanem egy megállított process (host-CPU-kiéheztetés, kiswapolt
|
|
210
|
+
* heap). Az ilyen jel `warning` marad, a saját okával — ⛔ néma, de ⛔ is „heap critical”, és ⛔ indít load-shedet /
|
|
211
|
+
* kilépést, ami egy kiéheztetett hoston nem segít.
|
|
212
|
+
*/
|
|
213
|
+
private assess;
|
|
184
214
|
/** A 'gc' perf-entry-k figyelője — a GC-ben töltött időt gyűjti a gördülő ablakhoz. Best-effort (nem kritikus). */
|
|
185
215
|
private installGcObserver;
|
|
186
216
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-guard.service.d.ts","sourceRoot":"","sources":["../../../src/_services/core/memory-guard.service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAG5E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,iEAAiE;AACjE,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC5C,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,gGAAgG;IAChG,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,sHAAsH;IACtH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC;IAChG,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,wFAAwF;AACxF,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wFAAwF;IACxF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kHAAkH;IAClH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mHAAmH;IACnH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+GAA+G;IAC/G,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,2EAA2E;IAC3E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,iEAAiE;IACjE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sHAAsH;IACtH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;CACvD;AAED,KAAK,uBAAuB,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-guard.service.d.ts","sourceRoot":"","sources":["../../../src/_services/core/memory-guard.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,12 @@ const singleton_service_base_1 = require("../base/singleton.service-base");
|
|
|
11
11
|
const runtime_hooks_util_1 = require("../../_collections/runtime-hooks.util");
|
|
12
12
|
const BYTES_PER_MB = 1024 * 1024;
|
|
13
13
|
class DyNTS_MemoryGuard extends singleton_service_base_1.DyNTS_SingletonServiceBase {
|
|
14
|
+
/**
|
|
15
|
+
* A heap-% padló, ami ALATT a GC-jel legfeljebb `warning` (mérve 2026-10-29: négy „heap pressure CRITICAL” riasztás
|
|
16
|
+
* 1–4% heapen, 40–100% GC-vel — a valódi mark-compact thrash a heap-plafon KÖZELÉBEN jön, a 70%-os eset továbbra is
|
|
17
|
+
* `critical`).
|
|
18
|
+
*/
|
|
19
|
+
static DEFAULT_GC_CRITICAL_MIN_HEAP_PCT = 50;
|
|
14
20
|
static getInstance() {
|
|
15
21
|
return DyNTS_MemoryGuard.getSingletonInstance();
|
|
16
22
|
}
|
|
@@ -25,6 +31,7 @@ class DyNTS_MemoryGuard extends singleton_service_base_1.DyNTS_SingletonServiceB
|
|
|
25
31
|
maxHistoryCount = 100;
|
|
26
32
|
gcWarnFraction = 0.40;
|
|
27
33
|
gcCritFraction = 0.60;
|
|
34
|
+
gcCritMinHeapPct = DyNTS_MemoryGuard.DEFAULT_GC_CRITICAL_MIN_HEAP_PCT;
|
|
28
35
|
isCriticalExitEnabled = false;
|
|
29
36
|
sustainedCriticalPolls = 3;
|
|
30
37
|
exitCode = 137;
|
|
@@ -66,6 +73,8 @@ class DyNTS_MemoryGuard extends singleton_service_base_1.DyNTS_SingletonServiceB
|
|
|
66
73
|
this.maxHistoryCount = config?.maxHistoryCount ?? g.maxHistoryCount ?? 100;
|
|
67
74
|
this.gcWarnFraction = config?.gcWarningFraction ?? g.gcWarningFraction ?? 0.40;
|
|
68
75
|
this.gcCritFraction = config?.gcCriticalFraction ?? g.gcCriticalFraction ?? 0.60;
|
|
76
|
+
this.gcCritMinHeapPct = config?.gcCriticalMinHeapPct ?? g.gcCriticalMinHeapPct
|
|
77
|
+
?? DyNTS_MemoryGuard.DEFAULT_GC_CRITICAL_MIN_HEAP_PCT;
|
|
69
78
|
// BFR-AM-016 — RSS-ág. Default 0 (kikapcsolva): gép-függő küszöb, és a meglévő appok viselkedése
|
|
70
79
|
// maradjon bitre változatlan. A negatív/nem-szám érték is 0-ra esik (= kikapcsolva).
|
|
71
80
|
this.rssWarnPct = DyNTS_MemoryGuard.normalizePct(config?.rssWarningThresholdPct ?? g.rssWarningThresholdPct);
|
|
@@ -132,13 +141,7 @@ class DyNTS_MemoryGuard extends singleton_service_base_1.DyNTS_SingletonServiceB
|
|
|
132
141
|
// A szintet a heap-% ÉS a GC-hányad ÉS az RSS-% közül a ROSSZABB dönti el (a GC-thrash a %-küszöb ALATT
|
|
133
142
|
// is OOM-ot jelez; az RSS-ág pedig a heapen KÍVÜLI memóriát fogja meg — BFR-AM-016).
|
|
134
143
|
const rssPct = DyNTS_MemoryGuard.rssPctOfPhysical(mu.rss);
|
|
135
|
-
const heapCrit = pct
|
|
136
|
-
const gcCrit = gcFraction >= this.gcCritFraction;
|
|
137
|
-
// A KIKAPCSOLT (0) küszöb sosem riaszt — enélkül minden app azonnal `critical`-be esne (0 >= 0).
|
|
138
|
-
const rssCrit = this.rssCritPct > 0 && rssPct >= this.rssCritPct;
|
|
139
|
-
const heapWarn = pct >= this.warnPct;
|
|
140
|
-
const gcWarn = gcFraction >= this.gcWarnFraction;
|
|
141
|
-
const rssWarn = this.rssWarnPct > 0 && rssPct >= this.rssWarnPct;
|
|
144
|
+
const { heapCrit, gcCrit, rssCrit, heapWarn, gcWarn, rssWarn } = this.assess({ pct: pct, gcFraction: gcFraction, rssPct: rssPct });
|
|
142
145
|
// Hiszterézis-állapotgép — esemény CSAK állapot-váltáskor.
|
|
143
146
|
const prev = this.state;
|
|
144
147
|
let next = prev;
|
|
@@ -226,7 +229,7 @@ class DyNTS_MemoryGuard extends singleton_service_base_1.DyNTS_SingletonServiceB
|
|
|
226
229
|
}
|
|
227
230
|
// BFR-CCAPREVISIONED-022 — the stated CAUSE follows the trigger (it named the heap ceiling for a GC / RSS alert too,
|
|
228
231
|
// with the heap at 3%); a heap trigger keeps the earlier text byte-identical (log monitors)
|
|
229
|
-
const cause = DyNTS_MemoryGuard.pressureCause(event);
|
|
232
|
+
const cause = DyNTS_MemoryGuard.pressureCause(event, this.gcCritMinHeapPct);
|
|
230
233
|
if (event.level === 'critical') {
|
|
231
234
|
fsm_dynamo_1.DyFM_Log.H_error(`[DyNTS_MemoryGuard] CRITICAL heap pressure — ${summary} — `
|
|
232
235
|
+ `${event.trigger.includes('heap') ? 'OOM imminent' : cause}`);
|
|
@@ -268,10 +271,10 @@ class DyNTS_MemoryGuard extends singleton_service_base_1.DyNTS_SingletonServiceB
|
|
|
268
271
|
const rssPct = DyNTS_MemoryGuard.rssPctOfPhysical(mu.rss);
|
|
269
272
|
// Ugyanaz a „rosszabb ág dönt" szabály, mint a `poll()`-ban — a kettő NEM térhet el, különben a
|
|
270
273
|
// load-shed (`shouldShedLoad`) mást gondolna a nyomásról, mint a riasztás.
|
|
271
|
-
const
|
|
274
|
+
const signals = this.assess({ pct: pct, gcFraction: gcFraction, rssPct: rssPct });
|
|
275
|
+
const level = (signals.heapCrit || signals.gcCrit || signals.rssCrit)
|
|
272
276
|
? 'critical'
|
|
273
|
-
: (
|
|
274
|
-
? 'warning' : 'ok';
|
|
277
|
+
: (signals.heapWarn || signals.gcWarn || signals.rssWarn) ? 'warning' : 'ok';
|
|
275
278
|
return {
|
|
276
279
|
level: level,
|
|
277
280
|
heapUsedMb: Math.round(mu.heapUsed / BYTES_PER_MB),
|
|
@@ -294,12 +297,18 @@ class DyNTS_MemoryGuard extends singleton_service_base_1.DyNTS_SingletonServiceB
|
|
|
294
297
|
* - gc: the GC share of the recent window;
|
|
295
298
|
* - rss: the resident memory against the physical memory.
|
|
296
299
|
*/
|
|
297
|
-
static pressureCause(event) {
|
|
300
|
+
static pressureCause(event, gcCriticalMinHeapPct = DyNTS_MemoryGuard.DEFAULT_GC_CRITICAL_MIN_HEAP_PCT) {
|
|
298
301
|
const parts = [];
|
|
299
302
|
if (event.trigger.includes('heap')) {
|
|
300
303
|
parts.push('Process approaching the --max-old-space-size ceiling — OOM crash risk.');
|
|
301
304
|
}
|
|
302
|
-
if (event.trigger.includes('gc')) {
|
|
305
|
+
if (event.trigger.includes('gc') && typeof event.heapPct === 'number' && event.heapPct < gcCriticalMinHeapPct) {
|
|
306
|
+
// a GC-pause falióra-ideje: kis heapen ez ⛔ GC-munka, hanem egy megállított process (host-CPU / swap)
|
|
307
|
+
parts.push(`GC took ${Math.round(event.gcFraction * 100)}% of the recent window's wall time with the heap at only `
|
|
308
|
+
+ `${event.heapPct}% — at a heap this small that is not GC work but a stalled process (CPU starvation, or `
|
|
309
|
+
+ 'the heap swapped out): a host problem, not a memory leak.');
|
|
310
|
+
}
|
|
311
|
+
else if (event.trigger.includes('gc')) {
|
|
303
312
|
parts.push(`GC consumed ${Math.round(event.gcFraction * 100)}% of the recent window — the event loop is starved.`);
|
|
304
313
|
}
|
|
305
314
|
if (event.trigger.includes('rss')) {
|
|
@@ -332,22 +341,55 @@ class DyNTS_MemoryGuard extends singleton_service_base_1.DyNTS_SingletonServiceB
|
|
|
332
341
|
shouldShedLoad() {
|
|
333
342
|
return this.isInstallationActive && this.pressure().level === 'critical';
|
|
334
343
|
}
|
|
335
|
-
/**
|
|
344
|
+
/**
|
|
345
|
+
* A GC-hányad az utolsó `pollIntervalMs` ablakban (az ablakba eső GC-ms / ablak-ms; clamp [0..1]).
|
|
346
|
+
* Nincs GC-observer → 0.
|
|
347
|
+
*
|
|
348
|
+
* A GC-pause a SAJÁT idővonal-idején számít (`startTime` + `duration`), és csak az ablakba eső RÉSZE: a figyelő
|
|
349
|
+
* visszahívása egy eseményhurok-elakadás után egy hosszabb időszak bejegyzéseit egyszerre adja át — a visszahívás
|
|
350
|
+
* idejével bélyegezve ezek mind az aktuális ablakba estek, és a hányad a valódi többszöröse lett.
|
|
351
|
+
*/
|
|
336
352
|
recentGcFraction() {
|
|
337
353
|
const windowMs = this.pollIntervalMs > 0 ? this.pollIntervalMs : 10000;
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
const
|
|
354
|
+
// a GC-pause-ok IDŐVONALÁN mért „most” (⛔ `Date.now()`: egy faliórai NTP-igazítás elcsúsztatná az ablakot)
|
|
355
|
+
const now = perf_hooks_1.performance.timeOrigin + perf_hooks_1.performance.now();
|
|
356
|
+
const cutoff = now - windowMs;
|
|
357
|
+
this.gcEvents = this.gcEvents.filter((span) => span.end >= cutoff);
|
|
358
|
+
const gcMs = this.gcEvents.reduce((sum, span) => sum + Math.max(0, Math.min(span.end, now) - Math.max(span.start, cutoff)), 0);
|
|
341
359
|
return Math.min(gcMs / windowMs, 1);
|
|
342
360
|
}
|
|
361
|
+
/** GC perf-bejegyzések a gördülő ablakba, a saját idővonal-idejükkel (epoch ms). */
|
|
362
|
+
addGcEntries(entries) {
|
|
363
|
+
const origin = perf_hooks_1.performance.timeOrigin;
|
|
364
|
+
for (const entry of entries) {
|
|
365
|
+
const start = origin + entry.startTime;
|
|
366
|
+
this.gcEvents.push({ start: start, end: start + entry.duration });
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* A heap / GC / RSS jelek egy helyen — a `poll()` (riasztás) és a `pressure()` (load-shed) UGYANEZT olvassa.
|
|
371
|
+
*
|
|
372
|
+
* A GC-jel csak `gcCritMinHeapPct` heap FELETT lehet `critical`: a GC-pause FALIÓRA-idő, és egy kis heapen
|
|
373
|
+
* (mérve: 63 MB / 8 GB, GC 74%) ez ⛔ GC-munka, hanem egy megállított process (host-CPU-kiéheztetés, kiswapolt
|
|
374
|
+
* heap). Az ilyen jel `warning` marad, a saját okával — ⛔ néma, de ⛔ is „heap critical”, és ⛔ indít load-shedet /
|
|
375
|
+
* kilépést, ami egy kiéheztetett hoston nem segít.
|
|
376
|
+
*/
|
|
377
|
+
assess(set) {
|
|
378
|
+
return {
|
|
379
|
+
heapCrit: set.pct >= this.critPct,
|
|
380
|
+
gcCrit: set.gcFraction >= this.gcCritFraction && set.pct >= this.gcCritMinHeapPct,
|
|
381
|
+
// A KIKAPCSOLT (0) küszöb sosem riaszt — enélkül minden app azonnal `critical`-be esne (0 >= 0).
|
|
382
|
+
rssCrit: this.rssCritPct > 0 && set.rssPct >= this.rssCritPct,
|
|
383
|
+
heapWarn: set.pct >= this.warnPct,
|
|
384
|
+
gcWarn: set.gcFraction >= this.gcWarnFraction,
|
|
385
|
+
rssWarn: this.rssWarnPct > 0 && set.rssPct >= this.rssWarnPct,
|
|
386
|
+
};
|
|
387
|
+
}
|
|
343
388
|
/** A 'gc' perf-entry-k figyelője — a GC-ben töltött időt gyűjti a gördülő ablakhoz. Best-effort (nem kritikus). */
|
|
344
389
|
installGcObserver() {
|
|
345
390
|
try {
|
|
346
391
|
this.gcObserver = new perf_hooks_1.PerformanceObserver((list) => {
|
|
347
|
-
|
|
348
|
-
for (const entry of list.getEntries()) {
|
|
349
|
-
this.gcEvents.push({ at: now, ms: entry.duration });
|
|
350
|
-
}
|
|
392
|
+
this.addGcEntries(list.getEntries());
|
|
351
393
|
});
|
|
352
394
|
this.gcObserver.observe({ entryTypes: ['gc'] });
|
|
353
395
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-guard.service.js","sourceRoot":"","sources":["../../../src/_services/core/memory-guard.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"memory-guard.service.js","sourceRoot":"","sources":["../../../src/_services/core/memory-guard.service.ts"],"names":[],"mappings":"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"}
|