@warlock.js/cache 1.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/README.md +527 -0
- package/cjs/cache-manager.d.ts +90 -0
- package/cjs/cache-manager.d.ts.map +1 -0
- package/cjs/cache-manager.js +148 -0
- package/cjs/cache-manager.js.map +1 -0
- package/cjs/drivers/base-cache-driver.d.ts +81 -0
- package/cjs/drivers/base-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/base-cache-driver.js +123 -0
- package/cjs/drivers/base-cache-driver.js.map +1 -0
- package/cjs/drivers/file-cache-driver.d.ts +42 -0
- package/cjs/drivers/file-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/file-cache-driver.js +106 -0
- package/cjs/drivers/file-cache-driver.js.map +1 -0
- package/cjs/drivers/index.d.ts +8 -0
- package/cjs/drivers/index.d.ts.map +1 -0
- package/cjs/drivers/lru-memory-cache-driver.d.ts +84 -0
- package/cjs/drivers/lru-memory-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/lru-memory-cache-driver.js +151 -0
- package/cjs/drivers/lru-memory-cache-driver.js.map +1 -0
- package/cjs/drivers/memory-cache-driver.d.ts +53 -0
- package/cjs/drivers/memory-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/memory-cache-driver.js +107 -0
- package/cjs/drivers/memory-cache-driver.js.map +1 -0
- package/cjs/drivers/memory-extended-cache-driver.d.ts +14 -0
- package/cjs/drivers/memory-extended-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/memory-extended-cache-driver.js +25 -0
- package/cjs/drivers/memory-extended-cache-driver.js.map +1 -0
- package/cjs/drivers/null-cache-driver.d.ts +58 -0
- package/cjs/drivers/null-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/null-cache-driver.js +84 -0
- package/cjs/drivers/null-cache-driver.js.map +1 -0
- package/cjs/drivers/redis-cache-driver.d.ts +39 -0
- package/cjs/drivers/redis-cache-driver.d.ts.map +1 -0
- package/cjs/drivers/redis-cache-driver.js +113 -0
- package/cjs/drivers/redis-cache-driver.js.map +1 -0
- package/cjs/index.d.ts +5 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js +1 -0
- package/cjs/index.js.map +1 -0
- package/cjs/types.d.ts +193 -0
- package/cjs/types.d.ts.map +1 -0
- package/cjs/utils.d.ts +20 -0
- package/cjs/utils.d.ts.map +1 -0
- package/cjs/utils.js +27 -0
- package/cjs/utils.js.map +1 -0
- package/esm/cache-manager.d.ts +90 -0
- package/esm/cache-manager.d.ts.map +1 -0
- package/esm/cache-manager.js +148 -0
- package/esm/cache-manager.js.map +1 -0
- package/esm/drivers/base-cache-driver.d.ts +81 -0
- package/esm/drivers/base-cache-driver.d.ts.map +1 -0
- package/esm/drivers/base-cache-driver.js +123 -0
- package/esm/drivers/base-cache-driver.js.map +1 -0
- package/esm/drivers/file-cache-driver.d.ts +42 -0
- package/esm/drivers/file-cache-driver.d.ts.map +1 -0
- package/esm/drivers/file-cache-driver.js +106 -0
- package/esm/drivers/file-cache-driver.js.map +1 -0
- package/esm/drivers/index.d.ts +8 -0
- package/esm/drivers/index.d.ts.map +1 -0
- package/esm/drivers/lru-memory-cache-driver.d.ts +84 -0
- package/esm/drivers/lru-memory-cache-driver.d.ts.map +1 -0
- package/esm/drivers/lru-memory-cache-driver.js +151 -0
- package/esm/drivers/lru-memory-cache-driver.js.map +1 -0
- package/esm/drivers/memory-cache-driver.d.ts +53 -0
- package/esm/drivers/memory-cache-driver.d.ts.map +1 -0
- package/esm/drivers/memory-cache-driver.js +107 -0
- package/esm/drivers/memory-cache-driver.js.map +1 -0
- package/esm/drivers/memory-extended-cache-driver.d.ts +14 -0
- package/esm/drivers/memory-extended-cache-driver.d.ts.map +1 -0
- package/esm/drivers/memory-extended-cache-driver.js +25 -0
- package/esm/drivers/memory-extended-cache-driver.js.map +1 -0
- package/esm/drivers/null-cache-driver.d.ts +58 -0
- package/esm/drivers/null-cache-driver.d.ts.map +1 -0
- package/esm/drivers/null-cache-driver.js +84 -0
- package/esm/drivers/null-cache-driver.js.map +1 -0
- package/esm/drivers/redis-cache-driver.d.ts +39 -0
- package/esm/drivers/redis-cache-driver.d.ts.map +1 -0
- package/esm/drivers/redis-cache-driver.js +113 -0
- package/esm/drivers/redis-cache-driver.js.map +1 -0
- package/esm/index.d.ts +5 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -0
- package/esm/types.d.ts +193 -0
- package/esm/types.d.ts.map +1 -0
- package/esm/utils.d.ts +20 -0
- package/esm/utils.d.ts.map +1 -0
- package/esm/utils.js +27 -0
- package/esm/utils.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
'use strict';var logger=require('@warlock.js/logger'),redis=require('redis'),baseCacheDriver=require('./base-cache-driver.js');class RedisCacheDriver extends baseCacheDriver.BaseCacheDriver {
|
|
2
|
+
/**
|
|
3
|
+
* Cache driver name
|
|
4
|
+
*/
|
|
5
|
+
name = "redis";
|
|
6
|
+
/**
|
|
7
|
+
* {@inheritDoc}
|
|
8
|
+
*/
|
|
9
|
+
async removeNamespace(namespace) {
|
|
10
|
+
namespace = await this.parseKey(namespace);
|
|
11
|
+
this.log("clearing", namespace);
|
|
12
|
+
const keys = await this.client?.keys(`${namespace}*`);
|
|
13
|
+
if (!keys || keys.length === 0) {
|
|
14
|
+
this.log("notFound", namespace);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
await this.client?.del(keys);
|
|
18
|
+
this.log("cleared", namespace);
|
|
19
|
+
return keys;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* {@inheritDoc}
|
|
23
|
+
*/
|
|
24
|
+
async set(key, value, ttl) {
|
|
25
|
+
key = await this.parseKey(key);
|
|
26
|
+
this.log("caching", key);
|
|
27
|
+
ttl = this.getTtl(ttl);
|
|
28
|
+
const data = this.prepareDataForStorage(value, ttl);
|
|
29
|
+
await this.client?.set(key, JSON.stringify(data));
|
|
30
|
+
this.log("cached", key);
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* {@inheritDoc}
|
|
35
|
+
*/
|
|
36
|
+
async get(key) {
|
|
37
|
+
key = await this.parseKey(key);
|
|
38
|
+
this.log("fetching", key);
|
|
39
|
+
const value = await this.client?.get(key);
|
|
40
|
+
if (!value) {
|
|
41
|
+
this.log("notFound", key);
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const data = JSON.parse(value);
|
|
45
|
+
return this.parseCachedData(key, data);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* {@inheritDoc}
|
|
49
|
+
*/
|
|
50
|
+
async remove(key) {
|
|
51
|
+
key = await this.parseKey(key);
|
|
52
|
+
this.log("removing", key);
|
|
53
|
+
await this.client?.del(key);
|
|
54
|
+
this.log("removed", key);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* {@inheritDoc}
|
|
58
|
+
*/
|
|
59
|
+
async flush() {
|
|
60
|
+
this.log("flushing");
|
|
61
|
+
if (this.options.globalPrefix) {
|
|
62
|
+
await this.removeNamespace("");
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
await this.client?.flushAll();
|
|
66
|
+
}
|
|
67
|
+
this.log("flushed");
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* {@inheritDoc}
|
|
71
|
+
*/
|
|
72
|
+
async connect() {
|
|
73
|
+
if (this.clientDriver)
|
|
74
|
+
return;
|
|
75
|
+
const options = this.options;
|
|
76
|
+
if (options && !options.url && options.host) {
|
|
77
|
+
const auth = options.password || options.username
|
|
78
|
+
? `${options.username}:${options.password}@`
|
|
79
|
+
: "";
|
|
80
|
+
if (!options.url) {
|
|
81
|
+
const host = options.host || "localhost";
|
|
82
|
+
const port = options.port || 6379;
|
|
83
|
+
options.url = `redis://${auth}${host}:${port}`;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const clientOptions = {
|
|
87
|
+
...options,
|
|
88
|
+
...(this.options.clientOptions || {}),
|
|
89
|
+
};
|
|
90
|
+
this.log("connecting");
|
|
91
|
+
this.client = redis.createClient(clientOptions);
|
|
92
|
+
this.client.on("error", error => {
|
|
93
|
+
this.log("error", error.message);
|
|
94
|
+
});
|
|
95
|
+
try {
|
|
96
|
+
await this.client.connect();
|
|
97
|
+
this.log("connected");
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
logger.log.error("cache", "redis", error);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* {@inheritDoc}
|
|
105
|
+
*/
|
|
106
|
+
async disconnect() {
|
|
107
|
+
if (!this.client)
|
|
108
|
+
return;
|
|
109
|
+
this.log("disconnecting");
|
|
110
|
+
await this.client.quit();
|
|
111
|
+
this.log("disconnected");
|
|
112
|
+
}
|
|
113
|
+
}exports.RedisCacheDriver=RedisCacheDriver;//# sourceMappingURL=redis-cache-driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-cache-driver.js","sources":["../../src/drivers/redis-cache-driver.ts"],"sourcesContent":[null],"names":["BaseCacheDriver","createClient","log"],"mappings":"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"}
|
package/cjs/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
|
package/cjs/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var cacheManager=require('./cache-manager.js'),baseCacheDriver=require('./drivers/base-cache-driver.js'),fileCacheDriver=require('./drivers/file-cache-driver.js'),lruMemoryCacheDriver=require('./drivers/lru-memory-cache-driver.js'),memoryCacheDriver=require('./drivers/memory-cache-driver.js'),memoryExtendedCacheDriver=require('./drivers/memory-extended-cache-driver.js'),nullCacheDriver=require('./drivers/null-cache-driver.js'),redisCacheDriver=require('./drivers/redis-cache-driver.js'),utils=require('./utils.js');exports.CacheManager=cacheManager.CacheManager;exports.cache=cacheManager.cache;exports.BaseCacheDriver=baseCacheDriver.BaseCacheDriver;exports.FileCacheDriver=fileCacheDriver.FileCacheDriver;exports.LRUMemoryCacheDriver=lruMemoryCacheDriver.LRUMemoryCacheDriver;exports.MemoryCacheDriver=memoryCacheDriver.MemoryCacheDriver;exports.MemoryExtendedCacheDriver=memoryExtendedCacheDriver.MemoryExtendedCacheDriver;exports.NullCacheDriver=nullCacheDriver.NullCacheDriver;exports.RedisCacheDriver=redisCacheDriver.RedisCacheDriver;Object.defineProperty(exports,'EXPIRES_AFTER',{enumerable:true,get:function(){return utils.EXPIRES_AFTER}});exports.parseCacheKey=utils.parseCacheKey;//# sourceMappingURL=index.js.map
|
package/cjs/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/cjs/types.d.ts
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import type { GenericObject } from "@mongez/reinforcements";
|
|
2
|
+
import type { RedisClientOptions } from "redis";
|
|
3
|
+
import type { BaseCacheDriver, FileCacheDriver, MemoryCacheDriver, MemoryExtendedCacheDriver, NullCacheDriver, RedisCacheDriver } from "./drivers";
|
|
4
|
+
export type CacheOperationType = "fetching" | "fetched" | "caching" | "cached" | "flushing" | "flushed" | "removing" | "removed" | "clearing" | "cleared" | "expired" | "notFound" | "connecting" | "error" | "connected" | "disconnecting" | "disconnected";
|
|
5
|
+
export type MemoryCacheOptions = {
|
|
6
|
+
/**
|
|
7
|
+
* The global prefix for the cache key
|
|
8
|
+
*/
|
|
9
|
+
globalPrefix?: string | (() => string);
|
|
10
|
+
/**
|
|
11
|
+
* The default TTL for the cache in seconds
|
|
12
|
+
*
|
|
13
|
+
* @default Infinity
|
|
14
|
+
*/
|
|
15
|
+
ttl?: number;
|
|
16
|
+
};
|
|
17
|
+
export type MemoryExtendedCacheOptions = MemoryCacheOptions;
|
|
18
|
+
export type LRUMemoryCacheOptions = {
|
|
19
|
+
/**
|
|
20
|
+
* The maximum number of items in the cache
|
|
21
|
+
*
|
|
22
|
+
* @default 1000
|
|
23
|
+
*/
|
|
24
|
+
capacity?: number;
|
|
25
|
+
};
|
|
26
|
+
export type FileCacheOptions = {
|
|
27
|
+
/**
|
|
28
|
+
* The global prefix for the cache key
|
|
29
|
+
*/
|
|
30
|
+
globalPrefix?: string | (() => string);
|
|
31
|
+
/**
|
|
32
|
+
* The default TTL for the cache in seconds
|
|
33
|
+
*
|
|
34
|
+
* @default 0
|
|
35
|
+
*/
|
|
36
|
+
ttl?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Storage cache directory
|
|
39
|
+
*
|
|
40
|
+
* @default storagePath("cache")
|
|
41
|
+
*/
|
|
42
|
+
directory: string | (() => string);
|
|
43
|
+
/**
|
|
44
|
+
* File name
|
|
45
|
+
*
|
|
46
|
+
* @default cache.json
|
|
47
|
+
*/
|
|
48
|
+
fileName?: string | (() => string);
|
|
49
|
+
};
|
|
50
|
+
export type RedisOptions = {
|
|
51
|
+
/**
|
|
52
|
+
* Redis Port
|
|
53
|
+
*
|
|
54
|
+
* @default 6379
|
|
55
|
+
*/
|
|
56
|
+
port?: number;
|
|
57
|
+
/**
|
|
58
|
+
* Redis Host
|
|
59
|
+
*/
|
|
60
|
+
host?: string;
|
|
61
|
+
/**
|
|
62
|
+
* Redis Username
|
|
63
|
+
*/
|
|
64
|
+
username?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Redis Password
|
|
67
|
+
*/
|
|
68
|
+
password?: string;
|
|
69
|
+
/**
|
|
70
|
+
* Redis URL
|
|
71
|
+
*
|
|
72
|
+
* If used, it will override the host and port options
|
|
73
|
+
*/
|
|
74
|
+
url?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Global prefix for the cache key
|
|
77
|
+
*/
|
|
78
|
+
globalPrefix?: string | (() => string);
|
|
79
|
+
/**
|
|
80
|
+
* Time to live in seconds
|
|
81
|
+
*
|
|
82
|
+
* @default Infinity
|
|
83
|
+
*/
|
|
84
|
+
ttl?: number;
|
|
85
|
+
/**
|
|
86
|
+
* Redis client options
|
|
87
|
+
*/
|
|
88
|
+
clientOptions?: RedisClientOptions;
|
|
89
|
+
};
|
|
90
|
+
export type NullCacheDriverOptions = GenericObject;
|
|
91
|
+
export interface CacheDriver<ClientType, Options> {
|
|
92
|
+
/**
|
|
93
|
+
* The cache driver options
|
|
94
|
+
*/
|
|
95
|
+
options: Options;
|
|
96
|
+
/**
|
|
97
|
+
* Cache driver name
|
|
98
|
+
*/
|
|
99
|
+
name: string;
|
|
100
|
+
/**
|
|
101
|
+
* Remove all cached items by namespace
|
|
102
|
+
*/
|
|
103
|
+
removeNamespace(namespace: string): Promise<any>;
|
|
104
|
+
/**
|
|
105
|
+
* Set the cache driver options
|
|
106
|
+
*/
|
|
107
|
+
setOptions(options: Options): any;
|
|
108
|
+
/**
|
|
109
|
+
* Parse the key to be used in the cache
|
|
110
|
+
*/
|
|
111
|
+
parseKey(key: string | GenericObject): Promise<string>;
|
|
112
|
+
/**
|
|
113
|
+
* Set a value in the cache
|
|
114
|
+
*
|
|
115
|
+
* @param key The cache key, could be an object or string
|
|
116
|
+
* @param value The value to be stored in the cache
|
|
117
|
+
* @param ttl The time to live in seconds
|
|
118
|
+
*/
|
|
119
|
+
set(key: string | GenericObject, value: any, ttl?: number): Promise<any>;
|
|
120
|
+
/**
|
|
121
|
+
* Get a value from the cache
|
|
122
|
+
*/
|
|
123
|
+
get(key: string | GenericObject): Promise<any | null>;
|
|
124
|
+
/**
|
|
125
|
+
* Remove a value from the cache
|
|
126
|
+
*/
|
|
127
|
+
remove(key: string | GenericObject): Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* Flush the entire cache
|
|
130
|
+
*/
|
|
131
|
+
flush(): Promise<void>;
|
|
132
|
+
/**
|
|
133
|
+
* Connect to the cache driver
|
|
134
|
+
*/
|
|
135
|
+
connect(): Promise<any>;
|
|
136
|
+
/**
|
|
137
|
+
* The cache client
|
|
138
|
+
*/
|
|
139
|
+
client?: ClientType;
|
|
140
|
+
/**
|
|
141
|
+
* Disconnect the cache driver
|
|
142
|
+
*/
|
|
143
|
+
disconnect(): Promise<void>;
|
|
144
|
+
}
|
|
145
|
+
export type CacheData = {
|
|
146
|
+
/**
|
|
147
|
+
* Value stored in the cache
|
|
148
|
+
*/
|
|
149
|
+
data: any;
|
|
150
|
+
/**
|
|
151
|
+
* The expiration date in milliseconds
|
|
152
|
+
*/
|
|
153
|
+
expiresAt?: number;
|
|
154
|
+
/**
|
|
155
|
+
* Time to live in seconds
|
|
156
|
+
*/
|
|
157
|
+
ttl?: number;
|
|
158
|
+
};
|
|
159
|
+
export type DriverClass = new () => CacheDriver<any, any>;
|
|
160
|
+
type DefaultDrivers = "redis" | "file" | "memory" | "memoryExtended" | "null" | "lru";
|
|
161
|
+
type MergeWithDefaultDrivers<T> = T extends undefined ? DefaultDrivers : DefaultDrivers | T;
|
|
162
|
+
export type CacheConfigurations<T extends string | undefined = undefined, DriverName = MergeWithDefaultDrivers<T>> = {
|
|
163
|
+
/**
|
|
164
|
+
* The default cache driver name
|
|
165
|
+
*/
|
|
166
|
+
default?: DriverName;
|
|
167
|
+
/**
|
|
168
|
+
* The cache drivers list
|
|
169
|
+
*/
|
|
170
|
+
drivers: {
|
|
171
|
+
redis?: typeof RedisCacheDriver;
|
|
172
|
+
file?: typeof FileCacheDriver;
|
|
173
|
+
null?: typeof NullCacheDriver;
|
|
174
|
+
memory?: typeof MemoryCacheDriver;
|
|
175
|
+
memoryExtended?: typeof MemoryExtendedCacheDriver;
|
|
176
|
+
} & {
|
|
177
|
+
[key in Extract<T, string>]?: typeof BaseCacheDriver<any, any> | undefined;
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* The cache driver options
|
|
181
|
+
*/
|
|
182
|
+
options: {
|
|
183
|
+
redis?: RedisOptions;
|
|
184
|
+
file?: FileCacheOptions;
|
|
185
|
+
memory?: MemoryCacheOptions;
|
|
186
|
+
memoryExtended?: MemoryExtendedCacheOptions;
|
|
187
|
+
null?: NullCacheDriverOptions;
|
|
188
|
+
} & {
|
|
189
|
+
[key in Extract<T, string>]?: GenericObject;
|
|
190
|
+
};
|
|
191
|
+
};
|
|
192
|
+
export {};
|
|
193
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/cjs/utils.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { GenericObject } from "@mongez/reinforcements";
|
|
2
|
+
/**
|
|
3
|
+
* Make a proper key for the cache
|
|
4
|
+
*/
|
|
5
|
+
export declare function parseCacheKey(key: string | GenericObject, options?: {
|
|
6
|
+
globalPrefix?: string | (() => string);
|
|
7
|
+
}): Promise<string>;
|
|
8
|
+
export declare enum EXPIRES_AFTER {
|
|
9
|
+
HALF_HOUR = 1800,
|
|
10
|
+
ONE_HOUR = 3600,
|
|
11
|
+
HALF_DAY = 43200,
|
|
12
|
+
ONE_DAY = 86400,
|
|
13
|
+
ONE_WEEK = 604800,
|
|
14
|
+
HALF_MONTH = 1296000,
|
|
15
|
+
ONE_MONTH = 2592000,
|
|
16
|
+
TWO_MONTHS = 5184000,
|
|
17
|
+
SIX_MONTHS = 15768000,
|
|
18
|
+
ONE_YEAR = 31536000
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,MAAM,wBAAwB,CAAC;AAE9D;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,GAAG,aAAa,EAC3B,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAA;CAAO,mBAezD;AAED,oBAAY,aAAa;IACvB,SAAS,OAAO;IAChB,QAAQ,OAAO;IACf,QAAQ,QAAQ;IAChB,OAAO,QAAQ;IACf,QAAQ,SAAS;IACjB,UAAU,UAAU;IACpB,SAAS,UAAU;IACnB,UAAU,UAAU;IACpB,UAAU,WAAW;IACrB,QAAQ,WAAW;CACpB"}
|
package/cjs/utils.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';var reinforcements=require('@mongez/reinforcements');/**
|
|
2
|
+
* Make a proper key for the cache
|
|
3
|
+
*/
|
|
4
|
+
async function parseCacheKey(key, options = {}) {
|
|
5
|
+
if (typeof key === "object") {
|
|
6
|
+
key = JSON.stringify(key);
|
|
7
|
+
}
|
|
8
|
+
// remove any curly braces and double quotes
|
|
9
|
+
key = key.replace(/[{}"]/g, "").replaceAll(":", ".").replaceAll(",", ".");
|
|
10
|
+
const cachePrefix = typeof options.globalPrefix === "function"
|
|
11
|
+
? await options.globalPrefix()
|
|
12
|
+
: options.globalPrefix;
|
|
13
|
+
return String(cachePrefix ? reinforcements.rtrim(cachePrefix, ".") + "." + key : key);
|
|
14
|
+
}
|
|
15
|
+
exports.EXPIRES_AFTER=void 0;
|
|
16
|
+
(function (EXPIRES_AFTER) {
|
|
17
|
+
EXPIRES_AFTER[EXPIRES_AFTER["HALF_HOUR"] = 1800] = "HALF_HOUR";
|
|
18
|
+
EXPIRES_AFTER[EXPIRES_AFTER["ONE_HOUR"] = 3600] = "ONE_HOUR";
|
|
19
|
+
EXPIRES_AFTER[EXPIRES_AFTER["HALF_DAY"] = 43200] = "HALF_DAY";
|
|
20
|
+
EXPIRES_AFTER[EXPIRES_AFTER["ONE_DAY"] = 86400] = "ONE_DAY";
|
|
21
|
+
EXPIRES_AFTER[EXPIRES_AFTER["ONE_WEEK"] = 604800] = "ONE_WEEK";
|
|
22
|
+
EXPIRES_AFTER[EXPIRES_AFTER["HALF_MONTH"] = 1296000] = "HALF_MONTH";
|
|
23
|
+
EXPIRES_AFTER[EXPIRES_AFTER["ONE_MONTH"] = 2592000] = "ONE_MONTH";
|
|
24
|
+
EXPIRES_AFTER[EXPIRES_AFTER["TWO_MONTHS"] = 5184000] = "TWO_MONTHS";
|
|
25
|
+
EXPIRES_AFTER[EXPIRES_AFTER["SIX_MONTHS"] = 15768000] = "SIX_MONTHS";
|
|
26
|
+
EXPIRES_AFTER[EXPIRES_AFTER["ONE_YEAR"] = 31536000] = "ONE_YEAR";
|
|
27
|
+
})(exports.EXPIRES_AFTER || (exports.EXPIRES_AFTER = {}));exports.parseCacheKey=parseCacheKey;//# sourceMappingURL=utils.js.map
|
package/cjs/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":[null],"names":["rtrim","EXPIRES_AFTER"],"mappings":"kEAEA;;AAEG;AACI,eAAe,aAAa,CACjC,GAA2B,EAC3B,UAAsD,EAAE,EAAA;AAExD,IAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC3B,QAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAA;;IAGD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE1E,IAAA,MAAM,WAAW,GACf,OAAO,OAAO,CAAC,YAAY,KAAK,UAAU;AACxC,UAAE,MAAM,OAAO,CAAC,YAAY,EAAE;AAC9B,UAAE,OAAO,CAAC,YAAY,CAAC;IAE3B,OAAO,MAAM,CAAC,WAAW,GAAGA,oBAAK,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACzE,CAAC;AAEWC,6BAWX;AAXD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,aAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,GAAA,WAAgB,CAAA;AAChB,IAAA,aAAA,CAAA,aAAA,CAAA,UAAA,CAAA,GAAA,IAAA,CAAA,GAAA,UAAe,CAAA;AACf,IAAA,aAAA,CAAA,aAAA,CAAA,UAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAgB,CAAA;AAChB,IAAA,aAAA,CAAA,aAAA,CAAA,SAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAe,CAAA;AACf,IAAA,aAAA,CAAA,aAAA,CAAA,UAAA,CAAA,GAAA,MAAA,CAAA,GAAA,UAAiB,CAAA;AACjB,IAAA,aAAA,CAAA,aAAA,CAAA,YAAA,CAAA,GAAA,OAAA,CAAA,GAAA,YAAoB,CAAA;AACpB,IAAA,aAAA,CAAA,aAAA,CAAA,WAAA,CAAA,GAAA,OAAA,CAAA,GAAA,WAAmB,CAAA;AACnB,IAAA,aAAA,CAAA,aAAA,CAAA,YAAA,CAAA,GAAA,OAAA,CAAA,GAAA,YAAoB,CAAA;AACpB,IAAA,aAAA,CAAA,aAAA,CAAA,YAAA,CAAA,GAAA,QAAA,CAAA,GAAA,YAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,aAAA,CAAA,UAAA,CAAA,GAAA,QAAA,CAAA,GAAA,UAAmB,CAAA;AACrB,CAAC,EAXWA,qBAAa,KAAbA,qBAAa,GAWxB,EAAA,CAAA,CAAA"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { GenericObject } from "@mongez/reinforcements";
|
|
2
|
+
import { CacheConfigurations, CacheDriver, DriverClass } from "./types";
|
|
3
|
+
export declare class CacheManager implements CacheDriver<any, any> {
|
|
4
|
+
/**
|
|
5
|
+
* Cache Driver
|
|
6
|
+
*/
|
|
7
|
+
currentDriver?: CacheDriver<any, any>;
|
|
8
|
+
/**
|
|
9
|
+
* Loaded drivers
|
|
10
|
+
*/
|
|
11
|
+
loadedDrivers: Record<string, CacheDriver<any, any>>;
|
|
12
|
+
/**
|
|
13
|
+
* Configurations list
|
|
14
|
+
*/
|
|
15
|
+
protected configurations: CacheConfigurations;
|
|
16
|
+
/**
|
|
17
|
+
* {@inheritdoc}
|
|
18
|
+
*/
|
|
19
|
+
name: string;
|
|
20
|
+
/**
|
|
21
|
+
* {@inheritdoc}
|
|
22
|
+
*/
|
|
23
|
+
get client(): any;
|
|
24
|
+
/**
|
|
25
|
+
* Set the cache configurations
|
|
26
|
+
*/
|
|
27
|
+
setCacheConfigurations(configurations: CacheConfigurations): void;
|
|
28
|
+
/**
|
|
29
|
+
* Use the given driver
|
|
30
|
+
*/
|
|
31
|
+
use(driver: string | CacheDriver<any, any>): Promise<this>;
|
|
32
|
+
/**
|
|
33
|
+
* {@inheritdoc}
|
|
34
|
+
*/
|
|
35
|
+
get(key: string): Promise<any>;
|
|
36
|
+
/**
|
|
37
|
+
* {@inheritdoc}
|
|
38
|
+
*/
|
|
39
|
+
set(key: string, value: any, ttl?: number): Promise<any>;
|
|
40
|
+
/**
|
|
41
|
+
* {@inheritdoc}
|
|
42
|
+
*/
|
|
43
|
+
remove(key: string): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* {@inheritdoc}
|
|
46
|
+
*/
|
|
47
|
+
removeNamespace(namespace: string): Promise<any>;
|
|
48
|
+
/**
|
|
49
|
+
* {@inheritdoc}
|
|
50
|
+
*/
|
|
51
|
+
flush(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* {@inheritdoc}
|
|
54
|
+
*/
|
|
55
|
+
connect(): Promise<any>;
|
|
56
|
+
/**
|
|
57
|
+
* {@inheritdoc}
|
|
58
|
+
*/
|
|
59
|
+
parseKey(key: string | GenericObject): "" | Promise<string>;
|
|
60
|
+
/**
|
|
61
|
+
* {@inheritdoc}
|
|
62
|
+
*/
|
|
63
|
+
get options(): any;
|
|
64
|
+
/**
|
|
65
|
+
* {@inheritdoc}
|
|
66
|
+
*/
|
|
67
|
+
setOptions(options: GenericObject): any;
|
|
68
|
+
/**
|
|
69
|
+
* Get an instance of the cache driver
|
|
70
|
+
*/
|
|
71
|
+
driver(driverName: string): Promise<CacheDriver<any, any>>;
|
|
72
|
+
/**
|
|
73
|
+
* Initialize the cache manager and pick the default driver
|
|
74
|
+
*/
|
|
75
|
+
init(): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Load the given cache driver name
|
|
78
|
+
*/
|
|
79
|
+
load(driver: string): Promise<CacheDriver<any, any>>;
|
|
80
|
+
/**
|
|
81
|
+
* Register and bind a driver
|
|
82
|
+
*/
|
|
83
|
+
registerDriver(driverName: string, driverClass: DriverClass): void;
|
|
84
|
+
/**
|
|
85
|
+
* Disconnect the cache manager
|
|
86
|
+
*/
|
|
87
|
+
disconnect(): Promise<void>;
|
|
88
|
+
}
|
|
89
|
+
export declare const cache: CacheManager;
|
|
90
|
+
//# sourceMappingURL=cache-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../src/cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAExE,qBAAa,YAAa,YAAW,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;IACxD;;OAEG;IACI,aAAa,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE7C;;OAEG;IACI,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAM;IAEjE;;OAEG;IACH,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAEpC;IAET;;OAEG;IACI,IAAI,SAAkB;IAE7B;;OAEG;IACH,IAAW,MAAM,QAEhB;IAED;;OAEG;IACI,sBAAsB,CAAC,cAAc,EAAE,mBAAmB;IAMjE;;OAEG;IACU,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;IAiBvD;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,MAAM;IAI5B;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAItD;;OAEG;IACU,MAAM,CAAC,GAAG,EAAE,MAAM;IAI/B;;OAEG;IACU,eAAe,CAAC,SAAS,EAAE,MAAM;IAI9C;;OAEG;IACU,KAAK;IAIlB;;OAEG;IACU,OAAO;IAIpB;;OAEG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAI3C;;OAEG;IACH,IAAW,OAAO,QAEjB;IAED;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,aAAa;IAIxC;;OAEG;IACU,MAAM,CAAC,UAAU,EAAE,MAAM;IAItC;;OAEG;IACU,IAAI;IAYjB;;OAEG;IACU,IAAI,CAAC,MAAM,EAAE,MAAM;IAsBhC;;OAEG;IACI,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW;IAIlE;;OAEG;IACU,UAAU;CAGxB;AAED,eAAO,MAAM,KAAK,cAAqB,CAAC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
class CacheManager {
|
|
2
|
+
/**
|
|
3
|
+
* Cache Driver
|
|
4
|
+
*/
|
|
5
|
+
currentDriver;
|
|
6
|
+
/**
|
|
7
|
+
* Loaded drivers
|
|
8
|
+
*/
|
|
9
|
+
loadedDrivers = {};
|
|
10
|
+
/**
|
|
11
|
+
* Configurations list
|
|
12
|
+
*/
|
|
13
|
+
configurations = {
|
|
14
|
+
drivers: {},
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* {@inheritdoc}
|
|
18
|
+
*/
|
|
19
|
+
name = "cacheManager";
|
|
20
|
+
/**
|
|
21
|
+
* {@inheritdoc}
|
|
22
|
+
*/
|
|
23
|
+
get client() {
|
|
24
|
+
return this.currentDriver?.client;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Set the cache configurations
|
|
28
|
+
*/
|
|
29
|
+
setCacheConfigurations(configurations) {
|
|
30
|
+
this.configurations.default = configurations.default;
|
|
31
|
+
this.configurations.drivers = configurations.drivers;
|
|
32
|
+
this.configurations.options = configurations.options;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Use the given driver
|
|
36
|
+
*/
|
|
37
|
+
async use(driver) {
|
|
38
|
+
if (typeof driver === "string") {
|
|
39
|
+
const driverInstance = await this.load(driver);
|
|
40
|
+
if (!driverInstance) {
|
|
41
|
+
throw new Error(`Cache driver ${driver} is not found, please declare it in the cache drivers in the configurations list.`);
|
|
42
|
+
}
|
|
43
|
+
driver = driverInstance;
|
|
44
|
+
}
|
|
45
|
+
this.currentDriver = driver;
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* {@inheritdoc}
|
|
50
|
+
*/
|
|
51
|
+
async get(key) {
|
|
52
|
+
return this.currentDriver?.get(key);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* {@inheritdoc}
|
|
56
|
+
*/
|
|
57
|
+
async set(key, value, ttl) {
|
|
58
|
+
return this.currentDriver?.set(key, value, ttl);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* {@inheritdoc}
|
|
62
|
+
*/
|
|
63
|
+
async remove(key) {
|
|
64
|
+
return this.currentDriver?.remove(key);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* {@inheritdoc}
|
|
68
|
+
*/
|
|
69
|
+
async removeNamespace(namespace) {
|
|
70
|
+
return this.currentDriver?.removeNamespace(namespace);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* {@inheritdoc}
|
|
74
|
+
*/
|
|
75
|
+
async flush() {
|
|
76
|
+
return this.currentDriver?.flush();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* {@inheritdoc}
|
|
80
|
+
*/
|
|
81
|
+
async connect() {
|
|
82
|
+
return this.currentDriver?.connect();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* {@inheritdoc}
|
|
86
|
+
*/
|
|
87
|
+
parseKey(key) {
|
|
88
|
+
return this.currentDriver?.parseKey(key) || "";
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* {@inheritdoc}
|
|
92
|
+
*/
|
|
93
|
+
get options() {
|
|
94
|
+
return this.currentDriver?.options;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* {@inheritdoc}
|
|
98
|
+
*/
|
|
99
|
+
setOptions(options) {
|
|
100
|
+
return this.currentDriver?.setOptions(options);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get an instance of the cache driver
|
|
104
|
+
*/
|
|
105
|
+
async driver(driverName) {
|
|
106
|
+
return this.loadedDrivers[driverName] || (await this.load(driverName));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Initialize the cache manager and pick the default driver
|
|
110
|
+
*/
|
|
111
|
+
async init() {
|
|
112
|
+
const defaultCacheDriverName = this.configurations.default;
|
|
113
|
+
if (!defaultCacheDriverName) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const driver = await this.driver(defaultCacheDriverName);
|
|
117
|
+
await this.use(driver);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Load the given cache driver name
|
|
121
|
+
*/
|
|
122
|
+
async load(driver) {
|
|
123
|
+
if (this.loadedDrivers[driver])
|
|
124
|
+
return this.loadedDrivers[driver];
|
|
125
|
+
const Driver = this.configurations.drivers[driver];
|
|
126
|
+
if (!Driver) {
|
|
127
|
+
throw new Error(`Cache driver ${driver} is not found, please declare it in the cache drivers in the configurations list.`);
|
|
128
|
+
}
|
|
129
|
+
const driverInstance = new Driver();
|
|
130
|
+
driverInstance.setOptions(this.configurations.options[driver]);
|
|
131
|
+
await driverInstance.connect();
|
|
132
|
+
this.loadedDrivers[driver] = driverInstance;
|
|
133
|
+
return driverInstance;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Register and bind a driver
|
|
137
|
+
*/
|
|
138
|
+
registerDriver(driverName, driverClass) {
|
|
139
|
+
this.configurations.drivers[driverName] = driverClass;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Disconnect the cache manager
|
|
143
|
+
*/
|
|
144
|
+
async disconnect() {
|
|
145
|
+
await this.currentDriver?.disconnect();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const cache = new CacheManager();export{CacheManager,cache};//# sourceMappingURL=cache-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-manager.js","sources":["../src/cache-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|