inray 0.0.2 → 0.0.3
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/LICENSE.md +1 -0
- package/README.md +132 -32
- package/dist/caching/mod.d.ts +2 -0
- package/dist/caching/mod.d.ts.map +1 -0
- package/dist/caching/mod.js +2 -0
- package/dist/caching/mod.js.map +1 -0
- package/dist/caching/src/cache.d.ts +89 -0
- package/dist/caching/src/cache.d.ts.map +1 -0
- package/dist/caching/src/cache.js +309 -0
- package/dist/caching/src/cache.js.map +1 -0
- package/dist/caching/src/hashing/cache.d.ts +92 -0
- package/dist/caching/src/hashing/cache.d.ts.map +1 -0
- package/dist/caching/src/hashing/cache.js +119 -0
- package/dist/caching/src/hashing/cache.js.map +1 -0
- package/dist/caching/src/hashing/hooks/eventified.d.ts +157 -0
- package/dist/caching/src/hashing/hooks/eventified.d.ts.map +1 -0
- package/dist/caching/src/hashing/hooks/eventified.js +333 -0
- package/dist/caching/src/hashing/hooks/eventified.js.map +1 -0
- package/dist/caching/src/hashing/hooks/index.d.ts +199 -0
- package/dist/caching/src/hashing/hooks/index.d.ts.map +1 -0
- package/dist/caching/src/hashing/hooks/index.js +383 -0
- package/dist/caching/src/hashing/hooks/index.js.map +1 -0
- package/dist/caching/src/hashing/hooks/types.d.ts +217 -0
- package/dist/caching/src/hashing/hooks/types.d.ts.map +1 -0
- package/dist/caching/src/hashing/hooks/types.js +10 -0
- package/dist/caching/src/hashing/hooks/types.js.map +1 -0
- package/dist/caching/src/hashing/index.d.ts +236 -0
- package/dist/caching/src/hashing/index.d.ts.map +1 -0
- package/dist/caching/src/hashing/index.js +447 -0
- package/dist/caching/src/hashing/index.js.map +1 -0
- package/dist/caching/src/hashing/providers/crc.d.ts +15 -0
- package/dist/caching/src/hashing/providers/crc.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers/crc.js +49 -0
- package/dist/caching/src/hashing/providers/crc.js.map +1 -0
- package/dist/caching/src/hashing/providers/crypto.d.ts +19 -0
- package/dist/caching/src/hashing/providers/crypto.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers/crypto.js +28 -0
- package/dist/caching/src/hashing/providers/crypto.js.map +1 -0
- package/dist/caching/src/hashing/providers/djb2.d.ts +60 -0
- package/dist/caching/src/hashing/providers/djb2.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers/djb2.js +92 -0
- package/dist/caching/src/hashing/providers/djb2.js.map +1 -0
- package/dist/caching/src/hashing/providers/fnv1.d.ts +33 -0
- package/dist/caching/src/hashing/providers/fnv1.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers/fnv1.js +68 -0
- package/dist/caching/src/hashing/providers/fnv1.js.map +1 -0
- package/dist/caching/src/hashing/providers/murmur.d.ts +81 -0
- package/dist/caching/src/hashing/providers/murmur.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers/murmur.js +173 -0
- package/dist/caching/src/hashing/providers/murmur.js.map +1 -0
- package/dist/caching/src/hashing/providers.d.ts +126 -0
- package/dist/caching/src/hashing/providers.d.ts.map +1 -0
- package/dist/caching/src/hashing/providers.js +163 -0
- package/dist/caching/src/hashing/providers.js.map +1 -0
- package/dist/caching/src/hashing/types.d.ts +340 -0
- package/dist/caching/src/hashing/types.d.ts.map +1 -0
- package/dist/caching/src/hashing/types.js +10 -0
- package/dist/caching/src/hashing/types.js.map +1 -0
- package/dist/caching/src/keyValue/capabilities.d.ts +161 -0
- package/dist/caching/src/keyValue/capabilities.d.ts.map +1 -0
- package/dist/caching/src/keyValue/capabilities.js +334 -0
- package/dist/caching/src/keyValue/capabilities.js.map +1 -0
- package/dist/caching/src/keyValue/event-manager.d.ts +27 -0
- package/dist/caching/src/keyValue/event-manager.d.ts.map +1 -0
- package/dist/caching/src/keyValue/event-manager.js +88 -0
- package/dist/caching/src/keyValue/event-manager.js.map +1 -0
- package/dist/caching/src/keyValue/generic-store.d.ts +243 -0
- package/dist/caching/src/keyValue/generic-store.d.ts.map +1 -0
- package/dist/caching/src/keyValue/generic-store.js +295 -0
- package/dist/caching/src/keyValue/generic-store.js.map +1 -0
- package/dist/caching/src/keyValue/hooks-manager.d.ts +21 -0
- package/dist/caching/src/keyValue/hooks-manager.d.ts.map +1 -0
- package/dist/caching/src/keyValue/hooks-manager.js +59 -0
- package/dist/caching/src/keyValue/hooks-manager.js.map +1 -0
- package/dist/caching/src/keyValue/index.d.ts +334 -0
- package/dist/caching/src/keyValue/index.d.ts.map +1 -0
- package/dist/caching/src/keyValue/index.js +796 -0
- package/dist/caching/src/keyValue/index.js.map +1 -0
- package/dist/caching/src/keyValue/serialize/serialize.d.ts +12 -0
- package/dist/caching/src/keyValue/serialize/serialize.d.ts.map +1 -0
- package/dist/caching/src/keyValue/serialize/serialize.js +64 -0
- package/dist/caching/src/keyValue/serialize/serialize.js.map +1 -0
- package/dist/caching/src/keyValue/stats-manager.d.ts +27 -0
- package/dist/caching/src/keyValue/stats-manager.d.ts.map +1 -0
- package/dist/caching/src/keyValue/stats-manager.js +64 -0
- package/dist/caching/src/keyValue/stats-manager.js.map +1 -0
- package/dist/caching/src/keyValue/types.d.ts +22 -0
- package/dist/caching/src/keyValue/types.d.ts.map +1 -0
- package/dist/caching/src/keyValue/types.js +11 -0
- package/dist/caching/src/keyValue/types.js.map +1 -0
- package/dist/caching/src/keyv-adapter.d.ts +40 -0
- package/dist/caching/src/keyv-adapter.d.ts.map +1 -0
- package/dist/caching/src/keyv-adapter.js +56 -0
- package/dist/caching/src/keyv-adapter.js.map +1 -0
- package/dist/caching/src/utils/cache-tags.d.ts +275 -0
- package/dist/caching/src/utils/cache-tags.d.ts.map +1 -0
- package/dist/caching/src/utils/cache-tags.js +407 -0
- package/dist/caching/src/utils/cache-tags.js.map +1 -0
- package/dist/caching/src/utils/cacheable-item-types.d.ts +35 -0
- package/dist/caching/src/utils/cacheable-item-types.d.ts.map +1 -0
- package/dist/caching/src/utils/cacheable-item-types.js +10 -0
- package/dist/caching/src/utils/cacheable-item-types.js.map +1 -0
- package/dist/caching/src/utils/coalesce-async.d.ts +29 -0
- package/dist/caching/src/utils/coalesce-async.d.ts.map +1 -0
- package/dist/caching/src/utils/coalesce-async.js +88 -0
- package/dist/caching/src/utils/coalesce-async.js.map +1 -0
- package/dist/caching/src/utils/hash.d.ts +55 -0
- package/dist/caching/src/utils/hash.d.ts.map +1 -0
- package/dist/caching/src/utils/hash.js +116 -0
- package/dist/caching/src/utils/hash.js.map +1 -0
- package/dist/caching/src/utils/index.d.ts +24 -0
- package/dist/caching/src/utils/index.d.ts.map +1 -0
- package/dist/caching/src/utils/index.js +21 -0
- package/dist/caching/src/utils/index.js.map +1 -0
- package/dist/caching/src/utils/is-keyv-instance.d.ts +10 -0
- package/dist/caching/src/utils/is-keyv-instance.d.ts.map +1 -0
- package/dist/caching/src/utils/is-keyv-instance.js +37 -0
- package/dist/caching/src/utils/is-keyv-instance.js.map +1 -0
- package/dist/caching/src/utils/is-object.d.ts +10 -0
- package/dist/caching/src/utils/is-object.d.ts.map +1 -0
- package/dist/caching/src/utils/is-object.js +13 -0
- package/dist/caching/src/utils/is-object.js.map +1 -0
- package/dist/caching/src/utils/less-than.d.ts +10 -0
- package/dist/caching/src/utils/less-than.d.ts.map +1 -0
- package/dist/caching/src/utils/less-than.js +13 -0
- package/dist/caching/src/utils/less-than.js.map +1 -0
- package/dist/caching/src/utils/memoize.d.ts +107 -0
- package/dist/caching/src/utils/memoize.d.ts.map +1 -0
- package/dist/caching/src/utils/memoize.js +201 -0
- package/dist/caching/src/utils/memoize.js.map +1 -0
- package/dist/caching/src/utils/mock-cacheable.d.ts +28 -0
- package/dist/caching/src/utils/mock-cacheable.d.ts.map +1 -0
- package/dist/caching/src/utils/mock-cacheable.js +87 -0
- package/dist/caching/src/utils/mock-cacheable.js.map +1 -0
- package/dist/caching/src/utils/run-if-fn.d.ts +12 -0
- package/dist/caching/src/utils/run-if-fn.d.ts.map +1 -0
- package/dist/caching/src/utils/run-if-fn.js +12 -0
- package/dist/caching/src/utils/run-if-fn.js.map +1 -0
- package/dist/caching/src/utils/shorthand-time.d.ts +27 -0
- package/dist/caching/src/utils/shorthand-time.d.ts.map +1 -0
- package/dist/caching/src/utils/shorthand-time.js +96 -0
- package/dist/caching/src/utils/shorthand-time.js.map +1 -0
- package/dist/caching/src/utils/sleep.d.ts +10 -0
- package/dist/caching/src/utils/sleep.d.ts.map +1 -0
- package/dist/caching/src/utils/sleep.js +11 -0
- package/dist/caching/src/utils/sleep.js.map +1 -0
- package/dist/caching/src/utils/stats.d.ts +354 -0
- package/dist/caching/src/utils/stats.d.ts.map +1 -0
- package/dist/caching/src/utils/stats.js +593 -0
- package/dist/caching/src/utils/stats.js.map +1 -0
- package/dist/caching/src/utils/ttl.d.ts +58 -0
- package/dist/caching/src/utils/ttl.d.ts.map +1 -0
- package/dist/caching/src/utils/ttl.js +77 -0
- package/dist/caching/src/utils/ttl.js.map +1 -0
- package/package.json +11 -3
|
@@ -0,0 +1,593 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: @cacheable/utils (v2.4.2)
|
|
3
|
+
* - Copyright (c) Jared Wray
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
/**
|
|
10
|
+
* Event map for `@cacheable/node-cache` instances. node-cache emits with
|
|
11
|
+
* positional arguments (e.g. `set(key, value)`), and emits each lifecycle
|
|
12
|
+
* event exactly once, so the counts map cleanly. `flush` clears the cache data
|
|
13
|
+
* and `flush_stats` resets the stats counters, mirroring node-cache's
|
|
14
|
+
* `flushAll()` / `flushStats()` lifecycle.
|
|
15
|
+
*
|
|
16
|
+
* Presets for `cacheable` and `cache-manager` are intentionally not provided:
|
|
17
|
+
* their event streams emit per-store probes (and, for cache-manager, do not
|
|
18
|
+
* emit an event on a normal miss), so a simple map cannot faithfully reproduce
|
|
19
|
+
* their imperative stats. Wire those up with a custom map or imperative calls.
|
|
20
|
+
*/
|
|
21
|
+
export const nodeCacheStatsEventMap = {
|
|
22
|
+
set: (stats, key) => {
|
|
23
|
+
stats.increment('sets');
|
|
24
|
+
if (typeof key === 'string' || typeof key === 'number') {
|
|
25
|
+
stats.recordKey(String(key), 'sets');
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
del: (stats, key) => {
|
|
29
|
+
stats.increment('deletes');
|
|
30
|
+
if (typeof key === 'string' || typeof key === 'number') {
|
|
31
|
+
stats.recordKey(String(key), 'deletes');
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
flush: 'clears',
|
|
35
|
+
flush_stats: (stats) => {
|
|
36
|
+
stats.reset();
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
export class Stats {
|
|
40
|
+
_counters = {
|
|
41
|
+
hits: 0,
|
|
42
|
+
misses: 0,
|
|
43
|
+
gets: 0,
|
|
44
|
+
sets: 0,
|
|
45
|
+
deletes: 0,
|
|
46
|
+
clears: 0,
|
|
47
|
+
count: 0
|
|
48
|
+
};
|
|
49
|
+
_vsize = 0;
|
|
50
|
+
_ksize = 0;
|
|
51
|
+
_enabled = false;
|
|
52
|
+
_lastUpdated;
|
|
53
|
+
_lastReset;
|
|
54
|
+
_subscriptions = [];
|
|
55
|
+
/** Backing store for the public {@link trackedKeys} read-only view. */
|
|
56
|
+
_trackedKeys = new Map();
|
|
57
|
+
_trackKeys = false;
|
|
58
|
+
_maxTrackedKeys;
|
|
59
|
+
constructor(options) {
|
|
60
|
+
if (options?.enabled) {
|
|
61
|
+
this._enabled = options.enabled;
|
|
62
|
+
}
|
|
63
|
+
if (options?.trackKeys) {
|
|
64
|
+
this._trackKeys = options.trackKeys;
|
|
65
|
+
}
|
|
66
|
+
if (options?.maxTrackedKeys !== undefined) {
|
|
67
|
+
this._maxTrackedKeys = options.maxTrackedKeys;
|
|
68
|
+
}
|
|
69
|
+
if (options?.emitter && options?.eventMap) {
|
|
70
|
+
this.subscribe(options.emitter, options.eventMap);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* @returns {boolean} - Whether the stats are enabled
|
|
75
|
+
*/
|
|
76
|
+
get enabled() {
|
|
77
|
+
return this._enabled;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* @param {boolean} enabled - Whether to enable the stats
|
|
81
|
+
*/
|
|
82
|
+
set enabled(enabled) {
|
|
83
|
+
this._enabled = enabled;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* @returns {boolean} - Whether per-key statistics are tracked
|
|
87
|
+
*/
|
|
88
|
+
get trackKeys() {
|
|
89
|
+
return this._trackKeys;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* @param {boolean} trackKeys - Whether to track per-key statistics
|
|
93
|
+
*/
|
|
94
|
+
set trackKeys(trackKeys) {
|
|
95
|
+
this._trackKeys = trackKeys;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* @returns {number | undefined} - The cap on unique keys tracked, or
|
|
99
|
+
* `undefined` when unbounded
|
|
100
|
+
*/
|
|
101
|
+
get maxTrackedKeys() {
|
|
102
|
+
return this._maxTrackedKeys;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* @param {number | undefined} maxTrackedKeys - The cap on unique keys
|
|
106
|
+
* tracked. Set `undefined` for unbounded.
|
|
107
|
+
*/
|
|
108
|
+
set maxTrackedKeys(maxTrackedKeys) {
|
|
109
|
+
this._maxTrackedKeys = maxTrackedKeys;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Per-key statistics, keyed by cache key, holding each key's raw
|
|
113
|
+
* `hits`/`misses`/`gets`/`sets`/`deletes` counters. Populated by
|
|
114
|
+
* {@link recordKey} when {@link trackKeys} is enabled; read `trackedKeys.size`
|
|
115
|
+
* for the number of unique keys currently tracked. The returned map is a
|
|
116
|
+
* read-only view — mutate per-key stats via {@link recordKey} /
|
|
117
|
+
* {@link clearKeys} / {@link reset}.
|
|
118
|
+
* @returns {ReadonlyMap<string, Readonly<KeyCounters>>}
|
|
119
|
+
* @readonly
|
|
120
|
+
*/
|
|
121
|
+
get trackedKeys() {
|
|
122
|
+
return this._trackedKeys;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* @returns {number} - The number of hits
|
|
126
|
+
* @readonly
|
|
127
|
+
*/
|
|
128
|
+
get hits() {
|
|
129
|
+
return this._counters.hits;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* @returns {number} - The number of misses
|
|
133
|
+
* @readonly
|
|
134
|
+
*/
|
|
135
|
+
get misses() {
|
|
136
|
+
return this._counters.misses;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* @returns {number} - The number of gets
|
|
140
|
+
* @readonly
|
|
141
|
+
*/
|
|
142
|
+
get gets() {
|
|
143
|
+
return this._counters.gets;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* @returns {number} - The number of sets
|
|
147
|
+
* @readonly
|
|
148
|
+
*/
|
|
149
|
+
get sets() {
|
|
150
|
+
return this._counters.sets;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* @returns {number} - The number of deletes
|
|
154
|
+
* @readonly
|
|
155
|
+
*/
|
|
156
|
+
get deletes() {
|
|
157
|
+
return this._counters.deletes;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* @returns {number} - The number of clears
|
|
161
|
+
* @readonly
|
|
162
|
+
*/
|
|
163
|
+
get clears() {
|
|
164
|
+
return this._counters.clears;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* @returns {number} - The vsize (value size) of the cache instance
|
|
168
|
+
* @readonly
|
|
169
|
+
*/
|
|
170
|
+
get vsize() {
|
|
171
|
+
return this._vsize;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* @returns {number} - The ksize (key size) of the cache instance
|
|
175
|
+
* @readonly
|
|
176
|
+
*/
|
|
177
|
+
get ksize() {
|
|
178
|
+
return this._ksize;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* @returns {number} - The count of the cache instance
|
|
182
|
+
* @readonly
|
|
183
|
+
*/
|
|
184
|
+
get count() {
|
|
185
|
+
return this._counters.count;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* The ratio of hits to total lookups (hits + misses). Returns `0` when there
|
|
189
|
+
* have been no lookups.
|
|
190
|
+
* @returns {number} - A value between 0 and 1
|
|
191
|
+
* @readonly
|
|
192
|
+
*/
|
|
193
|
+
get hitRate() {
|
|
194
|
+
const total = this._counters.hits + this._counters.misses;
|
|
195
|
+
return total === 0 ? 0 : this._counters.hits / total;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* The ratio of misses to total lookups (hits + misses). Returns `0` when
|
|
199
|
+
* there have been no lookups.
|
|
200
|
+
* @returns {number} - A value between 0 and 1
|
|
201
|
+
* @readonly
|
|
202
|
+
*/
|
|
203
|
+
get missRate() {
|
|
204
|
+
const total = this._counters.hits + this._counters.misses;
|
|
205
|
+
return total === 0 ? 0 : this._counters.misses / total;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* The timestamp (ms since epoch) of the last mutation while enabled, or
|
|
209
|
+
* `undefined` if there have been none since the last reset.
|
|
210
|
+
* @returns {number | undefined}
|
|
211
|
+
* @readonly
|
|
212
|
+
*/
|
|
213
|
+
get lastUpdated() {
|
|
214
|
+
return this._lastUpdated;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* The timestamp (ms since epoch) of the last {@link reset}/{@link clear}, or
|
|
218
|
+
* `undefined` if it has never been reset.
|
|
219
|
+
* @returns {number | undefined}
|
|
220
|
+
* @readonly
|
|
221
|
+
*/
|
|
222
|
+
get lastReset() {
|
|
223
|
+
return this._lastReset;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Increment a counter field by `amount` (default `1`). No-op when disabled.
|
|
227
|
+
* @param {StatField} field - The counter to increment
|
|
228
|
+
* @param {number} amount - The amount to add (default 1)
|
|
229
|
+
*/
|
|
230
|
+
increment(field, amount = 1) {
|
|
231
|
+
if (!this._enabled) {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
this._counters[field] += amount;
|
|
235
|
+
this.touch();
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Decrement a counter field by `amount` (default `1`). No-op when disabled.
|
|
239
|
+
* @param {StatField} field - The counter to decrement
|
|
240
|
+
* @param {number} amount - The amount to subtract (default 1)
|
|
241
|
+
*/
|
|
242
|
+
decrement(field, amount = 1) {
|
|
243
|
+
if (!this._enabled) {
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
this._counters[field] -= amount;
|
|
247
|
+
this.touch();
|
|
248
|
+
}
|
|
249
|
+
incrementHits(amount = 1) {
|
|
250
|
+
this.increment('hits', amount);
|
|
251
|
+
}
|
|
252
|
+
incrementMisses(amount = 1) {
|
|
253
|
+
this.increment('misses', amount);
|
|
254
|
+
}
|
|
255
|
+
incrementGets(amount = 1) {
|
|
256
|
+
this.increment('gets', amount);
|
|
257
|
+
}
|
|
258
|
+
incrementSets(amount = 1) {
|
|
259
|
+
this.increment('sets', amount);
|
|
260
|
+
}
|
|
261
|
+
incrementDeletes(amount = 1) {
|
|
262
|
+
this.increment('deletes', amount);
|
|
263
|
+
}
|
|
264
|
+
incrementClears(amount = 1) {
|
|
265
|
+
this.increment('clears', amount);
|
|
266
|
+
}
|
|
267
|
+
incrementVSize(value) {
|
|
268
|
+
if (!this._enabled) {
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
this._vsize += this.roughSizeOfObject(value);
|
|
272
|
+
this.touch();
|
|
273
|
+
}
|
|
274
|
+
decreaseVSize(value) {
|
|
275
|
+
if (!this._enabled) {
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
// Clamp at 0 so the counter never goes negative when an entry is removed that
|
|
279
|
+
// was added before stats were enabled (and was therefore never counted).
|
|
280
|
+
this._vsize = Math.max(0, this._vsize - this.roughSizeOfObject(value));
|
|
281
|
+
this.touch();
|
|
282
|
+
}
|
|
283
|
+
incrementKSize(key) {
|
|
284
|
+
if (!this._enabled) {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
this._ksize += this.roughSizeOfString(key);
|
|
288
|
+
this.touch();
|
|
289
|
+
}
|
|
290
|
+
decreaseKSize(key) {
|
|
291
|
+
if (!this._enabled) {
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
// Clamp at 0 so the counter never goes negative when an entry is removed that
|
|
295
|
+
// was added before stats were enabled (and was therefore never counted).
|
|
296
|
+
this._ksize = Math.max(0, this._ksize - this.roughSizeOfString(key));
|
|
297
|
+
this.touch();
|
|
298
|
+
}
|
|
299
|
+
incrementCount(amount = 1) {
|
|
300
|
+
this.increment('count', amount);
|
|
301
|
+
}
|
|
302
|
+
decreaseCount(amount = 1) {
|
|
303
|
+
if (!this._enabled) {
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
// Clamp at 0 so the counter never goes negative when an entry is removed that
|
|
307
|
+
// was added before stats were enabled (and was therefore never counted).
|
|
308
|
+
this._counters.count = Math.max(0, this._counters.count - amount);
|
|
309
|
+
this.touch();
|
|
310
|
+
}
|
|
311
|
+
setCount(count) {
|
|
312
|
+
if (!this._enabled) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
this._counters.count = count;
|
|
316
|
+
this.touch();
|
|
317
|
+
}
|
|
318
|
+
roughSizeOfString(value) {
|
|
319
|
+
// Keys are strings (UTF-16)
|
|
320
|
+
return value.length * 2;
|
|
321
|
+
}
|
|
322
|
+
roughSizeOfObject(object) {
|
|
323
|
+
const objectList = [];
|
|
324
|
+
const stack = [object];
|
|
325
|
+
let bytes = 0;
|
|
326
|
+
while (stack.length > 0) {
|
|
327
|
+
const value = stack.pop();
|
|
328
|
+
if (typeof value === 'boolean') {
|
|
329
|
+
bytes += 4; // Booleans are 4 bytes
|
|
330
|
+
}
|
|
331
|
+
else if (typeof value === 'string') {
|
|
332
|
+
bytes += value.length * 2; // Each character is 2 bytes (UTF-16 encoding)
|
|
333
|
+
}
|
|
334
|
+
else if (typeof value === 'number') {
|
|
335
|
+
bytes += 8; // Numbers are 8 bytes (IEEE 754 format)
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
// Handle null values
|
|
339
|
+
if (value === null || value === undefined) {
|
|
340
|
+
bytes += 4;
|
|
341
|
+
continue;
|
|
342
|
+
}
|
|
343
|
+
// Check for circular references - if this object was already processed, skip it
|
|
344
|
+
if (objectList.includes(value)) {
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
// object as default
|
|
348
|
+
objectList.push(value);
|
|
349
|
+
// Estimate object overhead, and then recursively estimate the size of properties
|
|
350
|
+
for (const key in value) {
|
|
351
|
+
bytes += key.length * 2; // Keys are strings (UTF-16)
|
|
352
|
+
stack.push(value[key]); // Add values to the stack to compute their size
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return bytes;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Enable stat tracking. Equivalent to setting {@link enabled} to `true`.
|
|
360
|
+
*/
|
|
361
|
+
enable() {
|
|
362
|
+
this._enabled = true;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Disable stat tracking. Equivalent to setting {@link enabled} to `false`.
|
|
366
|
+
*/
|
|
367
|
+
disable() {
|
|
368
|
+
this._enabled = false;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Reset all counters to zero and record the reset timestamp. Alias of
|
|
372
|
+
* {@link reset}.
|
|
373
|
+
*/
|
|
374
|
+
clear() {
|
|
375
|
+
this.reset();
|
|
376
|
+
}
|
|
377
|
+
reset() {
|
|
378
|
+
this._counters = {
|
|
379
|
+
hits: 0,
|
|
380
|
+
misses: 0,
|
|
381
|
+
gets: 0,
|
|
382
|
+
sets: 0,
|
|
383
|
+
deletes: 0,
|
|
384
|
+
clears: 0,
|
|
385
|
+
count: 0
|
|
386
|
+
};
|
|
387
|
+
this._vsize = 0;
|
|
388
|
+
this._ksize = 0;
|
|
389
|
+
this._trackedKeys.clear();
|
|
390
|
+
this._lastReset = Date.now();
|
|
391
|
+
this._lastUpdated = undefined;
|
|
392
|
+
}
|
|
393
|
+
resetStoreValues() {
|
|
394
|
+
this._vsize = 0;
|
|
395
|
+
this._ksize = 0;
|
|
396
|
+
this._counters.count = 0;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* @returns {StatsSnapshot} - A plain-object snapshot of the current stats,
|
|
400
|
+
* including computed `hitRate`/`missRate` and timestamps.
|
|
401
|
+
*/
|
|
402
|
+
toJSON() {
|
|
403
|
+
return {
|
|
404
|
+
enabled: this._enabled,
|
|
405
|
+
hits: this._counters.hits,
|
|
406
|
+
misses: this._counters.misses,
|
|
407
|
+
gets: this._counters.gets,
|
|
408
|
+
sets: this._counters.sets,
|
|
409
|
+
deletes: this._counters.deletes,
|
|
410
|
+
clears: this._counters.clears,
|
|
411
|
+
vsize: this._vsize,
|
|
412
|
+
ksize: this._ksize,
|
|
413
|
+
count: this._counters.count,
|
|
414
|
+
hitRate: this.hitRate,
|
|
415
|
+
missRate: this.missRate,
|
|
416
|
+
trackedKeys: this._trackedKeys.size,
|
|
417
|
+
lastUpdated: this._lastUpdated,
|
|
418
|
+
lastReset: this._lastReset
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* @returns {StatsSnapshot} - A plain-object snapshot of the current stats.
|
|
423
|
+
* Alias of {@link toJSON}.
|
|
424
|
+
*/
|
|
425
|
+
snapshot() {
|
|
426
|
+
return this.toJSON();
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Record an operation against a specific key for per-key statistics. No-op
|
|
430
|
+
* unless both {@link enabled} and {@link trackKeys} are `true`.
|
|
431
|
+
* @param {string} key - The cache key the operation touched
|
|
432
|
+
* @param {KeyStatField} field - The per-key counter to increment
|
|
433
|
+
* @param {number} amount - The amount to add (default 1)
|
|
434
|
+
*/
|
|
435
|
+
recordKey(key, field, amount = 1) {
|
|
436
|
+
if (!this._enabled || !this._trackKeys) {
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
439
|
+
let counters = this._trackedKeys.get(key);
|
|
440
|
+
if (!counters) {
|
|
441
|
+
counters = { hits: 0, misses: 0, gets: 0, sets: 0, deletes: 0 };
|
|
442
|
+
this._trackedKeys.set(key, counters);
|
|
443
|
+
this.pruneTrackedKeys(key);
|
|
444
|
+
}
|
|
445
|
+
counters[field] += amount;
|
|
446
|
+
this.touch();
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* The most-used keys, sorted descending. Sorts by total recorded operations,
|
|
450
|
+
* or by a single field when `field` is provided. Ties order by key.
|
|
451
|
+
* @param {number} limit - Maximum entries to return (default 100)
|
|
452
|
+
* @param {KeyStatField} [field] - Optionally rank by one counter (e.g. "hits")
|
|
453
|
+
* @returns {StatsKeyEntry[]}
|
|
454
|
+
*/
|
|
455
|
+
mostUsedKeys(limit = 100, field) {
|
|
456
|
+
return this.sortedKeyEntries(field, 'desc').slice(0, limit);
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* The least-used keys, sorted ascending. Sorts by total recorded operations,
|
|
460
|
+
* or by a single field when `field` is provided. Ties order by key. Note:
|
|
461
|
+
* only keys that have been recorded at least once can be ranked, and when
|
|
462
|
+
* {@link maxTrackedKeys} pruning has occurred the true least-used keys may
|
|
463
|
+
* have been evicted.
|
|
464
|
+
* @param {number} limit - Maximum entries to return (default 100)
|
|
465
|
+
* @param {KeyStatField} [field] - Optionally rank by one counter (e.g. "gets")
|
|
466
|
+
* @returns {StatsKeyEntry[]}
|
|
467
|
+
*/
|
|
468
|
+
leastUsedKeys(limit = 100, field) {
|
|
469
|
+
return this.sortedKeyEntries(field, 'asc').slice(0, limit);
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* @param {string} key - The key to look up
|
|
473
|
+
* @returns {StatsKeyEntry | undefined} - The per-key statistics, or
|
|
474
|
+
* `undefined` if the key has not been recorded
|
|
475
|
+
*/
|
|
476
|
+
keyStats(key) {
|
|
477
|
+
const counters = this._trackedKeys.get(key);
|
|
478
|
+
return counters ? this.toKeyEntry(key, counters) : undefined;
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Clear all per-key statistics without touching the aggregate counters.
|
|
482
|
+
*/
|
|
483
|
+
clearKeys() {
|
|
484
|
+
this._trackedKeys.clear();
|
|
485
|
+
}
|
|
486
|
+
totalOf(counters) {
|
|
487
|
+
return counters.hits + counters.misses + counters.gets + counters.sets + counters.deletes;
|
|
488
|
+
}
|
|
489
|
+
toKeyEntry(key, counters) {
|
|
490
|
+
const lookups = counters.hits + counters.misses;
|
|
491
|
+
return {
|
|
492
|
+
key,
|
|
493
|
+
count: this.totalOf(counters),
|
|
494
|
+
hits: counters.hits,
|
|
495
|
+
misses: counters.misses,
|
|
496
|
+
gets: counters.gets,
|
|
497
|
+
sets: counters.sets,
|
|
498
|
+
deletes: counters.deletes,
|
|
499
|
+
hitRate: lookups === 0 ? 0 : counters.hits / lookups
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
sortedKeyEntries(field, direction) {
|
|
503
|
+
const entries = [];
|
|
504
|
+
for (const [key, counters] of this._trackedKeys) {
|
|
505
|
+
entries.push(this.toKeyEntry(key, counters));
|
|
506
|
+
}
|
|
507
|
+
const sign = direction === 'asc' ? 1 : -1;
|
|
508
|
+
entries.sort((a, b) => {
|
|
509
|
+
const valueA = field ? a[field] : a.count;
|
|
510
|
+
const valueB = field ? b[field] : b.count;
|
|
511
|
+
if (valueA !== valueB) {
|
|
512
|
+
return (valueA - valueB) * sign;
|
|
513
|
+
}
|
|
514
|
+
return a.key < b.key ? -1 : 1;
|
|
515
|
+
});
|
|
516
|
+
return entries;
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* When over {@link maxTrackedKeys}, prune the lowest-count keys down to 90%
|
|
520
|
+
* of the cap (batched so the sort cost amortizes across inserts). The key
|
|
521
|
+
* that was just recorded is never pruned.
|
|
522
|
+
*/
|
|
523
|
+
pruneTrackedKeys(protectedKey) {
|
|
524
|
+
if (this._maxTrackedKeys === undefined || this._trackedKeys.size <= this._maxTrackedKeys) {
|
|
525
|
+
return;
|
|
526
|
+
}
|
|
527
|
+
const target = Math.max(1, Math.floor(this._maxTrackedKeys * 0.9));
|
|
528
|
+
const sorted = [...this._trackedKeys.entries()].sort((a, b) => this.totalOf(a[1]) - this.totalOf(b[1]));
|
|
529
|
+
for (const [key] of sorted) {
|
|
530
|
+
if (this._trackedKeys.size <= target) {
|
|
531
|
+
break;
|
|
532
|
+
}
|
|
533
|
+
if (key === protectedKey) {
|
|
534
|
+
continue;
|
|
535
|
+
}
|
|
536
|
+
this._trackedKeys.delete(key);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Subscribe to an emitter so that matching events automatically update the
|
|
541
|
+
* stats. Counting is gated by {@link enabled}, so you may subscribe first and
|
|
542
|
+
* toggle enablement later. Call {@link unsubscribe} to detach.
|
|
543
|
+
* @param {StatsEmitter} emitter - The emitter to listen on
|
|
544
|
+
* @param {StatsEventMap} eventMap - The event-to-stat mapping (e.g.
|
|
545
|
+
* {@link nodeCacheStatsEventMap} or a custom map)
|
|
546
|
+
*/
|
|
547
|
+
subscribe(emitter, eventMap) {
|
|
548
|
+
for (const [event, action] of Object.entries(eventMap)) {
|
|
549
|
+
const listener = (...args) => {
|
|
550
|
+
this.applyEvent(action, args);
|
|
551
|
+
};
|
|
552
|
+
emitter.on(event, listener);
|
|
553
|
+
this._subscriptions.push({ emitter, event, listener });
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
/**
|
|
557
|
+
* Detach listeners previously attached via {@link subscribe}. When `emitter`
|
|
558
|
+
* is provided, only that emitter's listeners are removed; otherwise all are.
|
|
559
|
+
* @param {StatsEmitter} [emitter] - The emitter to detach from
|
|
560
|
+
*/
|
|
561
|
+
unsubscribe(emitter) {
|
|
562
|
+
const remaining = [];
|
|
563
|
+
for (const sub of this._subscriptions) {
|
|
564
|
+
if (emitter && sub.emitter !== emitter) {
|
|
565
|
+
remaining.push(sub);
|
|
566
|
+
continue;
|
|
567
|
+
}
|
|
568
|
+
const off = sub.emitter.off ?? sub.emitter.removeListener;
|
|
569
|
+
off?.call(sub.emitter, sub.event, sub.listener);
|
|
570
|
+
}
|
|
571
|
+
this._subscriptions = remaining;
|
|
572
|
+
}
|
|
573
|
+
applyEvent(action, args) {
|
|
574
|
+
if (!this._enabled) {
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
577
|
+
if (typeof action === 'function') {
|
|
578
|
+
action(this, ...args);
|
|
579
|
+
return;
|
|
580
|
+
}
|
|
581
|
+
if (Array.isArray(action)) {
|
|
582
|
+
for (const field of action) {
|
|
583
|
+
this.increment(field);
|
|
584
|
+
}
|
|
585
|
+
return;
|
|
586
|
+
}
|
|
587
|
+
this.increment(action);
|
|
588
|
+
}
|
|
589
|
+
touch() {
|
|
590
|
+
this._lastUpdated = Date.now();
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../../src/caching/src/utils/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Original library: @cacheable/utils (v2.4.2)
|
|
3
|
+
* - Copyright (c) Jared Wray
|
|
4
|
+
*
|
|
5
|
+
* Modified and integrated in "Inray":
|
|
6
|
+
* - Evgeniy Bushin
|
|
7
|
+
*/
|
|
8
|
+
/***/
|
|
9
|
+
/**
|
|
10
|
+
* A per-store time-to-live override. Each field is a normal TTL (a number in milliseconds or a
|
|
11
|
+
* human-readable shorthand such as `1s`, `1m`, `1h`, `1d`) applied to that specific store. Fields
|
|
12
|
+
* left undefined fall back to that store's own default TTL resolution.
|
|
13
|
+
*/
|
|
14
|
+
export type PerStoreTtl = {
|
|
15
|
+
/**
|
|
16
|
+
* The time-to-live to use for the primary store.
|
|
17
|
+
*/
|
|
18
|
+
primary?: number | string;
|
|
19
|
+
/**
|
|
20
|
+
* The time-to-live to use for the secondary store.
|
|
21
|
+
*/
|
|
22
|
+
secondary?: number | string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Normalizes a TTL input into per-store milliseconds. When given an object it resolves the
|
|
26
|
+
* `primary` and `secondary` fields independently; when given a number or shorthand string it
|
|
27
|
+
* applies the same value to both stores. Undefined fields (or undefined input) resolve to
|
|
28
|
+
* `undefined` so the caller can fall back to its own default TTL.
|
|
29
|
+
* @param ttl - The TTL input: a number (ms), a shorthand string, or a {@link PerStoreTtl} object.
|
|
30
|
+
* @returns {{ primary?: number; secondary?: number }} The resolved per-store TTLs in milliseconds.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolvePerStoreTtl(ttl?: number | string | PerStoreTtl): {
|
|
33
|
+
primary?: number;
|
|
34
|
+
secondary?: number;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Converts a exspires value to a TTL value.
|
|
38
|
+
* @param expires - The expires value to convert.
|
|
39
|
+
* @returns {number | undefined} The TTL value in milliseconds, or undefined if the expires value is not valid.
|
|
40
|
+
*/
|
|
41
|
+
export declare function getTtlFromExpires(expires: number | undefined): number | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Get the TTL value from the cacheableTtl, primaryTtl, and secondaryTtl values.
|
|
44
|
+
* @param cacheableTtl - The cacheableTtl value to use.
|
|
45
|
+
* @param primaryTtl - The primaryTtl value to use.
|
|
46
|
+
* @param secondaryTtl - The secondaryTtl value to use.
|
|
47
|
+
* @returns {number | undefined} The TTL value in milliseconds, or undefined if all values are undefined.
|
|
48
|
+
*/
|
|
49
|
+
export declare function getCascadingTtl(cacheableTtl?: number | string, primaryTtl?: number, secondaryTtl?: number): number | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Calculate the TTL value from the expires value. If the ttl is undefined, it will be set to the expires value. If the
|
|
52
|
+
* expires value is undefined, it will be set to the ttl value. If both values are defined, the smaller of the two will be used.
|
|
53
|
+
* @param ttl
|
|
54
|
+
* @param expires
|
|
55
|
+
* @returns
|
|
56
|
+
*/
|
|
57
|
+
export declare function calculateTtlFromExpiration(ttl: number | undefined, expires: number | undefined): number | undefined;
|
|
58
|
+
//# sourceMappingURL=ttl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ttl.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/utils/ttl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,KAAK;AAIL;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAcA;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAWjF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAC9B,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS,CAEpB;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAgBnH"}
|