@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.
- package/README.md +62 -118
- package/dist/CacheLock.d.ts +38 -0
- package/dist/CacheLock.d.ts.map +1 -0
- package/dist/CacheLock.js +100 -0
- package/dist/CacheLock.js.map +1 -0
- package/dist/CacheManager.d.ts +8 -1
- package/dist/CacheManager.d.ts.map +1 -1
- package/dist/CacheManager.js +17 -2
- package/dist/CacheManager.js.map +1 -1
- package/dist/Contracts/Store.d.ts +4 -0
- package/dist/Contracts/Store.d.ts.map +1 -1
- package/dist/Drivers/DatabaseDriver.d.ts +6 -1
- package/dist/Drivers/DatabaseDriver.d.ts.map +1 -1
- package/dist/Drivers/DatabaseDriver.js +70 -10
- package/dist/Drivers/DatabaseDriver.js.map +1 -1
- package/dist/Drivers/FileDriver.d.ts +19 -0
- package/dist/Drivers/FileDriver.d.ts.map +1 -0
- package/dist/Drivers/FileDriver.js +111 -0
- package/dist/Drivers/FileDriver.js.map +1 -0
- package/dist/Drivers/MemoryDriver.d.ts +4 -0
- package/dist/Drivers/MemoryDriver.d.ts.map +1 -1
- package/dist/Drivers/MemoryDriver.js +25 -0
- package/dist/Drivers/MemoryDriver.js.map +1 -1
- package/dist/Drivers/RedisDriver.d.ts +4 -0
- package/dist/Drivers/RedisDriver.d.ts.map +1 -1
- package/dist/Drivers/RedisDriver.js +46 -0
- package/dist/Drivers/RedisDriver.js.map +1 -1
- package/dist/Repository.d.ts +6 -0
- package/dist/Repository.d.ts.map +1 -1
- package/dist/Repository.js +42 -0
- package/dist/Repository.js.map +1 -1
- package/dist/TagSet.d.ts +24 -0
- package/dist/TagSet.d.ts.map +1 -0
- package/dist/TagSet.js +46 -0
- package/dist/TagSet.js.map +1 -0
- package/dist/TaggedStore.d.ts +21 -0
- package/dist/TaggedStore.d.ts.map +1 -0
- package/dist/TaggedStore.js +100 -0
- package/dist/TaggedStore.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/src/CacheLock.d.ts +38 -0
- package/dist/src/CacheLock.d.ts.map +1 -0
- package/dist/src/CacheLock.js +100 -0
- package/dist/src/CacheLock.js.map +1 -0
- package/dist/src/CacheManager.d.ts +35 -0
- package/dist/src/CacheManager.d.ts.map +1 -0
- package/dist/src/CacheManager.js +79 -0
- package/dist/src/CacheManager.js.map +1 -0
- package/dist/src/Contracts/Store.d.ts +15 -0
- package/dist/src/Contracts/Store.d.ts.map +1 -0
- package/dist/src/Contracts/Store.js +3 -0
- package/dist/src/Contracts/Store.js.map +1 -0
- package/dist/src/Drivers/DatabaseDriver.d.ts +21 -0
- package/dist/src/Drivers/DatabaseDriver.d.ts.map +1 -0
- package/dist/src/Drivers/DatabaseDriver.js +146 -0
- package/dist/src/Drivers/DatabaseDriver.js.map +1 -0
- package/dist/src/Drivers/FileDriver.d.ts +19 -0
- package/dist/src/Drivers/FileDriver.d.ts.map +1 -0
- package/dist/src/Drivers/FileDriver.js +111 -0
- package/dist/src/Drivers/FileDriver.js.map +1 -0
- package/dist/src/Drivers/MemoryDriver.d.ts +22 -0
- package/dist/src/Drivers/MemoryDriver.d.ts.map +1 -0
- package/dist/src/Drivers/MemoryDriver.js +78 -0
- package/dist/src/Drivers/MemoryDriver.js.map +1 -0
- package/dist/src/Drivers/RedisDriver.d.ts +24 -0
- package/dist/src/Drivers/RedisDriver.d.ts.map +1 -0
- package/dist/src/Drivers/RedisDriver.js +124 -0
- package/dist/src/Drivers/RedisDriver.js.map +1 -0
- package/dist/src/Repository.d.ts +25 -0
- package/dist/src/Repository.d.ts.map +1 -0
- package/dist/src/Repository.js +110 -0
- package/dist/src/Repository.js.map +1 -0
- package/dist/src/TagSet.d.ts +24 -0
- package/dist/src/TagSet.d.ts.map +1 -0
- package/dist/src/TagSet.js +46 -0
- package/dist/src/TagSet.js.map +1 -0
- package/dist/src/TaggedStore.d.ts +21 -0
- package/dist/src/TaggedStore.d.ts.map +1 -0
- package/dist/src/TaggedStore.js +100 -0
- package/dist/src/TaggedStore.js.map +1 -0
- package/dist/src/index.d.ts +29 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +46 -0
- package/dist/src/index.js.map +1 -0
- package/dist/tests/Cache.test.d.ts +2 -0
- package/dist/tests/Cache.test.d.ts.map +1 -0
- package/dist/tests/Cache.test.js +126 -0
- package/dist/tests/Cache.test.js.map +1 -0
- 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
|
-
- **
|
|
15
|
-
- **
|
|
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 '
|
|
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
|
-
|
|
42
|
+
// Remove an item
|
|
43
|
+
await Cache.forget('users.count');
|
|
47
44
|
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
##
|
|
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 || '
|
|
70
|
+
default: process.env.CACHE_STORE || 'file',
|
|
62
71
|
|
|
63
72
|
stores: {
|
|
64
|
-
|
|
65
|
-
|
|
73
|
+
file: {
|
|
74
|
+
driver: 'file',
|
|
75
|
+
path: 'storage/cache/data',
|
|
66
76
|
},
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
##
|
|
119
|
+
## 🔒 Atomic Cache Locks
|
|
145
120
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
arika cache:table
|
|
150
|
-
arika migrate
|
|
151
|
-
```
|
|
121
|
+
Prevent race conditions by using atomic locks:
|
|
152
122
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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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"}
|
package/dist/CacheManager.d.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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"}
|
package/dist/CacheManager.js
CHANGED
|
@@ -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
|
|
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
|
package/dist/CacheManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../src/CacheManager.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAC1C,yDAAsD;AACtD,6DAA0D;AAC1D,uDAAoD;
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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"}
|