fivocell 5.4.0 → 6.0.0
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/dist/__tests__/performance.test.d.ts +2 -0
- package/dist/__tests__/performance.test.d.ts.map +1 -0
- package/dist/__tests__/performance.test.js +78 -0
- package/dist/__tests__/performance.test.js.map +1 -0
- package/dist/__tests__/polish.test.d.ts +2 -0
- package/dist/__tests__/polish.test.d.ts.map +1 -0
- package/dist/__tests__/polish.test.js +95 -0
- package/dist/__tests__/polish.test.js.map +1 -0
- package/dist/walls/06-memory/database/batch-write.d.ts +15 -0
- package/dist/walls/06-memory/database/batch-write.d.ts.map +1 -0
- package/dist/walls/06-memory/database/batch-write.js +56 -0
- package/dist/walls/06-memory/database/batch-write.js.map +1 -0
- package/dist/walls/06-memory/database/database.d.ts.map +1 -1
- package/dist/walls/06-memory/database/database.js +13 -0
- package/dist/walls/06-memory/database/database.js.map +1 -1
- package/dist/walls/06-memory/database/migrations.d.ts +19 -0
- package/dist/walls/06-memory/database/migrations.d.ts.map +1 -0
- package/dist/walls/06-memory/database/migrations.js +78 -0
- package/dist/walls/06-memory/database/migrations.js.map +1 -0
- package/dist/walls/06-memory/database/query-cache.d.ts +13 -0
- package/dist/walls/06-memory/database/query-cache.d.ts.map +1 -0
- package/dist/walls/06-memory/database/query-cache.js +80 -0
- package/dist/walls/06-memory/database/query-cache.js.map +1 -0
- package/dist/walls/06-memory/database/validation.d.ts +12 -0
- package/dist/walls/06-memory/database/validation.d.ts.map +1 -0
- package/dist/walls/06-memory/database/validation.js +73 -0
- package/dist/walls/06-memory/database/validation.js.map +1 -0
- package/dist/walls/07-runtime/cli/cli.js +60 -0
- package/dist/walls/07-runtime/cli/cli.js.map +1 -1
- package/dist/walls/07-runtime/daemon/restart.d.ts +13 -0
- package/dist/walls/07-runtime/daemon/restart.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/restart.js +47 -0
- package/dist/walls/07-runtime/daemon/restart.js.map +1 -0
- package/dist/walls/07-runtime/daemon/server.d.ts.map +1 -1
- package/dist/walls/07-runtime/daemon/server.js +27 -6
- package/dist/walls/07-runtime/daemon/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare function getRestartDelay(): number;
|
|
2
|
+
export declare function recordRestart(): void;
|
|
3
|
+
export declare function resetRestartState(): void;
|
|
4
|
+
export declare function shouldAutoRestart(): boolean;
|
|
5
|
+
export declare function getRestartStatus(): {
|
|
6
|
+
recentRestarts: number;
|
|
7
|
+
maxRestarts: number;
|
|
8
|
+
windowMs: number;
|
|
9
|
+
backoffIndex: number;
|
|
10
|
+
currentDelay: number;
|
|
11
|
+
canRestart: boolean;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=restart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../../../src/walls/07-runtime/daemon/restart.ts"],"names":[],"mappings":"AAYA,wBAAgB,eAAe,IAAI,MAAM,CAYxC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C;AAED,wBAAgB,gBAAgB,IAAI;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAWrK"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRestartDelay = getRestartDelay;
|
|
4
|
+
exports.recordRestart = recordRestart;
|
|
5
|
+
exports.resetRestartState = resetRestartState;
|
|
6
|
+
exports.shouldAutoRestart = shouldAutoRestart;
|
|
7
|
+
exports.getRestartStatus = getRestartStatus;
|
|
8
|
+
const BACKOFF_DELAYS = [1000, 2000, 4000, 8000, 16000, 30000];
|
|
9
|
+
const MAX_RESTARTS = 10;
|
|
10
|
+
const RESTART_WINDOW_MS = 120000;
|
|
11
|
+
let state = { count: 0, lastRestartAt: [], backoffIndex: 0 };
|
|
12
|
+
function getRestartDelay() {
|
|
13
|
+
const now = Date.now();
|
|
14
|
+
state.lastRestartAt = state.lastRestartAt.filter(t => now - t < RESTART_WINDOW_MS);
|
|
15
|
+
state.count = state.lastRestartAt.length;
|
|
16
|
+
if (state.count >= MAX_RESTARTS) {
|
|
17
|
+
return -1;
|
|
18
|
+
}
|
|
19
|
+
const delay = BACKOFF_DELAYS[Math.min(state.backoffIndex, BACKOFF_DELAYS.length - 1)];
|
|
20
|
+
state.backoffIndex++;
|
|
21
|
+
return delay;
|
|
22
|
+
}
|
|
23
|
+
function recordRestart() {
|
|
24
|
+
state.lastRestartAt.push(Date.now());
|
|
25
|
+
state.count++;
|
|
26
|
+
}
|
|
27
|
+
function resetRestartState() {
|
|
28
|
+
state = { count: 0, lastRestartAt: [], backoffIndex: 0 };
|
|
29
|
+
}
|
|
30
|
+
function shouldAutoRestart() {
|
|
31
|
+
const now = Date.now();
|
|
32
|
+
state.lastRestartAt = state.lastRestartAt.filter(t => now - t < RESTART_WINDOW_MS);
|
|
33
|
+
return state.lastRestartAt.length < MAX_RESTARTS;
|
|
34
|
+
}
|
|
35
|
+
function getRestartStatus() {
|
|
36
|
+
const now = Date.now();
|
|
37
|
+
state.lastRestartAt = state.lastRestartAt.filter(t => now - t < RESTART_WINDOW_MS);
|
|
38
|
+
return {
|
|
39
|
+
recentRestarts: state.lastRestartAt.length,
|
|
40
|
+
maxRestarts: MAX_RESTARTS,
|
|
41
|
+
windowMs: RESTART_WINDOW_MS,
|
|
42
|
+
backoffIndex: state.backoffIndex,
|
|
43
|
+
currentDelay: BACKOFF_DELAYS[Math.min(state.backoffIndex, BACKOFF_DELAYS.length - 1)],
|
|
44
|
+
canRestart: state.lastRestartAt.length < MAX_RESTARTS,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=restart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart.js","sourceRoot":"","sources":["../../../../src/walls/07-runtime/daemon/restart.ts"],"names":[],"mappings":";;AAYA,0CAYC;AAED,sCAGC;AAED,8CAEC;AAED,8CAIC;AAED,4CAWC;AApDD,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC9D,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAQjC,IAAI,KAAK,GAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;AAE3E,SAAgB,eAAe;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;IACnF,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;IAEzC,IAAI,KAAK,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACtF,KAAK,CAAC,YAAY,EAAE,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,aAAa;IAC3B,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACrC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,SAAgB,iBAAiB;IAC/B,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,SAAgB,iBAAiB;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;IACnF,OAAO,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC;AACnD,CAAC;AAED,SAAgB,gBAAgB;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;IACnF,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM;QAC1C,WAAW,EAAE,YAAY;QACzB,QAAQ,EAAE,iBAAiB;QAC3B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrF,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,YAAY;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/walls/07-runtime/daemon/server.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAE7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAE1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAE/F,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAEvF,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAExF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAEzF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AA0F3D,QAAA,MAAM,GAAG,6CAAY,CAAC;AAQtB,QAAA,MAAM,OAAO;;;mBAMuB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0EhD,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/walls/07-runtime/daemon/server.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sDAAsD,CAAC;AAE7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAE1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AAE/F,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAEvF,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAExF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAEzF,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AA0F3D,QAAA,MAAM,GAAG,6CAAY,CAAC;AAQtB,QAAA,MAAM,OAAO;;;mBAMuB,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0EhD,CAAC;AAk9LF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -3385,11 +3385,32 @@ server.on('close', () => {
|
|
|
3385
3385
|
console.log('[cell] Daemon stopped.');
|
|
3386
3386
|
});
|
|
3387
3387
|
// Graceful shutdown
|
|
3388
|
-
const gracefulShutdown = () => {
|
|
3389
|
-
console.log(
|
|
3390
|
-
|
|
3391
|
-
|
|
3388
|
+
const gracefulShutdown = (signal) => {
|
|
3389
|
+
console.log(`[cell] Daemon shutting down${signal ? ' (' + signal + ')' : ''}...`);
|
|
3390
|
+
try {
|
|
3391
|
+
const { closeDb } = require('../../06-memory/database/database');
|
|
3392
|
+
const { cacheClear } = require('../../06-memory/database/query-cache');
|
|
3393
|
+
cacheClear();
|
|
3394
|
+
closeDb();
|
|
3395
|
+
console.log('[cell] Database closed, cache flushed');
|
|
3396
|
+
}
|
|
3397
|
+
catch (e) {
|
|
3398
|
+
// ignore shutdown errors
|
|
3399
|
+
}
|
|
3400
|
+
try {
|
|
3401
|
+
const { resetRestartState } = require('./restart');
|
|
3402
|
+
resetRestartState();
|
|
3403
|
+
}
|
|
3404
|
+
catch { }
|
|
3405
|
+
server.close(() => {
|
|
3406
|
+
console.log('[cell] Server closed');
|
|
3407
|
+
process.exit(0);
|
|
3408
|
+
});
|
|
3409
|
+
setTimeout(() => {
|
|
3410
|
+
console.log('[cell] Forced exit');
|
|
3411
|
+
process.exit(1);
|
|
3412
|
+
}, 5000);
|
|
3392
3413
|
};
|
|
3393
|
-
process.on('SIGTERM', gracefulShutdown);
|
|
3394
|
-
process.on('SIGINT', gracefulShutdown);
|
|
3414
|
+
process.on('SIGTERM', () => gracefulShutdown('SIGTERM'));
|
|
3415
|
+
process.on('SIGINT', () => gracefulShutdown('SIGINT'));
|
|
3395
3416
|
//# sourceMappingURL=server.js.map
|