ts-cache-mongoose 1.4.2 → 1.4.3
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/.eslintrc +17 -1
- package/README.md +13 -0
- package/dist/cjs/types/interfaces/ICacheOptions.d.ts.map +1 -1
- package/dist/esm/cache/Cache.js +8 -11
- package/dist/esm/cache/Cache.js.map +1 -1
- package/dist/esm/cache/engine/MemoryCacheEngine.js +1 -3
- package/dist/esm/cache/engine/MemoryCacheEngine.js.map +1 -1
- package/dist/esm/cache/engine/RedisCacheEngine.js +6 -9
- package/dist/esm/cache/engine/RedisCacheEngine.js.map +1 -1
- package/dist/esm/extend/aggregate.js +3 -6
- package/dist/esm/extend/aggregate.js.map +1 -1
- package/dist/esm/extend/query.js +3 -6
- package/dist/esm/extend/query.js.map +1 -1
- package/dist/esm/interfaces/ICacheEngine.js +1 -2
- package/dist/esm/interfaces/ICacheOptions.js +1 -2
- package/dist/esm/interfaces/IData.js +1 -2
- package/dist/esm/key.js +5 -10
- package/dist/esm/key.js.map +1 -1
- package/dist/esm/package.json +1 -0
- package/dist/esm/plugin.js +30 -0
- package/dist/esm/plugin.js.map +1 -1
- package/dist/esm/types/interfaces/ICacheOptions.d.ts.map +1 -1
- package/package.json +8 -7
- package/src/interfaces/ICacheOptions.ts +2 -2
- package/tsconfig.json +4 -4
- package/dist/esm/plugin.mjs +0 -33
package/.eslintrc
CHANGED
|
@@ -25,7 +25,10 @@
|
|
|
25
25
|
"sourceType": "module"
|
|
26
26
|
},
|
|
27
27
|
"rules": {
|
|
28
|
-
"comma-dangle": [
|
|
28
|
+
"comma-dangle": [
|
|
29
|
+
"error",
|
|
30
|
+
"never"
|
|
31
|
+
],
|
|
29
32
|
"@typescript-eslint/array-type": "error",
|
|
30
33
|
"@typescript-eslint/consistent-type-imports": "error",
|
|
31
34
|
"@typescript-eslint/method-signature-style": "error",
|
|
@@ -86,6 +89,19 @@
|
|
|
86
89
|
"plugin:@typescript-eslint/stylistic-type-checked"
|
|
87
90
|
],
|
|
88
91
|
"rules": {
|
|
92
|
+
"@typescript-eslint/member-delimiter-style": [
|
|
93
|
+
"error",
|
|
94
|
+
{
|
|
95
|
+
"multiline": {
|
|
96
|
+
"delimiter": "none",
|
|
97
|
+
"requireLast": true
|
|
98
|
+
},
|
|
99
|
+
"singleline": {
|
|
100
|
+
"delimiter": "comma",
|
|
101
|
+
"requireLast": false
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
],
|
|
89
105
|
"@typescript-eslint/consistent-type-exports": "error",
|
|
90
106
|
"@typescript-eslint/explicit-function-return-type": "error",
|
|
91
107
|
"@typescript-eslint/explicit-module-boundary-types": "error",
|
package/README.md
CHANGED
|
@@ -40,6 +40,7 @@ Caching queries is a good way to improve performance of your application
|
|
|
40
40
|
- [x] Cache key prefix
|
|
41
41
|
- [x] Query caching
|
|
42
42
|
- [x] Aggregate caching
|
|
43
|
+
- [x] Supports ESM and CommonJS
|
|
43
44
|
|
|
44
45
|
## Installation
|
|
45
46
|
|
|
@@ -81,6 +82,8 @@ cache.init(mongoose, {
|
|
|
81
82
|
engine: 'memory',
|
|
82
83
|
})
|
|
83
84
|
|
|
85
|
+
// OR
|
|
86
|
+
|
|
84
87
|
// Redis example
|
|
85
88
|
cache.init(mongoose, {
|
|
86
89
|
defaultTTL: '60 seconds',
|
|
@@ -91,6 +94,7 @@ cache.init(mongoose, {
|
|
|
91
94
|
},
|
|
92
95
|
})
|
|
93
96
|
|
|
97
|
+
// Connect to your database
|
|
94
98
|
mongoose.connect('mongodb://localhost:27017/my-database')
|
|
95
99
|
|
|
96
100
|
// Somewhere in your code
|
|
@@ -122,6 +126,15 @@ const books = await Book.aggregate([
|
|
|
122
126
|
},
|
|
123
127
|
}
|
|
124
128
|
]).cache('1 minute').exec()
|
|
129
|
+
|
|
130
|
+
// Cache invalidation
|
|
131
|
+
|
|
132
|
+
// To clear all cache, don't use in production unless you know what you are doing
|
|
133
|
+
await cache.clear()
|
|
134
|
+
|
|
135
|
+
// Instead use custom cache key
|
|
136
|
+
const user = await User.findById('61bb4d6a1786e5123d7f4cf1').cache('1 minute', 'some-custom-key').exec()
|
|
137
|
+
await cache.clear('some-custom-key')
|
|
125
138
|
```
|
|
126
139
|
|
|
127
140
|
## Check my other projects
|
|
@@ -1 +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,
|
|
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,CAAA;IAC1B,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAe,aAAa,CAAA"}
|
package/dist/esm/cache/Cache.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const ms_1 = tslib_1.__importDefault(require("ms"));
|
|
5
|
-
const MemoryCacheEngine_1 = tslib_1.__importDefault(require("./engine/MemoryCacheEngine"));
|
|
6
|
-
const RedisCacheEngine_1 = tslib_1.__importDefault(require("./engine/RedisCacheEngine"));
|
|
1
|
+
import ms from 'ms';
|
|
2
|
+
import MemoryCacheEngine from './engine/MemoryCacheEngine.js';
|
|
3
|
+
import RedisCacheEngine from './engine/RedisCacheEngine.js';
|
|
7
4
|
class CacheEngine {
|
|
8
5
|
constructor(cacheOptions) {
|
|
9
6
|
this.engines = ['memory', 'redis'];
|
|
@@ -13,19 +10,19 @@ class CacheEngine {
|
|
|
13
10
|
if (cacheOptions.engine === 'redis' && !cacheOptions.engineOptions) {
|
|
14
11
|
throw new Error(`Engine options are required for ${cacheOptions.engine} engine`);
|
|
15
12
|
}
|
|
16
|
-
this.defaultTTL = (
|
|
13
|
+
this.defaultTTL = ms(cacheOptions.defaultTTL ?? '1 minute');
|
|
17
14
|
if (cacheOptions.engine === 'redis' && cacheOptions.engineOptions) {
|
|
18
|
-
this.engine = new
|
|
15
|
+
this.engine = new RedisCacheEngine(cacheOptions.engineOptions);
|
|
19
16
|
}
|
|
20
17
|
if (cacheOptions.engine === 'memory') {
|
|
21
|
-
this.engine = new
|
|
18
|
+
this.engine = new MemoryCacheEngine();
|
|
22
19
|
}
|
|
23
20
|
}
|
|
24
21
|
async get(key) {
|
|
25
22
|
return this.engine.get(key);
|
|
26
23
|
}
|
|
27
24
|
async set(key, value, ttl) {
|
|
28
|
-
const actualTTL = ttl ? (
|
|
25
|
+
const actualTTL = ttl ? ms(ttl) : this.defaultTTL;
|
|
29
26
|
return this.engine.set(key, value, actualTTL);
|
|
30
27
|
}
|
|
31
28
|
async del(key) {
|
|
@@ -38,5 +35,5 @@ class CacheEngine {
|
|
|
38
35
|
return this.engine.close();
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
|
-
|
|
38
|
+
export default CacheEngine;
|
|
42
39
|
//# 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,OAAO,EAAE,MAAM,IAAI,CAAA;AAMnB,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,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;QAChE,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,mCAAmC,YAAY,CAAC,MAAM,SAAS,CAAC,CAAA;QAClF,CAAC;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,CAAC;YAClE,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;QAChE,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAA;QACvC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW,EAAE,KAA0D,EAAE,GAAkB;QACpG,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IAC/C,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;CACF;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
1
|
class MemoryCacheEngine {
|
|
4
2
|
constructor() {
|
|
5
3
|
this.cache = {};
|
|
@@ -24,5 +22,5 @@ class MemoryCacheEngine {
|
|
|
24
22
|
close() {
|
|
25
23
|
}
|
|
26
24
|
}
|
|
27
|
-
|
|
25
|
+
export default MemoryCacheEngine;
|
|
28
26
|
//# sourceMappingURL=MemoryCacheEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MemoryCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/MemoryCacheEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MemoryCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/MemoryCacheEngine.ts"],"names":[],"mappings":"AAGA,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,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACb,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,GAAG,CAAE,GAAW,EAAE,KAAY,EAAE,GAAG,GAAG,QAAQ;QAC5C,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,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const ioredis_1 = tslib_1.__importDefault(require("ioredis"));
|
|
5
|
-
const mongoose_1 = tslib_1.__importStar(require("mongoose"));
|
|
1
|
+
import IORedis from 'ioredis';
|
|
2
|
+
import mongoose, { Types } from 'mongoose';
|
|
6
3
|
class RedisCacheEngine {
|
|
7
4
|
constructor(options) {
|
|
8
5
|
if (!options.keyPrefix) {
|
|
9
6
|
options.keyPrefix = 'cache-mongoose:';
|
|
10
7
|
}
|
|
11
|
-
this.client = new
|
|
8
|
+
this.client = new IORedis(options);
|
|
12
9
|
}
|
|
13
10
|
async get(key) {
|
|
14
11
|
const value = await this.client.get(key);
|
|
@@ -21,8 +18,8 @@ class RedisCacheEngine {
|
|
|
21
18
|
if (dateRegex.test(value)) {
|
|
22
19
|
return new Date(value);
|
|
23
20
|
}
|
|
24
|
-
else if (
|
|
25
|
-
return new
|
|
21
|
+
else if (mongoose.isObjectIdOrHexString(value)) {
|
|
22
|
+
return new Types.ObjectId(value);
|
|
26
23
|
}
|
|
27
24
|
}
|
|
28
25
|
return value;
|
|
@@ -42,5 +39,5 @@ class RedisCacheEngine {
|
|
|
42
39
|
await this.client.quit();
|
|
43
40
|
}
|
|
44
41
|
}
|
|
45
|
-
|
|
42
|
+
export default RedisCacheEngine;
|
|
46
43
|
//# sourceMappingURL=RedisCacheEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/RedisCacheEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RedisCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/RedisCacheEngine.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAM1C,MAAM,gBAAgB;IAGpB,YAAa,OAAqB;QAChC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAA;QACvC,CAAC;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,CAAC;YACnB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,+CAA+C,CAAA;gBACjE,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;gBACxB,CAAC;qBAAM,IAAI,QAAQ,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjD,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;gBAClC,CAAC;YACH,CAAC;YACD,OAAO,KAAgB,CAAA;QACzB,CAAC,CAAiE,CAAA;IACpE,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"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const key_1 = require("../key");
|
|
4
|
-
function extendQuery(mongoose, cache) {
|
|
1
|
+
import { getKey } from '../key.js';
|
|
2
|
+
export default function extendQuery(mongoose, cache) {
|
|
5
3
|
const mongooseExec = mongoose.Aggregate.prototype.exec;
|
|
6
4
|
mongoose.Aggregate.prototype.getCacheKey = function () {
|
|
7
5
|
if (this._key != null)
|
|
8
6
|
return this._key;
|
|
9
|
-
return
|
|
7
|
+
return getKey({
|
|
10
8
|
pipeline: this.pipeline()
|
|
11
9
|
});
|
|
12
10
|
};
|
|
@@ -37,5 +35,4 @@ function extendQuery(mongoose, cache) {
|
|
|
37
35
|
return result;
|
|
38
36
|
};
|
|
39
37
|
}
|
|
40
|
-
exports.default = extendQuery;
|
|
41
38
|
//# sourceMappingURL=aggregate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../src/extend/aggregate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../src/extend/aggregate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,QAAkB,EAAE,KAAY;IAEnE,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAA;IAGtD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG;QACzC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAA;QAEvC,OAAO,MAAM,CAAC;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG;QACzC,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAY,EAAE,SAAkB;QAC7E,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAGD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,WAAW,GAAG,IAAQ;QAC7D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YACxD,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACvC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAE9B,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACrD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,WAAW,CAAA;QACpB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAwD,CAAA;QACnG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC"}
|
package/dist/esm/extend/query.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const key_1 = require("../key");
|
|
4
|
-
function extendQuery(mongoose, cache) {
|
|
1
|
+
import { getKey } from '../key.js';
|
|
2
|
+
export default function extendQuery(mongoose, cache) {
|
|
5
3
|
const mongooseExec = mongoose.Query.prototype.exec;
|
|
6
4
|
mongoose.Query.prototype.getCacheKey = function () {
|
|
7
5
|
if (this._key != null)
|
|
@@ -10,7 +8,7 @@ function extendQuery(mongoose, cache) {
|
|
|
10
8
|
const update = this.getUpdate();
|
|
11
9
|
const options = this.getOptions();
|
|
12
10
|
const mongooseOptions = this.mongooseOptions();
|
|
13
|
-
return
|
|
11
|
+
return getKey({
|
|
14
12
|
model: this.model.modelName,
|
|
15
13
|
op: this.op,
|
|
16
14
|
filter,
|
|
@@ -65,5 +63,4 @@ function extendQuery(mongoose, cache) {
|
|
|
65
63
|
return result;
|
|
66
64
|
};
|
|
67
65
|
}
|
|
68
|
-
exports.default = extendQuery;
|
|
69
66
|
//# sourceMappingURL=query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/extend/query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/extend/query.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/key.js
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const crypto_1 = require("crypto");
|
|
6
|
-
const sort_keys_1 = tslib_1.__importDefault(require("sort-keys"));
|
|
7
|
-
function getKey(data) {
|
|
8
|
-
const sortedObj = (0, sort_keys_1.default)(data, { deep: true });
|
|
1
|
+
import { createHash } from 'crypto';
|
|
2
|
+
import sortKeys from 'sort-keys';
|
|
3
|
+
export function getKey(data) {
|
|
4
|
+
const sortedObj = sortKeys(data, { deep: true });
|
|
9
5
|
const sortedStr = JSON.stringify(sortedObj, (_, val) => {
|
|
10
6
|
return val instanceof RegExp ? String(val) : val;
|
|
11
7
|
});
|
|
12
|
-
return
|
|
8
|
+
return createHash('sha1').update(sortedStr).digest('hex');
|
|
13
9
|
}
|
|
14
|
-
exports.getKey = getKey;
|
|
15
10
|
//# sourceMappingURL=key.js.map
|
package/dist/esm/key.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.js","sourceRoot":"","sources":["../../src/key.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"key.js","sourceRoot":"","sources":["../../src/key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,MAAM,CAAE,IAAyD;IAC/E,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,GAAY,EAAE,EAAE;QAC9D,OAAO,GAAG,YAAY,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IAClD,CAAC,CAAC,CAAA;IACF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "type": "module" }
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import Cache from './cache/Cache.js';
|
|
2
|
+
import extendQuery from './extend/query.js';
|
|
3
|
+
import extendAggregate from './extend/aggregate.js';
|
|
4
|
+
class CacheMongoose {
|
|
5
|
+
constructor() {
|
|
6
|
+
}
|
|
7
|
+
static init(mongoose, cacheOptions) {
|
|
8
|
+
if (!this.instance) {
|
|
9
|
+
this.instance = new CacheMongoose();
|
|
10
|
+
this.instance.cache = new Cache(cacheOptions);
|
|
11
|
+
const cache = this.instance.cache;
|
|
12
|
+
extendQuery(mongoose, cache);
|
|
13
|
+
extendAggregate(mongoose, cache);
|
|
14
|
+
}
|
|
15
|
+
return this.instance;
|
|
16
|
+
}
|
|
17
|
+
async clear(customKey) {
|
|
18
|
+
if (customKey != null) {
|
|
19
|
+
await this.cache.del(customKey);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
await this.cache.clear();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async close() {
|
|
26
|
+
await this.cache.close();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export default CacheMongoose;
|
|
30
|
+
//# sourceMappingURL=plugin.js.map
|
package/dist/esm/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,eAAe,CAAA;AAKjC,OAAO,WAAW,MAAM,gBAAgB,CAAA;AACxC,OAAO,eAAe,MAAM,oBAAoB,CAAA;AAyBhD,MAAM,aAAa;IAKjB;IAEA,CAAC;IAEM,MAAM,CAAC,IAAI,CAAE,QAAkB,EAAE,YAA2B;QACjE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;YACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAA;YAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA;YAEjC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC5B,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEM,KAAK,CAAC,KAAK,CAAE,SAAkB;QACpC,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAC1B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -1 +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,
|
|
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,CAAA;IAC1B,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAe,aAAa,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-cache-mongoose",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.3",
|
|
4
4
|
"description": "Cache plugin for mongoose Queries and Aggregate (in-memory, redis)",
|
|
5
5
|
"author": "Alex Eagle",
|
|
6
6
|
"license": "MIT",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
".": {
|
|
54
54
|
"import": {
|
|
55
55
|
"types": "./dist/esm/types/plugin.d.ts",
|
|
56
|
-
"default": "./dist/esm/plugin.
|
|
56
|
+
"default": "./dist/esm/plugin.js"
|
|
57
57
|
},
|
|
58
58
|
"require": {
|
|
59
59
|
"types": "./dist/cjs/types/plugin.d.ts",
|
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
64
|
"main": "dist/cjs/plugin.js",
|
|
65
|
+
"module": "dist/esm/plugin.js",
|
|
65
66
|
"types": "dist/cjs/types/plugin.d.ts",
|
|
66
67
|
"scripts": {
|
|
67
68
|
"lint": "eslint . --ext .js,.ts",
|
|
@@ -71,7 +72,7 @@
|
|
|
71
72
|
"clean": "rm -rf ./dist",
|
|
72
73
|
"build": "npm run clean && npm run build:cjs && npm run build:esm",
|
|
73
74
|
"build:cjs": "tsc -p config/tsconfig.cjs.json",
|
|
74
|
-
"build:esm": "tsc -p config/tsconfig.esm.json &&
|
|
75
|
+
"build:esm": "tsc -p config/tsconfig.esm.json && bash/esm.sh",
|
|
75
76
|
"release": "npm run lint && npm run build && np"
|
|
76
77
|
},
|
|
77
78
|
"dependencies": {
|
|
@@ -82,16 +83,16 @@
|
|
|
82
83
|
"devDependencies": {
|
|
83
84
|
"@shelf/jest-mongodb": "4.2.0",
|
|
84
85
|
"@swc/cli": "0.1.63",
|
|
85
|
-
"@swc/core": "1.3.
|
|
86
|
+
"@swc/core": "1.3.100",
|
|
86
87
|
"@swc/helpers": "0.5.3",
|
|
87
88
|
"@swc/jest": "0.2.29",
|
|
88
89
|
"@swc/register": "0.1.10",
|
|
89
90
|
"@types/jest": "29.5.10",
|
|
90
91
|
"@types/ms": "0.7.34",
|
|
91
92
|
"@types/node": "20",
|
|
92
|
-
"@typescript-eslint/eslint-plugin": "6.13.
|
|
93
|
-
"@typescript-eslint/parser": "6.13.
|
|
94
|
-
"eslint": "8.
|
|
93
|
+
"@typescript-eslint/eslint-plugin": "6.13.2",
|
|
94
|
+
"@typescript-eslint/parser": "6.13.2",
|
|
95
|
+
"eslint": "8.55.0",
|
|
95
96
|
"eslint-plugin-jest": "27.6.0",
|
|
96
97
|
"eslint-plugin-jest-formatting": "3.1.0",
|
|
97
98
|
"eslint-plugin-sonarjs": "0.23.0",
|
package/tsconfig.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
|
-
"target": "
|
|
3
|
+
"target": "ES2021",
|
|
4
4
|
"lib": [
|
|
5
|
-
"
|
|
5
|
+
"ES2021",
|
|
6
6
|
],
|
|
7
|
-
"module": "
|
|
8
|
-
"moduleResolution": "
|
|
7
|
+
"module": "CommonJS",
|
|
8
|
+
"moduleResolution": "Node",
|
|
9
9
|
"outDir": "dist",
|
|
10
10
|
"strict": true,
|
|
11
11
|
"allowSyntheticDefaultImports": true,
|
package/dist/esm/plugin.mjs
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const Cache_1 = tslib_1.__importDefault(require("./cache/Cache"));
|
|
5
|
-
const query_1 = tslib_1.__importDefault(require("./extend/query"));
|
|
6
|
-
const aggregate_1 = tslib_1.__importDefault(require("./extend/aggregate"));
|
|
7
|
-
class CacheMongoose {
|
|
8
|
-
constructor() {
|
|
9
|
-
}
|
|
10
|
-
static init(mongoose, cacheOptions) {
|
|
11
|
-
if (!this.instance) {
|
|
12
|
-
this.instance = new CacheMongoose();
|
|
13
|
-
this.instance.cache = new Cache_1.default(cacheOptions);
|
|
14
|
-
const cache = this.instance.cache;
|
|
15
|
-
(0, query_1.default)(mongoose, cache);
|
|
16
|
-
(0, aggregate_1.default)(mongoose, cache);
|
|
17
|
-
}
|
|
18
|
-
return this.instance;
|
|
19
|
-
}
|
|
20
|
-
async clear(customKey) {
|
|
21
|
-
if (customKey != null) {
|
|
22
|
-
await this.cache.del(customKey);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
await this.cache.clear();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
async close() {
|
|
29
|
-
await this.cache.close();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
exports.default = CacheMongoose;
|
|
33
|
-
//# sourceMappingURL=plugin.js.map
|