ts-cache-mongoose 1.7.1 → 1.7.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.
Files changed (88) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +9 -9
  3. package/dist/index.cjs +325 -0
  4. package/dist/{esm/types/plugin.d.ts → index.d.cts} +22 -4
  5. package/dist/{cjs/types/plugin.d.ts → index.d.mts} +22 -4
  6. package/dist/index.mjs +323 -0
  7. package/package.json +37 -29
  8. package/src/extend/aggregate.ts +2 -2
  9. package/src/extend/query.ts +2 -2
  10. package/src/{plugin.ts → index.ts} +2 -0
  11. package/tests/cache-debug.test.ts +2 -3
  12. package/tests/cache-memory.test.ts +2 -3
  13. package/tests/cache-options.test.ts +0 -1
  14. package/tests/cache-redis.test.ts +11 -13
  15. package/tests/key.test.ts +2 -1
  16. package/tsconfig.json +5 -5
  17. package/vite.config.mts +1 -0
  18. package/dist/cjs/cache/Cache.js +0 -67
  19. package/dist/cjs/cache/Cache.js.map +0 -1
  20. package/dist/cjs/cache/engine/MemoryCacheEngine.js +0 -39
  21. package/dist/cjs/cache/engine/MemoryCacheEngine.js.map +0 -1
  22. package/dist/cjs/cache/engine/RedisCacheEngine.js +0 -54
  23. package/dist/cjs/cache/engine/RedisCacheEngine.js.map +0 -1
  24. package/dist/cjs/extend/aggregate.js +0 -41
  25. package/dist/cjs/extend/aggregate.js.map +0 -1
  26. package/dist/cjs/extend/query.js +0 -67
  27. package/dist/cjs/extend/query.js.map +0 -1
  28. package/dist/cjs/key.js +0 -14
  29. package/dist/cjs/key.js.map +0 -1
  30. package/dist/cjs/plugin.js +0 -36
  31. package/dist/cjs/plugin.js.map +0 -1
  32. package/dist/cjs/types/cache/Cache.d.ts +0 -11
  33. package/dist/cjs/types/cache/Cache.d.ts.map +0 -1
  34. package/dist/cjs/types/cache/engine/MemoryCacheEngine.d.ts +0 -11
  35. package/dist/cjs/types/cache/engine/MemoryCacheEngine.d.ts.map +0 -1
  36. package/dist/cjs/types/cache/engine/RedisCacheEngine.d.ts +0 -12
  37. package/dist/cjs/types/cache/engine/RedisCacheEngine.d.ts.map +0 -1
  38. package/dist/cjs/types/extend/aggregate.d.ts +0 -4
  39. package/dist/cjs/types/extend/aggregate.d.ts.map +0 -1
  40. package/dist/cjs/types/extend/query.d.ts +0 -4
  41. package/dist/cjs/types/extend/query.d.ts.map +0 -1
  42. package/dist/cjs/types/key.d.ts +0 -2
  43. package/dist/cjs/types/key.d.ts.map +0 -1
  44. package/dist/cjs/types/plugin.d.ts.map +0 -1
  45. package/dist/cjs/types/types.d.ts +0 -18
  46. package/dist/cjs/types/types.d.ts.map +0 -1
  47. package/dist/cjs/types/version.d.ts +0 -6
  48. package/dist/cjs/types/version.d.ts.map +0 -1
  49. package/dist/cjs/types.js +0 -3
  50. package/dist/cjs/types.js.map +0 -1
  51. package/dist/cjs/version.js +0 -20
  52. package/dist/cjs/version.js.map +0 -1
  53. package/dist/esm/cache/Cache.js +0 -63
  54. package/dist/esm/cache/Cache.js.map +0 -1
  55. package/dist/esm/cache/engine/MemoryCacheEngine.js +0 -35
  56. package/dist/esm/cache/engine/MemoryCacheEngine.js.map +0 -1
  57. package/dist/esm/cache/engine/RedisCacheEngine.js +0 -50
  58. package/dist/esm/cache/engine/RedisCacheEngine.js.map +0 -1
  59. package/dist/esm/extend/aggregate.js +0 -38
  60. package/dist/esm/extend/aggregate.js.map +0 -1
  61. package/dist/esm/extend/query.js +0 -64
  62. package/dist/esm/extend/query.js.map +0 -1
  63. package/dist/esm/key.js +0 -10
  64. package/dist/esm/key.js.map +0 -1
  65. package/dist/esm/package.json +0 -1
  66. package/dist/esm/plugin.js +0 -34
  67. package/dist/esm/plugin.js.map +0 -1
  68. package/dist/esm/types/cache/Cache.d.ts +0 -11
  69. package/dist/esm/types/cache/Cache.d.ts.map +0 -1
  70. package/dist/esm/types/cache/engine/MemoryCacheEngine.d.ts +0 -11
  71. package/dist/esm/types/cache/engine/MemoryCacheEngine.d.ts.map +0 -1
  72. package/dist/esm/types/cache/engine/RedisCacheEngine.d.ts +0 -12
  73. package/dist/esm/types/cache/engine/RedisCacheEngine.d.ts.map +0 -1
  74. package/dist/esm/types/extend/aggregate.d.ts +0 -4
  75. package/dist/esm/types/extend/aggregate.d.ts.map +0 -1
  76. package/dist/esm/types/extend/query.d.ts +0 -4
  77. package/dist/esm/types/extend/query.d.ts.map +0 -1
  78. package/dist/esm/types/key.d.ts +0 -2
  79. package/dist/esm/types/key.d.ts.map +0 -1
  80. package/dist/esm/types/plugin.d.ts.map +0 -1
  81. package/dist/esm/types/types.d.ts +0 -18
  82. package/dist/esm/types/types.d.ts.map +0 -1
  83. package/dist/esm/types/version.d.ts +0 -6
  84. package/dist/esm/types/version.d.ts.map +0 -1
  85. package/dist/esm/types.js +0 -2
  86. package/dist/esm/types.js.map +0 -1
  87. package/dist/esm/version.js +0 -15
  88. package/dist/esm/version.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"MemoryCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/MemoryCacheEngine.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAInB,MAAM,OAAO,iBAAiB;IAG5B;QAFS,2CAAwE;QAG/E,uBAAA,IAAI,4BAAU,IAAI,GAAG,EAAE,MAAA,CAAA;IACzB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,IAAI,GAAG,uBAAA,IAAI,gCAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACjC,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,CAAC,GAAW,EAAE,KAAgB,EAAE,GAAc;QAC/C,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACxD,MAAM,SAAS,GAAG,QAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAA;QACtD,uBAAA,IAAI,gCAAO,CAAC,GAAG,CAAC,GAAG,EAAE;YACnB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SAClC,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,GAAW;QACb,uBAAA,IAAI,gCAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAED,KAAK;QACH,uBAAA,IAAI,gCAAO,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED,KAAK;IAEL,CAAC;CACF"}
@@ -1,50 +0,0 @@
1
- var _RedisCacheEngine_client;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { EJSON } from 'bson';
4
- import IORedis from 'ioredis';
5
- import ms from 'ms';
6
- import { convertToObject } from '../../version.js';
7
- export class RedisCacheEngine {
8
- constructor(options) {
9
- _RedisCacheEngine_client.set(this, void 0);
10
- if (!options.keyPrefix) {
11
- options.keyPrefix = 'cache-mongoose:';
12
- }
13
- __classPrivateFieldSet(this, _RedisCacheEngine_client, new IORedis(options), "f");
14
- }
15
- async get(key) {
16
- try {
17
- const value = await __classPrivateFieldGet(this, _RedisCacheEngine_client, "f").get(key);
18
- if (value === null) {
19
- return undefined;
20
- }
21
- return EJSON.parse(value);
22
- }
23
- catch (err) {
24
- console.error(err);
25
- return undefined;
26
- }
27
- }
28
- async set(key, value, ttl) {
29
- try {
30
- const givenTTL = typeof ttl === 'string' ? ms(ttl) : ttl;
31
- const actualTTL = givenTTL ?? Number.POSITIVE_INFINITY;
32
- const serializedValue = EJSON.stringify(convertToObject(value));
33
- await __classPrivateFieldGet(this, _RedisCacheEngine_client, "f").setex(key, Math.ceil(actualTTL / 1000), serializedValue);
34
- }
35
- catch (err) {
36
- console.error(err);
37
- }
38
- }
39
- async del(key) {
40
- await __classPrivateFieldGet(this, _RedisCacheEngine_client, "f").del(key);
41
- }
42
- async clear() {
43
- await __classPrivateFieldGet(this, _RedisCacheEngine_client, "f").flushdb();
44
- }
45
- async close() {
46
- await __classPrivateFieldGet(this, _RedisCacheEngine_client, "f").quit();
47
- }
48
- }
49
- _RedisCacheEngine_client = new WeakMap();
50
- //# sourceMappingURL=RedisCacheEngine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RedisCacheEngine.js","sourceRoot":"","sources":["../../../../src/cache/engine/RedisCacheEngine.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAC5B,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAK/C,MAAM,OAAO,gBAAgB;IAG3B,YAAY,OAAqB;QAFxB,2CAAc;QAGrB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,SAAS,GAAG,iBAAiB,CAAA;QACvC,CAAC;QACD,uBAAA,IAAI,4BAAW,IAAI,OAAO,CAAC,OAAO,CAAC,MAAA,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,uBAAA,IAAI,gCAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACzC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO,SAAS,CAAA;YAClB,CAAC;YACD,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAc,CAAA;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClB,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAgB,EAAE,GAAc;QACrD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;YACxD,MAAM,SAAS,GAAG,QAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAA;YACtD,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;YAC/D,MAAM,uBAAA,IAAI,gCAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,eAAe,CAAC,CAAA;QAC7E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,uBAAA,IAAI,gCAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,uBAAA,IAAI,gCAAQ,CAAC,OAAO,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,uBAAA,IAAI,gCAAQ,CAAC,IAAI,EAAE,CAAA;IAC3B,CAAC;CACF"}
@@ -1,38 +0,0 @@
1
- import { getKey } from '../key.js';
2
- export function extendAggregate(mongoose, cache) {
3
- const mongooseExec = mongoose.Aggregate.prototype.exec;
4
- mongoose.Aggregate.prototype.getCacheKey = function () {
5
- if (this._key != null)
6
- return this._key;
7
- return getKey({
8
- pipeline: this.pipeline(),
9
- });
10
- };
11
- mongoose.Aggregate.prototype.getCacheTTL = function () {
12
- return this._ttl;
13
- };
14
- mongoose.Aggregate.prototype.cache = function (ttl, customKey) {
15
- this._ttl = ttl ?? null;
16
- this._key = customKey ?? null;
17
- return this;
18
- };
19
- mongoose.Aggregate.prototype.exec = async function (...args) {
20
- if (!Object.prototype.hasOwnProperty.call(this, '_ttl')) {
21
- return mongooseExec.apply(this, args);
22
- }
23
- const key = this.getCacheKey();
24
- const ttl = this.getCacheTTL();
25
- const resultCache = await cache.get(key).catch((err) => {
26
- console.error(err);
27
- });
28
- if (resultCache) {
29
- return resultCache;
30
- }
31
- const result = (await mongooseExec.call(this));
32
- await cache.set(key, result, ttl).catch((err) => {
33
- console.error(err);
34
- });
35
- return result;
36
- };
37
- }
38
- //# sourceMappingURL=aggregate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../src/extend/aggregate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAM/B,MAAM,UAAU,eAAe,CAAC,QAAkB,EAAE,KAAY;IAC9D,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAA;IAEtD,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;IAED,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG;QACzC,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC,CAAA;IAED,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,GAAc,EAAE,SAAkB;QAC/E,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,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,GAAY,EAAE,EAAE;YAC9D,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,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAwD,CAAA;QACrG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACvD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC"}
@@ -1,64 +0,0 @@
1
- import { getKey } from '../key.js';
2
- export function extendQuery(mongoose, cache) {
3
- const mongooseExec = mongoose.Query.prototype.exec;
4
- mongoose.Query.prototype.getCacheKey = function () {
5
- if (this._key != null)
6
- return this._key;
7
- const filter = this.getFilter();
8
- const update = this.getUpdate();
9
- const options = this.getOptions();
10
- const mongooseOptions = this.mongooseOptions();
11
- return getKey({
12
- model: this.model.modelName,
13
- op: this.op,
14
- filter,
15
- update,
16
- options,
17
- mongooseOptions,
18
- _path: this._path,
19
- _fields: this._fields,
20
- _distinct: this._distinct,
21
- _conditions: this._conditions,
22
- });
23
- };
24
- mongoose.Query.prototype.getCacheTTL = function () {
25
- return this._ttl;
26
- };
27
- mongoose.Query.prototype.cache = function (ttl, customKey) {
28
- this._ttl = ttl ?? null;
29
- this._key = customKey ?? null;
30
- return this;
31
- };
32
- mongoose.Query.prototype.exec = async function (...args) {
33
- if (!Object.prototype.hasOwnProperty.call(this, '_ttl')) {
34
- return mongooseExec.apply(this, args);
35
- }
36
- const key = this.getCacheKey();
37
- const ttl = this.getCacheTTL();
38
- const mongooseOptions = this.mongooseOptions();
39
- const isCount = this.op?.includes('count') ?? false;
40
- const isDistinct = this.op === 'distinct';
41
- const model = this.model.modelName;
42
- const resultCache = await cache.get(key).catch((err) => {
43
- console.error(err);
44
- });
45
- if (resultCache) {
46
- if (isCount || isDistinct || mongooseOptions.lean) {
47
- return resultCache;
48
- }
49
- const modelConstructor = mongoose.model(model);
50
- if (Array.isArray(resultCache)) {
51
- return resultCache.map((item) => {
52
- return modelConstructor.hydrate(item);
53
- });
54
- }
55
- return modelConstructor.hydrate(resultCache);
56
- }
57
- const result = (await mongooseExec.call(this));
58
- await cache.set(key, result, ttl).catch((err) => {
59
- console.error(err);
60
- });
61
- return result;
62
- };
63
- }
64
- //# sourceMappingURL=query.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/extend/query.ts"],"names":[],"mappings":"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"}
package/dist/esm/key.js DELETED
@@ -1,10 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import sortKeys from 'sort-keys';
3
- export function getKey(data) {
4
- const sortedObj = sortKeys(data, { deep: true });
5
- const sortedStr = JSON.stringify(sortedObj, (_, val) => {
6
- return val instanceof RegExp ? String(val) : val;
7
- });
8
- return createHash('sha1').update(sortedStr).digest('hex');
9
- }
10
- //# sourceMappingURL=key.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"key.js","sourceRoot":"","sources":["../../src/key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,MAAM,CAAC,IAAyD;IAC9E,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"}
@@ -1 +0,0 @@
1
- { "type": "module" }
@@ -1,34 +0,0 @@
1
- var _a, _CacheMongoose_instance;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { Cache } from './cache/Cache.js';
4
- import { extendAggregate } from './extend/aggregate.js';
5
- import { extendQuery } from './extend/query.js';
6
- class CacheMongoose {
7
- constructor() {
8
- }
9
- static init(mongoose, cacheOptions) {
10
- if (!__classPrivateFieldGet(_a, _a, "f", _CacheMongoose_instance)) {
11
- __classPrivateFieldSet(_a, _a, new _a(), "f", _CacheMongoose_instance);
12
- __classPrivateFieldGet(_a, _a, "f", _CacheMongoose_instance).cache = new Cache(cacheOptions);
13
- const cache = __classPrivateFieldGet(_a, _a, "f", _CacheMongoose_instance).cache;
14
- extendQuery(mongoose, cache);
15
- extendAggregate(mongoose, cache);
16
- }
17
- return __classPrivateFieldGet(_a, _a, "f", _CacheMongoose_instance);
18
- }
19
- async clear(customKey) {
20
- if (customKey != null) {
21
- await this.cache.del(customKey);
22
- }
23
- else {
24
- await this.cache.clear();
25
- }
26
- }
27
- async close() {
28
- await this.cache.close();
29
- }
30
- }
31
- _a = CacheMongoose;
32
- _CacheMongoose_instance = { value: void 0 };
33
- export default CacheMongoose;
34
- //# sourceMappingURL=plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AA4B5C,MAAM,aAAa;IAIjB;IAEA,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,QAAkB,EAAE,YAA0B;QAC/D,IAAI,CAAC,uBAAA,EAAa,mCAAU,EAAE,CAAC;YAC7B,uBAAA,EAAa,MAAa,IAAI,EAAa,EAAE,+BAAA,CAAA;YAC7C,uBAAA,EAAa,mCAAU,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAA;YAEvD,MAAM,KAAK,GAAG,uBAAA,EAAa,mCAAU,CAAC,KAAK,CAAA;YAE3C,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC5B,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAClC,CAAC;QAED,OAAO,uBAAA,EAAa,mCAAU,CAAA;IAChC,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,SAAkB;QACnC,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;;AAhCQ,2CAAS,CAA2B;AAkC7C,eAAe,aAAa,CAAA"}
@@ -1,11 +0,0 @@
1
- import type { CacheData, CacheOptions, CacheTTL } from '../types';
2
- export declare class Cache {
3
- #private;
4
- constructor(cacheOptions: CacheOptions);
5
- get(key: string): Promise<CacheData>;
6
- set(key: string, value: CacheData, ttl: CacheTTL | null): Promise<void>;
7
- del(key: string): Promise<void>;
8
- clear(): Promise<void>;
9
- close(): Promise<void>;
10
- }
11
- //# sourceMappingURL=Cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cache.d.ts","sourceRoot":"","sources":["../../../../src/cache/Cache.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAe,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE9E,qBAAa,KAAK;;gBAMJ,YAAY,EAAE,YAAY;IA0BhC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IASpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IASvE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
@@ -1,11 +0,0 @@
1
- import type { CacheData, CacheEngine, CacheTTL } from '../../types';
2
- export declare class MemoryCacheEngine implements CacheEngine {
3
- #private;
4
- constructor();
5
- get(key: string): CacheData;
6
- set(key: string, value: CacheData, ttl?: CacheTTL): void;
7
- del(key: string): void;
8
- clear(): void;
9
- close(): void;
10
- }
11
- //# sourceMappingURL=MemoryCacheEngine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MemoryCacheEngine.d.ts","sourceRoot":"","sources":["../../../../../src/cache/engine/MemoryCacheEngine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEnE,qBAAa,iBAAkB,YAAW,WAAW;;;IAOnD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAS3B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI;IASxD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAItB,KAAK,IAAI,IAAI;IAIb,KAAK,IAAI,IAAI;CAGd"}
@@ -1,12 +0,0 @@
1
- import type { RedisOptions } from 'ioredis';
2
- import type { CacheData, CacheEngine, CacheTTL } from '../../types';
3
- export declare class RedisCacheEngine implements CacheEngine {
4
- #private;
5
- constructor(options: RedisOptions);
6
- get(key: string): Promise<CacheData>;
7
- set(key: string, value: CacheData, ttl?: CacheTTL): Promise<void>;
8
- del(key: string): Promise<void>;
9
- clear(): Promise<void>;
10
- close(): Promise<void>;
11
- }
12
- //# sourceMappingURL=RedisCacheEngine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RedisCacheEngine.d.ts","sourceRoot":"","sources":["../../../../../src/cache/engine/RedisCacheEngine.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAS,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEnE,qBAAa,gBAAiB,YAAW,WAAW;;gBAGtC,OAAO,EAAE,YAAY;IAO3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAapC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
@@ -1,4 +0,0 @@
1
- import type { Mongoose } from 'mongoose';
2
- import type { Cache } from '../cache/Cache';
3
- export declare function extendAggregate(mongoose: Mongoose, cache: Cache): void;
4
- //# sourceMappingURL=aggregate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../../src/extend/aggregate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAG3C,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA4CtE"}
@@ -1,4 +0,0 @@
1
- import type { Mongoose } from 'mongoose';
2
- import type { Cache } from '../cache/Cache';
3
- export declare function extendQuery(mongoose: Mongoose, cache: Cache): void;
4
- //# sourceMappingURL=query.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../../src/extend/query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAG3C,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA0ElE"}
@@ -1,2 +0,0 @@
1
- export declare function getKey(data: Record<string, unknown>[] | Record<string, unknown>): string;
2
- //# sourceMappingURL=key.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../../../src/key.ts"],"names":[],"mappings":"AAGA,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAMxF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAErD,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,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QAC3G,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;QACnB,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,MAAM,CAAA;QAC/E,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;QACrB,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,KAAK,QAAQ,GAAG,IAAI,CAAA;QACxF,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,WAAW,CAAC,EAAE,OAAO,CAAA;KACtB;IAED,UAAU,SAAS,CAAC,UAAU;QAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;QAChF,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;QACnB,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,MAAM,CAAA;QACpD,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;QACrB,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,QAAQ,GAAG,IAAI,CAAA;KAC9D;CACF;AAED,cAAM,aAAa;;IAEjB,OAAO,CAAC,KAAK,CAAQ;IAErB,OAAO;WAIO,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,GAAG,aAAa;IAcpE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC;AAED,eAAe,aAAa,CAAA"}
@@ -1,18 +0,0 @@
1
- import type { RedisOptions } from 'ioredis';
2
- import type { StringValue } from 'ms';
3
- export type CacheTTL = number | StringValue;
4
- export type CacheData = Record<string, unknown> | Record<string, unknown>[] | unknown[] | number | undefined;
5
- export type CacheOptions = {
6
- engine: 'memory' | 'redis';
7
- engineOptions?: RedisOptions;
8
- defaultTTL?: CacheTTL;
9
- debug?: boolean;
10
- };
11
- export interface CacheEngine {
12
- get: (key: string) => Promise<CacheData> | CacheData;
13
- set: (key: string, value: CacheData, ttl?: CacheTTL) => Promise<void> | void;
14
- del: (key: string) => Promise<void> | void;
15
- clear: () => Promise<void> | void;
16
- close: () => Promise<void> | void;
17
- }
18
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAErC,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAA;AAE3C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,GAAG,SAAS,CAAA;AAE5G,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC1B,aAAa,CAAC,EAAE,YAAY,CAAA;IAC5B,UAAU,CAAC,EAAE,QAAQ,CAAA;IACrB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;IACpD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC5E,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"}
@@ -1,6 +0,0 @@
1
- import type { CacheData } from './types';
2
- export declare const isMongooseLessThan7: boolean;
3
- export declare const convertToObject: <T>(value: (T & {
4
- toObject?: () => CacheData;
5
- }) | undefined) => CacheData;
6
- //# sourceMappingURL=version.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/version.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,eAAO,MAAM,mBAAmB,SAAoC,CAAA;AAEpE,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,SAAS,CAAA;CAAE,CAAC,GAAG,SAAS,KAAG,SAW5F,CAAA"}
package/dist/esm/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- import mongoose from 'mongoose';
2
- import { satisfies } from 'semver';
3
- export const isMongooseLessThan7 = satisfies(mongoose.version, '<7');
4
- export const convertToObject = (value) => {
5
- if (isMongooseLessThan7) {
6
- if (value != null && typeof value === 'object' && !Array.isArray(value) && value.toObject) {
7
- return value.toObject();
8
- }
9
- if (Array.isArray(value)) {
10
- return value.map((doc) => convertToObject(doc));
11
- }
12
- }
13
- return value;
14
- };
15
- //# sourceMappingURL=version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAIlC,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAEpE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAI,KAAuD,EAAa,EAAE;IACvG,IAAI,mBAAmB,EAAE,CAAC;QACxB,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1F,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;QACzB,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}