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.
Files changed (155) hide show
  1. package/LICENSE.md +1 -0
  2. package/README.md +132 -32
  3. package/dist/caching/mod.d.ts +2 -0
  4. package/dist/caching/mod.d.ts.map +1 -0
  5. package/dist/caching/mod.js +2 -0
  6. package/dist/caching/mod.js.map +1 -0
  7. package/dist/caching/src/cache.d.ts +89 -0
  8. package/dist/caching/src/cache.d.ts.map +1 -0
  9. package/dist/caching/src/cache.js +309 -0
  10. package/dist/caching/src/cache.js.map +1 -0
  11. package/dist/caching/src/hashing/cache.d.ts +92 -0
  12. package/dist/caching/src/hashing/cache.d.ts.map +1 -0
  13. package/dist/caching/src/hashing/cache.js +119 -0
  14. package/dist/caching/src/hashing/cache.js.map +1 -0
  15. package/dist/caching/src/hashing/hooks/eventified.d.ts +157 -0
  16. package/dist/caching/src/hashing/hooks/eventified.d.ts.map +1 -0
  17. package/dist/caching/src/hashing/hooks/eventified.js +333 -0
  18. package/dist/caching/src/hashing/hooks/eventified.js.map +1 -0
  19. package/dist/caching/src/hashing/hooks/index.d.ts +199 -0
  20. package/dist/caching/src/hashing/hooks/index.d.ts.map +1 -0
  21. package/dist/caching/src/hashing/hooks/index.js +383 -0
  22. package/dist/caching/src/hashing/hooks/index.js.map +1 -0
  23. package/dist/caching/src/hashing/hooks/types.d.ts +217 -0
  24. package/dist/caching/src/hashing/hooks/types.d.ts.map +1 -0
  25. package/dist/caching/src/hashing/hooks/types.js +10 -0
  26. package/dist/caching/src/hashing/hooks/types.js.map +1 -0
  27. package/dist/caching/src/hashing/index.d.ts +236 -0
  28. package/dist/caching/src/hashing/index.d.ts.map +1 -0
  29. package/dist/caching/src/hashing/index.js +447 -0
  30. package/dist/caching/src/hashing/index.js.map +1 -0
  31. package/dist/caching/src/hashing/providers/crc.d.ts +15 -0
  32. package/dist/caching/src/hashing/providers/crc.d.ts.map +1 -0
  33. package/dist/caching/src/hashing/providers/crc.js +49 -0
  34. package/dist/caching/src/hashing/providers/crc.js.map +1 -0
  35. package/dist/caching/src/hashing/providers/crypto.d.ts +19 -0
  36. package/dist/caching/src/hashing/providers/crypto.d.ts.map +1 -0
  37. package/dist/caching/src/hashing/providers/crypto.js +28 -0
  38. package/dist/caching/src/hashing/providers/crypto.js.map +1 -0
  39. package/dist/caching/src/hashing/providers/djb2.d.ts +60 -0
  40. package/dist/caching/src/hashing/providers/djb2.d.ts.map +1 -0
  41. package/dist/caching/src/hashing/providers/djb2.js +92 -0
  42. package/dist/caching/src/hashing/providers/djb2.js.map +1 -0
  43. package/dist/caching/src/hashing/providers/fnv1.d.ts +33 -0
  44. package/dist/caching/src/hashing/providers/fnv1.d.ts.map +1 -0
  45. package/dist/caching/src/hashing/providers/fnv1.js +68 -0
  46. package/dist/caching/src/hashing/providers/fnv1.js.map +1 -0
  47. package/dist/caching/src/hashing/providers/murmur.d.ts +81 -0
  48. package/dist/caching/src/hashing/providers/murmur.d.ts.map +1 -0
  49. package/dist/caching/src/hashing/providers/murmur.js +173 -0
  50. package/dist/caching/src/hashing/providers/murmur.js.map +1 -0
  51. package/dist/caching/src/hashing/providers.d.ts +126 -0
  52. package/dist/caching/src/hashing/providers.d.ts.map +1 -0
  53. package/dist/caching/src/hashing/providers.js +163 -0
  54. package/dist/caching/src/hashing/providers.js.map +1 -0
  55. package/dist/caching/src/hashing/types.d.ts +340 -0
  56. package/dist/caching/src/hashing/types.d.ts.map +1 -0
  57. package/dist/caching/src/hashing/types.js +10 -0
  58. package/dist/caching/src/hashing/types.js.map +1 -0
  59. package/dist/caching/src/keyValue/capabilities.d.ts +161 -0
  60. package/dist/caching/src/keyValue/capabilities.d.ts.map +1 -0
  61. package/dist/caching/src/keyValue/capabilities.js +334 -0
  62. package/dist/caching/src/keyValue/capabilities.js.map +1 -0
  63. package/dist/caching/src/keyValue/event-manager.d.ts +27 -0
  64. package/dist/caching/src/keyValue/event-manager.d.ts.map +1 -0
  65. package/dist/caching/src/keyValue/event-manager.js +88 -0
  66. package/dist/caching/src/keyValue/event-manager.js.map +1 -0
  67. package/dist/caching/src/keyValue/generic-store.d.ts +243 -0
  68. package/dist/caching/src/keyValue/generic-store.d.ts.map +1 -0
  69. package/dist/caching/src/keyValue/generic-store.js +295 -0
  70. package/dist/caching/src/keyValue/generic-store.js.map +1 -0
  71. package/dist/caching/src/keyValue/hooks-manager.d.ts +21 -0
  72. package/dist/caching/src/keyValue/hooks-manager.d.ts.map +1 -0
  73. package/dist/caching/src/keyValue/hooks-manager.js +59 -0
  74. package/dist/caching/src/keyValue/hooks-manager.js.map +1 -0
  75. package/dist/caching/src/keyValue/index.d.ts +334 -0
  76. package/dist/caching/src/keyValue/index.d.ts.map +1 -0
  77. package/dist/caching/src/keyValue/index.js +796 -0
  78. package/dist/caching/src/keyValue/index.js.map +1 -0
  79. package/dist/caching/src/keyValue/serialize/serialize.d.ts +12 -0
  80. package/dist/caching/src/keyValue/serialize/serialize.d.ts.map +1 -0
  81. package/dist/caching/src/keyValue/serialize/serialize.js +64 -0
  82. package/dist/caching/src/keyValue/serialize/serialize.js.map +1 -0
  83. package/dist/caching/src/keyValue/stats-manager.d.ts +27 -0
  84. package/dist/caching/src/keyValue/stats-manager.d.ts.map +1 -0
  85. package/dist/caching/src/keyValue/stats-manager.js +64 -0
  86. package/dist/caching/src/keyValue/stats-manager.js.map +1 -0
  87. package/dist/caching/src/keyValue/types.d.ts +22 -0
  88. package/dist/caching/src/keyValue/types.d.ts.map +1 -0
  89. package/dist/caching/src/keyValue/types.js +11 -0
  90. package/dist/caching/src/keyValue/types.js.map +1 -0
  91. package/dist/caching/src/keyv-adapter.d.ts +40 -0
  92. package/dist/caching/src/keyv-adapter.d.ts.map +1 -0
  93. package/dist/caching/src/keyv-adapter.js +56 -0
  94. package/dist/caching/src/keyv-adapter.js.map +1 -0
  95. package/dist/caching/src/utils/cache-tags.d.ts +275 -0
  96. package/dist/caching/src/utils/cache-tags.d.ts.map +1 -0
  97. package/dist/caching/src/utils/cache-tags.js +407 -0
  98. package/dist/caching/src/utils/cache-tags.js.map +1 -0
  99. package/dist/caching/src/utils/cacheable-item-types.d.ts +35 -0
  100. package/dist/caching/src/utils/cacheable-item-types.d.ts.map +1 -0
  101. package/dist/caching/src/utils/cacheable-item-types.js +10 -0
  102. package/dist/caching/src/utils/cacheable-item-types.js.map +1 -0
  103. package/dist/caching/src/utils/coalesce-async.d.ts +29 -0
  104. package/dist/caching/src/utils/coalesce-async.d.ts.map +1 -0
  105. package/dist/caching/src/utils/coalesce-async.js +88 -0
  106. package/dist/caching/src/utils/coalesce-async.js.map +1 -0
  107. package/dist/caching/src/utils/hash.d.ts +55 -0
  108. package/dist/caching/src/utils/hash.d.ts.map +1 -0
  109. package/dist/caching/src/utils/hash.js +116 -0
  110. package/dist/caching/src/utils/hash.js.map +1 -0
  111. package/dist/caching/src/utils/index.d.ts +24 -0
  112. package/dist/caching/src/utils/index.d.ts.map +1 -0
  113. package/dist/caching/src/utils/index.js +21 -0
  114. package/dist/caching/src/utils/index.js.map +1 -0
  115. package/dist/caching/src/utils/is-keyv-instance.d.ts +10 -0
  116. package/dist/caching/src/utils/is-keyv-instance.d.ts.map +1 -0
  117. package/dist/caching/src/utils/is-keyv-instance.js +37 -0
  118. package/dist/caching/src/utils/is-keyv-instance.js.map +1 -0
  119. package/dist/caching/src/utils/is-object.d.ts +10 -0
  120. package/dist/caching/src/utils/is-object.d.ts.map +1 -0
  121. package/dist/caching/src/utils/is-object.js +13 -0
  122. package/dist/caching/src/utils/is-object.js.map +1 -0
  123. package/dist/caching/src/utils/less-than.d.ts +10 -0
  124. package/dist/caching/src/utils/less-than.d.ts.map +1 -0
  125. package/dist/caching/src/utils/less-than.js +13 -0
  126. package/dist/caching/src/utils/less-than.js.map +1 -0
  127. package/dist/caching/src/utils/memoize.d.ts +107 -0
  128. package/dist/caching/src/utils/memoize.d.ts.map +1 -0
  129. package/dist/caching/src/utils/memoize.js +201 -0
  130. package/dist/caching/src/utils/memoize.js.map +1 -0
  131. package/dist/caching/src/utils/mock-cacheable.d.ts +28 -0
  132. package/dist/caching/src/utils/mock-cacheable.d.ts.map +1 -0
  133. package/dist/caching/src/utils/mock-cacheable.js +87 -0
  134. package/dist/caching/src/utils/mock-cacheable.js.map +1 -0
  135. package/dist/caching/src/utils/run-if-fn.d.ts +12 -0
  136. package/dist/caching/src/utils/run-if-fn.d.ts.map +1 -0
  137. package/dist/caching/src/utils/run-if-fn.js +12 -0
  138. package/dist/caching/src/utils/run-if-fn.js.map +1 -0
  139. package/dist/caching/src/utils/shorthand-time.d.ts +27 -0
  140. package/dist/caching/src/utils/shorthand-time.d.ts.map +1 -0
  141. package/dist/caching/src/utils/shorthand-time.js +96 -0
  142. package/dist/caching/src/utils/shorthand-time.js.map +1 -0
  143. package/dist/caching/src/utils/sleep.d.ts +10 -0
  144. package/dist/caching/src/utils/sleep.d.ts.map +1 -0
  145. package/dist/caching/src/utils/sleep.js +11 -0
  146. package/dist/caching/src/utils/sleep.js.map +1 -0
  147. package/dist/caching/src/utils/stats.d.ts +354 -0
  148. package/dist/caching/src/utils/stats.d.ts.map +1 -0
  149. package/dist/caching/src/utils/stats.js +593 -0
  150. package/dist/caching/src/utils/stats.js.map +1 -0
  151. package/dist/caching/src/utils/ttl.d.ts +58 -0
  152. package/dist/caching/src/utils/ttl.d.ts.map +1 -0
  153. package/dist/caching/src/utils/ttl.js +77 -0
  154. package/dist/caching/src/utils/ttl.js.map +1 -0
  155. package/package.json +11 -3
@@ -0,0 +1,354 @@
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 counter field that can be incremented or decremented via the unified
11
+ * {@link Stats.increment} / {@link Stats.decrement} API or an event map.
12
+ */
13
+ export type StatField = 'hits' | 'misses' | 'gets' | 'sets' | 'deletes' | 'clears' | 'count';
14
+ /**
15
+ * A duck-typed event emitter. This intentionally matches both `Hookified`
16
+ * (used by `cacheable`, `node-cache`, `memory`, `flat-cache`) and Node's
17
+ * built-in `EventEmitter` (used by `cache-manager`, `cacheable-request`)
18
+ * without adding a hard dependency on either.
19
+ */
20
+ export type StatsEmitter = {
21
+ on(event: string, listener: (...args: any[]) => void): unknown;
22
+ off?(event: string, listener: (...args: any[]) => void): unknown;
23
+ removeListener?(event: string, listener: (...args: any[]) => void): unknown;
24
+ };
25
+ /**
26
+ * A custom handler invoked when a subscribed event fires. It receives the
27
+ * {@link Stats} instance and the raw event arguments (which may be positional,
28
+ * e.g. node-cache emits `(key, value)`).
29
+ */
30
+ export type StatsEventHandler = (stats: Stats, ...args: any[]) => void;
31
+ /**
32
+ * Maps an event name to the stat update it should perform: a single field to
33
+ * increment, an array of fields to increment, or a custom handler.
34
+ */
35
+ export type StatsEventMap = Record<string, StatField | StatField[] | StatsEventHandler>;
36
+ /**
37
+ * A counter field that can be recorded per key via {@link Stats.recordKey}.
38
+ * This is the subset of {@link StatField} that makes sense for a single key
39
+ * (`clears` and `count` are cache-wide).
40
+ */
41
+ export type KeyStatField = 'hits' | 'misses' | 'gets' | 'sets' | 'deletes';
42
+ /**
43
+ * Per-key statistics returned by {@link Stats.mostUsedKeys},
44
+ * {@link Stats.leastUsedKeys}, and {@link Stats.keyStats}.
45
+ */
46
+ export type StatsKeyEntry = {
47
+ key: string;
48
+ /** Total recorded operations for this key (sum of all fields). */
49
+ count: number;
50
+ hits: number;
51
+ misses: number;
52
+ gets: number;
53
+ sets: number;
54
+ deletes: number;
55
+ /** `hits / (hits + misses)` for this key, or `0` when there have been no lookups. */
56
+ hitRate: number;
57
+ };
58
+ /**
59
+ * A plain-object snapshot of a {@link Stats} instance, suitable for logging,
60
+ * metrics, or serialization. Returned by {@link Stats.toJSON}.
61
+ */
62
+ export type StatsSnapshot = {
63
+ enabled: boolean;
64
+ hits: number;
65
+ misses: number;
66
+ gets: number;
67
+ sets: number;
68
+ deletes: number;
69
+ clears: number;
70
+ vsize: number;
71
+ ksize: number;
72
+ count: number;
73
+ hitRate: number;
74
+ missRate: number;
75
+ /** Number of unique keys currently tracked (0 when key tracking is off). */
76
+ trackedKeys: number;
77
+ lastUpdated?: number;
78
+ lastReset?: number;
79
+ };
80
+ export type StatsOptions = {
81
+ /** Whether the stats are enabled. Defaults to `false`. */
82
+ enabled?: boolean;
83
+ /** Optionally subscribe to an emitter immediately on construction. */
84
+ emitter?: StatsEmitter;
85
+ /** The event map to use. Required when `emitter` is provided. */
86
+ eventMap?: StatsEventMap;
87
+ /** Track per-key statistics via {@link Stats.recordKey}. Defaults to `false`. */
88
+ trackKeys?: boolean;
89
+ /**
90
+ * Safety cap on the number of unique keys tracked. When exceeded, the
91
+ * lowest-count keys are pruned, which keeps {@link Stats.mostUsedKeys}
92
+ * approximately accurate but makes {@link Stats.leastUsedKeys} unreliable.
93
+ * Unbounded when unset.
94
+ */
95
+ maxTrackedKeys?: number;
96
+ };
97
+ /**
98
+ * Event map for `@cacheable/node-cache` instances. node-cache emits with
99
+ * positional arguments (e.g. `set(key, value)`), and emits each lifecycle
100
+ * event exactly once, so the counts map cleanly. `flush` clears the cache data
101
+ * and `flush_stats` resets the stats counters, mirroring node-cache's
102
+ * `flushAll()` / `flushStats()` lifecycle.
103
+ *
104
+ * Presets for `cacheable` and `cache-manager` are intentionally not provided:
105
+ * their event streams emit per-store probes (and, for cache-manager, do not
106
+ * emit an event on a normal miss), so a simple map cannot faithfully reproduce
107
+ * their imperative stats. Wire those up with a custom map or imperative calls.
108
+ */
109
+ export declare const nodeCacheStatsEventMap: StatsEventMap;
110
+ /**
111
+ * Raw per-key counters stored in {@link Stats.trackedKeys}: the
112
+ * `hits`/`misses`/`gets`/`sets`/`deletes` totals for a single cache key.
113
+ */
114
+ export type KeyCounters = Record<KeyStatField, number>;
115
+ export declare class Stats {
116
+ private _counters;
117
+ private _vsize;
118
+ private _ksize;
119
+ private _enabled;
120
+ private _lastUpdated;
121
+ private _lastReset;
122
+ private _subscriptions;
123
+ /** Backing store for the public {@link trackedKeys} read-only view. */
124
+ private _trackedKeys;
125
+ private _trackKeys;
126
+ private _maxTrackedKeys;
127
+ constructor(options?: StatsOptions);
128
+ /**
129
+ * @returns {boolean} - Whether the stats are enabled
130
+ */
131
+ get enabled(): boolean;
132
+ /**
133
+ * @param {boolean} enabled - Whether to enable the stats
134
+ */
135
+ set enabled(enabled: boolean);
136
+ /**
137
+ * @returns {boolean} - Whether per-key statistics are tracked
138
+ */
139
+ get trackKeys(): boolean;
140
+ /**
141
+ * @param {boolean} trackKeys - Whether to track per-key statistics
142
+ */
143
+ set trackKeys(trackKeys: boolean);
144
+ /**
145
+ * @returns {number | undefined} - The cap on unique keys tracked, or
146
+ * `undefined` when unbounded
147
+ */
148
+ get maxTrackedKeys(): number | undefined;
149
+ /**
150
+ * @param {number | undefined} maxTrackedKeys - The cap on unique keys
151
+ * tracked. Set `undefined` for unbounded.
152
+ */
153
+ set maxTrackedKeys(maxTrackedKeys: number | undefined);
154
+ /**
155
+ * Per-key statistics, keyed by cache key, holding each key's raw
156
+ * `hits`/`misses`/`gets`/`sets`/`deletes` counters. Populated by
157
+ * {@link recordKey} when {@link trackKeys} is enabled; read `trackedKeys.size`
158
+ * for the number of unique keys currently tracked. The returned map is a
159
+ * read-only view — mutate per-key stats via {@link recordKey} /
160
+ * {@link clearKeys} / {@link reset}.
161
+ * @returns {ReadonlyMap<string, Readonly<KeyCounters>>}
162
+ * @readonly
163
+ */
164
+ get trackedKeys(): ReadonlyMap<string, Readonly<KeyCounters>>;
165
+ /**
166
+ * @returns {number} - The number of hits
167
+ * @readonly
168
+ */
169
+ get hits(): number;
170
+ /**
171
+ * @returns {number} - The number of misses
172
+ * @readonly
173
+ */
174
+ get misses(): number;
175
+ /**
176
+ * @returns {number} - The number of gets
177
+ * @readonly
178
+ */
179
+ get gets(): number;
180
+ /**
181
+ * @returns {number} - The number of sets
182
+ * @readonly
183
+ */
184
+ get sets(): number;
185
+ /**
186
+ * @returns {number} - The number of deletes
187
+ * @readonly
188
+ */
189
+ get deletes(): number;
190
+ /**
191
+ * @returns {number} - The number of clears
192
+ * @readonly
193
+ */
194
+ get clears(): number;
195
+ /**
196
+ * @returns {number} - The vsize (value size) of the cache instance
197
+ * @readonly
198
+ */
199
+ get vsize(): number;
200
+ /**
201
+ * @returns {number} - The ksize (key size) of the cache instance
202
+ * @readonly
203
+ */
204
+ get ksize(): number;
205
+ /**
206
+ * @returns {number} - The count of the cache instance
207
+ * @readonly
208
+ */
209
+ get count(): number;
210
+ /**
211
+ * The ratio of hits to total lookups (hits + misses). Returns `0` when there
212
+ * have been no lookups.
213
+ * @returns {number} - A value between 0 and 1
214
+ * @readonly
215
+ */
216
+ get hitRate(): number;
217
+ /**
218
+ * The ratio of misses to total lookups (hits + misses). Returns `0` when
219
+ * there have been no lookups.
220
+ * @returns {number} - A value between 0 and 1
221
+ * @readonly
222
+ */
223
+ get missRate(): number;
224
+ /**
225
+ * The timestamp (ms since epoch) of the last mutation while enabled, or
226
+ * `undefined` if there have been none since the last reset.
227
+ * @returns {number | undefined}
228
+ * @readonly
229
+ */
230
+ get lastUpdated(): number | undefined;
231
+ /**
232
+ * The timestamp (ms since epoch) of the last {@link reset}/{@link clear}, or
233
+ * `undefined` if it has never been reset.
234
+ * @returns {number | undefined}
235
+ * @readonly
236
+ */
237
+ get lastReset(): number | undefined;
238
+ /**
239
+ * Increment a counter field by `amount` (default `1`). No-op when disabled.
240
+ * @param {StatField} field - The counter to increment
241
+ * @param {number} amount - The amount to add (default 1)
242
+ */
243
+ increment(field: StatField, amount?: number): void;
244
+ /**
245
+ * Decrement a counter field by `amount` (default `1`). No-op when disabled.
246
+ * @param {StatField} field - The counter to decrement
247
+ * @param {number} amount - The amount to subtract (default 1)
248
+ */
249
+ decrement(field: StatField, amount?: number): void;
250
+ incrementHits(amount?: number): void;
251
+ incrementMisses(amount?: number): void;
252
+ incrementGets(amount?: number): void;
253
+ incrementSets(amount?: number): void;
254
+ incrementDeletes(amount?: number): void;
255
+ incrementClears(amount?: number): void;
256
+ incrementVSize(value: any): void;
257
+ decreaseVSize(value: any): void;
258
+ incrementKSize(key: string): void;
259
+ decreaseKSize(key: string): void;
260
+ incrementCount(amount?: number): void;
261
+ decreaseCount(amount?: number): void;
262
+ setCount(count: number): void;
263
+ roughSizeOfString(value: string): number;
264
+ roughSizeOfObject(object: any): number;
265
+ /**
266
+ * Enable stat tracking. Equivalent to setting {@link enabled} to `true`.
267
+ */
268
+ enable(): void;
269
+ /**
270
+ * Disable stat tracking. Equivalent to setting {@link enabled} to `false`.
271
+ */
272
+ disable(): void;
273
+ /**
274
+ * Reset all counters to zero and record the reset timestamp. Alias of
275
+ * {@link reset}.
276
+ */
277
+ clear(): void;
278
+ reset(): void;
279
+ resetStoreValues(): void;
280
+ /**
281
+ * @returns {StatsSnapshot} - A plain-object snapshot of the current stats,
282
+ * including computed `hitRate`/`missRate` and timestamps.
283
+ */
284
+ toJSON(): StatsSnapshot;
285
+ /**
286
+ * @returns {StatsSnapshot} - A plain-object snapshot of the current stats.
287
+ * Alias of {@link toJSON}.
288
+ */
289
+ snapshot(): StatsSnapshot;
290
+ /**
291
+ * Record an operation against a specific key for per-key statistics. No-op
292
+ * unless both {@link enabled} and {@link trackKeys} are `true`.
293
+ * @param {string} key - The cache key the operation touched
294
+ * @param {KeyStatField} field - The per-key counter to increment
295
+ * @param {number} amount - The amount to add (default 1)
296
+ */
297
+ recordKey(key: string, field: KeyStatField, amount?: number): void;
298
+ /**
299
+ * The most-used keys, sorted descending. Sorts by total recorded operations,
300
+ * or by a single field when `field` is provided. Ties order by key.
301
+ * @param {number} limit - Maximum entries to return (default 100)
302
+ * @param {KeyStatField} [field] - Optionally rank by one counter (e.g. "hits")
303
+ * @returns {StatsKeyEntry[]}
304
+ */
305
+ mostUsedKeys(limit?: number, field?: KeyStatField): StatsKeyEntry[];
306
+ /**
307
+ * The least-used keys, sorted ascending. Sorts by total recorded operations,
308
+ * or by a single field when `field` is provided. Ties order by key. Note:
309
+ * only keys that have been recorded at least once can be ranked, and when
310
+ * {@link maxTrackedKeys} pruning has occurred the true least-used keys may
311
+ * have been evicted.
312
+ * @param {number} limit - Maximum entries to return (default 100)
313
+ * @param {KeyStatField} [field] - Optionally rank by one counter (e.g. "gets")
314
+ * @returns {StatsKeyEntry[]}
315
+ */
316
+ leastUsedKeys(limit?: number, field?: KeyStatField): StatsKeyEntry[];
317
+ /**
318
+ * @param {string} key - The key to look up
319
+ * @returns {StatsKeyEntry | undefined} - The per-key statistics, or
320
+ * `undefined` if the key has not been recorded
321
+ */
322
+ keyStats(key: string): StatsKeyEntry | undefined;
323
+ /**
324
+ * Clear all per-key statistics without touching the aggregate counters.
325
+ */
326
+ clearKeys(): void;
327
+ private totalOf;
328
+ private toKeyEntry;
329
+ private sortedKeyEntries;
330
+ /**
331
+ * When over {@link maxTrackedKeys}, prune the lowest-count keys down to 90%
332
+ * of the cap (batched so the sort cost amortizes across inserts). The key
333
+ * that was just recorded is never pruned.
334
+ */
335
+ private pruneTrackedKeys;
336
+ /**
337
+ * Subscribe to an emitter so that matching events automatically update the
338
+ * stats. Counting is gated by {@link enabled}, so you may subscribe first and
339
+ * toggle enablement later. Call {@link unsubscribe} to detach.
340
+ * @param {StatsEmitter} emitter - The emitter to listen on
341
+ * @param {StatsEventMap} eventMap - The event-to-stat mapping (e.g.
342
+ * {@link nodeCacheStatsEventMap} or a custom map)
343
+ */
344
+ subscribe(emitter: StatsEmitter, eventMap: StatsEventMap): void;
345
+ /**
346
+ * Detach listeners previously attached via {@link subscribe}. When `emitter`
347
+ * is provided, only that emitter's listeners are removed; otherwise all are.
348
+ * @param {StatsEmitter} [emitter] - The emitter to detach from
349
+ */
350
+ unsubscribe(emitter?: StatsEmitter): void;
351
+ private applyEvent;
352
+ private touch;
353
+ }
354
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../../src/caching/src/utils/stats.ts"],"names":[],"mappings":"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"}