@arikajs/cache 0.0.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ArikaJs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,195 @@
1
+
2
+ ## Arika Cache
3
+
4
+ `@arikajs/cache` provides a simple, fast, and driver-based caching system for the ArikaJS framework.
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.
7
+
8
+ ---
9
+
10
+ ## ✨ Features
11
+
12
+ - **Unified cache API**: Consistent interface across all drivers
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
16
+ - **TTL (time-to-live) support**: Automatic expiration of cached items
17
+ - **Cache tagging**: Logical grouping of cache keys (planned)
18
+ - **TypeScript-first design**: Strong typing for keys and values
19
+
20
+ ---
21
+
22
+ ## 📦 Installation
23
+
24
+ ```bash
25
+ npm install @arikajs/cache
26
+ # or
27
+ yarn add @arikajs/cache
28
+ # or
29
+ pnpm add @arikajs/cache
30
+ ```
31
+
32
+ ---
33
+
34
+ ## 🚀 Basic Usage
35
+
36
+ ```ts
37
+ import { Cache } from '@arikajs/cache';
38
+
39
+ // Store a value for 60 seconds
40
+ await Cache.put('users.count', 150, 60);
41
+
42
+ // Retrieve a value
43
+ const count = await Cache.get('users.count');
44
+ ```
45
+
46
+ ### 🧹 Cache Helpers
47
+
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
+ });
53
+ ```
54
+
55
+ ---
56
+
57
+ ## ⚙️ Configuration
58
+
59
+ ```ts
60
+ export default {
61
+ default: process.env.CACHE_STORE || 'database',
62
+
63
+ stores: {
64
+ memory: {
65
+ driver: 'memory',
66
+ },
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
+ ---
80
+
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) |
86
+
87
+ ---
88
+
89
+ ## 🏎️ Redis Cache Setup
90
+
91
+ The Redis driver supports Standalone, Sentinel, and Cluster modes.
92
+
93
+ ### 1. Install Redis Package
94
+
95
+ ```bash
96
+ npm install ioredis
97
+ ```
98
+
99
+ ### 2. Configure Environment
100
+
101
+ Add Redis settings to your `.env` file:
102
+
103
+ ```env
104
+ CACHE_STORE=redis
105
+
106
+ 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
+ ```
141
+
142
+ ---
143
+
144
+ ## 🛠 Database Cache Setup
145
+
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
+ ```
152
+
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
183
+ ```
184
+
185
+ ---
186
+
187
+ ## 📄 License
188
+
189
+ `@arikajs/cache` is open-source software licensed under the **MIT License**.
190
+
191
+ ---
192
+
193
+ ## 🧭 Philosophy
194
+
195
+ > "Fast data wins."
@@ -0,0 +1,28 @@
1
+ import { Repository } from './Repository';
2
+ import { Store } from './Contracts/Store';
3
+ export declare class CacheManager {
4
+ protected config: any;
5
+ protected stores: Map<string, Repository>;
6
+ protected customCreators: Map<string, (config: any) => Store>;
7
+ protected database: any;
8
+ constructor(config: any, database?: any);
9
+ store(name?: string): Repository;
10
+ protected resolve(name: string): Repository;
11
+ protected createMemoryDriver(): Store;
12
+ protected createDatabaseDriver(config: any): Store;
13
+ protected createRedisDriver(config: any): Store;
14
+ extend(driver: string, callback: (config: any) => Store): this;
15
+ get(key: string, defaultValue?: any): Promise<any>;
16
+ put(key: string, value: any, seconds: number): Promise<void>;
17
+ has(key: string): Promise<boolean>;
18
+ forever(key: string, value: any): Promise<void>;
19
+ forget(key: string): Promise<void>;
20
+ flush(): Promise<void>;
21
+ increment(key: string, value?: number): Promise<number>;
22
+ decrement(key: string, value?: number): Promise<number>;
23
+ add(key: string, value: any, seconds: number): Promise<boolean>;
24
+ pull(key: string, defaultValue?: any): Promise<any>;
25
+ remember(key: string, seconds: number, callback: () => Promise<any>): Promise<any>;
26
+ rememberForever(key: string, callback: () => Promise<any>): Promise<any>;
27
+ }
28
+ //# sourceMappingURL=CacheManager.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheManager = void 0;
4
+ const Repository_1 = require("./Repository");
5
+ const MemoryDriver_1 = require("./Drivers/MemoryDriver");
6
+ const DatabaseDriver_1 = require("./Drivers/DatabaseDriver");
7
+ const RedisDriver_1 = require("./Drivers/RedisDriver");
8
+ class CacheManager {
9
+ constructor(config, database) {
10
+ this.config = config;
11
+ this.stores = new Map();
12
+ this.customCreators = new Map();
13
+ this.database = database;
14
+ }
15
+ store(name) {
16
+ const storeName = name || this.config.default;
17
+ if (!this.stores.has(storeName)) {
18
+ this.stores.set(storeName, this.resolve(storeName));
19
+ }
20
+ return this.stores.get(storeName);
21
+ }
22
+ resolve(name) {
23
+ const config = this.config.stores[name];
24
+ if (!config) {
25
+ throw new Error(`Cache store [${name}] is not defined.`);
26
+ }
27
+ if (this.customCreators.has(config.driver)) {
28
+ return new Repository_1.Repository(this.customCreators.get(config.driver)(config));
29
+ }
30
+ const driverMethod = `create${config.driver.charAt(0).toUpperCase() + config.driver.slice(1)}Driver`;
31
+ if (typeof this[driverMethod] === 'function') {
32
+ return new Repository_1.Repository(this[driverMethod](config));
33
+ }
34
+ throw new Error(`Driver [${config.driver}] is not supported.`);
35
+ }
36
+ createMemoryDriver() {
37
+ return new MemoryDriver_1.MemoryDriver();
38
+ }
39
+ createDatabaseDriver(config) {
40
+ return new DatabaseDriver_1.DatabaseDriver(this.database.connection(config.connection), config.table, this.config.prefix || '');
41
+ }
42
+ createRedisDriver(config) {
43
+ return new RedisDriver_1.RedisDriver(config, this.config.prefix || '');
44
+ }
45
+ extend(driver, callback) {
46
+ this.customCreators.set(driver, callback);
47
+ return this;
48
+ }
49
+ // Proxy common methods to default store
50
+ async get(key, defaultValue = null) { return this.store().get(key, defaultValue); }
51
+ async put(key, value, seconds) { return this.store().put(key, value, seconds); }
52
+ async has(key) { return this.store().has(key); }
53
+ async forever(key, value) { return this.store().forever(key, value); }
54
+ async forget(key) { return this.store().forget(key); }
55
+ async flush() { return this.store().flush(); }
56
+ async increment(key, value = 1) { return this.store().increment(key, value); }
57
+ async decrement(key, value = 1) { return this.store().decrement(key, value); }
58
+ async add(key, value, seconds) { return this.store().add(key, value, seconds); }
59
+ async pull(key, defaultValue = null) { return this.store().pull(key, defaultValue); }
60
+ async remember(key, seconds, callback) { return this.store().remember(key, seconds, callback); }
61
+ async rememberForever(key, callback) { return this.store().rememberForever(key, callback); }
62
+ }
63
+ exports.CacheManager = CacheManager;
64
+ //# sourceMappingURL=CacheManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../src/CacheManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface Store {
2
+ get(key: string): Promise<any>;
3
+ put(key: string, value: any, seconds: number): Promise<void>;
4
+ increment(key: string, value?: number): Promise<number>;
5
+ decrement(key: string, value?: number): Promise<number>;
6
+ forever(key: string, value: any): Promise<void>;
7
+ forget(key: string): Promise<void>;
8
+ flush(): Promise<void>;
9
+ getPrefix(): string;
10
+ }
11
+ //# sourceMappingURL=Store.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Store.js","sourceRoot":"","sources":["../../src/Contracts/Store.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { Store } from '../Contracts/Store';
2
+ export declare class DatabaseDriver implements Store {
3
+ private database;
4
+ private table;
5
+ private prefix;
6
+ constructor(database: any, table: string, prefix?: string);
7
+ get(key: string): Promise<any>;
8
+ put(key: string, value: any, seconds: number): Promise<void>;
9
+ increment(key: string, value?: number): Promise<number>;
10
+ decrement(key: string, value?: number): Promise<number>;
11
+ forever(key: string, value: any): Promise<void>;
12
+ forget(key: string): Promise<void>;
13
+ flush(): Promise<void>;
14
+ getPrefix(): string;
15
+ }
16
+ //# sourceMappingURL=DatabaseDriver.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatabaseDriver = void 0;
4
+ class DatabaseDriver {
5
+ constructor(database, table, prefix = '') {
6
+ this.database = database;
7
+ this.table = table;
8
+ this.prefix = prefix;
9
+ }
10
+ async get(key) {
11
+ const cache = await this.database.table(this.table)
12
+ .where('key', this.prefix + key)
13
+ .first();
14
+ if (!cache) {
15
+ return null;
16
+ }
17
+ if (cache.expiration && cache.expiration <= Math.floor(Date.now() / 1000)) {
18
+ await this.forget(key);
19
+ return null;
20
+ }
21
+ return JSON.parse(cache.value);
22
+ }
23
+ async put(key, value, seconds) {
24
+ const expiration = Math.floor(Date.now() / 1000) + seconds;
25
+ const jsonValue = JSON.stringify(value);
26
+ const prefixedKey = this.prefix + key;
27
+ const exists = await this.database.table(this.table).where('key', prefixedKey).exists();
28
+ if (exists) {
29
+ await this.database.table(this.table)
30
+ .where('key', prefixedKey)
31
+ .update({
32
+ value: jsonValue,
33
+ expiration: expiration
34
+ });
35
+ }
36
+ else {
37
+ await this.database.table(this.table).insert({
38
+ key: prefixedKey,
39
+ value: jsonValue,
40
+ expiration: expiration
41
+ });
42
+ }
43
+ }
44
+ async increment(key, value = 1) {
45
+ const current = await this.get(key) || 0;
46
+ const newValue = current + value;
47
+ await this.forever(key, newValue);
48
+ return newValue;
49
+ }
50
+ async decrement(key, value = 1) {
51
+ return this.increment(key, -value);
52
+ }
53
+ async forever(key, value) {
54
+ const jsonValue = JSON.stringify(value);
55
+ const prefixedKey = this.prefix + key;
56
+ const exists = await this.database.table(this.table).where('key', prefixedKey).exists();
57
+ if (exists) {
58
+ await this.database.table(this.table)
59
+ .where('key', prefixedKey)
60
+ .update({
61
+ value: jsonValue,
62
+ expiration: null
63
+ });
64
+ }
65
+ else {
66
+ await this.database.table(this.table).insert({
67
+ key: prefixedKey,
68
+ value: jsonValue,
69
+ expiration: null
70
+ });
71
+ }
72
+ }
73
+ async forget(key) {
74
+ await this.database.table(this.table)
75
+ .where('key', this.prefix + key)
76
+ .delete();
77
+ }
78
+ async flush() {
79
+ await this.database.table(this.table).delete();
80
+ }
81
+ getPrefix() {
82
+ return this.prefix;
83
+ }
84
+ }
85
+ exports.DatabaseDriver = DatabaseDriver;
86
+ //# sourceMappingURL=DatabaseDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseDriver.js","sourceRoot":"","sources":["../../src/Drivers/DatabaseDriver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Store } from '../Contracts/Store';
2
+ interface CacheItem {
3
+ value: any;
4
+ expiresAt: number | null;
5
+ }
6
+ export declare class MemoryDriver implements Store {
7
+ protected storage: Map<string, CacheItem>;
8
+ get(key: string): Promise<any>;
9
+ put(key: string, value: any, seconds: number): Promise<void>;
10
+ increment(key: string, value?: number): Promise<number>;
11
+ decrement(key: string, value?: number): Promise<number>;
12
+ forever(key: string, value: any): Promise<void>;
13
+ forget(key: string): Promise<void>;
14
+ flush(): Promise<void>;
15
+ getPrefix(): string;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=MemoryDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryDriver.d.ts","sourceRoot":"","sources":["../../src/Drivers/MemoryDriver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,UAAU,SAAS;IACf,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,YAAa,YAAW,KAAK;IACtC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAEhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAe9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB1D,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;IAI/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,SAAS,IAAI,MAAM;CAGtB"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryDriver = void 0;
4
+ class MemoryDriver {
5
+ constructor() {
6
+ this.storage = new Map();
7
+ }
8
+ async get(key) {
9
+ const item = this.storage.get(key);
10
+ if (!item) {
11
+ return null;
12
+ }
13
+ if (item.expiresAt !== null && item.expiresAt < Date.now()) {
14
+ this.forget(key);
15
+ return null;
16
+ }
17
+ return item.value;
18
+ }
19
+ async put(key, value, seconds) {
20
+ const expiresAt = Date.now() + (seconds * 1000);
21
+ this.storage.set(key, { value, expiresAt });
22
+ }
23
+ async increment(key, value = 1) {
24
+ const current = await this.get(key) || 0;
25
+ const newValue = current + value;
26
+ // We set it forever if it was already existing or start now.
27
+ // Usually increment doesn't change TTL if exists, or sets a default.
28
+ // For simplicity, we just update the value.
29
+ const item = this.storage.get(key);
30
+ this.storage.set(key, {
31
+ value: newValue,
32
+ expiresAt: item ? item.expiresAt : null
33
+ });
34
+ return newValue;
35
+ }
36
+ async decrement(key, value = 1) {
37
+ return this.increment(key, -value);
38
+ }
39
+ async forever(key, value) {
40
+ this.storage.set(key, { value, expiresAt: null });
41
+ }
42
+ async forget(key) {
43
+ this.storage.delete(key);
44
+ }
45
+ async flush() {
46
+ this.storage.clear();
47
+ }
48
+ getPrefix() {
49
+ return '';
50
+ }
51
+ }
52
+ exports.MemoryDriver = MemoryDriver;
53
+ //# sourceMappingURL=MemoryDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryDriver.js","sourceRoot":"","sources":["../../src/Drivers/MemoryDriver.ts"],"names":[],"mappings":";;;AAQA,MAAa,YAAY;IAAzB;QACc,YAAO,GAA2B,IAAI,GAAG,EAAE,CAAC;IAyD1D,CAAC;IAvDG,KAAK,CAAC,GAAG,CAAC,GAAW;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,OAAe;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,QAAgB,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;QAEjC,6DAA6D;QAC7D,qEAAqE;QACrE,4CAA4C;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;SAC1C,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,QAAgB,CAAC;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAU;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,SAAS;QACL,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AA1DD,oCA0DC"}
@@ -0,0 +1,20 @@
1
+ import { Store } from '../Contracts/Store';
2
+ import Redis, { Cluster } from 'ioredis';
3
+ export declare class RedisDriver implements Store {
4
+ protected prefix: string;
5
+ protected redis: Redis | Cluster;
6
+ constructor(config: any, prefix?: string);
7
+ get(key: string): Promise<any>;
8
+ put(key: string, value: any, seconds: number): Promise<void>;
9
+ increment(key: string, value?: number): Promise<number>;
10
+ decrement(key: string, value?: number): Promise<number>;
11
+ forever(key: string, value: any): Promise<void>;
12
+ forget(key: string): Promise<void>;
13
+ flush(): Promise<void>;
14
+ getPrefix(): string;
15
+ /**
16
+ * Get the underlying Redis instance.
17
+ */
18
+ getRedis(): Redis | Cluster;
19
+ }
20
+ //# sourceMappingURL=RedisDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisDriver.d.ts","sourceRoot":"","sources":["../../src/Drivers/RedisDriver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,EAAE,OAAO,EAAgB,MAAM,SAAS,CAAC;AAEvD,qBAAa,WAAY,YAAW,KAAK;IAGZ,SAAS,CAAC,MAAM,EAAE,MAAM;IAFjD,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;gBAErB,MAAM,EAAE,GAAG,EAAY,MAAM,GAAE,MAAW;IA6BzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAK9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,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;IAI/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,SAAS,IAAI,MAAM;IAI1B;;OAEG;IACI,QAAQ,IAAI,KAAK,GAAG,OAAO;CAGrC"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RedisDriver = void 0;
7
+ const ioredis_1 = __importDefault(require("ioredis"));
8
+ class RedisDriver {
9
+ constructor(config, prefix = '') {
10
+ this.prefix = prefix;
11
+ const mode = config.mode || 'standalone';
12
+ if (mode === 'cluster') {
13
+ this.redis = new ioredis_1.default.Cluster(config.nodes, {
14
+ redisOptions: {
15
+ password: config.password,
16
+ ...config.options
17
+ }
18
+ });
19
+ }
20
+ else if (mode === 'sentinel') {
21
+ this.redis = new ioredis_1.default({
22
+ sentinels: config.nodes,
23
+ name: config.name,
24
+ password: config.password,
25
+ db: config.database,
26
+ ...config.options
27
+ });
28
+ }
29
+ else {
30
+ this.redis = new ioredis_1.default({
31
+ host: config.host,
32
+ port: config.port,
33
+ password: config.password,
34
+ db: config.database,
35
+ ...config.options
36
+ });
37
+ }
38
+ }
39
+ async get(key) {
40
+ const value = await this.redis.get(this.prefix + key);
41
+ return value ? JSON.parse(value) : null;
42
+ }
43
+ async put(key, value, seconds) {
44
+ const serializedValue = JSON.stringify(value);
45
+ if (seconds > 0) {
46
+ await this.redis.set(this.prefix + key, serializedValue, 'EX', seconds);
47
+ }
48
+ else {
49
+ await this.forever(key, value);
50
+ }
51
+ }
52
+ async increment(key, value = 1) {
53
+ return await this.redis.incrby(this.prefix + key, value);
54
+ }
55
+ async decrement(key, value = 1) {
56
+ return await this.redis.decrby(this.prefix + key, value);
57
+ }
58
+ async forever(key, value) {
59
+ await this.redis.set(this.prefix + key, JSON.stringify(value));
60
+ }
61
+ async forget(key) {
62
+ await this.redis.del(this.prefix + key);
63
+ }
64
+ async flush() {
65
+ await this.redis.flushdb();
66
+ }
67
+ getPrefix() {
68
+ return this.prefix;
69
+ }
70
+ /**
71
+ * Get the underlying Redis instance.
72
+ */
73
+ getRedis() {
74
+ return this.redis;
75
+ }
76
+ }
77
+ exports.RedisDriver = RedisDriver;
78
+ //# sourceMappingURL=RedisDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisDriver.js","sourceRoot":"","sources":["../../src/Drivers/RedisDriver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Store } from './Contracts/Store';
2
+ export declare class Repository {
3
+ protected store: Store;
4
+ constructor(store: Store);
5
+ get(key: string, defaultValue?: any): Promise<any>;
6
+ has(key: string): Promise<boolean>;
7
+ put(key: string, value: any, seconds: number): Promise<void>;
8
+ add(key: string, value: any, seconds: number): Promise<boolean>;
9
+ increment(key: string, value?: number): Promise<number>;
10
+ decrement(key: string, value?: number): Promise<number>;
11
+ forever(key: string, value: any): Promise<void>;
12
+ remember(key: string, seconds: number, callback: () => Promise<any>): Promise<any>;
13
+ rememberForever(key: string, callback: () => Promise<any>): Promise<any>;
14
+ pull(key: string, defaultValue?: any): Promise<any>;
15
+ forget(key: string): Promise<void>;
16
+ flush(): Promise<void>;
17
+ getStore(): Store;
18
+ }
19
+ //# sourceMappingURL=Repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../src/Repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,qBAAa,UAAU;IACP,SAAS,CAAC,KAAK,EAAE,KAAK;gBAAZ,KAAK,EAAE,KAAK;IAE5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAKxD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,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;IAI/C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAalF,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAaxE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAMzD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,QAAQ,IAAI,KAAK;CAGpB"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Repository = void 0;
4
+ class Repository {
5
+ constructor(store) {
6
+ this.store = store;
7
+ }
8
+ async get(key, defaultValue = null) {
9
+ const value = await this.store.get(key);
10
+ return value !== null ? value : defaultValue;
11
+ }
12
+ async has(key) {
13
+ return (await this.get(key)) !== null;
14
+ }
15
+ async put(key, value, seconds) {
16
+ await this.store.put(key, value, seconds);
17
+ }
18
+ async add(key, value, seconds) {
19
+ if (await this.has(key)) {
20
+ return false;
21
+ }
22
+ await this.put(key, value, seconds);
23
+ return true;
24
+ }
25
+ async increment(key, value = 1) {
26
+ return this.store.increment(key, value);
27
+ }
28
+ async decrement(key, value = 1) {
29
+ return this.store.decrement(key, value);
30
+ }
31
+ async forever(key, value) {
32
+ await this.store.forever(key, value);
33
+ }
34
+ async remember(key, seconds, callback) {
35
+ let value = await this.get(key);
36
+ if (value !== null) {
37
+ return value;
38
+ }
39
+ value = await callback();
40
+ await this.put(key, value, seconds);
41
+ return value;
42
+ }
43
+ async rememberForever(key, callback) {
44
+ let value = await this.get(key);
45
+ if (value !== null) {
46
+ return value;
47
+ }
48
+ value = await callback();
49
+ await this.forever(key, value);
50
+ return value;
51
+ }
52
+ async pull(key, defaultValue = null) {
53
+ const value = await this.get(key, defaultValue);
54
+ await this.forget(key);
55
+ return value;
56
+ }
57
+ async forget(key) {
58
+ await this.store.forget(key);
59
+ }
60
+ async flush() {
61
+ await this.store.flush();
62
+ }
63
+ getStore() {
64
+ return this.store;
65
+ }
66
+ }
67
+ exports.Repository = Repository;
68
+ //# sourceMappingURL=Repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Repository.js","sourceRoot":"","sources":["../src/Repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { CacheManager } from './CacheManager';
2
+ import { Store } from './Contracts/Store';
3
+ export declare class Cache {
4
+ static setManager(manager: CacheManager): void;
5
+ protected static getManager(): CacheManager;
6
+ static store(name?: string): import("./Repository").Repository;
7
+ static get(key: string, defaultValue?: any): Promise<any>;
8
+ static put(key: string, value: any, seconds: number): Promise<void>;
9
+ static has(key: string): Promise<boolean>;
10
+ static forever(key: string, value: any): Promise<void>;
11
+ static forget(key: string): Promise<void>;
12
+ static flush(): Promise<void>;
13
+ static increment(key: string, value?: number): Promise<number>;
14
+ static decrement(key: string, value?: number): Promise<number>;
15
+ static add(key: string, value: any, seconds: number): Promise<boolean>;
16
+ static pull(key: string, defaultValue?: any): Promise<any>;
17
+ static remember(key: string, seconds: number, callback: () => Promise<any>): Promise<any>;
18
+ static rememberForever(key: string, callback: () => Promise<any>): Promise<any>;
19
+ }
20
+ export { CacheManager, Store };
21
+ export { Repository } from './Repository';
22
+ export { MemoryDriver } from './Drivers/MemoryDriver';
23
+ export { DatabaseDriver } from './Drivers/DatabaseDriver';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI1C,qBAAa,KAAK;WACA,UAAU,CAAC,OAAO,EAAE,YAAY;IAI9C,SAAS,CAAC,MAAM,CAAC,UAAU,IAAI,YAAY;WAO7B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;WAIb,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU;WACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;WAC5C,GAAG,CAAC,GAAG,EAAE,MAAM;WACf,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;WAC/B,MAAM,CAAC,GAAG,EAAE,MAAM;WAClB,KAAK;WACL,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;WACxC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU;WACxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;WAC5C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU;WAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;WACnE,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC;CAChF;AAED,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatabaseDriver = exports.MemoryDriver = exports.Repository = exports.CacheManager = exports.Cache = void 0;
4
+ const CacheManager_1 = require("./CacheManager");
5
+ Object.defineProperty(exports, "CacheManager", { enumerable: true, get: function () { return CacheManager_1.CacheManager; } });
6
+ let cacheManager;
7
+ class Cache {
8
+ static setManager(manager) {
9
+ cacheManager = manager;
10
+ }
11
+ static getManager() {
12
+ if (!cacheManager) {
13
+ throw new Error('Cache system not configured. Please use Cache.setManager() to configure.');
14
+ }
15
+ return cacheManager;
16
+ }
17
+ static store(name) {
18
+ return this.getManager().store(name);
19
+ }
20
+ static async get(key, defaultValue = null) { return this.getManager().get(key, defaultValue); }
21
+ static async put(key, value, seconds) { return this.getManager().put(key, value, seconds); }
22
+ static async has(key) { return this.getManager().has(key); }
23
+ static async forever(key, value) { return this.getManager().forever(key, value); }
24
+ static async forget(key) { return this.getManager().forget(key); }
25
+ static async flush() { return this.getManager().flush(); }
26
+ static async increment(key, value = 1) { return this.getManager().increment(key, value); }
27
+ static async decrement(key, value = 1) { return this.getManager().decrement(key, value); }
28
+ static async add(key, value, seconds) { return this.getManager().add(key, value, seconds); }
29
+ static async pull(key, defaultValue = null) { return this.getManager().pull(key, defaultValue); }
30
+ static async remember(key, seconds, callback) { return this.getManager().remember(key, seconds, callback); }
31
+ static async rememberForever(key, callback) { return this.getManager().rememberForever(key, callback); }
32
+ }
33
+ exports.Cache = Cache;
34
+ var Repository_1 = require("./Repository");
35
+ Object.defineProperty(exports, "Repository", { enumerable: true, get: function () { return Repository_1.Repository; } });
36
+ var MemoryDriver_1 = require("./Drivers/MemoryDriver");
37
+ Object.defineProperty(exports, "MemoryDriver", { enumerable: true, get: function () { return MemoryDriver_1.MemoryDriver; } });
38
+ var DatabaseDriver_1 = require("./Drivers/DatabaseDriver");
39
+ Object.defineProperty(exports, "DatabaseDriver", { enumerable: true, get: function () { return DatabaseDriver_1.DatabaseDriver; } });
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@arikajs/cache",
3
+ "version": "0.0.1",
4
+ "description": "Simple, fast, and driver-based caching system for the ArikaJS framework.",
5
+ "license": "MIT",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "scripts": {
9
+ "build": "tsc -p tsconfig.json",
10
+ "build:tests": "tsc -p tsconfig.test.json",
11
+ "clean": "rm -rf dist",
12
+ "prepare": "echo skip",
13
+ "test": "npm run build && npm run build:tests && node scripts/fix-test-imports.js && node --test 'dist/tests/**/*.test.js'",
14
+ "test:watch": "npm run build && npm run build:tests && node --test --watch 'dist/tests/**/*.test.js'"
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "keywords": [
20
+ "arika",
21
+ "arika-js",
22
+ "cache",
23
+ "memory",
24
+ "redis",
25
+ "performance"
26
+ ],
27
+ "engines": {
28
+ "node": ">=20.0.0"
29
+ },
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "git+https://github.com/arikajs/cache.git"
33
+ },
34
+ "bugs": {
35
+ "url": "https://github.com/arikajs/cache/issues"
36
+ },
37
+ "homepage": "https://github.com/arikajs/cache#readme",
38
+ "dependencies": {
39
+ "ioredis": "^5.9.3"
40
+ },
41
+ "devDependencies": {
42
+ "@types/node": "^20.11.24",
43
+ "typescript": "^5.3.3"
44
+ },
45
+ "author": "Prakash Tank"
46
+ }