@wikicasa-dev/node-common 4.7.12 ā 5.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/examples/callpool-demo.js +14 -13
- package/dist/examples/callpool-demo.js.map +1 -1
- package/dist/examples/console-demo.js +25 -25
- package/dist/examples/console-demo.js.map +1 -1
- package/dist/src/Cache.d.ts +39 -2
- package/dist/src/Cache.js +44 -6
- package/dist/src/Cache.js.map +1 -1
- package/dist/src/CacheES.d.ts +28 -0
- package/dist/src/CacheES.js +34 -4
- package/dist/src/CacheES.js.map +1 -1
- package/dist/src/CallPool.d.ts +71 -5
- package/dist/src/CallPool.js +82 -9
- package/dist/src/CallPool.js.map +1 -1
- package/dist/src/Console.d.ts +21 -58
- package/dist/src/Console.js +80 -79
- package/dist/src/Console.js.map +1 -1
- package/dist/src/Crawler.d.ts +18 -0
- package/dist/src/Crawler.js +20 -2
- package/dist/src/Crawler.js.map +1 -1
- package/dist/src/Pool.d.ts +19 -0
- package/dist/src/Pool.js +21 -2
- package/dist/src/Pool.js.map +1 -1
- package/dist/src/common.d.ts +74 -3
- package/dist/src/common.js +80 -7
- package/dist/src/common.js.map +1 -1
- package/dist/src/utils.d.ts +165 -26
- package/dist/src/utils.js +165 -26
- package/dist/src/utils.js.map +1 -1
- package/package.json +20 -23
|
@@ -25,7 +25,7 @@ async function demoCallPool() {
|
|
|
25
25
|
const scenario = Math.random();
|
|
26
26
|
setTimeout(() => {
|
|
27
27
|
if (scenario > 0.000001) {
|
|
28
|
-
resolve(
|
|
28
|
+
resolve(`Operazione ${id} completata con successo in ${(delay / 1000).toFixed(1)}s`);
|
|
29
29
|
}
|
|
30
30
|
else if (scenario > 0.2) {
|
|
31
31
|
// Errore recuperabile (con RETRY nel messaggio)
|
|
@@ -40,7 +40,7 @@ async function demoCallPool() {
|
|
|
40
40
|
};
|
|
41
41
|
// Creiamo 50 operazioni simulate
|
|
42
42
|
const operations = Array.from({ length: 5000 }, (_, i) => i + 1);
|
|
43
|
-
Console.log("
|
|
43
|
+
Console.log("Avvio operazioni batch con retry...");
|
|
44
44
|
const time = performance.now();
|
|
45
45
|
// Aggiungiamo le operazioni al pool usando enqueue
|
|
46
46
|
const promises = operations.map(id => {
|
|
@@ -53,26 +53,27 @@ async function demoCallPool() {
|
|
|
53
53
|
const retryInfo = error.message.includes("RETRY") ?
|
|
54
54
|
" (dopo tutti i tentativi di retry)" :
|
|
55
55
|
" (errore non recuperabile)";
|
|
56
|
-
Console.error(
|
|
56
|
+
Console.error("Operazione fallita", { message: error.message, retryInfo });
|
|
57
57
|
throw error;
|
|
58
58
|
});
|
|
59
59
|
});
|
|
60
60
|
try {
|
|
61
61
|
await Promise.allSettled(promises);
|
|
62
|
-
Console.success("
|
|
62
|
+
Console.success("Demo completata! Tutte le operazioni sono state processate.");
|
|
63
63
|
// Stampiamo alcune statistiche
|
|
64
64
|
const results = await Promise.allSettled(promises);
|
|
65
65
|
const succeeded = results.filter(r => r.status === "fulfilled").length;
|
|
66
66
|
const failed = results.filter(r => r.status === "rejected").length;
|
|
67
|
-
Console.log("
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
Console.log("Statistiche finali", {
|
|
68
|
+
executionTime: `${((performance.now() - time) / 1000).toFixed(1)}s`,
|
|
69
|
+
succeeded,
|
|
70
|
+
failed,
|
|
71
|
+
callsPerMinute: await pool.getActualCallsPerMinute(),
|
|
72
|
+
totalCalls: pool.getTotalCalls()
|
|
73
|
+
});
|
|
73
74
|
}
|
|
74
75
|
catch (error) {
|
|
75
|
-
Console.error("Errore generale nella demo
|
|
76
|
+
Console.error("Errore generale nella demo", { error });
|
|
76
77
|
}
|
|
77
78
|
finally {
|
|
78
79
|
await pool.finish(); // Aspettiamo che tutte le operazioni siano completate
|
|
@@ -80,9 +81,9 @@ async function demoCallPool() {
|
|
|
80
81
|
}
|
|
81
82
|
}
|
|
82
83
|
// Avviamo la demo
|
|
83
|
-
Console.log("
|
|
84
|
+
Console.log("Avvio demo CallPool...");
|
|
84
85
|
demoCallPool().catch(error => {
|
|
85
|
-
Console.error("Errore fatale nella demo
|
|
86
|
+
Console.error("Errore fatale nella demo", { error });
|
|
86
87
|
})
|
|
87
88
|
.finally(() => {
|
|
88
89
|
Console.clearSummaryLines();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callpool-demo.js","sourceRoot":"","sources":["../../examples/callpool-demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEpD,KAAK,UAAU,YAAY;IACvB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC;QACtB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,cAAc,EAAE,CAAC;QACjB,cAAc,EAAE,GAAG;QACnB,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,KAAK;QACpB,KAAK,EAAE;YACH,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,CAAC,KAAK,EAAW,EAAE;gBAC5B,2DAA2D;gBAC3D,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;SACJ;KACJ,CAAC,CAAC;IAEH,OAAO,CAAC,iBAAiB,CACrB,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAClB,MAAM,CAAC,MAAM,EACb,aAAa,CAChB,CAAC;IAEF,oFAAoF;IACpF,MAAM,eAAe,GAAG,CAAC,EAAU,EAAmB,EAAE;QACpD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,kCAAkC;YACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAE/B,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC;oBACtB,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"callpool-demo.js","sourceRoot":"","sources":["../../examples/callpool-demo.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,46 +4,46 @@ async function demo() {
|
|
|
4
4
|
// Test base dei diversi tipi di log
|
|
5
5
|
Console.log("Benvenuto alla demo della Console interattiva!");
|
|
6
6
|
await sleep(500);
|
|
7
|
-
Console.success("
|
|
7
|
+
Console.success("Iniziamo con alcuni esempi di output colorato");
|
|
8
8
|
await sleep(500);
|
|
9
|
-
Console.error("
|
|
9
|
+
Console.error("Questo ĆØ un messaggio di errore");
|
|
10
10
|
await sleep(500);
|
|
11
|
-
Console.warn("
|
|
11
|
+
Console.warn("Questo ĆØ un avviso importante");
|
|
12
12
|
await sleep(500);
|
|
13
|
-
Console.log("
|
|
13
|
+
Console.log("Questo ĆØ un messaggio informativo normale");
|
|
14
14
|
await sleep(500);
|
|
15
|
-
Console.debug("
|
|
15
|
+
Console.debug("Questo ĆØ un messaggio informativo debug");
|
|
16
16
|
await sleep(1000);
|
|
17
17
|
// Test del prefisso
|
|
18
|
-
Console.log("
|
|
18
|
+
Console.log("Test dei prefissi:");
|
|
19
19
|
await sleep(500);
|
|
20
|
-
Console.log("Messaggio con prefisso giallo", { prefix: "DEV", color: COLORS.YELLOW });
|
|
20
|
+
Console.log("Messaggio con prefisso giallo", {}, { prefix: "DEV", color: COLORS.YELLOW });
|
|
21
21
|
await sleep(500);
|
|
22
|
-
Console.log("Messaggio con prefisso rosso", { prefix: "PROD", color: COLORS.RED });
|
|
22
|
+
Console.log("Messaggio con prefisso rosso", {}, { prefix: "PROD", color: COLORS.RED });
|
|
23
23
|
await sleep(500);
|
|
24
|
-
Console.log("Messaggio con prefisso verde", { prefix: "TEST", color: COLORS.GREEN });
|
|
24
|
+
Console.log("Messaggio con prefisso verde", {}, { prefix: "TEST", color: COLORS.GREEN });
|
|
25
25
|
await sleep(500);
|
|
26
|
-
Console.log("Messaggio senza prefisso", { prefix:
|
|
26
|
+
Console.log("Messaggio senza prefisso", {}, { prefix: "" });
|
|
27
27
|
await sleep(1000);
|
|
28
28
|
// Test degli spinner
|
|
29
|
-
Console.log("
|
|
29
|
+
Console.log("Test degli spinner:");
|
|
30
30
|
await sleep(500);
|
|
31
|
-
Console.log("Caricamento dati in corso...", { spinner: true });
|
|
31
|
+
Console.log("Caricamento dati in corso...", {}, { spinner: true });
|
|
32
32
|
await sleep(2000);
|
|
33
|
-
Console.warn("Verifica dei dati...", { spinner: true });
|
|
33
|
+
Console.warn("Verifica dei dati...", {}, { spinner: true });
|
|
34
34
|
await sleep(1500);
|
|
35
35
|
Console.success("Dati verificati con successo!");
|
|
36
36
|
await sleep(500);
|
|
37
|
-
Console.log("Download file 1/3...", { spinner: true });
|
|
37
|
+
Console.log("Download file 1/3...", {}, { spinner: true });
|
|
38
38
|
await sleep(1000);
|
|
39
|
-
Console.log("Download file 2/3...", { spinner: true });
|
|
39
|
+
Console.log("Download file 2/3...", {}, { spinner: true });
|
|
40
40
|
await sleep(1000);
|
|
41
|
-
Console.log("Download file 3/3...", { spinner: true });
|
|
41
|
+
Console.log("Download file 3/3...", {}, { spinner: true });
|
|
42
42
|
await sleep(1000);
|
|
43
43
|
Console.success("Download completato!");
|
|
44
44
|
await sleep(1000);
|
|
45
45
|
// Test delle summary lines
|
|
46
|
-
Console.log("
|
|
46
|
+
Console.log("Test delle summary lines:");
|
|
47
47
|
await sleep(500);
|
|
48
48
|
let memoria = 0;
|
|
49
49
|
let cpu = 0;
|
|
@@ -53,7 +53,7 @@ async function demo() {
|
|
|
53
53
|
Console.appendSummaryLine(() => `Richieste/sec: ${richieste}`, COLORS.BLUE, "richieste");
|
|
54
54
|
// Simulazione di un processo con aggiornamento delle metriche
|
|
55
55
|
for (let i = 1; i <= 10; i++) {
|
|
56
|
-
Console.log(
|
|
56
|
+
Console.log("Elaborazione batch", { progress: `${i}/10` }, { spinner: true });
|
|
57
57
|
memoria = Math.random() * 16;
|
|
58
58
|
cpu = Math.random() * 100;
|
|
59
59
|
richieste = Math.floor(Math.random() * 1000);
|
|
@@ -62,20 +62,20 @@ async function demo() {
|
|
|
62
62
|
Console.success("Elaborazione completata!");
|
|
63
63
|
await sleep(1000);
|
|
64
64
|
// Test di messaggi multipli rapidi
|
|
65
|
-
Console.log("
|
|
65
|
+
Console.log("Test di messaggi multipli rapidi:");
|
|
66
66
|
await sleep(500);
|
|
67
67
|
for (let i = 1; i <= 20; i++) {
|
|
68
68
|
const color = i % 4 === 0 ? COLORS.RED :
|
|
69
69
|
i % 3 === 0 ? COLORS.YELLOW :
|
|
70
70
|
i % 2 === 0 ? COLORS.GREEN : COLORS.WHITE;
|
|
71
|
-
Console.log(
|
|
71
|
+
Console.log("Messaggio rapido", { index: i }, { color });
|
|
72
72
|
await sleep(100);
|
|
73
73
|
}
|
|
74
74
|
// Test finale con spinner e summary
|
|
75
|
-
Console.log("
|
|
75
|
+
Console.log("Test finale con animazioni:");
|
|
76
76
|
await sleep(500);
|
|
77
77
|
for (let i = 0; i < 5; i++) {
|
|
78
|
-
Console.log(
|
|
78
|
+
Console.log("Elaborazione fase", { phase: i + 1 }, { spinner: true });
|
|
79
79
|
memoria = Math.random() * 16;
|
|
80
80
|
cpu = Math.random() * 100;
|
|
81
81
|
richieste = Math.floor(Math.random() * 1000);
|
|
@@ -84,14 +84,14 @@ async function demo() {
|
|
|
84
84
|
Console.success("Demo completata con successo!");
|
|
85
85
|
await sleep(2000);
|
|
86
86
|
// Pulizia finale
|
|
87
|
-
Console.log("
|
|
87
|
+
Console.log("Pulizia...");
|
|
88
88
|
await sleep(1000);
|
|
89
89
|
Console.clearSummaryLines();
|
|
90
90
|
Console.cleanup();
|
|
91
91
|
}
|
|
92
92
|
// Gestione degli errori
|
|
93
|
-
demo().catch(error => {
|
|
94
|
-
Console.error(
|
|
93
|
+
demo().catch((error) => {
|
|
94
|
+
Console.error("Errore nella demo", { error });
|
|
95
95
|
Console.cleanup();
|
|
96
96
|
process.exit(1);
|
|
97
97
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console-demo.js","sourceRoot":"","sources":["../../examples/console-demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEpD,KAAK,UAAU,IAAI;IACf,oCAAoC;IACpC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"console-demo.js","sourceRoot":"","sources":["../../examples/console-demo.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Cache.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import redis from "redis";
|
|
2
|
+
import type { RedisClientOptions } from "redis";
|
|
2
3
|
import { Buffer } from "node:buffer";
|
|
3
4
|
export declare enum MODE {
|
|
4
5
|
STRING = 0,
|
|
@@ -8,13 +9,49 @@ export declare enum MODE {
|
|
|
8
9
|
}
|
|
9
10
|
export declare class Cache {
|
|
10
11
|
init: Promise<any>;
|
|
11
|
-
client:
|
|
12
|
+
client: ReturnType<typeof redis.createClient>;
|
|
12
13
|
constructor(options?: RedisClientOptions);
|
|
14
|
+
/**
|
|
15
|
+
* Open the Redis connection. Stores the connect promise in `init` for lazy-init checks.
|
|
16
|
+
*/
|
|
13
17
|
start(): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Retrieve a value from Redis, decompressing with Brotli when needed. Auto-connects if not started.
|
|
20
|
+
*
|
|
21
|
+
* @param key - Redis key to fetch
|
|
22
|
+
* @param mode - Storage mode (string, JSON, or brotli-compressed)
|
|
23
|
+
* @returns Stored value or null if not found
|
|
24
|
+
*/
|
|
14
25
|
get(key: string, mode?: MODE): Promise<unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* Store a value in Redis, compressing with Brotli when needed. Auto-connects if not started.
|
|
28
|
+
*
|
|
29
|
+
* @param key - Redis key to store under
|
|
30
|
+
* @param value - Data to cache
|
|
31
|
+
* @param mode - Storage mode (string, JSON, or brotli-compressed)
|
|
32
|
+
*/
|
|
15
33
|
set(key: string, value: Buffer | unknown, mode?: MODE): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Remove a key from Redis. Auto-connects if not started.
|
|
36
|
+
*
|
|
37
|
+
* @param key - Redis key to delete
|
|
38
|
+
*/
|
|
16
39
|
delete(key: string): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Check whether a key exists in Redis. Auto-connects if not started.
|
|
42
|
+
*
|
|
43
|
+
* @param key - Redis key to check
|
|
44
|
+
* @returns True if the key exists, undefined on error
|
|
45
|
+
*/
|
|
17
46
|
exists(key: string): Promise<boolean | undefined>;
|
|
47
|
+
/**
|
|
48
|
+
* Switch to a different Redis database. Auto-connects if not started.
|
|
49
|
+
*
|
|
50
|
+
* @param db - Database index to select
|
|
51
|
+
*/
|
|
18
52
|
select(db: number): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Close the Redis client connection gracefully.
|
|
55
|
+
*/
|
|
19
56
|
quit(): Promise<void>;
|
|
20
57
|
}
|
package/dist/src/Cache.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import redis from "redis";
|
|
2
2
|
import { brotliCompressSync, brotliDecompressSync } from "zlib";
|
|
3
3
|
import { Buffer } from "node:buffer";
|
|
4
|
+
import { Console } from "./Console.js";
|
|
4
5
|
export var MODE;
|
|
5
6
|
(function (MODE) {
|
|
6
7
|
MODE[MODE["STRING"] = 0] = "STRING";
|
|
@@ -14,9 +15,19 @@ export class Cache {
|
|
|
14
15
|
constructor(options) {
|
|
15
16
|
this.client = redis.createClient(options);
|
|
16
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Open the Redis connection. Stores the connect promise in `init` for lazy-init checks.
|
|
20
|
+
*/
|
|
17
21
|
async start() {
|
|
18
22
|
this.init = this.client.connect();
|
|
19
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Retrieve a value from Redis, decompressing with Brotli when needed. Auto-connects if not started.
|
|
26
|
+
*
|
|
27
|
+
* @param key - Redis key to fetch
|
|
28
|
+
* @param mode - Storage mode (string, JSON, or brotli-compressed)
|
|
29
|
+
* @returns Stored value or null if not found
|
|
30
|
+
*/
|
|
20
31
|
async get(key, mode = MODE.STRING_BROTLI) {
|
|
21
32
|
if (!this.init)
|
|
22
33
|
await this.start();
|
|
@@ -32,7 +43,7 @@ export class Cache {
|
|
|
32
43
|
default: {
|
|
33
44
|
const value = await this.client.get(key);
|
|
34
45
|
if (value !== null) {
|
|
35
|
-
const dataRaw = brotliDecompressSync(Buffer.from(value, "binary")).toString();
|
|
46
|
+
const dataRaw = brotliDecompressSync(Buffer.from(String(value), "binary")).toString();
|
|
36
47
|
data = JSON.parse(dataRaw);
|
|
37
48
|
}
|
|
38
49
|
else {
|
|
@@ -43,10 +54,18 @@ export class Cache {
|
|
|
43
54
|
}
|
|
44
55
|
}
|
|
45
56
|
catch (e) {
|
|
57
|
+
// ignored: cache miss returns null by design
|
|
46
58
|
data = null;
|
|
47
59
|
}
|
|
48
60
|
return data;
|
|
49
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Store a value in Redis, compressing with Brotli when needed. Auto-connects if not started.
|
|
64
|
+
*
|
|
65
|
+
* @param key - Redis key to store under
|
|
66
|
+
* @param value - Data to cache
|
|
67
|
+
* @param mode - Storage mode (string, JSON, or brotli-compressed)
|
|
68
|
+
*/
|
|
50
69
|
async set(key, value, mode = MODE.STRING_BROTLI) {
|
|
51
70
|
if (!this.init)
|
|
52
71
|
await this.start();
|
|
@@ -69,9 +88,14 @@ export class Cache {
|
|
|
69
88
|
}
|
|
70
89
|
}
|
|
71
90
|
catch (e) {
|
|
72
|
-
|
|
91
|
+
Console.error("Cache set failed", { key, error: e });
|
|
73
92
|
}
|
|
74
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Remove a key from Redis. Auto-connects if not started.
|
|
96
|
+
*
|
|
97
|
+
* @param key - Redis key to delete
|
|
98
|
+
*/
|
|
75
99
|
async delete(key) {
|
|
76
100
|
if (!this.init)
|
|
77
101
|
await this.start();
|
|
@@ -79,9 +103,15 @@ export class Cache {
|
|
|
79
103
|
await this.client.del(key);
|
|
80
104
|
}
|
|
81
105
|
catch (e) {
|
|
82
|
-
|
|
106
|
+
Console.error("Cache delete failed", { key, error: e });
|
|
83
107
|
}
|
|
84
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Check whether a key exists in Redis. Auto-connects if not started.
|
|
111
|
+
*
|
|
112
|
+
* @param key - Redis key to check
|
|
113
|
+
* @returns True if the key exists, undefined on error
|
|
114
|
+
*/
|
|
85
115
|
async exists(key) {
|
|
86
116
|
if (!this.init)
|
|
87
117
|
await this.start();
|
|
@@ -89,10 +119,15 @@ export class Cache {
|
|
|
89
119
|
return !!(await this.client.exists(key));
|
|
90
120
|
}
|
|
91
121
|
catch (e) {
|
|
92
|
-
|
|
122
|
+
Console.error("Cache exists check failed", { key, error: e });
|
|
93
123
|
}
|
|
94
124
|
return;
|
|
95
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Switch to a different Redis database. Auto-connects if not started.
|
|
128
|
+
*
|
|
129
|
+
* @param db - Database index to select
|
|
130
|
+
*/
|
|
96
131
|
async select(db) {
|
|
97
132
|
if (!this.init)
|
|
98
133
|
await this.start();
|
|
@@ -100,15 +135,18 @@ export class Cache {
|
|
|
100
135
|
await this.client.select(db);
|
|
101
136
|
}
|
|
102
137
|
catch (e) {
|
|
103
|
-
|
|
138
|
+
Console.error("Cache select db failed", { db, error: e });
|
|
104
139
|
}
|
|
105
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Close the Redis client connection gracefully.
|
|
143
|
+
*/
|
|
106
144
|
async quit() {
|
|
107
145
|
try {
|
|
108
146
|
await this.client.quit();
|
|
109
147
|
}
|
|
110
148
|
catch (e) {
|
|
111
|
-
|
|
149
|
+
Console.error("Cache quit failed", { error: e });
|
|
112
150
|
}
|
|
113
151
|
}
|
|
114
152
|
}
|
package/dist/src/Cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAO,OAAO,CAAC;AAE3B,OAAO,EAAC,kBAAkB,EAAE,oBAAoB,EAAC,MAAM,MAAM,CAAC;AAC9D,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":"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"}
|
package/dist/src/CacheES.d.ts
CHANGED
|
@@ -10,9 +10,37 @@ export declare enum MODE {
|
|
|
10
10
|
export declare class CacheES {
|
|
11
11
|
client: Client;
|
|
12
12
|
constructor(options?: ClientOptions);
|
|
13
|
+
/**
|
|
14
|
+
* Retrieve a value from Elasticsearch, decompressing with Brotli when needed.
|
|
15
|
+
*
|
|
16
|
+
* @param id - Document ID to fetch
|
|
17
|
+
* @param mode - Storage mode (string, JSON, or brotli-compressed)
|
|
18
|
+
* @returns Stored value or null if not found
|
|
19
|
+
*/
|
|
13
20
|
get(id: string, mode?: MODE): Promise<unknown>;
|
|
21
|
+
/**
|
|
22
|
+
* Store a value in Elasticsearch, compressing with Brotli when needed.
|
|
23
|
+
*
|
|
24
|
+
* @param id - Document ID to store under
|
|
25
|
+
* @param value - Data to cache
|
|
26
|
+
* @param mode - Storage mode (string, JSON, or brotli-compressed)
|
|
27
|
+
*/
|
|
14
28
|
set(id: string, value: Buffer | unknown, mode?: MODE): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Remove a document from the Elasticsearch cache index.
|
|
31
|
+
*
|
|
32
|
+
* @param id - Document ID to delete
|
|
33
|
+
*/
|
|
15
34
|
delete(id: string): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Check whether a document exists in the Elasticsearch cache index.
|
|
37
|
+
*
|
|
38
|
+
* @param id - Document ID to check
|
|
39
|
+
* @returns True if the document exists, undefined on error
|
|
40
|
+
*/
|
|
16
41
|
exists(id: string): Promise<boolean | undefined>;
|
|
42
|
+
/**
|
|
43
|
+
* Close the Elasticsearch client connection.
|
|
44
|
+
*/
|
|
17
45
|
quit(): Promise<void>;
|
|
18
46
|
}
|
package/dist/src/CacheES.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Client } from "@elastic/elasticsearch";
|
|
2
2
|
import { brotliCompressSync, brotliDecompressSync } from "zlib";
|
|
3
3
|
import { Buffer } from "node:buffer";
|
|
4
|
+
import { Console } from "./Console.js";
|
|
4
5
|
const index = "redis_data";
|
|
5
6
|
export var MODE;
|
|
6
7
|
(function (MODE) {
|
|
@@ -19,6 +20,13 @@ export class CacheES {
|
|
|
19
20
|
}
|
|
20
21
|
});
|
|
21
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Retrieve a value from Elasticsearch, decompressing with Brotli when needed.
|
|
25
|
+
*
|
|
26
|
+
* @param id - Document ID to fetch
|
|
27
|
+
* @param mode - Storage mode (string, JSON, or brotli-compressed)
|
|
28
|
+
* @returns Stored value or null if not found
|
|
29
|
+
*/
|
|
22
30
|
async get(id, mode = MODE.STRING_BROTLI) {
|
|
23
31
|
let data;
|
|
24
32
|
try {
|
|
@@ -44,10 +52,18 @@ export class CacheES {
|
|
|
44
52
|
}
|
|
45
53
|
}
|
|
46
54
|
catch (e) {
|
|
55
|
+
// ignored: cache miss returns null by design
|
|
47
56
|
data = null;
|
|
48
57
|
}
|
|
49
58
|
return data;
|
|
50
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Store a value in Elasticsearch, compressing with Brotli when needed.
|
|
62
|
+
*
|
|
63
|
+
* @param id - Document ID to store under
|
|
64
|
+
* @param value - Data to cache
|
|
65
|
+
* @param mode - Storage mode (string, JSON, or brotli-compressed)
|
|
66
|
+
*/
|
|
51
67
|
async set(id, value, mode = MODE.STRING_BROTLI) {
|
|
52
68
|
try {
|
|
53
69
|
switch (mode) {
|
|
@@ -82,9 +98,14 @@ export class CacheES {
|
|
|
82
98
|
}
|
|
83
99
|
}
|
|
84
100
|
catch (e) {
|
|
85
|
-
|
|
101
|
+
Console.error("Cache set failed", { id, error: e });
|
|
86
102
|
}
|
|
87
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Remove a document from the Elasticsearch cache index.
|
|
106
|
+
*
|
|
107
|
+
* @param id - Document ID to delete
|
|
108
|
+
*/
|
|
88
109
|
async delete(id) {
|
|
89
110
|
try {
|
|
90
111
|
await this.client.delete({
|
|
@@ -93,9 +114,15 @@ export class CacheES {
|
|
|
93
114
|
});
|
|
94
115
|
}
|
|
95
116
|
catch (e) {
|
|
96
|
-
|
|
117
|
+
Console.error("Cache delete failed", { id, error: e });
|
|
97
118
|
}
|
|
98
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Check whether a document exists in the Elasticsearch cache index.
|
|
122
|
+
*
|
|
123
|
+
* @param id - Document ID to check
|
|
124
|
+
* @returns True if the document exists, undefined on error
|
|
125
|
+
*/
|
|
99
126
|
async exists(id) {
|
|
100
127
|
try {
|
|
101
128
|
return !!(await this.client.exists({
|
|
@@ -104,16 +131,19 @@ export class CacheES {
|
|
|
104
131
|
}));
|
|
105
132
|
}
|
|
106
133
|
catch (e) {
|
|
107
|
-
|
|
134
|
+
Console.error("Cache exists check failed", { id, error: e });
|
|
108
135
|
}
|
|
109
136
|
return;
|
|
110
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Close the Elasticsearch client connection.
|
|
140
|
+
*/
|
|
111
141
|
async quit() {
|
|
112
142
|
try {
|
|
113
143
|
await this.client.close();
|
|
114
144
|
}
|
|
115
145
|
catch (e) {
|
|
116
|
-
|
|
146
|
+
Console.error("Cache quit failed", { error: e });
|
|
117
147
|
}
|
|
118
148
|
}
|
|
119
149
|
}
|
package/dist/src/CacheES.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheES.js","sourceRoot":"","sources":["../../src/CacheES.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAC,kBAAkB,EAAE,oBAAoB,EAAC,MAAM,MAAM,CAAC;AAC9D,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"CacheES.js","sourceRoot":"","sources":["../../src/CacheES.ts"],"names":[],"mappings":"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"}
|