@arikajs/cache 0.0.4 → 0.0.5

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 (92) hide show
  1. package/README.md +62 -118
  2. package/dist/CacheLock.d.ts +38 -0
  3. package/dist/CacheLock.d.ts.map +1 -0
  4. package/dist/CacheLock.js +100 -0
  5. package/dist/CacheLock.js.map +1 -0
  6. package/dist/CacheManager.d.ts +8 -1
  7. package/dist/CacheManager.d.ts.map +1 -1
  8. package/dist/CacheManager.js +17 -2
  9. package/dist/CacheManager.js.map +1 -1
  10. package/dist/Contracts/Store.d.ts +4 -0
  11. package/dist/Contracts/Store.d.ts.map +1 -1
  12. package/dist/Drivers/DatabaseDriver.d.ts +6 -1
  13. package/dist/Drivers/DatabaseDriver.d.ts.map +1 -1
  14. package/dist/Drivers/DatabaseDriver.js +70 -10
  15. package/dist/Drivers/DatabaseDriver.js.map +1 -1
  16. package/dist/Drivers/FileDriver.d.ts +19 -0
  17. package/dist/Drivers/FileDriver.d.ts.map +1 -0
  18. package/dist/Drivers/FileDriver.js +111 -0
  19. package/dist/Drivers/FileDriver.js.map +1 -0
  20. package/dist/Drivers/MemoryDriver.d.ts +4 -0
  21. package/dist/Drivers/MemoryDriver.d.ts.map +1 -1
  22. package/dist/Drivers/MemoryDriver.js +25 -0
  23. package/dist/Drivers/MemoryDriver.js.map +1 -1
  24. package/dist/Drivers/RedisDriver.d.ts +4 -0
  25. package/dist/Drivers/RedisDriver.d.ts.map +1 -1
  26. package/dist/Drivers/RedisDriver.js +46 -0
  27. package/dist/Drivers/RedisDriver.js.map +1 -1
  28. package/dist/Repository.d.ts +6 -0
  29. package/dist/Repository.d.ts.map +1 -1
  30. package/dist/Repository.js +42 -0
  31. package/dist/Repository.js.map +1 -1
  32. package/dist/TagSet.d.ts +24 -0
  33. package/dist/TagSet.d.ts.map +1 -0
  34. package/dist/TagSet.js +46 -0
  35. package/dist/TagSet.js.map +1 -0
  36. package/dist/TaggedStore.d.ts +21 -0
  37. package/dist/TaggedStore.d.ts.map +1 -0
  38. package/dist/TaggedStore.js +100 -0
  39. package/dist/TaggedStore.js.map +1 -0
  40. package/dist/index.d.ts +5 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +6 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/src/CacheLock.d.ts +38 -0
  45. package/dist/src/CacheLock.d.ts.map +1 -0
  46. package/dist/src/CacheLock.js +100 -0
  47. package/dist/src/CacheLock.js.map +1 -0
  48. package/dist/src/CacheManager.d.ts +35 -0
  49. package/dist/src/CacheManager.d.ts.map +1 -0
  50. package/dist/src/CacheManager.js +79 -0
  51. package/dist/src/CacheManager.js.map +1 -0
  52. package/dist/src/Contracts/Store.d.ts +15 -0
  53. package/dist/src/Contracts/Store.d.ts.map +1 -0
  54. package/dist/src/Contracts/Store.js +3 -0
  55. package/dist/src/Contracts/Store.js.map +1 -0
  56. package/dist/src/Drivers/DatabaseDriver.d.ts +21 -0
  57. package/dist/src/Drivers/DatabaseDriver.d.ts.map +1 -0
  58. package/dist/src/Drivers/DatabaseDriver.js +146 -0
  59. package/dist/src/Drivers/DatabaseDriver.js.map +1 -0
  60. package/dist/src/Drivers/FileDriver.d.ts +19 -0
  61. package/dist/src/Drivers/FileDriver.d.ts.map +1 -0
  62. package/dist/src/Drivers/FileDriver.js +111 -0
  63. package/dist/src/Drivers/FileDriver.js.map +1 -0
  64. package/dist/src/Drivers/MemoryDriver.d.ts +22 -0
  65. package/dist/src/Drivers/MemoryDriver.d.ts.map +1 -0
  66. package/dist/src/Drivers/MemoryDriver.js +78 -0
  67. package/dist/src/Drivers/MemoryDriver.js.map +1 -0
  68. package/dist/src/Drivers/RedisDriver.d.ts +24 -0
  69. package/dist/src/Drivers/RedisDriver.d.ts.map +1 -0
  70. package/dist/src/Drivers/RedisDriver.js +124 -0
  71. package/dist/src/Drivers/RedisDriver.js.map +1 -0
  72. package/dist/src/Repository.d.ts +25 -0
  73. package/dist/src/Repository.d.ts.map +1 -0
  74. package/dist/src/Repository.js +110 -0
  75. package/dist/src/Repository.js.map +1 -0
  76. package/dist/src/TagSet.d.ts +24 -0
  77. package/dist/src/TagSet.d.ts.map +1 -0
  78. package/dist/src/TagSet.js +46 -0
  79. package/dist/src/TagSet.js.map +1 -0
  80. package/dist/src/TaggedStore.d.ts +21 -0
  81. package/dist/src/TaggedStore.d.ts.map +1 -0
  82. package/dist/src/TaggedStore.js +100 -0
  83. package/dist/src/TaggedStore.js.map +1 -0
  84. package/dist/src/index.d.ts +29 -0
  85. package/dist/src/index.d.ts.map +1 -0
  86. package/dist/src/index.js +46 -0
  87. package/dist/src/index.js.map +1 -0
  88. package/dist/tests/Cache.test.d.ts +2 -0
  89. package/dist/tests/Cache.test.d.ts.map +1 -0
  90. package/dist/tests/Cache.test.js +126 -0
  91. package/dist/tests/Cache.test.js.map +1 -0
  92. package/package.json +7 -5
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  `@arikajs/cache` provides a simple, fast, and driver-based caching system for the ArikaJS framework.
5
5
 
6
- It allows applications to store frequently accessed data in memory or external stores to improve performance and reduce repeated computation or database queries.
6
+ It allows applications to store frequently accessed data in memory, files, or external stores to improve performance and reduce repeated computation or database queries.
7
7
 
8
8
  ---
9
9
 
@@ -11,10 +11,11 @@ It allows applications to store frequently accessed data in memory or external s
11
11
 
12
12
  - **Unified cache API**: Consistent interface across all drivers
13
13
  - **Multiple cache stores**: Support for various storage backends
14
- - **Driver-based architecture**: Pluggable storage drivers
15
- - **In-memory cache (v1)**: High-performance default storage
14
+ - **File-based cache (Default)**: Persistent storage without external dependencies
15
+ - **Bulk Operations**: Fetch or store multiple items in one network trip
16
+ - **Atomic Cache Locks**: Distributed locking for concurrency control
17
+ - **Cache Tags**: Logical grouping of cache keys for selective invalidation
16
18
  - **TTL (time-to-live) support**: Automatic expiration of cached items
17
- - **Cache tagging**: Logical grouping of cache keys (planned)
18
19
  - **TypeScript-first design**: Strong typing for keys and values
19
20
 
20
21
  ---
@@ -23,10 +24,6 @@ It allows applications to store frequently accessed data in memory or external s
23
24
 
24
25
  ```bash
25
26
  npm install @arikajs/cache
26
- # or
27
- yarn add @arikajs/cache
28
- # or
29
- pnpm add @arikajs/cache
30
27
  ```
31
28
 
32
29
  ---
@@ -34,152 +31,105 @@ pnpm add @arikajs/cache
34
31
  ## 🚀 Basic Usage
35
32
 
36
33
  ```ts
37
- import { Cache } from '@arikajs/cache';
34
+ import { Cache } from 'arikajs';
38
35
 
39
36
  // Store a value for 60 seconds
40
37
  await Cache.put('users.count', 150, 60);
41
38
 
42
39
  // Retrieve a value
43
40
  const count = await Cache.get('users.count');
44
- ```
45
41
 
46
- ### 🧹 Cache Helpers
42
+ // Remove an item
43
+ await Cache.forget('users.count');
47
44
 
48
- ```ts
49
- // Get an item, or execute the callback and store the result if it doesn't exist
50
- await Cache.remember('settings', 300, async () => {
51
- return loadSettings();
52
- });
45
+ // Clear all cache
46
+ await Cache.flush();
53
47
  ```
54
48
 
55
49
  ---
56
50
 
57
- ## ⚙️ Configuration
51
+ ## 🏎️ Drivers
52
+
53
+ | Driver | Status | Description |
54
+ | :--- | :--- | :--- |
55
+ | **File** | ✅ Default | Persistent local storage (stores in `storage/cache/data`) |
56
+ | **Memory** | ✅ Supported | High-performance ephemeral in-memory storage |
57
+ | **Database** | ✅ Supported | Persistent cache using your database (MySQL/PostgreSQL) |
58
+ | **Redis** | ✅ Supported | Distributed cache (Standalone, Sentinel, Cluster) |
59
+
60
+ ---
61
+
62
+ ## 📂 File Cache (Default)
63
+
64
+ The `file` driver is the default cache store. It stores data in your application's file system, typically under `storage/cache/data`.
65
+
66
+ ### Configuration in `config/cache.ts`:
58
67
 
59
68
  ```ts
60
69
  export default {
61
- default: process.env.CACHE_STORE || 'database',
70
+ default: process.env.CACHE_STORE || 'file',
62
71
 
63
72
  stores: {
64
- memory: {
65
- driver: 'memory',
73
+ file: {
74
+ driver: 'file',
75
+ path: 'storage/cache/data',
66
76
  },
67
-
68
- database: {
69
- driver: 'database',
70
- table: 'cache',
71
- connection: null,
72
- },
73
- },
74
-
75
- prefix: process.env.CACHE_PREFIX || 'arika_cache',
76
- };
77
+ // ...
78
+ }
79
+ }
77
80
  ```
78
81
 
79
82
  ---
80
83
 
81
- | Driver | Status | Description |
82
- | :--- | :--- | :--- |
83
- | **Memory** | Supported | Default in-memory ephemeral storage |
84
- | **Database** | ✅ Supported | Persistent cache using your database |
85
- | **Redis** | ✅ Supported | High-performance distributed cache (Standalone, Sentinel, Cluster) |
84
+ ## 🛠 Cache Commands
85
+
86
+ ArikaJS CLI provides several commands to manage your cache:
87
+
88
+ ### Clear Cache
89
+ Flush the entire application cache (or a specific store):
90
+ ```bash
91
+ arika cache:clear
92
+ arika cache:clear redis
93
+ ```
94
+
95
+ ### Setup Database Cache
96
+ If you want to use the `database` driver, you must create the cache table:
97
+ ```bash
98
+ arika cache:table
99
+ arika migrate
100
+ ```
86
101
 
87
102
  ---
88
103
 
89
104
  ## 🏎️ Redis Cache Setup
90
105
 
91
- The Redis driver supports Standalone, Sentinel, and Cluster modes.
92
-
93
106
  ### 1. Install Redis Package
94
-
95
107
  ```bash
96
108
  npm install ioredis
97
109
  ```
98
110
 
99
111
  ### 2. Configure Environment
100
-
101
- Add Redis settings to your `.env` file:
102
-
103
112
  ```env
104
113
  CACHE_STORE=redis
105
-
106
114
  REDIS_HOST=127.0.0.1
107
- REDIS_PASSWORD=null
108
- REDIS_PORT=6379
109
- REDIS_DB=0
110
- ```
111
-
112
- ### 3. Advanced Redis Configuration
113
-
114
- ArikaJS supports Sentinel and Cluster modes. Configure these in `config/cache.ts`:
115
-
116
- #### Sentinel Mode
117
- ```ts
118
- redis: {
119
- driver: 'redis',
120
- connection: 'default',
121
- mode: 'sentinel',
122
- nodes: [
123
- { host: '127.0.0.1', port: 26379 },
124
- { host: '127.0.0.1', port: 26380 },
125
- ],
126
- name: 'mymaster',
127
- },
128
- ```
129
-
130
- #### Cluster Mode
131
- ```ts
132
- redis: {
133
- driver: 'redis',
134
- mode: 'cluster',
135
- nodes: [
136
- { host: '127.0.0.1', port: 7000 },
137
- { host: '127.0.0.1', port: 7001 },
138
- ],
139
- },
140
115
  ```
141
116
 
142
117
  ---
143
118
 
144
- ## 🛠 Database Cache Setup
119
+ ## 🔒 Atomic Cache Locks
145
120
 
146
- To use the database driver, you need to create the `cache` table migration:
147
-
148
- ```bash
149
- arika cache:table
150
- arika migrate
151
- ```
121
+ Prevent race conditions by using atomic locks:
152
122
 
153
- ---
154
-
155
- ## 🔗 Integration
156
-
157
- - **`@arikajs/http`** → response caching
158
- - **`@arikajs/view`** → view fragments
159
- - **`@arikajs/queue`** → cached jobs
160
- - **`@arikajs/auth`** → session storage
161
-
162
- ---
163
-
164
- ## 🧠 Architecture (High Level)
165
-
166
- ```
167
- cache/
168
- ├── src/
169
- │ ├── CacheManager.ts
170
- │ ├── Repository.ts
171
- │ ├── Drivers/
172
- │ │ ├── MemoryDriver.ts
173
- │ │ ├── DatabaseDriver.ts
174
- │ │ └── RedisDriver.ts
175
- │ ├── Contracts/
176
- │ │ └── Store.ts
177
- │ └── index.ts
178
- ├── tests/
179
- ├── package.json
180
- ├── tsconfig.json
181
- ├── README.md
182
- └── LICENSE
123
+ ```ts
124
+ const lock = Cache.lock('processing-invoice-123', 10);
125
+
126
+ if (await lock.acquire()) {
127
+ try {
128
+ // Critical section
129
+ } finally {
130
+ await lock.release();
131
+ }
132
+ }
183
133
  ```
184
134
 
185
135
  ---
@@ -187,9 +137,3 @@ cache/
187
137
  ## 📄 License
188
138
 
189
139
  `@arikajs/cache` is open-source software licensed under the **MIT License**.
190
-
191
- ---
192
-
193
- ## 🧭 Philosophy
194
-
195
- > "Fast data wins."
@@ -0,0 +1,38 @@
1
+ import { Store } from './Contracts/Store';
2
+ export declare class CacheLock {
3
+ protected store: Store;
4
+ protected name: string;
5
+ protected seconds: number;
6
+ protected ownerId: string | null;
7
+ constructor(store: Store, name: string, seconds: number, ownerId?: string | null);
8
+ /**
9
+ * Attempt to acquire the lock. If a callback is provided, it will be executed
10
+ * and the lock will automatically be released afterward.
11
+ */
12
+ get(callback?: () => Promise<any>): Promise<any>;
13
+ /**
14
+ * Atomically attempt to acquire the lock.
15
+ */
16
+ acquire(): Promise<boolean>;
17
+ /**
18
+ * Release the lock, but only if we still own it.
19
+ */
20
+ release(): Promise<boolean>;
21
+ /**
22
+ * Force the lock to release, discarding ownership checks.
23
+ */
24
+ forceRelease(): Promise<void>;
25
+ /**
26
+ * Attempt to acquire the lock, blocking for a given number of seconds.
27
+ */
28
+ block(seconds: number, callback?: () => Promise<any>): Promise<any>;
29
+ /**
30
+ * Get the current owner ID assigned to this lock.
31
+ */
32
+ owner(): string;
33
+ /**
34
+ * Generate a unique identifier for the lock owner.
35
+ */
36
+ protected generateOwnerId(): string;
37
+ }
38
+ //# sourceMappingURL=CacheLock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheLock.d.ts","sourceRoot":"","sources":["../src/CacheLock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,qBAAa,SAAS;IAEd,SAAS,CAAC,KAAK,EAAE,KAAK;IACtB,SAAS,CAAC,IAAI,EAAE,MAAM;IACtB,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;gBAHtB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAM,GAAG,IAAW;IAO3C;;;OAGG;IACU,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAc7D;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAaxC;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAWxC;;OAEG;IACU,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C;;OAEG;IACU,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAwBhF;;OAEG;IACI,KAAK,IAAI,MAAM;IAItB;;OAEG;IACH,SAAS,CAAC,eAAe,IAAI,MAAM;CAGtC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheLock = void 0;
4
+ class CacheLock {
5
+ constructor(store, name, seconds, ownerId = null) {
6
+ this.store = store;
7
+ this.name = name;
8
+ this.seconds = seconds;
9
+ this.ownerId = ownerId;
10
+ if (!this.ownerId) {
11
+ this.ownerId = this.generateOwnerId();
12
+ }
13
+ }
14
+ /**
15
+ * Attempt to acquire the lock. If a callback is provided, it will be executed
16
+ * and the lock will automatically be released afterward.
17
+ */
18
+ async get(callback) {
19
+ const acquired = await this.acquire();
20
+ if (acquired && callback) {
21
+ try {
22
+ return await callback();
23
+ }
24
+ finally {
25
+ await this.release();
26
+ }
27
+ }
28
+ return acquired;
29
+ }
30
+ /**
31
+ * Atomically attempt to acquire the lock.
32
+ */
33
+ async acquire() {
34
+ if (!this.store.add) {
35
+ // Fallback for custom drivers that don't implement atomic add.
36
+ // THIS IS NOT COMPLETELY ATOMIC in distributed systems.
37
+ if (await this.store.get(this.name) !== null) {
38
+ return false;
39
+ }
40
+ await this.store.put(this.name, this.ownerId, this.seconds);
41
+ return true;
42
+ }
43
+ return await this.store.add(this.name, this.ownerId, this.seconds);
44
+ }
45
+ /**
46
+ * Release the lock, but only if we still own it.
47
+ */
48
+ async release() {
49
+ const currentOwner = await this.store.get(this.name);
50
+ if (currentOwner === this.ownerId) {
51
+ await this.store.forget(this.name);
52
+ return true;
53
+ }
54
+ return false;
55
+ }
56
+ /**
57
+ * Force the lock to release, discarding ownership checks.
58
+ */
59
+ async forceRelease() {
60
+ await this.store.forget(this.name);
61
+ }
62
+ /**
63
+ * Attempt to acquire the lock, blocking for a given number of seconds.
64
+ */
65
+ async block(seconds, callback) {
66
+ const startingTime = Date.now();
67
+ while (true) {
68
+ if (await this.acquire()) {
69
+ if (callback) {
70
+ try {
71
+ return await callback();
72
+ }
73
+ finally {
74
+ await this.release();
75
+ }
76
+ }
77
+ return true;
78
+ }
79
+ if (Date.now() - startingTime >= seconds * 1000) {
80
+ throw new Error(`Could not acquire cache lock [${this.name}] within ${seconds} seconds.`);
81
+ }
82
+ // Sleep for 250ms before trying again
83
+ await new Promise(resolve => setTimeout(resolve, 250));
84
+ }
85
+ }
86
+ /**
87
+ * Get the current owner ID assigned to this lock.
88
+ */
89
+ owner() {
90
+ return this.ownerId;
91
+ }
92
+ /**
93
+ * Generate a unique identifier for the lock owner.
94
+ */
95
+ generateOwnerId() {
96
+ return Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
97
+ }
98
+ }
99
+ exports.CacheLock = CacheLock;
100
+ //# sourceMappingURL=CacheLock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheLock.js","sourceRoot":"","sources":["../src/CacheLock.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,14 @@ export declare class CacheManager {
5
5
  protected stores: Map<string, Repository>;
6
6
  protected customCreators: Map<string, (config: any) => Store>;
7
7
  protected database: any;
8
- constructor(config: any, database?: any);
8
+ protected basePath: string;
9
+ constructor(config: any, database?: any, basePath?: string);
9
10
  store(name?: string): Repository;
10
11
  protected resolve(name: string): Repository;
11
12
  protected createMemoryDriver(): Store;
12
13
  protected createDatabaseDriver(config: any): Store;
13
14
  protected createRedisDriver(config: any): Store;
15
+ protected createFileDriver(config: any): Store;
14
16
  extend(driver: string, callback: (config: any) => Store): this;
15
17
  get(key: string, defaultValue?: any): Promise<any>;
16
18
  put(key: string, value: any, seconds: number): Promise<void>;
@@ -24,5 +26,10 @@ export declare class CacheManager {
24
26
  pull(key: string, defaultValue?: any): Promise<any>;
25
27
  remember(key: string, seconds: number, callback: () => Promise<any>): Promise<any>;
26
28
  rememberForever(key: string, callback: () => Promise<any>): Promise<any>;
29
+ getMultiple(keys: string[]): Promise<Record<string, any>>;
30
+ putMultiple(values: Record<string, any>, seconds: number): Promise<void>;
31
+ forgetMultiple(keys: string[]): Promise<void>;
32
+ lock(name: string, seconds?: number, owner?: string | null): import("./CacheLock").CacheLock;
33
+ tags(names: string | string[]): Repository;
27
34
  }
28
35
  //# sourceMappingURL=CacheManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../src/CacheManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,qBAAa,YAAY;IAKT,SAAS,CAAC,MAAM,EAAE,GAAG;IAJjC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAa;IACtD,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,KAAK,CAAC,CAAa;IAC1E,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC;gBAEF,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG;IAI1C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU;IAUvC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAoB3C,SAAS,CAAC,kBAAkB,IAAI,KAAK;IAIrC,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK;IAQlD,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK;IAOxC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,KAAK,GAAG,IAAI;IAMxD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAC5C,GAAG,CAAC,GAAG,EAAE,MAAM;IACf,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAC/B,MAAM,CAAC,GAAG,EAAE,MAAM;IAClB,KAAK;IACL,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;IACxC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAC5C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;IACnE,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;CACzE"}
1
+ {"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../src/CacheManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,qBAAa,YAAY;IAMT,SAAS,CAAC,MAAM,EAAE,GAAG;IALjC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAa;IACtD,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,KAAK,CAAC,CAAa;IAC1E,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC;IACxB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEL,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAE,MAAsB;IAK5E,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU;IAUvC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAoB3C,SAAS,CAAC,kBAAkB,IAAI,KAAK;IAIrC,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK;IASlD,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK;IAO/C,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK;IAYvC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,KAAK,GAAG,IAAI;IAMxD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAC5C,GAAG,CAAC,GAAG,EAAE,MAAM;IACf,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAC/B,MAAM,CAAC,GAAG,EAAE,MAAM;IAClB,KAAK;IACL,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;IACxC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAC5C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;IACnE,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;IAGzD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE;IAC1B,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM;IACxD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;IACnC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW;IACnE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CACvC"}
@@ -5,12 +5,14 @@ const Repository_1 = require("./Repository");
5
5
  const MemoryDriver_1 = require("./Drivers/MemoryDriver");
6
6
  const DatabaseDriver_1 = require("./Drivers/DatabaseDriver");
7
7
  const RedisDriver_1 = require("./Drivers/RedisDriver");
8
+ const FileDriver_1 = require("./Drivers/FileDriver");
8
9
  class CacheManager {
9
- constructor(config, database) {
10
+ constructor(config, database, basePath = process.cwd()) {
10
11
  this.config = config;
11
12
  this.stores = new Map();
12
13
  this.customCreators = new Map();
13
14
  this.database = database;
15
+ this.basePath = basePath;
14
16
  }
15
17
  store(name) {
16
18
  const storeName = name || this.config.default;
@@ -37,11 +39,18 @@ class CacheManager {
37
39
  return new MemoryDriver_1.MemoryDriver();
38
40
  }
39
41
  createDatabaseDriver(config) {
40
- return new DatabaseDriver_1.DatabaseDriver(this.database.connection(config.connection), config.table, this.config.prefix || '');
42
+ return new DatabaseDriver_1.DatabaseDriver(this.database, config.table, this.config.prefix || '', config.connection);
41
43
  }
42
44
  createRedisDriver(config) {
43
45
  return new RedisDriver_1.RedisDriver(config, this.config.prefix || '');
44
46
  }
47
+ createFileDriver(config) {
48
+ const path = require('path');
49
+ const directory = path.isAbsolute(config.path)
50
+ ? config.path
51
+ : path.resolve(this.basePath, config.path);
52
+ return new FileDriver_1.FileDriver(directory, this.config.prefix || '');
53
+ }
45
54
  extend(driver, callback) {
46
55
  this.customCreators.set(driver, callback);
47
56
  return this;
@@ -59,6 +68,12 @@ class CacheManager {
59
68
  async pull(key, defaultValue = null) { return this.store().pull(key, defaultValue); }
60
69
  async remember(key, seconds, callback) { return this.store().remember(key, seconds, callback); }
61
70
  async rememberForever(key, callback) { return this.store().rememberForever(key, callback); }
71
+ // Enterprise methods
72
+ async getMultiple(keys) { return this.store().getMultiple(keys); }
73
+ async putMultiple(values, seconds) { return this.store().putMultiple(values, seconds); }
74
+ async forgetMultiple(keys) { return this.store().forgetMultiple(keys); }
75
+ lock(name, seconds = 0, owner = null) { return this.store().lock(name, seconds, owner); }
76
+ tags(names) { return this.store().tags(names); }
62
77
  }
63
78
  exports.CacheManager = CacheManager;
64
79
  //# sourceMappingURL=CacheManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../src/CacheManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../src/CacheManager.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,9 @@ export interface Store {
7
7
  forget(key: string): Promise<void>;
8
8
  flush(): Promise<void>;
9
9
  getPrefix(): string;
10
+ add?(key: string, value: any, seconds: number): Promise<boolean>;
11
+ getMultiple?(keys: string[]): Promise<Record<string, any>>;
12
+ putMultiple?(values: Record<string, any>, seconds: number): Promise<void>;
13
+ forgetMultiple?(keys: string[]): Promise<void>;
10
14
  }
11
15
  //# sourceMappingURL=Store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../src/Contracts/Store.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,KAAK;IAClB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,SAAS,IAAI,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../src/Contracts/Store.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,KAAK;IAClB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,SAAS,IAAI,MAAM,CAAC;IAGpB,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,cAAc,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD"}
@@ -3,7 +3,8 @@ export declare class DatabaseDriver implements Store {
3
3
  private database;
4
4
  private table;
5
5
  private prefix;
6
- constructor(database: any, table: string, prefix?: string);
6
+ private connection?;
7
+ constructor(database: any, table: string, prefix?: string, connection?: string | undefined);
7
8
  get(key: string): Promise<any>;
8
9
  put(key: string, value: any, seconds: number): Promise<void>;
9
10
  increment(key: string, value?: number): Promise<number>;
@@ -11,6 +12,10 @@ export declare class DatabaseDriver implements Store {
11
12
  forever(key: string, value: any): Promise<void>;
12
13
  forget(key: string): Promise<void>;
13
14
  flush(): Promise<void>;
15
+ add(key: string, value: any, seconds: number): Promise<boolean>;
16
+ getMultiple(keys: string[]): Promise<Record<string, any>>;
17
+ putMultiple(values: Record<string, any>, seconds: number): Promise<void>;
18
+ forgetMultiple(keys: string[]): Promise<void>;
14
19
  getPrefix(): string;
15
20
  }
16
21
  //# sourceMappingURL=DatabaseDriver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseDriver.d.ts","sourceRoot":"","sources":["../../src/Drivers/DatabaseDriver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,qBAAa,cAAe,YAAW,KAAK;IAEpC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;gBAFN,QAAQ,EAAE,GAAG,EACb,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAW;IAGlB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiB9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB5D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAO1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,SAAS,IAAI,MAAM;CAG7B"}
1
+ {"version":3,"file":"DatabaseDriver.d.ts","sourceRoot":"","sources":["../../src/Drivers/DatabaseDriver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,qBAAa,cAAe,YAAW,KAAK;IAEpC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU,CAAC;gBAHX,QAAQ,EAAE,GAAG,EACb,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAW,EACnB,UAAU,CAAC,EAAE,MAAM,YAAA;IAGlB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiB9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB5D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAO1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4B/D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IA2BzD,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,SAAS,IAAI,MAAM;CAG7B"}