@futdevpro/nts-dynamo 1.15.410 → 1.15.413
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/signed-url.util.d.ts +19 -0
- package/build/_collections/signed-url.util.d.ts.map +1 -1
- package/build/_collections/signed-url.util.js +35 -0
- package/build/_collections/signed-url.util.js.map +1 -1
- package/build/_models/interfaces/signed-url-verify-result.interface.d.ts +2 -1
- package/build/_models/interfaces/signed-url-verify-result.interface.d.ts.map +1 -1
- package/build/_modules/usage/usage.data-service.d.ts +13 -0
- package/build/_modules/usage/usage.data-service.d.ts.map +1 -1
- package/build/_modules/usage/usage.data-service.js +44 -25
- package/build/_modules/usage/usage.data-service.js.map +1 -1
- package/package.json +1 -1
|
@@ -31,13 +31,29 @@ import { DyNTS_SignedUrl_VerifyResult } from '../_models/interfaces/signed-url-v
|
|
|
31
31
|
* a fallback-döntés a hívóé, de **tudatosan**.
|
|
32
32
|
* 2. `verify` **SOHA nem dob** — strukturált `{ valid, reason }`-t ad, hogy a gate-ek egységes,
|
|
33
33
|
* szivárgás-mentes választ tudjanak adni.
|
|
34
|
+
*
|
|
35
|
+
* 🔴 **BFR-FDPFTPSERVICE-009 — a dot segment (`.` / `..`) is NEVER valid.** `normalizePath` does not canonicalize,
|
|
36
|
+
* and servers decide the zone (open / always-signed) by matching the START of the normalized path, while the file
|
|
37
|
+
* system resolves the dot segment ⇒ `open/../invoices/…` counted as open and was served from the invoice vault
|
|
38
|
+
* without a signature (measured on TEST). Hence: `hasDotSegment` for the gates, BEFORE the zone decision · `verify`
|
|
39
|
+
* rejects a dot-segment path before any other check (`dot-segment`) · `sign` never signs such a path.
|
|
34
40
|
*/
|
|
35
41
|
export declare class DyNTS_SignedUrl_Util {
|
|
36
42
|
/**
|
|
37
43
|
* Path normalizálás az aláíráshoz/validáláshoz: vezető `/`-ek le, `\` → `/`.
|
|
38
44
|
* A kanonikus string első fele — a két oldalnak **bit-azonosan** kell normalizálnia.
|
|
45
|
+
*
|
|
46
|
+
* ⚠️ **Does NOT canonicalize:** a `.` / `..` segment is neither resolved nor rejected — build a prefix, regex or
|
|
47
|
+
* `startsWith` decision on the result ONLY after excluding `hasDotSegment` (BFR-FDPFTPSERVICE-009).
|
|
39
48
|
*/
|
|
40
49
|
static normalizePath(filePath: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Whether the path has a dot segment (`.` or `..`), with `/` or `\` as separator. A name merely STARTING with a dot
|
|
52
|
+
* (`..hidden`, `.env`) is not a segment. Gates call it BEFORE the zone decision (BFR-FDPFTPSERVICE-009).
|
|
53
|
+
*
|
|
54
|
+
* @param filePath the (already decoded) path
|
|
55
|
+
*/
|
|
56
|
+
static hasDotSegment(filePath: string): boolean;
|
|
41
57
|
/**
|
|
42
58
|
* A HMAC bemenete: `` `<normalizedPath>\n<expMs>` ``.
|
|
43
59
|
* **Publikus**, hogy tesztelhető és auditálható legyen (az arany-vektor erre épül).
|
|
@@ -48,6 +64,7 @@ export declare class DyNTS_SignedUrl_Util {
|
|
|
48
64
|
*
|
|
49
65
|
* @throws `DyNTS-SURL-SIGN-NOSEC` — üres secret *(⚠️ NEM ad csendben üres aláírást)*
|
|
50
66
|
* @throws `DyNTS-SURL-SIGN-BADEXP` — nem-szám / nem-pozitív `expMs`
|
|
67
|
+
* @throws `DyNTS-SURL-SIGN-DOTSEG` — a dot-segment path *(BFR-FDPFTPSERVICE-009: never signed)*
|
|
51
68
|
*/
|
|
52
69
|
static sign(filePath: string, expMs: number, secret: string): string;
|
|
53
70
|
/**
|
|
@@ -77,6 +94,8 @@ export declare class DyNTS_SignedUrl_Util {
|
|
|
77
94
|
secret: string;
|
|
78
95
|
nowMs?: number;
|
|
79
96
|
}): string;
|
|
97
|
+
/** A dot-segment path → a loud error (BFR-FDPFTPSERVICE-009); the caller's input error, hence 400. */
|
|
98
|
+
private static _assertNoDotSegment;
|
|
80
99
|
/** Üres secret → hangos hiba. ⚠️ A titok SOHA nem kerül a hiba-kontextusba. */
|
|
81
100
|
private static _assertSecret;
|
|
82
101
|
/** Nem-szám / nem-pozitív lejárat → hangos hiba (a csendes `NaN`-os aláírás rosszabb). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signed-url.util.d.ts","sourceRoot":"","sources":["../../src/_collections/signed-url.util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,4BAA4B,EAAE,MAAM,0DAA0D,CAAC;AAExG
|
|
1
|
+
{"version":3,"file":"signed-url.util.d.ts","sourceRoot":"","sources":["../../src/_collections/signed-url.util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,4BAA4B,EAAE,MAAM,0DAA0D,CAAC;AAExG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,qBAAa,oBAAoB;IAE/B;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI9C;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI/C;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAIpE;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAWpE;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,4BAA4B;IAsChC;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,MAAM;IAoBV,sGAAsG;IACtG,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAWlC,+EAA+E;IAC/E,OAAO,CAAC,MAAM,CAAC,aAAa;IAW5B,0FAA0F;IAC1F,OAAO,CAAC,MAAM,CAAC,UAAU;CAU1B"}
|
|
@@ -36,15 +36,33 @@ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
|
36
36
|
* a fallback-döntés a hívóé, de **tudatosan**.
|
|
37
37
|
* 2. `verify` **SOHA nem dob** — strukturált `{ valid, reason }`-t ad, hogy a gate-ek egységes,
|
|
38
38
|
* szivárgás-mentes választ tudjanak adni.
|
|
39
|
+
*
|
|
40
|
+
* 🔴 **BFR-FDPFTPSERVICE-009 — a dot segment (`.` / `..`) is NEVER valid.** `normalizePath` does not canonicalize,
|
|
41
|
+
* and servers decide the zone (open / always-signed) by matching the START of the normalized path, while the file
|
|
42
|
+
* system resolves the dot segment ⇒ `open/../invoices/…` counted as open and was served from the invoice vault
|
|
43
|
+
* without a signature (measured on TEST). Hence: `hasDotSegment` for the gates, BEFORE the zone decision · `verify`
|
|
44
|
+
* rejects a dot-segment path before any other check (`dot-segment`) · `sign` never signs such a path.
|
|
39
45
|
*/
|
|
40
46
|
class DyNTS_SignedUrl_Util {
|
|
41
47
|
/**
|
|
42
48
|
* Path normalizálás az aláíráshoz/validáláshoz: vezető `/`-ek le, `\` → `/`.
|
|
43
49
|
* A kanonikus string első fele — a két oldalnak **bit-azonosan** kell normalizálnia.
|
|
50
|
+
*
|
|
51
|
+
* ⚠️ **Does NOT canonicalize:** a `.` / `..` segment is neither resolved nor rejected — build a prefix, regex or
|
|
52
|
+
* `startsWith` decision on the result ONLY after excluding `hasDotSegment` (BFR-FDPFTPSERVICE-009).
|
|
44
53
|
*/
|
|
45
54
|
static normalizePath(filePath) {
|
|
46
55
|
return (filePath ?? '').replace(/^\/+/, '').replace(/\\/g, '/');
|
|
47
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Whether the path has a dot segment (`.` or `..`), with `/` or `\` as separator. A name merely STARTING with a dot
|
|
59
|
+
* (`..hidden`, `.env`) is not a segment. Gates call it BEFORE the zone decision (BFR-FDPFTPSERVICE-009).
|
|
60
|
+
*
|
|
61
|
+
* @param filePath the (already decoded) path
|
|
62
|
+
*/
|
|
63
|
+
static hasDotSegment(filePath) {
|
|
64
|
+
return `${filePath ?? ''}`.split(/[\\/]/u).some((segment) => segment === '.' || segment === '..');
|
|
65
|
+
}
|
|
48
66
|
/**
|
|
49
67
|
* A HMAC bemenete: `` `<normalizedPath>\n<expMs>` ``.
|
|
50
68
|
* **Publikus**, hogy tesztelhető és auditálható legyen (az arany-vektor erre épül).
|
|
@@ -57,8 +75,10 @@ class DyNTS_SignedUrl_Util {
|
|
|
57
75
|
*
|
|
58
76
|
* @throws `DyNTS-SURL-SIGN-NOSEC` — üres secret *(⚠️ NEM ad csendben üres aláírást)*
|
|
59
77
|
* @throws `DyNTS-SURL-SIGN-BADEXP` — nem-szám / nem-pozitív `expMs`
|
|
78
|
+
* @throws `DyNTS-SURL-SIGN-DOTSEG` — a dot-segment path *(BFR-FDPFTPSERVICE-009: never signed)*
|
|
60
79
|
*/
|
|
61
80
|
static sign(filePath, expMs, secret) {
|
|
81
|
+
DyNTS_SignedUrl_Util._assertNoDotSegment(filePath);
|
|
62
82
|
DyNTS_SignedUrl_Util._assertSecret(secret, filePath);
|
|
63
83
|
DyNTS_SignedUrl_Util._assertExp(expMs, filePath);
|
|
64
84
|
return Crypto
|
|
@@ -73,6 +93,10 @@ class DyNTS_SignedUrl_Util {
|
|
|
73
93
|
* `nowMs` injektálható → determinisztikus teszt (nincs `Date.now()` a tesztben).
|
|
74
94
|
*/
|
|
75
95
|
static verify(params) {
|
|
96
|
+
// BFR-FDPFTPSERVICE-009 — a dot-segment path is valid with NO signature (the zone-bypass guard)
|
|
97
|
+
if (DyNTS_SignedUrl_Util.hasDotSegment(params.filePath)) {
|
|
98
|
+
return { valid: false, reason: 'dot-segment' };
|
|
99
|
+
}
|
|
76
100
|
if (!params.secret) {
|
|
77
101
|
return { valid: false, reason: 'missing-secret' };
|
|
78
102
|
}
|
|
@@ -119,6 +143,17 @@ class DyNTS_SignedUrl_Util {
|
|
|
119
143
|
const signature = DyNTS_SignedUrl_Util.sign(normalizedPath, expMs, params.secret);
|
|
120
144
|
return `${base}/${normalizedPath}?exp=${expMs}&sig=${signature}`;
|
|
121
145
|
}
|
|
146
|
+
/** A dot-segment path → a loud error (BFR-FDPFTPSERVICE-009); the caller's input error, hence 400. */
|
|
147
|
+
static _assertNoDotSegment(filePath) {
|
|
148
|
+
if (DyNTS_SignedUrl_Util.hasDotSegment(filePath)) {
|
|
149
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
150
|
+
status: 400,
|
|
151
|
+
errorCode: 'DyNTS-SURL-SIGN-DOTSEG',
|
|
152
|
+
message: 'Signed URL: the path has a "." / ".." segment — refusing to sign it (zone bypass guard).',
|
|
153
|
+
additionalContent: { filePath: DyNTS_SignedUrl_Util.normalizePath(filePath) },
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
122
157
|
/** Üres secret → hangos hiba. ⚠️ A titok SOHA nem kerül a hiba-kontextusba. */
|
|
123
158
|
static _assertSecret(secret, filePath) {
|
|
124
159
|
if (!secret) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signed-url.util.js","sourceRoot":"","sources":["../../src/_collections/signed-url.util.ts"],"names":[],"mappings":";;;;AAAA,uDAAiC;AAEjC,sDAAmD;AAInD
|
|
1
|
+
{"version":3,"file":"signed-url.util.js","sourceRoot":"","sources":["../../src/_collections/signed-url.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export interface DyNTS_SignedUrl_VerifyResult {
|
|
11
11
|
valid: boolean;
|
|
12
|
-
|
|
12
|
+
/** `dot-segment` — BFR-FDPFTPSERVICE-009: a `.` / `..` path segment is never valid (see `hasDotSegment`). */
|
|
13
|
+
reason?: 'missing-secret' | 'missing-params' | 'expired' | 'signature-mismatch' | 'dot-segment';
|
|
13
14
|
}
|
|
14
15
|
//# sourceMappingURL=signed-url-verify-result.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signed-url-verify-result.interface.d.ts","sourceRoot":"","sources":["../../../src/_models/interfaces/signed-url-verify-result.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,GAAG,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"signed-url-verify-result.interface.d.ts","sourceRoot":"","sources":["../../../src/_models/interfaces/signed-url-verify-result.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,6GAA6G;IAC7G,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,GAAG,oBAAoB,GAAG,aAAa,CAAC;CACjG"}
|
|
@@ -51,6 +51,19 @@ export declare class DyNTS_Usage_DataService extends DyNTS_DataService<DyFM_Usag
|
|
|
51
51
|
accountId: string;
|
|
52
52
|
username: string;
|
|
53
53
|
}): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* The usage of the range, grouped by day (`simplifiedDailyUsage`, newest day first; each day's sessions oldest
|
|
56
|
+
* first).
|
|
57
|
+
*
|
|
58
|
+
* BFR-FUTDEVPRO-053 — the week view took ~23 s (futdevpro admin, TEST; 4× red CI): every session of the range was
|
|
59
|
+
* loaded as a hydrated Mongoose document and serialized one by one, and each was looked up in the day list
|
|
60
|
+
* (`findIndex`). Now the sessions come LEAN in batches (plain objects — measured on a synthetic week of 7 700
|
|
61
|
+
* sessions: hydrate + JSON 1 792 ms ⇒ lean 318 ms) and are grouped with a `Map`. The response shape is unchanged.
|
|
62
|
+
* The soft-deleted sessions are filtered in the query (`_deleted: null`, like `find` does with options).
|
|
63
|
+
* One diagnostic log line tells how many sessions / days and how long loading and grouping took.
|
|
64
|
+
*
|
|
65
|
+
* @param range the relative date range (default: last week)
|
|
66
|
+
*/
|
|
54
67
|
getUsage(range?: DyFM_RelativeDate): Promise<void>;
|
|
55
68
|
updateUsageData(req: Request): Promise<void>;
|
|
56
69
|
closeSession(req: Request): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.data-service.d.ts","sourceRoot":"","sources":["../../../src/_modules/usage/usage.data-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"usage.data-service.d.ts","sourceRoot":"","sources":["../../../src/_modules/usage/usage.data-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,aAAa,EAAwB,iBAAiB,EAAa,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAQ1F,qBAAa,uBAAwB,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC;IAC/E,SAAS,EAAE,cAAc,EAAE,CAAM;IACjC,oBAAoB,EAAE,mBAAmB,EAAE,CAAM;gBAG/C,GAAG,EAAE;QACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;QACjC,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC;KAChB;IAUH,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAgB9C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,+BAA+B,GAAG,aAAa,CAAC,iBAAiB,CAAC;IA6BtG;;;;;OAKG;IACG,qBAAqB,CAAC,GAAG,EAAE,+BAA+B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAe/F;;;;;;OAMG;IACG,uBAAuB,CAAC,GAAG,EAAE,+BAA+B,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBpF;;;;;;OAMG;IACG,oBAAoB,CAAC,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCvF;;;;;;;;;;;;OAYG;IACG,QAAQ,CAAC,KAAK,GAAE,iBAA8C,GAAG,OAAO,CAAC,IAAI,CAAC;IAuE9E,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC5C,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CA2ChD"}
|
|
@@ -139,43 +139,62 @@ class DyNTS_Usage_DataService extends data_service_1.DyNTS_DataService {
|
|
|
139
139
|
});
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* The usage of the range, grouped by day (`simplifiedDailyUsage`, newest day first; each day's sessions oldest
|
|
144
|
+
* first).
|
|
145
|
+
*
|
|
146
|
+
* BFR-FUTDEVPRO-053 — the week view took ~23 s (futdevpro admin, TEST; 4× red CI): every session of the range was
|
|
147
|
+
* loaded as a hydrated Mongoose document and serialized one by one, and each was looked up in the day list
|
|
148
|
+
* (`findIndex`). Now the sessions come LEAN in batches (plain objects — measured on a synthetic week of 7 700
|
|
149
|
+
* sessions: hydrate + JSON 1 792 ms ⇒ lean 318 ms) and are grouped with a `Map`. The response shape is unchanged.
|
|
150
|
+
* The soft-deleted sessions are filtered in the query (`_deleted: null`, like `find` does with options).
|
|
151
|
+
* One diagnostic log line tells how many sessions / days and how long loading and grouping took.
|
|
152
|
+
*
|
|
153
|
+
* @param range the relative date range (default: last week)
|
|
154
|
+
*/
|
|
142
155
|
async getUsage(range = fsm_dynamo_1.DyFM_RelativeDate.lastWeek) {
|
|
143
156
|
try {
|
|
144
|
-
|
|
157
|
+
const startedAt = Date.now();
|
|
158
|
+
const sessions = [];
|
|
159
|
+
const filter = {
|
|
145
160
|
sessionStart: { $gte: fsm_dynamo_1.DyFM_Time.getDateByRelativeDate(range) },
|
|
146
|
-
|
|
147
|
-
|
|
161
|
+
_deleted: null,
|
|
162
|
+
};
|
|
163
|
+
await this.dataDBService.findLeanBatched(filter, {
|
|
164
|
+
handler: (batch) => {
|
|
165
|
+
for (const session of batch) {
|
|
166
|
+
sessions.push(session);
|
|
167
|
+
}
|
|
168
|
+
},
|
|
148
169
|
});
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
date: session.date,
|
|
158
|
-
visitations: [session],
|
|
159
|
-
});
|
|
160
|
-
this.simplifiedDailyUsage.push(newUsageSimple);
|
|
161
|
-
dateIndex = this.simplifiedDailyUsage.length - 1;
|
|
170
|
+
const loadedAt = Date.now();
|
|
171
|
+
const byDate = new Map();
|
|
172
|
+
this.dataList = sessions;
|
|
173
|
+
for (const session of sessions) {
|
|
174
|
+
let daily = byDate.get(session.date);
|
|
175
|
+
if (!daily) {
|
|
176
|
+
daily = new usage_1.DyFM_DailyUsageData({ date: session.date, visitations: [] });
|
|
177
|
+
byDate.set(session.date, daily);
|
|
162
178
|
}
|
|
179
|
+
daily.visitations.push(session);
|
|
163
180
|
if (session?.locationData?.country) {
|
|
164
181
|
if (session.locationData.country === 'HU') {
|
|
165
|
-
|
|
182
|
+
daily.visitorsHun++;
|
|
166
183
|
}
|
|
167
184
|
else {
|
|
168
|
-
|
|
185
|
+
daily.visitorsElse++;
|
|
169
186
|
}
|
|
170
187
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
188
|
+
daily.totalVisitTime += session.totalSessionTime;
|
|
189
|
+
}
|
|
190
|
+
this.simplifiedDailyUsage = [...byDate.values()];
|
|
191
|
+
for (const daily of this.simplifiedDailyUsage) {
|
|
192
|
+
daily.averageVisitTime = Math.round((daily.totalVisitTime / daily.visitations.length) * 100) / 100;
|
|
193
|
+
daily.visitations.sort((a, b) => +new Date(a.sessionStart) - +new Date(b.sessionStart));
|
|
194
|
+
}
|
|
175
195
|
this.simplifiedDailyUsage.sort((a, b) => +new Date(b.date) - +new Date(a.date));
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
});
|
|
196
|
+
fsm_dynamo_1.DyFM_Log.info(`[DyNTS_Usage] getUsage(${range}): ${sessions.length} sessions, ${this.simplifiedDailyUsage.length} days` +
|
|
197
|
+
` — load ${loadedAt - startedAt} ms, group ${Date.now() - loadedAt} ms`);
|
|
179
198
|
}
|
|
180
199
|
catch (error) {
|
|
181
200
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage.data-service.js","sourceRoot":"","sources":["../../../src/_modules/usage/usage.data-service.ts"],"names":[],"mappings":";;;AAGA,
|
|
1
|
+
{"version":3,"file":"usage.data-service.js","sourceRoot":"","sources":["../../../src/_modules/usage/usage.data-service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@futdevpro/nts-dynamo",
|
|
3
|
-
"version": "01.15.
|
|
3
|
+
"version": "01.15.413",
|
|
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",
|