ts-cache-mongoose 0.0.1 → 0.0.2
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 +58 -2
- package/dist/cjs/cache/Cache.js +17 -12
- package/dist/cjs/cache/Cache.js.map +1 -1
- package/dist/cjs/cache/engine/MemoryCacheEngine.js +3 -0
- package/dist/cjs/cache/engine/MemoryCacheEngine.js.map +1 -1
- package/dist/cjs/cache/engine/RedisCacheEngine.js +8 -2
- package/dist/cjs/cache/engine/RedisCacheEngine.js.map +1 -1
- package/dist/cjs/interfaces/{ICacheMongooseOptions.js → ICacheOptions.js} +1 -1
- package/dist/cjs/interfaces/ICacheOptions.js.map +1 -0
- package/dist/cjs/plugin.js +13 -9
- package/dist/cjs/plugin.js.map +1 -1
- package/dist/cjs/types/cache/Cache.d.ts +7 -5
- package/dist/cjs/types/cache/Cache.d.ts.map +1 -1
- package/dist/cjs/types/cache/engine/MemoryCacheEngine.d.ts +1 -0
- package/dist/cjs/types/cache/engine/MemoryCacheEngine.d.ts.map +1 -1
- package/dist/cjs/types/cache/engine/RedisCacheEngine.d.ts +3 -1
- package/dist/cjs/types/cache/engine/RedisCacheEngine.d.ts.map +1 -1
- package/dist/cjs/types/interfaces/ICacheEngine.d.ts +1 -0
- package/dist/cjs/types/interfaces/ICacheEngine.d.ts.map +1 -1
- package/dist/cjs/types/interfaces/ICacheOptions.d.ts +8 -0
- package/dist/cjs/types/interfaces/ICacheOptions.d.ts.map +1 -0
- package/dist/cjs/types/plugin.d.ts +8 -6
- package/dist/cjs/types/plugin.d.ts.map +1 -1
- package/dist/esm/cache/Cache.js +17 -11
- package/dist/esm/cache/Cache.js.map +1 -1
- package/dist/esm/cache/engine/MemoryCacheEngine.js +3 -0
- package/dist/esm/cache/engine/MemoryCacheEngine.js.map +1 -1
- package/dist/esm/cache/engine/RedisCacheEngine.js +8 -2
- package/dist/esm/cache/engine/RedisCacheEngine.js.map +1 -1
- package/dist/esm/interfaces/ICacheOptions.js +2 -0
- package/dist/esm/interfaces/ICacheOptions.js.map +1 -0
- package/dist/esm/plugin.js.map +1 -1
- package/dist/esm/plugin.mjs +13 -9
- package/dist/esm/types/cache/Cache.d.ts +7 -5
- package/dist/esm/types/cache/Cache.d.ts.map +1 -1
- package/dist/esm/types/cache/engine/MemoryCacheEngine.d.ts +1 -0
- package/dist/esm/types/cache/engine/MemoryCacheEngine.d.ts.map +1 -1
- package/dist/esm/types/cache/engine/RedisCacheEngine.d.ts +3 -1
- package/dist/esm/types/cache/engine/RedisCacheEngine.d.ts.map +1 -1
- package/dist/esm/types/interfaces/ICacheEngine.d.ts +1 -0
- package/dist/esm/types/interfaces/ICacheEngine.d.ts.map +1 -1
- package/dist/esm/types/interfaces/ICacheOptions.d.ts +8 -0
- package/dist/esm/types/interfaces/ICacheOptions.d.ts.map +1 -0
- package/dist/esm/types/plugin.d.ts +8 -6
- package/dist/esm/types/plugin.d.ts.map +1 -1
- package/package.json +6 -7
- package/src/cache/Cache.ts +24 -14
- package/src/cache/engine/MemoryCacheEngine.ts +5 -0
- package/src/cache/engine/RedisCacheEngine.ts +10 -4
- package/src/interfaces/ICacheEngine.ts +1 -0
- package/src/interfaces/ICacheOptions.ts +9 -0
- package/src/plugin.ts +19 -13
- package/tests/cache-options.test.ts +80 -0
- package/tests/cache.test.ts +112 -15
- package/dist/cjs/interfaces/ICacheMongooseOptions.js.map +0 -1
- package/dist/cjs/types/interfaces/ICacheMongooseOptions.d.ts +0 -10
- package/dist/cjs/types/interfaces/ICacheMongooseOptions.d.ts.map +0 -1
- package/dist/esm/interfaces/ICacheMongooseOptions.js +0 -2
- package/dist/esm/interfaces/ICacheMongooseOptions.js.map +0 -1
- package/dist/esm/types/interfaces/ICacheMongooseOptions.d.ts +0 -10
- package/dist/esm/types/interfaces/ICacheMongooseOptions.d.ts.map +0 -1
- package/src/interfaces/ICacheMongooseOptions.ts +0 -10
package/README.md
CHANGED
|
@@ -20,7 +20,63 @@ Patch history (audit log) & events plugin for mongoose
|
|
|
20
20
|
ts-cache-mongoose is a plugin for mongoose
|
|
21
21
|
\
|
|
22
22
|
Caching queries is a good way to improve performance of your application
|
|
23
|
-
|
|
23
|
+
\
|
|
24
24
|
This is initial prerelease of the plugin, so it may contain bugs
|
|
25
|
-
I will be glad to receive your feedback and suggestions
|
|
26
25
|
Work in progress...
|
|
26
|
+
|
|
27
|
+
## Features
|
|
28
|
+
|
|
29
|
+
- [x] Memory caching
|
|
30
|
+
- [x] Redis caching
|
|
31
|
+
- [x] Cache expiration
|
|
32
|
+
- [x] Cache invalidation
|
|
33
|
+
- [x] Cache key generation
|
|
34
|
+
- [x] Cache key prefix
|
|
35
|
+
- [x] Query caching support
|
|
36
|
+
- [ ] Aggregate caching support
|
|
37
|
+
|
|
38
|
+
## Installation
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install ts-cache-mongoose
|
|
42
|
+
yard add ts-cache-mongoose
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
- This plugin requires mongoose `>=6.6.x || 7.x` to be installed as a peer dependency
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# For mongoose 6
|
|
49
|
+
npm install mongoose@legacy
|
|
50
|
+
yarn add mongoose mongoose@legacy
|
|
51
|
+
# For mongoose 7
|
|
52
|
+
npm install mongoose@latest
|
|
53
|
+
yarn add mongoose@latest
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Usage
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
// On your application startup
|
|
60
|
+
import mongoose from 'mongoose'
|
|
61
|
+
import cache from 'ts-cache-mongoose'
|
|
62
|
+
|
|
63
|
+
// In memory example
|
|
64
|
+
const cache = cache.init(mongoose, {
|
|
65
|
+
engine: 'memory',
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
// Redis example
|
|
69
|
+
const cache = cache.init(mongoose, {
|
|
70
|
+
engine: 'redis',
|
|
71
|
+
engineOptions: {
|
|
72
|
+
host: 'localhost',
|
|
73
|
+
port: 6379,
|
|
74
|
+
},
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
mongoose.connect('mongodb://localhost:27017/my-database')
|
|
78
|
+
|
|
79
|
+
// Somewhere in your code
|
|
80
|
+
const User = await User.findById(user._id).cache('1 minute').exec()
|
|
81
|
+
const Book = await Book.findById(user._id).cache('30 seconds').exec()
|
|
82
|
+
```
|
package/dist/cjs/cache/Cache.js
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.engines = void 0;
|
|
4
3
|
const tslib_1 = require("tslib");
|
|
5
4
|
const ms_1 = tslib_1.__importDefault(require("ms"));
|
|
6
5
|
const MemoryCacheEngine_1 = tslib_1.__importDefault(require("./engine/MemoryCacheEngine"));
|
|
7
6
|
const RedisCacheEngine_1 = tslib_1.__importDefault(require("./engine/RedisCacheEngine"));
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if (!
|
|
12
|
-
throw new Error(`Invalid engine name: ${
|
|
7
|
+
class CacheEngine {
|
|
8
|
+
constructor(cacheOptions) {
|
|
9
|
+
this.engines = ['memory', 'redis'];
|
|
10
|
+
if (!this.engines.includes(cacheOptions.engine)) {
|
|
11
|
+
throw new Error(`Invalid engine name: ${cacheOptions.engine}`);
|
|
13
12
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this.engine = new RedisCacheEngine_1.default();
|
|
13
|
+
if (cacheOptions.engine === 'redis' && !cacheOptions.engineOptions) {
|
|
14
|
+
throw new Error(`Engine options are required for ${cacheOptions.engine} engine`);
|
|
17
15
|
}
|
|
18
|
-
|
|
16
|
+
this.defaultTTL = (0, ms_1.default)(cacheOptions.defaultTTL ?? '1 minute');
|
|
17
|
+
if (cacheOptions.engine === 'redis' && cacheOptions.engineOptions) {
|
|
18
|
+
this.engine = new RedisCacheEngine_1.default(cacheOptions.engineOptions);
|
|
19
|
+
}
|
|
20
|
+
if (cacheOptions.engine === 'memory') {
|
|
19
21
|
this.engine = new MemoryCacheEngine_1.default();
|
|
20
22
|
}
|
|
21
23
|
}
|
|
@@ -23,7 +25,7 @@ class Cache {
|
|
|
23
25
|
return await this.engine.get(key);
|
|
24
26
|
}
|
|
25
27
|
async set(key, value, ttl) {
|
|
26
|
-
const actualTTL = ttl
|
|
28
|
+
const actualTTL = ttl ? (0, ms_1.default)(ttl) : this.defaultTTL;
|
|
27
29
|
return await this.engine.set(key, value, actualTTL);
|
|
28
30
|
}
|
|
29
31
|
async del(key) {
|
|
@@ -32,6 +34,9 @@ class Cache {
|
|
|
32
34
|
async clear() {
|
|
33
35
|
return await this.engine.clear();
|
|
34
36
|
}
|
|
37
|
+
async close() {
|
|
38
|
+
return await this.engine.close();
|
|
39
|
+
}
|
|
35
40
|
}
|
|
36
|
-
exports.default =
|
|
41
|
+
exports.default = CacheEngine;
|
|
37
42
|
//# sourceMappingURL=Cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/cache/Cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/cache/Cache.ts"],"names":[],"mappings":";;;AAAA,oDAAmB;AAKnB,2FAA0D;AAC1D,yFAAwD;AAExD,MAAM,WAAW;IAKf,YAAa,YAA2B;QAFvB,YAAO,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAA;QAGrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YAClE,MAAM,IAAI,KAAK,CAAC,mCAAmC,YAAY,CAAC,MAAM,SAAS,CAAC,CAAA;SACjF;QAED,IAAI,CAAC,UAAU,GAAG,IAAA,YAAE,EAAC,YAAY,CAAC,UAAU,IAAI,UAAU,CAAC,CAAA;QAE3D,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE;YACjE,IAAI,CAAC,MAAM,GAAG,IAAI,0BAAgB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,2BAAiB,EAAE,CAAA;SACtC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,KAA0D,EAAE,GAAY;QAC9F,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,IAAA,YAAE,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;QACjD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAClC,CAAC;CACF;AAED,kBAAe,WAAW,CAAA"}
|
|
@@ -7,6 +7,7 @@ class MemoryCacheEngine {
|
|
|
7
7
|
get(key) {
|
|
8
8
|
const item = this.cache[key];
|
|
9
9
|
if (!item || item.expiresAt < Date.now()) {
|
|
10
|
+
this.del(key);
|
|
10
11
|
return undefined;
|
|
11
12
|
}
|
|
12
13
|
return item.value;
|
|
@@ -20,6 +21,8 @@ class MemoryCacheEngine {
|
|
|
20
21
|
clear() {
|
|
21
22
|
this.cache = {};
|
|
22
23
|
}
|
|
24
|
+
close() {
|
|
25
|
+
}
|
|
23
26
|
}
|
|
24
27
|
exports.default = MemoryCacheEngine;
|
|
25
28
|
//# sourceMappingURL=MemoryCacheEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/MemoryCacheEngine.ts"],"names":[],"mappings":";;AAEA,MAAM,iBAAiB;IAGrB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,CAAC;IAED,GAAG,CAAE,GAAW;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;YACxC,OAAO,SAAS,CAAA;SACjB;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,GAAG,CAAE,GAAW,EAAE,KAA0D,EAAE,GAAG,GAAG,QAAQ;QAC1F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAA;IAC1D,CAAC;IAED,GAAG,CAAE,GAAW;QAEd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,CAAC;CACF;AAED,kBAAe,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"MemoryCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/MemoryCacheEngine.ts"],"names":[],"mappings":";;AAEA,MAAM,iBAAiB;IAGrB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,CAAC;IAED,GAAG,CAAE,GAAW;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACb,OAAO,SAAS,CAAA;SACjB;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,GAAG,CAAE,GAAW,EAAE,KAA0D,EAAE,GAAG,GAAG,QAAQ;QAC1F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAA;IAC1D,CAAC;IAED,GAAG,CAAE,GAAW;QAEd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,CAAC;IAED,KAAK;IAEL,CAAC;CACF;AAED,kBAAe,iBAAiB,CAAA"}
|
|
@@ -3,8 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const ioredis_1 = tslib_1.__importDefault(require("ioredis"));
|
|
5
5
|
class RedisCacheEngine {
|
|
6
|
-
constructor() {
|
|
7
|
-
|
|
6
|
+
constructor(options) {
|
|
7
|
+
if (!options.keyPrefix) {
|
|
8
|
+
options.keyPrefix = 'cache-mongoose:';
|
|
9
|
+
}
|
|
10
|
+
this.client = new ioredis_1.default(options);
|
|
8
11
|
}
|
|
9
12
|
async get(key) {
|
|
10
13
|
const value = await this.client.get(key);
|
|
@@ -23,6 +26,9 @@ class RedisCacheEngine {
|
|
|
23
26
|
async clear() {
|
|
24
27
|
await this.client.flushdb();
|
|
25
28
|
}
|
|
29
|
+
async close() {
|
|
30
|
+
await this.client.quit();
|
|
31
|
+
}
|
|
26
32
|
}
|
|
27
33
|
exports.default = RedisCacheEngine;
|
|
28
34
|
//# sourceMappingURL=RedisCacheEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/RedisCacheEngine.ts"],"names":[],"mappings":";;;AAAA,8DAA6B;
|
|
1
|
+
{"version":3,"file":"RedisCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/RedisCacheEngine.ts"],"names":[],"mappings":";;;AAAA,8DAA6B;AAK7B,MAAM,gBAAgB;IAGpB,YAAa,OAAqB;QAChC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACtB,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAA;SACtC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAO,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACxC,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,OAAO,SAAS,CAAA;SACjB;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAiE,CAAA;IAC1F,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,KAAc,EAAE,GAAG,GAAG,QAAQ;QACpD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,eAAe,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,kBAAe,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ICacheOptions.js","sourceRoot":"","sources":["../../../src/interfaces/ICacheOptions.ts"],"names":[],"mappings":""}
|
package/dist/cjs/plugin.js
CHANGED
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
5
|
-
const ms_1 = tslib_1.__importDefault(require("ms"));
|
|
6
5
|
const Cache_1 = tslib_1.__importDefault(require("./cache/Cache"));
|
|
7
6
|
const crypto_1 = require("./crypto");
|
|
8
7
|
class CacheMongoose {
|
|
9
8
|
constructor() {
|
|
10
9
|
}
|
|
11
|
-
static init(mongoose,
|
|
10
|
+
static init(mongoose, cacheOptions) {
|
|
12
11
|
if (typeof mongoose.Model.hydrate !== 'function')
|
|
13
12
|
throw new Error('Cache is only compatible with versions of mongoose that implement the `model.hydrate` method');
|
|
14
13
|
if (!this.instance) {
|
|
15
14
|
this.instance = new CacheMongoose();
|
|
16
|
-
this.instance.cache = new Cache_1.default(
|
|
15
|
+
this.instance.cache = new Cache_1.default(cacheOptions);
|
|
16
|
+
this.instance.cacheOptions = cacheOptions;
|
|
17
17
|
const cache = this.instance.cache;
|
|
18
18
|
const mongooseExec = mongoose.Query.prototype.exec;
|
|
19
19
|
mongoose.Query.prototype.getCacheKey = function () {
|
|
@@ -40,12 +40,12 @@ class CacheMongoose {
|
|
|
40
40
|
return this._ttl;
|
|
41
41
|
};
|
|
42
42
|
mongoose.Query.prototype.cache = function (ttl, customKey) {
|
|
43
|
-
this._ttl =
|
|
43
|
+
this._ttl = ttl;
|
|
44
44
|
this._key = customKey;
|
|
45
45
|
return this;
|
|
46
46
|
};
|
|
47
47
|
mongoose.Query.prototype.exec = async function () {
|
|
48
|
-
if (!
|
|
48
|
+
if (!this._ttl) {
|
|
49
49
|
return mongooseExec.apply(this);
|
|
50
50
|
}
|
|
51
51
|
const key = this.getCacheKey();
|
|
@@ -70,12 +70,16 @@ class CacheMongoose {
|
|
|
70
70
|
}
|
|
71
71
|
return this.instance;
|
|
72
72
|
}
|
|
73
|
-
async
|
|
73
|
+
async clear(customKey) {
|
|
74
74
|
if (!customKey) {
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
return this.cache.clear();
|
|
76
|
+
}
|
|
77
|
+
return this.cache.del(customKey);
|
|
78
|
+
}
|
|
79
|
+
async close() {
|
|
80
|
+
if (this.cacheOptions.engine === 'redis') {
|
|
81
|
+
await this.cache.close();
|
|
77
82
|
}
|
|
78
|
-
await this.cache.del(customKey);
|
|
79
83
|
}
|
|
80
84
|
}
|
|
81
85
|
exports.default = CacheMongoose;
|
package/dist/cjs/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;AAAA,4DAAsB;AACtB,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
declare class
|
|
1
|
+
import type ICacheOptions from '../interfaces/ICacheOptions';
|
|
2
|
+
declare class CacheEngine {
|
|
3
3
|
private engine;
|
|
4
4
|
private defaultTTL;
|
|
5
|
-
|
|
5
|
+
private readonly engines;
|
|
6
|
+
constructor(cacheOptions: ICacheOptions);
|
|
6
7
|
get(key: string): Promise<Record<string, unknown> | Record<string, unknown>[] | undefined>;
|
|
7
|
-
set(key: string, value: Record<string, unknown> | Record<string, unknown>[], ttl?:
|
|
8
|
+
set(key: string, value: Record<string, unknown> | Record<string, unknown>[], ttl?: string): Promise<void>;
|
|
8
9
|
del(key: string): Promise<void>;
|
|
9
10
|
clear(): Promise<void>;
|
|
11
|
+
close(): Promise<void>;
|
|
10
12
|
}
|
|
11
|
-
export default
|
|
13
|
+
export default CacheEngine;
|
|
12
14
|
//# sourceMappingURL=Cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cache.d.ts","sourceRoot":"","sources":["../../../../src/cache/Cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Cache.d.ts","sourceRoot":"","sources":["../../../../src/cache/Cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,aAAa,MAAM,6BAA6B,CAAA;AAK5D,cAAM,WAAW;IACf,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;gBAE1C,YAAY,EAAE,aAAa;IAoBlC,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAI3F,GAAG,CAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1G,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAIvB,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAG9B;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -6,6 +6,7 @@ declare class MemoryCacheEngine implements ICacheEngine {
|
|
|
6
6
|
set(key: string, value: Record<string, unknown> | Record<string, unknown>[], ttl?: number): void;
|
|
7
7
|
del(key: string): void;
|
|
8
8
|
clear(): void;
|
|
9
|
+
close(): void;
|
|
9
10
|
}
|
|
10
11
|
export default MemoryCacheEngine;
|
|
11
12
|
//# sourceMappingURL=MemoryCacheEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryCacheEngine.d.ts","sourceRoot":"","sources":["../../../../../src/cache/engine/MemoryCacheEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAA;AAE7D,cAAM,iBAAkB,YAAW,YAAY;IAC7C,OAAO,CAAC,KAAK,CAA+G;;IAM5H,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"MemoryCacheEngine.d.ts","sourceRoot":"","sources":["../../../../../src/cache/engine/MemoryCacheEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAA;AAE7D,cAAM,iBAAkB,YAAW,YAAY;IAC7C,OAAO,CAAC,KAAK,CAA+G;;IAM5H,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS;IASlF,GAAG,CAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,SAAW,GAAG,IAAI;IAInG,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKvB,KAAK,IAAK,IAAI;IAId,KAAK,IAAK,IAAI;CAGf;AAED,eAAe,iBAAiB,CAAA"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
import type { RedisOptions } from 'ioredis';
|
|
1
2
|
import type ICacheEngine from '../../interfaces/ICacheEngine';
|
|
2
3
|
declare class RedisCacheEngine implements ICacheEngine {
|
|
3
4
|
private client;
|
|
4
|
-
constructor();
|
|
5
|
+
constructor(options: RedisOptions);
|
|
5
6
|
get(key: string): Promise<Record<string, unknown> | Record<string, unknown>[] | undefined>;
|
|
6
7
|
set(key: string, value: unknown, ttl?: number): Promise<void>;
|
|
7
8
|
del(key: string): Promise<void>;
|
|
8
9
|
clear(): Promise<void>;
|
|
10
|
+
close(): Promise<void>;
|
|
9
11
|
}
|
|
10
12
|
export default RedisCacheEngine;
|
|
11
13
|
//# sourceMappingURL=RedisCacheEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisCacheEngine.d.ts","sourceRoot":"","sources":["../../../../../src/cache/engine/RedisCacheEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RedisCacheEngine.d.ts","sourceRoot":"","sources":["../../../../../src/cache/engine/RedisCacheEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAS,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAA;AAE7D,cAAM,gBAAiB,YAAW,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAO;gBAER,OAAO,EAAE,YAAY;IAO5B,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAQ3F,GAAG,CAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAIvB,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAG9B;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -3,6 +3,7 @@ interface ICacheEngine {
|
|
|
3
3
|
set: (key: string, value: Record<string, unknown> | Record<string, unknown>[], ttl?: number) => Promise<void> | void;
|
|
4
4
|
del: (key: string) => Promise<void> | void;
|
|
5
5
|
clear: () => Promise<void> | void;
|
|
6
|
+
close: () => Promise<void> | void;
|
|
6
7
|
}
|
|
7
8
|
export default ICacheEngine;
|
|
8
9
|
//# sourceMappingURL=ICacheEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ICacheEngine.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/ICacheEngine.ts"],"names":[],"mappings":"AAAA,UAAU,YAAY;IACpB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAA;IAChK,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACpH,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1C,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAClC;AAED,eAAe,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"ICacheEngine.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/ICacheEngine.ts"],"names":[],"mappings":"AAAA,UAAU,YAAY;IACpB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAA;IAChK,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACpH,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1C,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACjC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAClC;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ICacheOptions.d.ts","sourceRoot":"","sources":["../../../../src/interfaces/ICacheOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,UAAU,aAAa;IACrB,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Mongoose } from 'mongoose';
|
|
2
|
-
import type
|
|
2
|
+
import type ICacheOptions from './interfaces/ICacheOptions';
|
|
3
3
|
declare module 'mongoose' {
|
|
4
4
|
interface Query<ResultType, DocType, THelpers, RawDocType> {
|
|
5
|
-
cache: (this: Query<ResultType, DocType, THelpers, RawDocType>, ttl?: string) => this;
|
|
5
|
+
cache: (this: Query<ResultType, DocType, THelpers, RawDocType>, ttl?: string, customKey?: string) => this;
|
|
6
6
|
_key?: string;
|
|
7
7
|
getCacheKey: (this: Query<ResultType, DocType, THelpers, RawDocType>) => string;
|
|
8
|
-
_ttl
|
|
9
|
-
getCacheTTL: (this: Query<ResultType, DocType, THelpers, RawDocType>) =>
|
|
8
|
+
_ttl?: string;
|
|
9
|
+
getCacheTTL: (this: Query<ResultType, DocType, THelpers, RawDocType>) => string | undefined;
|
|
10
10
|
op?: string;
|
|
11
11
|
_fields?: unknown;
|
|
12
12
|
_path?: unknown;
|
|
@@ -16,9 +16,11 @@ declare module 'mongoose' {
|
|
|
16
16
|
declare class CacheMongoose {
|
|
17
17
|
private static instance;
|
|
18
18
|
private cache;
|
|
19
|
+
private cacheOptions;
|
|
19
20
|
private constructor();
|
|
20
|
-
static init(mongoose: Mongoose,
|
|
21
|
-
|
|
21
|
+
static init(mongoose: Mongoose, cacheOptions: ICacheOptions): CacheMongoose;
|
|
22
|
+
clear(customKey?: string): Promise<void>;
|
|
23
|
+
close(): Promise<void>;
|
|
22
24
|
}
|
|
23
25
|
export default CacheMongoose;
|
|
24
26
|
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAG3D,OAAO,QAAQ,UAAU,CAAC;IACxB,UAAU,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;QACvD,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QACzG,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,MAAM,CAAA;QAC/E,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;QAC3F,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB;CACF;AAED,cAAM,aAAa;IAEjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO;WAKO,IAAI,CAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa;IAiFtE,KAAK,CAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzC,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAKrC;AAED,eAAe,aAAa,CAAA"}
|
package/dist/esm/cache/Cache.js
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import ms from 'ms';
|
|
2
2
|
import MemoryCacheEngine from './engine/MemoryCacheEngine';
|
|
3
3
|
import RedisCacheEngine from './engine/RedisCacheEngine';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if (!engines.includes(
|
|
8
|
-
throw new Error(`Invalid engine name: ${
|
|
4
|
+
class CacheEngine {
|
|
5
|
+
constructor(cacheOptions) {
|
|
6
|
+
this.engines = ['memory', 'redis'];
|
|
7
|
+
if (!this.engines.includes(cacheOptions.engine)) {
|
|
8
|
+
throw new Error(`Invalid engine name: ${cacheOptions.engine}`);
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
this.engine = new RedisCacheEngine();
|
|
10
|
+
if (cacheOptions.engine === 'redis' && !cacheOptions.engineOptions) {
|
|
11
|
+
throw new Error(`Engine options are required for ${cacheOptions.engine} engine`);
|
|
13
12
|
}
|
|
14
|
-
|
|
13
|
+
this.defaultTTL = ms(cacheOptions.defaultTTL ?? '1 minute');
|
|
14
|
+
if (cacheOptions.engine === 'redis' && cacheOptions.engineOptions) {
|
|
15
|
+
this.engine = new RedisCacheEngine(cacheOptions.engineOptions);
|
|
16
|
+
}
|
|
17
|
+
if (cacheOptions.engine === 'memory') {
|
|
15
18
|
this.engine = new MemoryCacheEngine();
|
|
16
19
|
}
|
|
17
20
|
}
|
|
@@ -19,7 +22,7 @@ class Cache {
|
|
|
19
22
|
return await this.engine.get(key);
|
|
20
23
|
}
|
|
21
24
|
async set(key, value, ttl) {
|
|
22
|
-
const actualTTL = ttl
|
|
25
|
+
const actualTTL = ttl ? ms(ttl) : this.defaultTTL;
|
|
23
26
|
return await this.engine.set(key, value, actualTTL);
|
|
24
27
|
}
|
|
25
28
|
async del(key) {
|
|
@@ -28,6 +31,9 @@ class Cache {
|
|
|
28
31
|
async clear() {
|
|
29
32
|
return await this.engine.clear();
|
|
30
33
|
}
|
|
34
|
+
async close() {
|
|
35
|
+
return await this.engine.close();
|
|
36
|
+
}
|
|
31
37
|
}
|
|
32
|
-
export default
|
|
38
|
+
export default CacheEngine;
|
|
33
39
|
//# sourceMappingURL=Cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/cache/Cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../../src/cache/Cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAKnB,OAAO,iBAAiB,MAAM,4BAA4B,CAAA;AAC1D,OAAO,gBAAgB,MAAM,2BAA2B,CAAA;AAExD,MAAM,WAAW;IAKf,YAAa,YAA2B;QAFvB,YAAO,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAA;QAGrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YAClE,MAAM,IAAI,KAAK,CAAC,mCAAmC,YAAY,CAAC,MAAM,SAAS,CAAC,CAAA;SACjF;QAED,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,IAAI,UAAU,CAAC,CAAA;QAE3D,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE;YACjE,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;SAC/D;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAA;SACtC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,KAA0D,EAAE,GAAY;QAC9F,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;QACjD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAClC,CAAC;CACF;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -5,6 +5,7 @@ class MemoryCacheEngine {
|
|
|
5
5
|
get(key) {
|
|
6
6
|
const item = this.cache[key];
|
|
7
7
|
if (!item || item.expiresAt < Date.now()) {
|
|
8
|
+
this.del(key);
|
|
8
9
|
return undefined;
|
|
9
10
|
}
|
|
10
11
|
return item.value;
|
|
@@ -18,6 +19,8 @@ class MemoryCacheEngine {
|
|
|
18
19
|
clear() {
|
|
19
20
|
this.cache = {};
|
|
20
21
|
}
|
|
22
|
+
close() {
|
|
23
|
+
}
|
|
21
24
|
}
|
|
22
25
|
export default MemoryCacheEngine;
|
|
23
26
|
//# sourceMappingURL=MemoryCacheEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/MemoryCacheEngine.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB;IAGrB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,CAAC;IAED,GAAG,CAAE,GAAW;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;YACxC,OAAO,SAAS,CAAA;SACjB;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,GAAG,CAAE,GAAW,EAAE,KAA0D,EAAE,GAAG,GAAG,QAAQ;QAC1F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAA;IAC1D,CAAC;IAED,GAAG,CAAE,GAAW;QAEd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,CAAC;CACF;AAED,eAAe,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"MemoryCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/MemoryCacheEngine.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB;IAGrB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,CAAC;IAED,GAAG,CAAE,GAAW;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACb,OAAO,SAAS,CAAA;SACjB;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,GAAG,CAAE,GAAW,EAAE,KAA0D,EAAE,GAAG,GAAG,QAAQ;QAC1F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAA;IAC1D,CAAC;IAED,GAAG,CAAE,GAAW;QAEd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,CAAC;IAED,KAAK;IAEL,CAAC;CACF;AAED,eAAe,iBAAiB,CAAA"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import IORedis from 'ioredis';
|
|
2
2
|
class RedisCacheEngine {
|
|
3
|
-
constructor() {
|
|
4
|
-
|
|
3
|
+
constructor(options) {
|
|
4
|
+
if (!options.keyPrefix) {
|
|
5
|
+
options.keyPrefix = 'cache-mongoose:';
|
|
6
|
+
}
|
|
7
|
+
this.client = new IORedis(options);
|
|
5
8
|
}
|
|
6
9
|
async get(key) {
|
|
7
10
|
const value = await this.client.get(key);
|
|
@@ -20,6 +23,9 @@ class RedisCacheEngine {
|
|
|
20
23
|
async clear() {
|
|
21
24
|
await this.client.flushdb();
|
|
22
25
|
}
|
|
26
|
+
async close() {
|
|
27
|
+
await this.client.quit();
|
|
28
|
+
}
|
|
23
29
|
}
|
|
24
30
|
export default RedisCacheEngine;
|
|
25
31
|
//# sourceMappingURL=RedisCacheEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/RedisCacheEngine.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"RedisCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/RedisCacheEngine.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAK7B,MAAM,gBAAgB;IAGpB,YAAa,OAAqB;QAChC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACtB,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAA;SACtC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACxC,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,OAAO,SAAS,CAAA;SACjB;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAiE,CAAA;IAC1F,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,KAAc,EAAE,GAAG,GAAG,QAAQ;QACpD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,eAAe,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ICacheOptions.js","sourceRoot":"","sources":["../../../src/interfaces/ICacheOptions.ts"],"names":[],"mappings":""}
|
package/dist/esm/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAA;AACtB,OAAO,
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/plugin.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import ms from 'ms';
|
|
3
2
|
import Cache from './cache/Cache';
|
|
4
3
|
import { getKey } from './crypto';
|
|
5
4
|
class CacheMongoose {
|
|
6
5
|
constructor() {
|
|
7
6
|
}
|
|
8
|
-
static init(mongoose,
|
|
7
|
+
static init(mongoose, cacheOptions) {
|
|
9
8
|
if (typeof mongoose.Model.hydrate !== 'function')
|
|
10
9
|
throw new Error('Cache is only compatible with versions of mongoose that implement the `model.hydrate` method');
|
|
11
10
|
if (!this.instance) {
|
|
12
11
|
this.instance = new CacheMongoose();
|
|
13
|
-
this.instance.cache = new Cache(
|
|
12
|
+
this.instance.cache = new Cache(cacheOptions);
|
|
13
|
+
this.instance.cacheOptions = cacheOptions;
|
|
14
14
|
const cache = this.instance.cache;
|
|
15
15
|
const mongooseExec = mongoose.Query.prototype.exec;
|
|
16
16
|
mongoose.Query.prototype.getCacheKey = function () {
|
|
@@ -37,12 +37,12 @@ class CacheMongoose {
|
|
|
37
37
|
return this._ttl;
|
|
38
38
|
};
|
|
39
39
|
mongoose.Query.prototype.cache = function (ttl, customKey) {
|
|
40
|
-
this._ttl =
|
|
40
|
+
this._ttl = ttl;
|
|
41
41
|
this._key = customKey;
|
|
42
42
|
return this;
|
|
43
43
|
};
|
|
44
44
|
mongoose.Query.prototype.exec = async function () {
|
|
45
|
-
if (!
|
|
45
|
+
if (!this._ttl) {
|
|
46
46
|
return mongooseExec.apply(this);
|
|
47
47
|
}
|
|
48
48
|
const key = this.getCacheKey();
|
|
@@ -67,12 +67,16 @@ class CacheMongoose {
|
|
|
67
67
|
}
|
|
68
68
|
return this.instance;
|
|
69
69
|
}
|
|
70
|
-
async
|
|
70
|
+
async clear(customKey) {
|
|
71
71
|
if (!customKey) {
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
return this.cache.clear();
|
|
73
|
+
}
|
|
74
|
+
return this.cache.del(customKey);
|
|
75
|
+
}
|
|
76
|
+
async close() {
|
|
77
|
+
if (this.cacheOptions.engine === 'redis') {
|
|
78
|
+
await this.cache.close();
|
|
74
79
|
}
|
|
75
|
-
await this.cache.del(customKey);
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
82
|
export default CacheMongoose;
|