@futdevpro/nts-dynamo 1.15.75 ā 1.15.78
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/.dynamo/logs/cicd-pipeline/output.log +1730 -1745
- package/.dynamo/logs/cicd-pipeline/status.json +38 -38
- package/build/_services/core/global.service.d.ts +7 -0
- package/build/_services/core/global.service.d.ts.map +1 -1
- package/build/_services/core/global.service.js +10 -0
- package/build/_services/core/global.service.js.map +1 -1
- package/build/_services/server/app.server.d.ts +45 -0
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +85 -173
- package/build/_services/server/app.server.js.map +1 -1
- package/package.json +2 -2
- package/src/_services/core/global.service.ts +14 -2
- package/src/_services/server/app.server-retention.spec.ts +106 -0
- package/src/_services/server/app.server.ts +125 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"pid":
|
|
3
|
-
"startedAt": "2026-06-
|
|
4
|
-
"startedAtMs":
|
|
2
|
+
"pid": 1948,
|
|
3
|
+
"startedAt": "2026-06-23T13:42:52.590Z",
|
|
4
|
+
"startedAtMs": 1782222172590,
|
|
5
5
|
"phase": "npm-publish",
|
|
6
6
|
"pipelineComplete": false,
|
|
7
7
|
"serverRunning": false,
|
|
@@ -10,83 +10,83 @@
|
|
|
10
10
|
"steps": {
|
|
11
11
|
"validate-secrets": {
|
|
12
12
|
"status": "ok",
|
|
13
|
-
"startedAt": "2026-06-
|
|
13
|
+
"startedAt": "2026-06-23T13:42:52.604Z",
|
|
14
14
|
"logLineStart": 2,
|
|
15
15
|
"logLineEnd": 7,
|
|
16
16
|
"durationSec": 0.2
|
|
17
17
|
},
|
|
18
18
|
"discord-start": {
|
|
19
19
|
"status": "ok",
|
|
20
|
-
"startedAt": "2026-06-
|
|
20
|
+
"startedAt": "2026-06-23T13:42:53.826Z",
|
|
21
21
|
"logLineStart": 8,
|
|
22
22
|
"logLineEnd": 13,
|
|
23
|
-
"durationSec":
|
|
23
|
+
"durationSec": 3
|
|
24
24
|
},
|
|
25
25
|
"pre-flight": {
|
|
26
26
|
"status": "ok",
|
|
27
|
-
"startedAt": "2026-06-
|
|
27
|
+
"startedAt": "2026-06-23T13:42:57.846Z",
|
|
28
28
|
"logLineStart": 14,
|
|
29
29
|
"logLineEnd": 16,
|
|
30
30
|
"durationSec": 0.2
|
|
31
31
|
},
|
|
32
32
|
"install": {
|
|
33
33
|
"status": "ok",
|
|
34
|
-
"startedAt": "2026-06-
|
|
34
|
+
"startedAt": "2026-06-23T13:42:59.030Z",
|
|
35
35
|
"logLineStart": 17,
|
|
36
|
-
"logLineEnd":
|
|
37
|
-
"durationSec":
|
|
36
|
+
"logLineEnd": 98,
|
|
37
|
+
"durationSec": 19.1
|
|
38
38
|
},
|
|
39
39
|
"check-dev-leftovers": {
|
|
40
40
|
"status": "ok",
|
|
41
|
-
"startedAt": "2026-06-
|
|
42
|
-
"logLineStart":
|
|
43
|
-
"logLineEnd":
|
|
44
|
-
"durationSec":
|
|
41
|
+
"startedAt": "2026-06-23T13:43:19.139Z",
|
|
42
|
+
"logLineStart": 99,
|
|
43
|
+
"logLineEnd": 106,
|
|
44
|
+
"durationSec": 4.5
|
|
45
45
|
},
|
|
46
46
|
"build": {
|
|
47
47
|
"status": "ok",
|
|
48
|
-
"startedAt": "2026-06-
|
|
49
|
-
"logLineStart":
|
|
50
|
-
"logLineEnd":
|
|
51
|
-
"durationSec":
|
|
48
|
+
"startedAt": "2026-06-23T13:43:24.637Z",
|
|
49
|
+
"logLineStart": 107,
|
|
50
|
+
"logLineEnd": 108,
|
|
51
|
+
"durationSec": 27.4
|
|
52
52
|
},
|
|
53
53
|
"test": {
|
|
54
54
|
"status": "ok",
|
|
55
|
-
"startedAt": "2026-06-
|
|
56
|
-
"logLineStart":
|
|
57
|
-
"logLineEnd":
|
|
58
|
-
"durationSec":
|
|
55
|
+
"startedAt": "2026-06-23T13:43:53.050Z",
|
|
56
|
+
"logLineStart": 109,
|
|
57
|
+
"logLineEnd": 2777,
|
|
58
|
+
"durationSec": 42.3,
|
|
59
59
|
"testSummary": {
|
|
60
|
-
"totalSpecs":
|
|
60
|
+
"totalSpecs": 1442,
|
|
61
61
|
"failures": 0,
|
|
62
|
-
"passed":
|
|
63
|
-
"testDurationSec":
|
|
62
|
+
"passed": 1442,
|
|
63
|
+
"testDurationSec": 11.924
|
|
64
64
|
},
|
|
65
65
|
"errors": [
|
|
66
66
|
{
|
|
67
|
-
"line":
|
|
68
|
-
"text": "
|
|
69
|
-
"details": "
|
|
70
|
-
"detailLineEnd":
|
|
67
|
+
"line": 1973,
|
|
68
|
+
"text": "āā Error handleMessage: Error: Test error",
|
|
69
|
+
"details": "at UserContext.<anonymous> (/tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/build/_modules/assistant/_services/ass-io.control-service.spec.js:92:136)\nat QueueRunner.attempt (/tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8414:40)\nat QueueRunner.run (/tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8452:27)\nat runNext (/tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8355:16)\nat /tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8361:11\nat /tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8241:9\nat processTicksAndRejections (node:internal/process/task_queues:95:5)",
|
|
70
|
+
"detailLineEnd": 1980
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
|
-
"line":
|
|
73
|
+
"line": 1987,
|
|
74
74
|
"text": "āā Error handleMessage: Error: Test error",
|
|
75
|
-
"details": "at UserContext.<anonymous> (/tmp/pipeline-runs/
|
|
76
|
-
"detailLineEnd":
|
|
75
|
+
"details": "at UserContext.<anonymous> (/tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/build/_modules/assistant/_services/ass-io.control-service.spec.js:68:136)\nat QueueRunner.attempt (/tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8414:40)\nat QueueRunner.run (/tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8452:27)\nat runNext (/tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8355:16)\nat /tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8361:11\nat /tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/node_modules/.pnpm/jasmine-core@5.10.0/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:8241:9\nat processTicksAndRejections (node:internal/process/task_queues:95:5)",
|
|
76
|
+
"detailLineEnd": 1994
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
|
-
"line":
|
|
80
|
-
"text": "
|
|
81
|
-
"details": "
|
|
82
|
-
"detailLineEnd":
|
|
79
|
+
"line": 2090,
|
|
80
|
+
"text": ".....................ā getDataByDependencyId failed, dependencyKey is missing from service! (test_data)",
|
|
81
|
+
"details": "Emitting event 'test-event' on socket(unknown)-(1) failed!(1)\n.Emitting event 'test-event' on socket(unknown)-(0) failed!(1)\nEmitting event 'test-event' on socket(unknown)-(1) failed!(1)\nš /tmp/pipeline-runs/f81a1847-0c02-4d3c-a2d4-d9fbd41ea017/build/_services/base/data.service.spec.js:182:87",
|
|
82
|
+
"detailLineEnd": 2091
|
|
83
83
|
}
|
|
84
84
|
]
|
|
85
85
|
},
|
|
86
86
|
"npm-publish": {
|
|
87
87
|
"status": "running",
|
|
88
|
-
"startedAt": "2026-06-
|
|
89
|
-
"logLineStart":
|
|
88
|
+
"startedAt": "2026-06-23T13:44:36.401Z",
|
|
89
|
+
"logLineStart": 2778,
|
|
90
90
|
"logLineEnd": null,
|
|
91
91
|
"durationSec": null
|
|
92
92
|
}
|
|
@@ -18,6 +18,13 @@ export declare class DyNTS_GlobalService extends DyNTS_SingletonService {
|
|
|
18
18
|
private static readonly _upSince;
|
|
19
19
|
static get upSince(): Date;
|
|
20
20
|
static get upTime(): number;
|
|
21
|
+
/**
|
|
22
|
+
* FR-258 / SR-2 ā enumerate every registered DB service (one per data-model, including the
|
|
23
|
+
* auto-created `_archived` siblings). Used by the DyNTS_App startup TTL-installer to find the
|
|
24
|
+
* models that declared `retention` and create their MongoDB TTL index. Returns an empty array
|
|
25
|
+
* if services aren't set up yet (safe to call early).
|
|
26
|
+
*/
|
|
27
|
+
static getAllDBServices(): DyNTS_DBService<any>[];
|
|
21
28
|
authService: DyNTS_AuthService;
|
|
22
29
|
dbServiceCollection: DyNTS_Service_Collection<DyNTS_DBService<any>>;
|
|
23
30
|
emailServiceCollection: DyNTS_Service_Collection<DyNTS_EmailService>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global.service.d.ts","sourceRoot":"","sources":["../../../src/_services/core/global.service.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAEb,qBAAqB,EAErB,mBAAmB,EAGnB,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uDAAuD,CAAC;AAEzF,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,4DAA4D,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAInE;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,sBAAsB;IAE7D,MAAM,CAAC,WAAW,IAAI,mBAAmB;IAIzC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAmB;IACzC,MAAM,KAAK,MAAM,IAAI,gBAAgB,CAEpC;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IACpD,MAAM,KAAK,OAAO,IAAI,IAAI,CAEzB;IACD,MAAM,KAAK,MAAM,IAAI,MAAM,CAE1B;IAED,WAAW,EAAE,iBAAiB,CAAC;IAC/B,mBAAmB,EAAE,wBAAwB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpE,sBAAsB,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IAErE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAEY;IAEvD,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,CAGlD;IAEH;;OAEG;WACU,WAAW,CAAC,GAAG,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;mBAoBrD,aAAa;IAqDlC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAAG,IAAI;IAkDjE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAAG,IAAI;mBAgB7C,cAAc;mBAmBd,gBAAgB;mBAuBhB,eAAe;IA0CpC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAIhD;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,iBAAiB;IAyB1C;;;OAGG;IACH,MAAM,CAAC,sBAAsB,IAAI,wBAAwB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAe/E;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,aAAa,EACzC,UAAU,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACnC,eAAe,CAAC,CAAC,CAAC;IAIrB;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;IAiBlF;;;OAGG;IACH,MAAM,CAAC,yBAAyB,IAAI,wBAAwB,CAAC,kBAAkB,CAAC;IAiBhF;;;OAGG;IAaH;;;;OAIG;IAiCH,SAAS,CAAC,MAAM,CAAC,uBAAuB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM;IACd,mGAAmG;IACnG,uBAAuB,GAAE,OAAc,GACtC,mBAAmB;CAcvB"}
|
|
1
|
+
{"version":3,"file":"global.service.d.ts","sourceRoot":"","sources":["../../../src/_services/core/global.service.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EAEb,qBAAqB,EAErB,mBAAmB,EAGnB,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uDAAuD,CAAC;AAEzF,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC7B,MAAM,4DAA4D,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAInE;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,sBAAsB;IAE7D,MAAM,CAAC,WAAW,IAAI,mBAAmB;IAIzC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAmB;IACzC,MAAM,KAAK,MAAM,IAAI,gBAAgB,CAEpC;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IACpD,MAAM,KAAK,OAAO,IAAI,IAAI,CAEzB;IACD,MAAM,KAAK,MAAM,IAAI,MAAM,CAE1B;IAED;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;IAMjD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,mBAAmB,EAAE,wBAAwB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpE,sBAAsB,EAAE,wBAAwB,CAAC,kBAAkB,CAAC,CAAC;IAErE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAEY;IAEvD,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,CAGlD;IAEH;;OAEG;WACU,WAAW,CAAC,GAAG,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;mBAoBrD,aAAa;IAqDlC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAAG,IAAI;IAkDjE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAAG,IAAI;mBAgB7C,cAAc;mBAmBd,gBAAgB;mBAuBhB,eAAe;IA0CpC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAIhD;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,iBAAiB;IAyB1C;;;OAGG;IACH,MAAM,CAAC,sBAAsB,IAAI,wBAAwB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAe/E;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,aAAa,EACzC,UAAU,EAAE,qBAAqB,CAAC,CAAC,CAAC,GACnC,eAAe,CAAC,CAAC,CAAC;IAIrB;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS,aAAa,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;IAiBlF;;;OAGG;IACH,MAAM,CAAC,yBAAyB,IAAI,wBAAwB,CAAC,kBAAkB,CAAC;IAiBhF;;;OAGG;IAaH;;;;OAIG;IAiCH,SAAS,CAAC,MAAM,CAAC,uBAAuB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM;IACd,mGAAmG;IACnG,uBAAuB,GAAE,OAAc,GACtC,mBAAmB;CAcvB"}
|
|
@@ -29,6 +29,16 @@ class DyNTS_GlobalService extends singleton_service_1.DyNTS_SingletonService {
|
|
|
29
29
|
static get upTime() {
|
|
30
30
|
return +new Date() - +this._upSince;
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* FR-258 / SR-2 ā enumerate every registered DB service (one per data-model, including the
|
|
34
|
+
* auto-created `_archived` siblings). Used by the DyNTS_App startup TTL-installer to find the
|
|
35
|
+
* models that declared `retention` and create their MongoDB TTL index. Returns an empty array
|
|
36
|
+
* if services aren't set up yet (safe to call early).
|
|
37
|
+
*/
|
|
38
|
+
static getAllDBServices() {
|
|
39
|
+
const collection = this.instance?.dbServiceCollection;
|
|
40
|
+
return collection ? Object.values(collection) : [];
|
|
41
|
+
}
|
|
32
42
|
authService;
|
|
33
43
|
dbServiceCollection;
|
|
34
44
|
/* dataServiceCollection: DyNTS_Service_Collection<any>; */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global.service.js","sourceRoot":"","sources":["../../../src/_services/core/global.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"global.service.js","sourceRoot":"","sources":["../../../src/_services/core/global.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -186,6 +186,26 @@ import { DyNTS_RoutingModule } from '../route/routing-module.service';
|
|
|
186
186
|
* ```
|
|
187
187
|
*
|
|
188
188
|
*/
|
|
189
|
+
/** FR-258 / SR-2 ā one entry from `collection.indexes()` (only the fields the TTL-installer reads). */
|
|
190
|
+
export interface DyNTS_TtlIndexInfo {
|
|
191
|
+
name?: string;
|
|
192
|
+
key?: Record<string, number>;
|
|
193
|
+
expireAfterSeconds?: number;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* FR-258 / SR-2 ā the minimal native-driver collection surface the TTL-installer needs. Declared
|
|
197
|
+
* structurally (not importing mongodb types) so it stays dependency-light and is trivially mockable
|
|
198
|
+
* in unit tests.
|
|
199
|
+
*/
|
|
200
|
+
export interface DyNTS_TtlIndexCollection {
|
|
201
|
+
indexes?: () => Promise<DyNTS_TtlIndexInfo[]>;
|
|
202
|
+
createIndex: (keys: Record<string, number>, options: {
|
|
203
|
+
expireAfterSeconds: number;
|
|
204
|
+
}) => Promise<unknown>;
|
|
205
|
+
dropIndex?: (name: string) => Promise<unknown>;
|
|
206
|
+
}
|
|
207
|
+
/** FR-258 / SR-2 ā outcome of {@link DyNTS_App.ensureRetentionTtlIndex}. */
|
|
208
|
+
export type DyNTS_TtlIndexAction = 'created' | 'updated' | 'noop';
|
|
189
209
|
export declare abstract class DyNTS_App extends DyNTS_SingletonService {
|
|
190
210
|
protected systemControls: DyNTS_AppSystemControls;
|
|
191
211
|
get started(): boolean;
|
|
@@ -223,6 +243,31 @@ export declare abstract class DyNTS_App extends DyNTS_SingletonService {
|
|
|
223
243
|
*
|
|
224
244
|
*/
|
|
225
245
|
private startDB;
|
|
246
|
+
/**
|
|
247
|
+
* FR-258 / SR-2 ā install MongoDB TTL indexes for every data-model that declared `retention`.
|
|
248
|
+
*
|
|
249
|
+
* Runs ONCE right after the DB connection opens. For each registered DB service (including the
|
|
250
|
+
* auto-created `_archived` siblings, which inherit the parent model's `retention`), it ensures a
|
|
251
|
+
* TTL index on the `__created` Date field with the resolved `expireAfterSeconds` ā so MongoDB
|
|
252
|
+
* NATIVELY auto-deletes documents older than the configured age. This is the fleet-wide defense
|
|
253
|
+
* against the unbounded-collection-growth ā in-memory-load ā GC-thrash/OOM class.
|
|
254
|
+
*
|
|
255
|
+
* Guarantees:
|
|
256
|
+
* - **Non-fatal** ā any error is logged but NEVER blocks startup (called fire-and-forget).
|
|
257
|
+
* - **Idempotent** ā an existing index with the same TTL is a no-op; a CHANGED retention (different
|
|
258
|
+
* `expireAfterSeconds`, or an existing non-TTL `__created` index) is reconciled by drop+recreate
|
|
259
|
+
* (the field index is restored immediately, so query coverage is preserved).
|
|
260
|
+
*/
|
|
261
|
+
private installRetentionTtlIndexes;
|
|
262
|
+
/**
|
|
263
|
+
* FR-258 / SR-2 ā ensure a single `{ __created: 1 }` TTL index with the given `expireAfterSeconds`.
|
|
264
|
+
* Extracted as a pure-ish static so it is unit-testable with a mock collection. Idempotent:
|
|
265
|
+
* - no existing `__created` index ā create it ā `'created'`
|
|
266
|
+
* - existing with the SAME TTL ā no-op ā `'noop'`
|
|
267
|
+
* - existing with a DIFFERENT TTL / non-TTL ā drop + recreate ā `'updated'`
|
|
268
|
+
* Drop+recreate preserves query coverage (the `{__created:1}` index is restored immediately).
|
|
269
|
+
*/
|
|
270
|
+
static ensureRetentionTtlIndex(collection: DyNTS_TtlIndexCollection, ttlSeconds: number): Promise<DyNTS_TtlIndexAction>;
|
|
226
271
|
/**
|
|
227
272
|
*
|
|
228
273
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.server.d.ts","sourceRoot":"","sources":["../../../src/_services/server/app.server.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,GAAG,QAAQ,UAAU,CAAC,CAAC;AACtC,OAAO,OAAO,GAAG,QAAQ,SAAS,CAAC,CAAC;AAMpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAIL,UAAU,
|
|
1
|
+
{"version":3,"file":"app.server.d.ts","sourceRoot":"","sources":["../../../src/_services/server/app.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,179 +22,6 @@ const http_settings_control_model_1 = require("../../_models/control-models/http
|
|
|
22
22
|
const singleton_service_1 = require("../base/singleton.service");
|
|
23
23
|
const global_service_1 = require("../core/global.service");
|
|
24
24
|
const memory_guard_service_1 = require("../core/memory-guard.service");
|
|
25
|
-
/**
|
|
26
|
-
*
|
|
27
|
-
* function MyDecorator(config: any) {
|
|
28
|
-
return function (target: Function) {
|
|
29
|
-
// attach metadata or modify target
|
|
30
|
-
target.prototype.myMeta = config;
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
@MyDecorator({ role: 'admin' })
|
|
35
|
-
class User {
|
|
36
|
-
printRole() {
|
|
37
|
-
console.log((this as any).myMeta.role); // ā "admin"
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
*/
|
|
42
|
-
/**
|
|
43
|
-
* This will be the MAIN service of our server project,
|
|
44
|
-
* follow the types and type instructions while setting up your project
|
|
45
|
-
*
|
|
46
|
-
* In this service, there are abstract functions that you will need to implement,
|
|
47
|
-
* where you need to set up the main params for your application.
|
|
48
|
-
*
|
|
49
|
-
* (after the example, you can find the list of services you can/should setup)
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* export class App extends DyNTS_AppExtended {
|
|
53
|
-
*
|
|
54
|
-
* ...
|
|
55
|
-
*
|
|
56
|
-
* // Setting up App params, and preparing project global settings
|
|
57
|
-
* setupAppParams(): void {
|
|
58
|
-
* this.params = new DyNTS_AppParams({
|
|
59
|
-
* name: 'Warbots Server',
|
|
60
|
-
* title: warbotsTitleLog,
|
|
61
|
-
* version: version,
|
|
62
|
-
* dbName: 'warbots',
|
|
63
|
-
* });
|
|
64
|
-
*
|
|
65
|
-
* // dynamoNTS_GlobalSettings.logRequestsContent = false;
|
|
66
|
-
* }
|
|
67
|
-
*
|
|
68
|
-
* ...
|
|
69
|
-
*
|
|
70
|
-
* // Setting up DBServices
|
|
71
|
-
* setGlobalServiceCollection(): void {
|
|
72
|
-
* DyNTS_GlobalService.setServices({
|
|
73
|
-
* authService: AuthService.getInstance(),
|
|
74
|
-
* emailServiceCollection: EmailServiceCollectionService.getInstance(),
|
|
75
|
-
* dbModels: [
|
|
76
|
-
* userModelParams,
|
|
77
|
-
* userDataModelParams,
|
|
78
|
-
* userOptionsModelParams,
|
|
79
|
-
* userStatisticsModelParams,
|
|
80
|
-
* userAchievementsModelParams,
|
|
81
|
-
* userNotificationsModelParams,
|
|
82
|
-
*
|
|
83
|
-
* matchStatisticsModelParams,
|
|
84
|
-
* matchDataModelParams,
|
|
85
|
-
|
|
86
|
-
* DyFM_usageSession_dataParams,
|
|
87
|
-
* DyFM_customData_dataParams,
|
|
88
|
-
* ]
|
|
89
|
-
* });
|
|
90
|
-
* }
|
|
91
|
-
*
|
|
92
|
-
* ...
|
|
93
|
-
*
|
|
94
|
-
* // Setting up Routes
|
|
95
|
-
* setupRoutingModules(): void {
|
|
96
|
-
* this.httpPort = env.port;
|
|
97
|
-
|
|
98
|
-
* this.routingModules = [
|
|
99
|
-
* new DyNTS_RoutingModule({
|
|
100
|
-
* route: '/user',
|
|
101
|
-
* controllers: [
|
|
102
|
-
* UserController.getInstance(),
|
|
103
|
-
* UserDataController.getInstance(),
|
|
104
|
-
* UserOptionsController.getInstance(),
|
|
105
|
-
* UserStatisticsController.getInstance(),
|
|
106
|
-
* UserAchievementsController.getInstance(),
|
|
107
|
-
* UserNotificationsController.getInstance()
|
|
108
|
-
* ]
|
|
109
|
-
* }),
|
|
110
|
-
* new DyNTS_RoutingModule({
|
|
111
|
-
* route: '/match',
|
|
112
|
-
* controllers: [
|
|
113
|
-
* MatchController.getInstance(),
|
|
114
|
-
* MatchDistributionController.getInstance(),
|
|
115
|
-
* MatchStatisticsController.getInstance(),
|
|
116
|
-
* ]
|
|
117
|
-
* }),
|
|
118
|
-
* new DyNTS_RoutingModule({
|
|
119
|
-
* route: '/server',
|
|
120
|
-
* controllers: [
|
|
121
|
-
* ServerController.getInstance(),
|
|
122
|
-
* ]
|
|
123
|
-
* }),
|
|
124
|
-
|
|
125
|
-
* getTestRoutingModule(),
|
|
126
|
-
* getUsageRoutingModule()
|
|
127
|
-
* ];
|
|
128
|
-
* }
|
|
129
|
-
* }
|
|
130
|
-
*
|
|
131
|
-
* //
|
|
132
|
-
* // The Services available
|
|
133
|
-
* //
|
|
134
|
-
* // Authentication Service
|
|
135
|
-
* // A commonly used basic service,
|
|
136
|
-
* // which is necessary fur certain functions (such as registering call issuers)
|
|
137
|
-
* //
|
|
138
|
-
* // This will handle Authentication Token checking/refreshing,
|
|
139
|
-
* // checking issuer's identifier and routeParams,
|
|
140
|
-
* // handling JWT Token, or maybe with OAuth2 or other commonly used security procedures
|
|
141
|
-
* //
|
|
142
|
-
* // You can create one with this Dynamo Object:
|
|
143
|
-
* //
|
|
144
|
-
*
|
|
145
|
-
* @example
|
|
146
|
-
* // follow the instructions on the abstract class (DyNTS_AuthService)
|
|
147
|
-
* export class AuthService extends DyNTS_AuthService {}
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
* //
|
|
152
|
-
*/
|
|
153
|
-
/**
|
|
154
|
-
* This will be the MAIN service of our server project,
|
|
155
|
-
* follow the types and type instructions while setting up your project
|
|
156
|
-
*
|
|
157
|
-
* In this service, there are abstract functions that you will need to implement,
|
|
158
|
-
* where you need to set up the main params for your application.
|
|
159
|
-
*
|
|
160
|
-
* (after the example, you can find the list of services you can/should setup)
|
|
161
|
-
*
|
|
162
|
-
* You need to setup the following functions:
|
|
163
|
-
* ```ts
|
|
164
|
-
* // this is where you set up the main params for your application
|
|
165
|
-
* getAppParams(): DyNTS_AppParams
|
|
166
|
-
*
|
|
167
|
-
* // this is where you connect your main services
|
|
168
|
-
* getGlobalServiceSettings(): DyNTS_GlobalService_Settings
|
|
169
|
-
*
|
|
170
|
-
* // this is where you set up your ports
|
|
171
|
-
* getPorts(): DyNTS_PortSettings
|
|
172
|
-
*
|
|
173
|
-
* // this is where you set up your routes
|
|
174
|
-
* getRoutingModules(): DyNTS_RoutingModule[]
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
* ```
|
|
179
|
-
* optionally you can setup the following functions:
|
|
180
|
-
* ```ts
|
|
181
|
-
* // this is where you set up your certifications
|
|
182
|
-
* getCertificationSettings(): DyNTS_CertificationSettings
|
|
183
|
-
*
|
|
184
|
-
* // this is where you set up additional root services
|
|
185
|
-
* getRootServices(): DyNTS_SingletonService[]
|
|
186
|
-
*
|
|
187
|
-
* // this is where you set up your initial db entries
|
|
188
|
-
* createEntries(): void
|
|
189
|
-
*
|
|
190
|
-
* // this is where you can define post setup processes
|
|
191
|
-
* postProcess(): void
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
* ```
|
|
196
|
-
*
|
|
197
|
-
*/
|
|
198
25
|
class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
199
26
|
systemControls = new app_system_controls_control_model_1.DyNTS_AppSystemControls();
|
|
200
27
|
get started() {
|
|
@@ -717,6 +544,10 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
717
544
|
this.systemControls.mongoose.started = true;
|
|
718
545
|
fsm_dynamo_1.DyFM_Log.success(`\nConnected to MongoDB (${this._params.dbUri})\n`);
|
|
719
546
|
resolve();
|
|
547
|
+
// FR-258 / SR-2 ā install declared-retention TTL indexes. Fire-and-forget +
|
|
548
|
+
// fully non-fatal: an index build on a large collection must NOT block startup,
|
|
549
|
+
// and any failure here is logged but never crashes the app.
|
|
550
|
+
void this.installRetentionTtlIndexes();
|
|
720
551
|
})
|
|
721
552
|
.on('error', (error) => {
|
|
722
553
|
if (!this.systemControls.mongoose.started) {
|
|
@@ -796,6 +627,87 @@ class DyNTS_App extends singleton_service_1.DyNTS_SingletonService {
|
|
|
796
627
|
fsm_dynamo_1.DyFM_Log.warn(`[mongo-reconnect-guard] failed to start (non-fatal): ${guardErr instanceof Error ? guardErr.message : String(guardErr)}`);
|
|
797
628
|
}
|
|
798
629
|
}
|
|
630
|
+
/**
|
|
631
|
+
* FR-258 / SR-2 ā install MongoDB TTL indexes for every data-model that declared `retention`.
|
|
632
|
+
*
|
|
633
|
+
* Runs ONCE right after the DB connection opens. For each registered DB service (including the
|
|
634
|
+
* auto-created `_archived` siblings, which inherit the parent model's `retention`), it ensures a
|
|
635
|
+
* TTL index on the `__created` Date field with the resolved `expireAfterSeconds` ā so MongoDB
|
|
636
|
+
* NATIVELY auto-deletes documents older than the configured age. This is the fleet-wide defense
|
|
637
|
+
* against the unbounded-collection-growth ā in-memory-load ā GC-thrash/OOM class.
|
|
638
|
+
*
|
|
639
|
+
* Guarantees:
|
|
640
|
+
* - **Non-fatal** ā any error is logged but NEVER blocks startup (called fire-and-forget).
|
|
641
|
+
* - **Idempotent** ā an existing index with the same TTL is a no-op; a CHANGED retention (different
|
|
642
|
+
* `expireAfterSeconds`, or an existing non-TTL `__created` index) is reconciled by drop+recreate
|
|
643
|
+
* (the field index is restored immediately, so query coverage is preserved).
|
|
644
|
+
*/
|
|
645
|
+
async installRetentionTtlIndexes() {
|
|
646
|
+
try {
|
|
647
|
+
const services = global_service_1.DyNTS_GlobalService.getAllDBServices();
|
|
648
|
+
let ensured = 0;
|
|
649
|
+
for (const service of services) {
|
|
650
|
+
const ttlSeconds = (0, fsm_dynamo_1.DyFM_resolveRetentionTtlSeconds)(service?.dataParams?.retention);
|
|
651
|
+
if (!ttlSeconds) {
|
|
652
|
+
continue;
|
|
653
|
+
}
|
|
654
|
+
const dataName = service.dataParams.dataName;
|
|
655
|
+
// The mongoose Model exposes the native driver collection (.indexes / .createIndex / .dropIndex).
|
|
656
|
+
const collection = service?.dataModel?.collection;
|
|
657
|
+
if (!collection || typeof collection.createIndex !== 'function') {
|
|
658
|
+
continue;
|
|
659
|
+
}
|
|
660
|
+
try {
|
|
661
|
+
const action = await DyNTS_App.ensureRetentionTtlIndex(collection, ttlSeconds);
|
|
662
|
+
if (action === 'created' || action === 'updated') {
|
|
663
|
+
ensured++;
|
|
664
|
+
if (this.logSetup) {
|
|
665
|
+
fsm_dynamo_1.DyFM_Log.success(`[FR-258 retention] TTL index ${action} on "${dataName}" ā ` +
|
|
666
|
+
`${Math.round(ttlSeconds / 86400)}d (${ttlSeconds}s)`);
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
catch (idxErr) {
|
|
671
|
+
fsm_dynamo_1.DyFM_Log.warn(`[FR-258 retention] TTL index on "${dataName}" failed (non-fatal): ` +
|
|
672
|
+
`${idxErr instanceof Error ? idxErr.message : String(idxErr)}`);
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
if (ensured > 0) {
|
|
676
|
+
fsm_dynamo_1.DyFM_Log.success(`[FR-258 retention] ${ensured} TTL index(es) ensured (auto-retention active).`);
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
catch (err) {
|
|
680
|
+
fsm_dynamo_1.DyFM_Log.warn(`[FR-258 retention] TTL-installer failed (non-fatal): ` +
|
|
681
|
+
`${err instanceof Error ? err.message : String(err)}`);
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* FR-258 / SR-2 ā ensure a single `{ __created: 1 }` TTL index with the given `expireAfterSeconds`.
|
|
686
|
+
* Extracted as a pure-ish static so it is unit-testable with a mock collection. Idempotent:
|
|
687
|
+
* - no existing `__created` index ā create it ā `'created'`
|
|
688
|
+
* - existing with the SAME TTL ā no-op ā `'noop'`
|
|
689
|
+
* - existing with a DIFFERENT TTL / non-TTL ā drop + recreate ā `'updated'`
|
|
690
|
+
* Drop+recreate preserves query coverage (the `{__created:1}` index is restored immediately).
|
|
691
|
+
*/
|
|
692
|
+
static async ensureRetentionTtlIndex(collection, ttlSeconds) {
|
|
693
|
+
const existingList = typeof collection.indexes === 'function'
|
|
694
|
+
? await collection.indexes().catch(() => [])
|
|
695
|
+
: [];
|
|
696
|
+
const existing = existingList.find((ix) => !!ix?.key && ix.key.__created === 1);
|
|
697
|
+
if (!existing) {
|
|
698
|
+
await collection.createIndex({ __created: 1 }, { expireAfterSeconds: ttlSeconds });
|
|
699
|
+
return 'created';
|
|
700
|
+
}
|
|
701
|
+
if (existing.expireAfterSeconds === ttlSeconds) {
|
|
702
|
+
return 'noop';
|
|
703
|
+
}
|
|
704
|
+
// Retention changed, or an existing non-TTL `__created` index ā reconcile by drop+recreate.
|
|
705
|
+
if (existing.name && typeof collection.dropIndex === 'function') {
|
|
706
|
+
await collection.dropIndex(existing.name).catch(() => undefined);
|
|
707
|
+
}
|
|
708
|
+
await collection.createIndex({ __created: 1 }, { expireAfterSeconds: ttlSeconds });
|
|
709
|
+
return 'updated';
|
|
710
|
+
}
|
|
799
711
|
/**
|
|
800
712
|
*
|
|
801
713
|
*/
|