@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,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"}