limited-cache 2.2.0 → 2.3.1
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/CHANGELOG.md +12 -0
- package/README.md +4 -3
- package/dist/cjs/index.cjs +273 -380
- package/dist/cjs/index.d.cts +84 -76
- package/dist/cjs/index.d.cts.map +1 -0
- package/dist/esm/index.d.ts +99 -6
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +279 -6
- package/dist/esm/index.js.map +1 -1
- package/package.json +34 -53
- package/src/__tests__/LimitedCache.test.ts +2 -2
- package/src/__tests__/LimitedCacheObject.test.ts +30 -27
- package/src/__tests__/lowLevelFunctions.test.ts +10 -8
- package/src/__tests__/scenarios/keys.test.ts +2 -2
- package/src/__tests__/scenarios/maxCacheSize.test.ts +8 -5
- package/src/__tests__/scenarios/maxCacheTime.test.ts +58 -58
- package/src/__tests__/scenarios/values.test.ts +2 -2
- package/src/__tests__/typeChecks/LimitedCacheObjectTypes.test.ts +15 -15
- package/src/__tests__/typeChecks/LimitedCacheTypes.test.ts +1 -1
- package/src/__tests__/typeChecks/lowLevelFunctionsTypes.test.ts +2 -2
- package/src/core/LimitedCache.ts +20 -21
- package/src/core/LimitedCacheObject.ts +30 -19
- package/src/core/defaultOptions.ts +5 -4
- package/src/core/limitedCacheUtil.ts +15 -3
- package/src/core/lowLevelFunctions.ts +43 -32
- package/src/types.ts +4 -3
- package/dist/esm/core/LimitedCache.d.ts +0 -4
- package/dist/esm/core/LimitedCache.d.ts.map +0 -1
- package/dist/esm/core/LimitedCache.js +0 -29
- package/dist/esm/core/LimitedCache.js.map +0 -1
- package/dist/esm/core/LimitedCacheObject.d.ts +0 -5
- package/dist/esm/core/LimitedCacheObject.d.ts.map +0 -1
- package/dist/esm/core/LimitedCacheObject.js +0 -52
- package/dist/esm/core/LimitedCacheObject.js.map +0 -1
- package/dist/esm/core/builtIns.d.ts +0 -12
- package/dist/esm/core/builtIns.d.ts.map +0 -1
- package/dist/esm/core/builtIns.js +0 -5
- package/dist/esm/core/builtIns.js.map +0 -1
- package/dist/esm/core/defaultOptions.d.ts +0 -6
- package/dist/esm/core/defaultOptions.d.ts.map +0 -1
- package/dist/esm/core/defaultOptions.js +0 -14
- package/dist/esm/core/defaultOptions.js.map +0 -1
- package/dist/esm/core/limitedCacheUtil.d.ts +0 -13
- package/dist/esm/core/limitedCacheUtil.d.ts.map +0 -1
- package/dist/esm/core/limitedCacheUtil.js +0 -14
- package/dist/esm/core/limitedCacheUtil.js.map +0 -1
- package/dist/esm/core/lowLevelFunctions.d.ts +0 -14
- package/dist/esm/core/lowLevelFunctions.d.ts.map +0 -1
- package/dist/esm/core/lowLevelFunctions.js +0 -240
- package/dist/esm/core/lowLevelFunctions.js.map +0 -1
- package/dist/esm/types.d.ts +0 -58
- package/dist/esm/types.d.ts.map +0 -1
- package/dist/esm/types.js +0 -2
- package/dist/esm/types.js.map +0 -1
- package/legacy-types/ts3.5/dist/esm/core/LimitedCache.d.ts +0 -4
- package/legacy-types/ts3.5/dist/esm/core/LimitedCacheObject.d.ts +0 -5
- package/legacy-types/ts3.5/dist/esm/core/builtIns.d.ts +0 -12
- package/legacy-types/ts3.5/dist/esm/core/defaultOptions.d.ts +0 -6
- package/legacy-types/ts3.5/dist/esm/core/limitedCacheUtil.d.ts +0 -13
- package/legacy-types/ts3.5/dist/esm/core/lowLevelFunctions.d.ts +0 -14
- package/legacy-types/ts3.5/dist/esm/index.d.ts +0 -7
- package/legacy-types/ts3.5/dist/esm/types.d.ts +0 -61
- package/legacy-types/ts4.0/dist/esm/core/LimitedCache.d.ts +0 -4
- package/legacy-types/ts4.0/dist/esm/core/LimitedCacheObject.d.ts +0 -5
- package/legacy-types/ts4.0/dist/esm/core/builtIns.d.ts +0 -12
- package/legacy-types/ts4.0/dist/esm/core/defaultOptions.d.ts +0 -6
- package/legacy-types/ts4.0/dist/esm/core/limitedCacheUtil.d.ts +0 -13
- package/legacy-types/ts4.0/dist/esm/core/lowLevelFunctions.d.ts +0 -14
- package/legacy-types/ts4.0/dist/esm/index.d.ts +0 -7
- package/legacy-types/ts4.0/dist/esm/types.d.ts +0 -61
- package/legacy-types/ts4.5/dist/esm/core/LimitedCache.d.ts +0 -4
- package/legacy-types/ts4.5/dist/esm/core/LimitedCacheObject.d.ts +0 -5
- package/legacy-types/ts4.5/dist/esm/core/builtIns.d.ts +0 -12
- package/legacy-types/ts4.5/dist/esm/core/defaultOptions.d.ts +0 -6
- package/legacy-types/ts4.5/dist/esm/core/limitedCacheUtil.d.ts +0 -13
- package/legacy-types/ts4.5/dist/esm/core/lowLevelFunctions.d.ts +0 -14
- package/legacy-types/ts4.5/dist/esm/index.d.ts +0 -7
- package/legacy-types/ts4.5/dist/esm/types.d.ts +0 -61
- package/src/core/builtIns.ts +0 -9
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { LimitedCacheOptionsReadonly } from '../types.js';
|
|
2
|
-
declare const CURRENT_META_VERSION = 2;
|
|
3
|
-
declare const MAXIMUM_CACHE_TIME: number;
|
|
4
|
-
declare const defaultOptions: LimitedCacheOptionsReadonly;
|
|
5
|
-
export { CURRENT_META_VERSION, MAXIMUM_CACHE_TIME, defaultOptions };
|
|
6
|
-
//# sourceMappingURL=defaultOptions.d.ts.map
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
declare const limitedCacheUtil: {
|
|
2
|
-
init: <ItemType = any>(optionsOrCacheMeta?: import("../types.js").LimitedCacheOptions | import("../types.js").LimitedCacheMeta<ItemType> | undefined) => import("../types.js").LimitedCacheMeta<ItemType>;
|
|
3
|
-
get: <ItemType_1 = any>(cacheMeta: import("../types.js").LimitedCacheMeta<ItemType_1>, cacheKey: string) => ItemType_1 | undefined;
|
|
4
|
-
getAll: <ItemType_2 = any>(cacheMeta: import("../types.js").LimitedCacheMeta<ItemType_2>) => Record<string, ItemType_2>;
|
|
5
|
-
has: <ItemType_3 = any>(cacheMeta: import("../types.js").LimitedCacheMeta<ItemType_3>, cacheKey: string) => boolean;
|
|
6
|
-
set: <ItemType_4 = any>(cacheMeta: import("../types.js").LimitedCacheMeta<ItemType_4>, cacheKey: string, item: ItemType_4) => import("../types.js").LimitedCacheMeta<ItemType_4>;
|
|
7
|
-
remove: <ItemType_5 = any>(cacheMeta: import("../types.js").LimitedCacheMeta<ItemType_5>, cacheKey: string) => import("../types.js").LimitedCacheMeta<ItemType_5>;
|
|
8
|
-
reset: <ItemType_6 = any>(cacheMeta: import("../types.js").LimitedCacheMeta<ItemType_6>) => import("../types.js").LimitedCacheMeta<ItemType_6>;
|
|
9
|
-
doMaintenance: <ItemType_7 = any>(cacheMeta: import("../types.js").LimitedCacheMeta<ItemType_7>) => import("../types.js").LimitedCacheMeta<ItemType_7>;
|
|
10
|
-
setOptions: <ItemType_8 = any>(cacheMeta: import("../types.js").LimitedCacheMeta<ItemType_8>, options: import("../types.js").LimitedCacheOptions) => Readonly<import("../types.js").LimitedCacheOptionsFull>;
|
|
11
|
-
};
|
|
12
|
-
export { limitedCacheUtil };
|
|
13
|
-
//# sourceMappingURL=limitedCacheUtil.d.ts.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { LimitedCacheOptions, LimitedCacheOptionsReadonly, LimitedCacheMeta } from '../types.js';
|
|
2
|
-
declare const isCacheMeta: (cacheMeta: LimitedCacheMeta) => boolean;
|
|
3
|
-
declare const upgradeCacheMeta: (cacheMeta: LimitedCacheMeta) => void;
|
|
4
|
-
declare const lowLevelSetOptions: <ItemType = any>(cacheMeta: LimitedCacheMeta<ItemType>, options: LimitedCacheOptions) => LimitedCacheOptionsReadonly;
|
|
5
|
-
declare const lowLevelInit: <ItemType = any>(optionsOrCacheMeta?: LimitedCacheOptions | LimitedCacheMeta<ItemType> | undefined) => LimitedCacheMeta<ItemType>;
|
|
6
|
-
declare const lowLevelDoMaintenance: <ItemType = any>(cacheMeta: LimitedCacheMeta<ItemType>) => LimitedCacheMeta<ItemType>;
|
|
7
|
-
declare const lowLevelHas: <ItemType = any>(cacheMeta: LimitedCacheMeta<ItemType>, cacheKey: string) => boolean;
|
|
8
|
-
declare const lowLevelGetOne: <ItemType = any>(cacheMeta: LimitedCacheMeta<ItemType>, cacheKey: string) => ItemType | undefined;
|
|
9
|
-
declare const lowLevelGetAll: <ItemType = any>(cacheMeta: LimitedCacheMeta<ItemType>) => Record<string, ItemType>;
|
|
10
|
-
declare const lowLevelSet: <ItemType = any>(cacheMeta: LimitedCacheMeta<ItemType>, cacheKey: string, item: ItemType) => LimitedCacheMeta<ItemType>;
|
|
11
|
-
declare const lowLevelRemove: <ItemType = any>(cacheMeta: LimitedCacheMeta<ItemType>, cacheKey: string) => LimitedCacheMeta<ItemType>;
|
|
12
|
-
declare const lowLevelReset: <ItemType = any>(cacheMeta: LimitedCacheMeta<ItemType>) => LimitedCacheMeta<ItemType>;
|
|
13
|
-
export { isCacheMeta, upgradeCacheMeta, lowLevelInit, lowLevelGetOne, lowLevelGetAll, lowLevelHas, lowLevelSet, lowLevelRemove, lowLevelReset, lowLevelDoMaintenance, lowLevelSetOptions, };
|
|
14
|
-
//# sourceMappingURL=lowLevelFunctions.d.ts.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export * from './core/defaultOptions.js';
|
|
2
|
-
export * from './core/LimitedCache.js';
|
|
3
|
-
export * from './core/LimitedCacheObject.js';
|
|
4
|
-
export * from './core/limitedCacheUtil.js';
|
|
5
|
-
export * from './core/lowLevelFunctions.js';
|
|
6
|
-
export * from './types.js';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
export type DefaultItemType = any;
|
|
2
|
-
export interface LimitedCacheOptionsFull {
|
|
3
|
-
/** Items will be removed to keep the cache within the maxCacheSize limit */
|
|
4
|
-
maxCacheSize: number;
|
|
5
|
-
/** Items will be removed and never returned if they were set more than maxCacheTime milliseconds ago */
|
|
6
|
-
maxCacheTime: number;
|
|
7
|
-
/** (dev only) A warning will be emitted if an item rotates out of the cache before this many milliseconds have passed, to indicate the size is too small */
|
|
8
|
-
warnIfItemPurgedBeforeTime: number;
|
|
9
|
-
/** (private) Internal cleanup of old keys will be performed after this many operations */
|
|
10
|
-
opLimit: number;
|
|
11
|
-
/** (private) Internal optimization to adjust how much searching will be done to find expired items, to avoid being O(n) */
|
|
12
|
-
scanLimit: number;
|
|
13
|
-
}
|
|
14
|
-
export type LimitedCacheOptions = Partial<LimitedCacheOptionsFull> | null;
|
|
15
|
-
export type LimitedCacheOptionsReadonly = Readonly<LimitedCacheOptionsFull>;
|
|
16
|
-
export interface LimitedCacheInstance<ItemType = DefaultItemType> {
|
|
17
|
-
/** Return the requested item, if it has not expired */
|
|
18
|
-
get: (cacheKey: string) => ItemType | undefined;
|
|
19
|
-
/** Return all non-expired items */
|
|
20
|
-
getAll: () => Record<string, ItemType>;
|
|
21
|
-
/** Indicate whether or not the requested item is present and has not expired */
|
|
22
|
-
has: (cacheKey: string) => boolean;
|
|
23
|
-
/** Add the item to the cache, or update its timestamp if it already exists */
|
|
24
|
-
set: (cacheKey: string, item: ItemType) => ItemType;
|
|
25
|
-
/** Remove the requested item from the cache, if necessary */
|
|
26
|
-
remove: (cacheKey: string) => true;
|
|
27
|
-
/** Remove all items and all timestamps from the cache */
|
|
28
|
-
reset: () => LimitedCacheMeta<ItemType>;
|
|
29
|
-
/** Return a serializable representation of the cache internals, suitable for long-term storage */
|
|
30
|
-
getCacheMeta: () => LimitedCacheMeta<ItemType>;
|
|
31
|
-
/** Return the cache's current values for all options */
|
|
32
|
-
getOptions: () => LimitedCacheOptionsFull;
|
|
33
|
-
/** Update one or more of the cache's options */
|
|
34
|
-
setOptions: (newOptions: LimitedCacheOptions) => LimitedCacheOptionsReadonly;
|
|
35
|
-
/** Reduces cache size by cleaning up old keys and expired items */
|
|
36
|
-
doMaintenance: () => LimitedCacheMeta<ItemType>;
|
|
37
|
-
}
|
|
38
|
-
export interface LimitedCacheObjectInstance<ItemType = DefaultItemType> {
|
|
39
|
-
[key: string]: ItemType;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* A serializable representation of the cache internals, suitable for long-term storage
|
|
43
|
-
*/
|
|
44
|
-
export interface LimitedCacheMeta<ItemType = DefaultItemType> {
|
|
45
|
-
/** Schema version: old versions will be upgraded if possible, or a warning will be emitted if not */
|
|
46
|
-
limitedCacheMetaVersion: number;
|
|
47
|
-
/** Options to control cache size, time, and behavior */
|
|
48
|
-
options: LimitedCacheOptionsReadonly;
|
|
49
|
-
/** The values in the cache, stored by key. Will include old keys not yet garbage collected */
|
|
50
|
-
cache: Record<string, ItemType | undefined>;
|
|
51
|
-
/** List of keys that have been set, in chronological order. Used to find cache items most likely to be expired */
|
|
52
|
-
keyList: Array<string>;
|
|
53
|
-
/** The [setTime, expirationTime] for each key that has been set. Removed on unset. */
|
|
54
|
-
keyInfo: Record<string, [
|
|
55
|
-
number,
|
|
56
|
-
number
|
|
57
|
-
] | undefined>;
|
|
58
|
-
/** Number of operations remaining until internal cleanup of old keys is performed. Based on options.opLimit */
|
|
59
|
-
opsLeft: number;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=types.d.ts.map
|