@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.
Files changed (90) hide show
  1. package/README.md +527 -0
  2. package/cjs/cache-manager.d.ts +90 -0
  3. package/cjs/cache-manager.d.ts.map +1 -0
  4. package/cjs/cache-manager.js +148 -0
  5. package/cjs/cache-manager.js.map +1 -0
  6. package/cjs/drivers/base-cache-driver.d.ts +81 -0
  7. package/cjs/drivers/base-cache-driver.d.ts.map +1 -0
  8. package/cjs/drivers/base-cache-driver.js +123 -0
  9. package/cjs/drivers/base-cache-driver.js.map +1 -0
  10. package/cjs/drivers/file-cache-driver.d.ts +42 -0
  11. package/cjs/drivers/file-cache-driver.d.ts.map +1 -0
  12. package/cjs/drivers/file-cache-driver.js +106 -0
  13. package/cjs/drivers/file-cache-driver.js.map +1 -0
  14. package/cjs/drivers/index.d.ts +8 -0
  15. package/cjs/drivers/index.d.ts.map +1 -0
  16. package/cjs/drivers/lru-memory-cache-driver.d.ts +84 -0
  17. package/cjs/drivers/lru-memory-cache-driver.d.ts.map +1 -0
  18. package/cjs/drivers/lru-memory-cache-driver.js +151 -0
  19. package/cjs/drivers/lru-memory-cache-driver.js.map +1 -0
  20. package/cjs/drivers/memory-cache-driver.d.ts +53 -0
  21. package/cjs/drivers/memory-cache-driver.d.ts.map +1 -0
  22. package/cjs/drivers/memory-cache-driver.js +107 -0
  23. package/cjs/drivers/memory-cache-driver.js.map +1 -0
  24. package/cjs/drivers/memory-extended-cache-driver.d.ts +14 -0
  25. package/cjs/drivers/memory-extended-cache-driver.d.ts.map +1 -0
  26. package/cjs/drivers/memory-extended-cache-driver.js +25 -0
  27. package/cjs/drivers/memory-extended-cache-driver.js.map +1 -0
  28. package/cjs/drivers/null-cache-driver.d.ts +58 -0
  29. package/cjs/drivers/null-cache-driver.d.ts.map +1 -0
  30. package/cjs/drivers/null-cache-driver.js +84 -0
  31. package/cjs/drivers/null-cache-driver.js.map +1 -0
  32. package/cjs/drivers/redis-cache-driver.d.ts +39 -0
  33. package/cjs/drivers/redis-cache-driver.d.ts.map +1 -0
  34. package/cjs/drivers/redis-cache-driver.js +113 -0
  35. package/cjs/drivers/redis-cache-driver.js.map +1 -0
  36. package/cjs/index.d.ts +5 -0
  37. package/cjs/index.d.ts.map +1 -0
  38. package/cjs/index.js +1 -0
  39. package/cjs/index.js.map +1 -0
  40. package/cjs/types.d.ts +193 -0
  41. package/cjs/types.d.ts.map +1 -0
  42. package/cjs/utils.d.ts +20 -0
  43. package/cjs/utils.d.ts.map +1 -0
  44. package/cjs/utils.js +27 -0
  45. package/cjs/utils.js.map +1 -0
  46. package/esm/cache-manager.d.ts +90 -0
  47. package/esm/cache-manager.d.ts.map +1 -0
  48. package/esm/cache-manager.js +148 -0
  49. package/esm/cache-manager.js.map +1 -0
  50. package/esm/drivers/base-cache-driver.d.ts +81 -0
  51. package/esm/drivers/base-cache-driver.d.ts.map +1 -0
  52. package/esm/drivers/base-cache-driver.js +123 -0
  53. package/esm/drivers/base-cache-driver.js.map +1 -0
  54. package/esm/drivers/file-cache-driver.d.ts +42 -0
  55. package/esm/drivers/file-cache-driver.d.ts.map +1 -0
  56. package/esm/drivers/file-cache-driver.js +106 -0
  57. package/esm/drivers/file-cache-driver.js.map +1 -0
  58. package/esm/drivers/index.d.ts +8 -0
  59. package/esm/drivers/index.d.ts.map +1 -0
  60. package/esm/drivers/lru-memory-cache-driver.d.ts +84 -0
  61. package/esm/drivers/lru-memory-cache-driver.d.ts.map +1 -0
  62. package/esm/drivers/lru-memory-cache-driver.js +151 -0
  63. package/esm/drivers/lru-memory-cache-driver.js.map +1 -0
  64. package/esm/drivers/memory-cache-driver.d.ts +53 -0
  65. package/esm/drivers/memory-cache-driver.d.ts.map +1 -0
  66. package/esm/drivers/memory-cache-driver.js +107 -0
  67. package/esm/drivers/memory-cache-driver.js.map +1 -0
  68. package/esm/drivers/memory-extended-cache-driver.d.ts +14 -0
  69. package/esm/drivers/memory-extended-cache-driver.d.ts.map +1 -0
  70. package/esm/drivers/memory-extended-cache-driver.js +25 -0
  71. package/esm/drivers/memory-extended-cache-driver.js.map +1 -0
  72. package/esm/drivers/null-cache-driver.d.ts +58 -0
  73. package/esm/drivers/null-cache-driver.d.ts.map +1 -0
  74. package/esm/drivers/null-cache-driver.js +84 -0
  75. package/esm/drivers/null-cache-driver.js.map +1 -0
  76. package/esm/drivers/redis-cache-driver.d.ts +39 -0
  77. package/esm/drivers/redis-cache-driver.d.ts.map +1 -0
  78. package/esm/drivers/redis-cache-driver.js +113 -0
  79. package/esm/drivers/redis-cache-driver.js.map +1 -0
  80. package/esm/index.d.ts +5 -0
  81. package/esm/index.d.ts.map +1 -0
  82. package/esm/index.js +1 -0
  83. package/esm/index.js.map +1 -0
  84. package/esm/types.d.ts +193 -0
  85. package/esm/types.d.ts.map +1 -0
  86. package/esm/utils.d.ts +20 -0
  87. package/esm/utils.d.ts.map +1 -0
  88. package/esm/utils.js +27 -0
  89. package/esm/utils.js.map +1 -0
  90. 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,5 @@
1
+ export * from "./cache-manager";
2
+ export * from "./drivers";
3
+ export * from "./types";
4
+ export * from "./utils";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -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
@@ -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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"}