@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,148 @@
|
|
|
1
|
+
'use strict';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();exports.CacheManager=CacheManager;exports.cache=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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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { GenericObject } from "@mongez/reinforcements";
|
|
2
|
+
import { CacheData, CacheDriver, CacheOperationType } from "../types";
|
|
3
|
+
export declare abstract class BaseCacheDriver<ClientType, Options extends GenericObject> implements CacheDriver<ClientType, Options> {
|
|
4
|
+
/**
|
|
5
|
+
* CLient driver
|
|
6
|
+
*/
|
|
7
|
+
protected clientDriver: ClientType;
|
|
8
|
+
/**
|
|
9
|
+
* {@inheritdoc}
|
|
10
|
+
*/
|
|
11
|
+
get client(): ClientType;
|
|
12
|
+
/**
|
|
13
|
+
* Set client driver
|
|
14
|
+
*/
|
|
15
|
+
set client(client: ClientType);
|
|
16
|
+
/**
|
|
17
|
+
* Get the cache driver name
|
|
18
|
+
*/
|
|
19
|
+
abstract name: string;
|
|
20
|
+
/**
|
|
21
|
+
* Options list
|
|
22
|
+
*/
|
|
23
|
+
options: Options;
|
|
24
|
+
/**
|
|
25
|
+
* {@inheritdoc}
|
|
26
|
+
*/
|
|
27
|
+
parseKey(key: string | GenericObject): Promise<string>;
|
|
28
|
+
/**
|
|
29
|
+
* {@inheritdoc}
|
|
30
|
+
*/
|
|
31
|
+
setOptions(options: Options): this;
|
|
32
|
+
/**
|
|
33
|
+
* {@inheritdoc}
|
|
34
|
+
*/
|
|
35
|
+
abstract removeNamespace(namespace: string): Promise<any>;
|
|
36
|
+
/**
|
|
37
|
+
* {@inheritdoc}
|
|
38
|
+
*/
|
|
39
|
+
abstract set(key: string | GenericObject, value: any): Promise<any>;
|
|
40
|
+
/**
|
|
41
|
+
* {@inheritdoc}
|
|
42
|
+
*/
|
|
43
|
+
abstract get(key: string | GenericObject): Promise<any>;
|
|
44
|
+
/**
|
|
45
|
+
* {@inheritdoc}
|
|
46
|
+
*/
|
|
47
|
+
abstract remove(key: string | GenericObject): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* {@inheritdoc}
|
|
50
|
+
*/
|
|
51
|
+
abstract flush(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Log the operation
|
|
54
|
+
*/
|
|
55
|
+
protected log(operation: CacheOperationType, key?: string): any;
|
|
56
|
+
/**
|
|
57
|
+
* Get time to live value
|
|
58
|
+
*/
|
|
59
|
+
get ttl(): any;
|
|
60
|
+
/**
|
|
61
|
+
* Get time to live value in milliseconds
|
|
62
|
+
*/
|
|
63
|
+
getTtl(ttl?: number): number;
|
|
64
|
+
/**
|
|
65
|
+
* Prepare data for storage
|
|
66
|
+
*/
|
|
67
|
+
protected prepareDataForStorage(data: any, ttl?: number): CacheData;
|
|
68
|
+
/**
|
|
69
|
+
* Parse fetched data from cache
|
|
70
|
+
*/
|
|
71
|
+
protected parseCachedData(key: string, data: CacheData): Promise<any>;
|
|
72
|
+
/**
|
|
73
|
+
* {@inheritdoc}
|
|
74
|
+
*/
|
|
75
|
+
connect(): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* {@inheritdoc}
|
|
78
|
+
*/
|
|
79
|
+
disconnect(): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=base-cache-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-cache-driver.d.ts","sourceRoot":"","sources":["../../src/drivers/base-cache-driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAuBtE,8BAAsB,eAAe,CAAC,UAAU,EAAE,OAAO,SAAS,aAAa,CAC7E,YAAW,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC;IAE3C;;OAEG;IACH,SAAS,CAAC,YAAY,EAAG,UAAU,CAAC;IAEpC;;OAEG;IACH,IAAW,MAAM,IAOS,UAAU,CALnC;IAED;;OAEG;IACH,IAAW,MAAM,CAAC,MAAM,EAAE,UAAU,EAEnC;IAED;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACI,OAAO,EAAE,OAAO,CAAa;IAEpC;;OAEG;IACU,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAIjD;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO;IAKlC;;OAEG;aACa,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAEhE;;OAEG;aACa,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAE1E;;OAEG;aACa,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAE9D;;OAEG;aACa,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAElE;;OAEG;aACa,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEtC;;OAEG;IACH,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,MAAM;IA8BzD;;OAEG;IACH,IAAW,GAAG,QAEb;IAED;;OAEG;IACI,MAAM,CAAC,GAAG,GAAE,MAAiB;IAMpC;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAavD;;OAEG;cACa,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS;IAa5D;;OAEG;IACU,OAAO;IAKpB;;OAEG;IACU,UAAU;CAGxB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
'use strict';var logger=require('@warlock.js/logger'),utils=require('../utils.js');const messages = {
|
|
2
|
+
clearing: "Clearing namespace",
|
|
3
|
+
cleared: "Namespace cleared",
|
|
4
|
+
fetching: "Fetching key",
|
|
5
|
+
fetched: "Key fetched",
|
|
6
|
+
caching: "Caching key",
|
|
7
|
+
cached: "Key cached",
|
|
8
|
+
flushing: "Flushing cache",
|
|
9
|
+
flushed: "Cache flushed",
|
|
10
|
+
removing: "Removing key",
|
|
11
|
+
removed: "Key removed",
|
|
12
|
+
expired: "Key expired",
|
|
13
|
+
notFound: "Key not found",
|
|
14
|
+
connecting: "Connecting to the cache engine.",
|
|
15
|
+
connected: "Connected to the cache engine.",
|
|
16
|
+
disconnecting: "Disconnecting from the cache engine.",
|
|
17
|
+
disconnected: "Disconnected from the cache engine.",
|
|
18
|
+
error: "Error occurred",
|
|
19
|
+
};
|
|
20
|
+
class BaseCacheDriver {
|
|
21
|
+
/**
|
|
22
|
+
* CLient driver
|
|
23
|
+
*/
|
|
24
|
+
clientDriver;
|
|
25
|
+
/**
|
|
26
|
+
* {@inheritdoc}
|
|
27
|
+
*/
|
|
28
|
+
get client() {
|
|
29
|
+
return (this.clientDriver || this);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Set client driver
|
|
33
|
+
*/
|
|
34
|
+
set client(client) {
|
|
35
|
+
this.clientDriver = client;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Options list
|
|
39
|
+
*/
|
|
40
|
+
options = {};
|
|
41
|
+
/**
|
|
42
|
+
* {@inheritdoc}
|
|
43
|
+
*/
|
|
44
|
+
async parseKey(key) {
|
|
45
|
+
return await utils.parseCacheKey(key, this.options);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* {@inheritdoc}
|
|
49
|
+
*/
|
|
50
|
+
setOptions(options) {
|
|
51
|
+
this.options = options || {};
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Log the operation
|
|
56
|
+
*/
|
|
57
|
+
log(operation, key) {
|
|
58
|
+
if (key) {
|
|
59
|
+
// this will be likely used with file cache driver as it will convert the dot to slash
|
|
60
|
+
// to make it consistent and not to confuse developers we will output the key by making sure it's a dot
|
|
61
|
+
key = key.replaceAll("/", ".");
|
|
62
|
+
}
|
|
63
|
+
if (operation == "notFound" || operation == "expired") {
|
|
64
|
+
return logger.log.error("cache:" + this.name, operation, (key ? key + " " : "") + messages[operation]);
|
|
65
|
+
}
|
|
66
|
+
if (operation.endsWith("ed")) {
|
|
67
|
+
return logger.log.success("cache:" + this.name, operation, (key ? key + " " : "") + messages[operation]);
|
|
68
|
+
}
|
|
69
|
+
logger.log.info("cache:" + this.name, operation, (key ? key + " " : "") + messages[operation]);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get time to live value
|
|
73
|
+
*/
|
|
74
|
+
get ttl() {
|
|
75
|
+
return this.options.ttl !== undefined ? this.options.ttl : Infinity;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get time to live value in milliseconds
|
|
79
|
+
*/
|
|
80
|
+
getTtl(ttl = this.ttl) {
|
|
81
|
+
if (ttl) {
|
|
82
|
+
return new Date().getTime() + ttl * 1000;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Prepare data for storage
|
|
87
|
+
*/
|
|
88
|
+
prepareDataForStorage(data, ttl) {
|
|
89
|
+
const preparedData = {
|
|
90
|
+
data,
|
|
91
|
+
};
|
|
92
|
+
if (ttl) {
|
|
93
|
+
preparedData.ttl = ttl;
|
|
94
|
+
preparedData.expiresAt = this.getTtl(ttl);
|
|
95
|
+
}
|
|
96
|
+
return preparedData;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Parse fetched data from cache
|
|
100
|
+
*/
|
|
101
|
+
async parseCachedData(key, data) {
|
|
102
|
+
this.log("fetched", key);
|
|
103
|
+
if (data.expiresAt && data.expiresAt < Date.now()) {
|
|
104
|
+
console.log("Expired key", key);
|
|
105
|
+
this.remove(key);
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
return data.data || null;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* {@inheritdoc}
|
|
112
|
+
*/
|
|
113
|
+
async connect() {
|
|
114
|
+
this.log("connecting");
|
|
115
|
+
this.log("connected");
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* {@inheritdoc}
|
|
119
|
+
*/
|
|
120
|
+
async disconnect() {
|
|
121
|
+
this.log("disconnected");
|
|
122
|
+
}
|
|
123
|
+
}exports.BaseCacheDriver=BaseCacheDriver;//# sourceMappingURL=base-cache-driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-cache-driver.js","sources":["../../src/drivers/base-cache-driver.ts"],"sourcesContent":[null],"names":["parseCacheKey","log"],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { GenericObject } from "@mongez/reinforcements";
|
|
2
|
+
import { CacheDriver, FileCacheOptions } from "../types";
|
|
3
|
+
import { BaseCacheDriver } from "./base-cache-driver";
|
|
4
|
+
export declare class FileCacheDriver extends BaseCacheDriver<FileCacheDriver, FileCacheOptions> implements CacheDriver<FileCacheDriver, FileCacheOptions> {
|
|
5
|
+
/**
|
|
6
|
+
* {@inheritdoc}
|
|
7
|
+
*/
|
|
8
|
+
name: string;
|
|
9
|
+
/**
|
|
10
|
+
* Get the cache directory
|
|
11
|
+
*/
|
|
12
|
+
get directory(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Get file name
|
|
15
|
+
*/
|
|
16
|
+
get fileName(): string;
|
|
17
|
+
/**
|
|
18
|
+
* {@inheritdoc}
|
|
19
|
+
*/
|
|
20
|
+
removeNamespace(namespace: string): Promise<this>;
|
|
21
|
+
/**
|
|
22
|
+
* {@inheritdoc}
|
|
23
|
+
*/
|
|
24
|
+
set(key: string | GenericObject, value: any, ttl?: number): Promise<this>;
|
|
25
|
+
/**
|
|
26
|
+
* {@inheritdoc}
|
|
27
|
+
*/
|
|
28
|
+
get(key: string | GenericObject): Promise<any>;
|
|
29
|
+
/**
|
|
30
|
+
* {@inheritdoc}
|
|
31
|
+
*/
|
|
32
|
+
remove(key: string | GenericObject): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* {@inheritdoc}
|
|
35
|
+
*/
|
|
36
|
+
flush(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* {@inheritdoc}
|
|
39
|
+
*/
|
|
40
|
+
connect(): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=file-cache-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-cache-driver.d.ts","sourceRoot":"","sources":["../../src/drivers/file-cache-driver.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,eACX,SAAQ,eAAe,CAAC,eAAe,EAAE,gBAAgB,CACzD,YAAW,WAAW,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAEzD;;OAEG;IACI,IAAI,SAAU;IAErB;;OAEG;IACH,IAAW,SAAS,WAUnB;IAED;;OAEG;IACH,IAAW,QAAQ,WAQlB;IAED;;OAEG;IACU,eAAe,CAAC,SAAS,EAAE,MAAM;IAc9C;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM;IAkBtE;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAoB5C;;OAEG;IACU,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAe/C;;OAEG;IACU,KAAK;IAYlB;;OAEG;IACU,OAAO;CAKrB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
'use strict';var fs=require('@mongez/fs'),path=require('path'),baseCacheDriver=require('./base-cache-driver.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var path__default=/*#__PURE__*/_interopDefault(path);class FileCacheDriver extends baseCacheDriver.BaseCacheDriver {
|
|
2
|
+
/**
|
|
3
|
+
* {@inheritdoc}
|
|
4
|
+
*/
|
|
5
|
+
name = "file";
|
|
6
|
+
/**
|
|
7
|
+
* Get the cache directory
|
|
8
|
+
*/
|
|
9
|
+
get directory() {
|
|
10
|
+
const directory = this.options.directory;
|
|
11
|
+
if (typeof directory === "function") {
|
|
12
|
+
return directory();
|
|
13
|
+
}
|
|
14
|
+
throw new Error("Cache directory is not defined, please define it in the file driver options");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get file name
|
|
18
|
+
*/
|
|
19
|
+
get fileName() {
|
|
20
|
+
const fileName = this.options.fileName;
|
|
21
|
+
if (typeof fileName === "function") {
|
|
22
|
+
return fileName();
|
|
23
|
+
}
|
|
24
|
+
return "cache.json";
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* {@inheritdoc}
|
|
28
|
+
*/
|
|
29
|
+
async removeNamespace(namespace) {
|
|
30
|
+
this.log("cleared", namespace);
|
|
31
|
+
try {
|
|
32
|
+
await fs.removeDirectoryAsync(path__default.default.resolve(this.directory, namespace));
|
|
33
|
+
this.log("cleared", namespace);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
//
|
|
37
|
+
}
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* {@inheritdoc}
|
|
42
|
+
*/
|
|
43
|
+
async set(key, value, ttl) {
|
|
44
|
+
key = await this.parseKey(key);
|
|
45
|
+
this.log("caching", key);
|
|
46
|
+
const data = this.prepareDataForStorage(value, ttl);
|
|
47
|
+
const fileDirectory = path__default.default.resolve(this.directory, key);
|
|
48
|
+
await fs.ensureDirectoryAsync(fileDirectory);
|
|
49
|
+
await fs.putJsonFileAsync(path__default.default.resolve(fileDirectory, this.fileName), data);
|
|
50
|
+
this.log("cached", key);
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* {@inheritdoc}
|
|
55
|
+
*/
|
|
56
|
+
async get(key) {
|
|
57
|
+
const parsedKey = await this.parseKey(key);
|
|
58
|
+
this.log("fetching", parsedKey);
|
|
59
|
+
const fileDirectory = path__default.default.resolve(this.directory, parsedKey);
|
|
60
|
+
try {
|
|
61
|
+
const value = await fs.getJsonFileAsync(path__default.default.resolve(fileDirectory, this.fileName));
|
|
62
|
+
return this.parseCachedData(parsedKey, value);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
this.log("notFound", parsedKey);
|
|
66
|
+
this.remove(key);
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* {@inheritdoc}
|
|
72
|
+
*/
|
|
73
|
+
async remove(key) {
|
|
74
|
+
const parsedKey = await this.parseKey(key);
|
|
75
|
+
this.log("removing", parsedKey);
|
|
76
|
+
const fileDirectory = path__default.default.resolve(this.directory, parsedKey);
|
|
77
|
+
try {
|
|
78
|
+
await fs.removeDirectoryAsync(fileDirectory);
|
|
79
|
+
this.log("removed", parsedKey);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
//
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* {@inheritdoc}
|
|
87
|
+
*/
|
|
88
|
+
async flush() {
|
|
89
|
+
this.log("flushing");
|
|
90
|
+
if (this.options.globalPrefix) {
|
|
91
|
+
await this.removeNamespace("");
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
await fs.removeDirectoryAsync(this.directory);
|
|
95
|
+
}
|
|
96
|
+
this.log("flushed");
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* {@inheritdoc}
|
|
100
|
+
*/
|
|
101
|
+
async connect() {
|
|
102
|
+
this.log("connecting");
|
|
103
|
+
await fs.ensureDirectoryAsync(this.directory);
|
|
104
|
+
this.log("connected");
|
|
105
|
+
}
|
|
106
|
+
}exports.FileCacheDriver=FileCacheDriver;//# sourceMappingURL=file-cache-driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-cache-driver.js","sources":["../../src/drivers/file-cache-driver.ts"],"sourcesContent":[null],"names":["BaseCacheDriver","removeDirectoryAsync","path","ensureDirectoryAsync","putJsonFileAsync","getJsonFileAsync"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./base-cache-driver";
|
|
2
|
+
export * from "./file-cache-driver";
|
|
3
|
+
export * from "./lru-memory-cache-driver";
|
|
4
|
+
export * from "./memory-cache-driver";
|
|
5
|
+
export * from "./memory-extended-cache-driver";
|
|
6
|
+
export * from "./null-cache-driver";
|
|
7
|
+
export * from "./redis-cache-driver";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drivers/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { GenericObject } from "@mongez/reinforcements";
|
|
2
|
+
import { CacheDriver, LRUMemoryCacheOptions } from "../types";
|
|
3
|
+
import { BaseCacheDriver } from "./base-cache-driver";
|
|
4
|
+
declare class CacheNode {
|
|
5
|
+
key: string;
|
|
6
|
+
value: any;
|
|
7
|
+
next: CacheNode | null;
|
|
8
|
+
prev: CacheNode | null;
|
|
9
|
+
constructor(key: string, value: any);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* LRU Memory Cache Driver
|
|
13
|
+
* The concept of LRU is to remove the least recently used data
|
|
14
|
+
* whenever the cache is full
|
|
15
|
+
* The question that resides here is how to tell the cache is full?
|
|
16
|
+
*/
|
|
17
|
+
export declare class LRUMemoryCacheDriver extends BaseCacheDriver<LRUMemoryCacheDriver, LRUMemoryCacheOptions> implements CacheDriver<LRUMemoryCacheDriver, LRUMemoryCacheOptions> {
|
|
18
|
+
/**
|
|
19
|
+
* {@inheritdoc}
|
|
20
|
+
*/
|
|
21
|
+
name: string;
|
|
22
|
+
/**
|
|
23
|
+
* Cache map
|
|
24
|
+
*/
|
|
25
|
+
protected cache: Map<string, CacheNode>;
|
|
26
|
+
/**
|
|
27
|
+
* Head of the cache
|
|
28
|
+
*/
|
|
29
|
+
protected head: CacheNode;
|
|
30
|
+
/**
|
|
31
|
+
* Tail of the cache
|
|
32
|
+
*/
|
|
33
|
+
protected tail: CacheNode;
|
|
34
|
+
/**
|
|
35
|
+
* {@inheritdoc}
|
|
36
|
+
*/
|
|
37
|
+
constructor();
|
|
38
|
+
/**
|
|
39
|
+
* Initialize the cache
|
|
40
|
+
*/
|
|
41
|
+
init(): void;
|
|
42
|
+
/**
|
|
43
|
+
* {@inheritdoc}
|
|
44
|
+
*/
|
|
45
|
+
removeNamespace(_namespace: string): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* {@inheritdoc}
|
|
48
|
+
*/
|
|
49
|
+
set(key: string | GenericObject, value: any, _ttl?: number): Promise<this>;
|
|
50
|
+
/**
|
|
51
|
+
* Move the node to the head
|
|
52
|
+
*/
|
|
53
|
+
protected moveHead(node: CacheNode): void;
|
|
54
|
+
/**
|
|
55
|
+
* Remove the node from the cache
|
|
56
|
+
*/
|
|
57
|
+
protected removeNode(node: CacheNode): void;
|
|
58
|
+
/**
|
|
59
|
+
* Add the node to the head
|
|
60
|
+
*/
|
|
61
|
+
protected addNode(node: CacheNode): void;
|
|
62
|
+
/**
|
|
63
|
+
* Remove the tail node
|
|
64
|
+
*/
|
|
65
|
+
protected removeTail(): void;
|
|
66
|
+
/**
|
|
67
|
+
* {@inheritdoc}
|
|
68
|
+
*/
|
|
69
|
+
get(key: string | GenericObject): Promise<any>;
|
|
70
|
+
/**
|
|
71
|
+
* {@inheritdoc}
|
|
72
|
+
*/
|
|
73
|
+
remove(key: string | GenericObject): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* {@inheritdoc}
|
|
76
|
+
*/
|
|
77
|
+
flush(): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Get lru capacity
|
|
80
|
+
*/
|
|
81
|
+
get capacity(): number;
|
|
82
|
+
}
|
|
83
|
+
export {};
|
|
84
|
+
//# sourceMappingURL=lru-memory-cache-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru-memory-cache-driver.d.ts","sourceRoot":"","sources":["../../src/drivers/lru-memory-cache-driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,cAAM,SAAS;IAIJ,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,GAAG;IAJZ,IAAI,EAAE,SAAS,GAAG,IAAI,CAAQ;IAC9B,IAAI,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAE5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,GAAG;CAIpB;AAED;;;;;GAKG;AACH,qBAAa,oBACX,SAAQ,eAAe,CAAC,oBAAoB,EAAE,qBAAqB,CACnE,YAAW,WAAW,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;IAEnE;;OAEG;IACI,IAAI,SAAS;IAEpB;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAEpD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS,CAA2B;IAEpD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS,CAA2B;IAEpD;;OAEG;;IAOH;;OAEG;IACI,IAAI;IAKX;;OAEG;IACU,eAAe,CAAC,UAAU,EAAE,MAAM;IAI/C;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM;IA2BvE;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS;IAKlC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS;IAKpC;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS;IAOjC;;OAEG;IACH,SAAS,CAAC,UAAU;IAQpB;;OAEG;IACU,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAmB5C;;OAEG;IACU,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa;IAe/C;;OAEG;IACU,KAAK;IAUlB;;OAEG;IACH,IAAW,QAAQ,WAElB;CACF"}
|