@medusajs/caching 2.10.4-snapshot-20251002131849 → 2.10.4-snapshot-20251003114416

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.
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/loaders/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAM1E,OAAO,EAGL,oBAAoB,EAErB,MAAM,QAAQ,CAAA;kDA2BZ,aAAa,CACd,CACI,eAAe,CAAC,8BAA8B,GAC9C,eAAe,CAAC,6CAA6C,CAChE,GACC,oBAAoB,CACvB,KAAG,OAAO,CAAC,IAAI,CAAC;AATjB,wBAyDC"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/loaders/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAM1E,OAAO,EAGL,oBAAoB,EAErB,MAAM,QAAQ,CAAA;kDA2BZ,aAAa,CACd,CACI,eAAe,CAAC,8BAA8B,GAC9C,eAAe,CAAC,6CAA6C,CAChE,GACC,oBAAoB,CACvB,KAAG,OAAO,CAAC,IAAI,CAAC;AATjB,wBAuEC"}
@@ -25,14 +25,18 @@ exports.default = async ({ container, options, }) => {
25
25
  container.registerAdd(_types_1.CachingIdentifiersRegistrationName, (0, awilix_1.asValue)(undefined));
26
26
  const strategy = strategy_1.DefaultCacheStrategy; // Re enable custom strategy another time
27
27
  container.register("strategy", (0, awilix_1.asValue)(strategy));
28
- // MemoryCachingProvider - default provider
29
- container.register({
30
- [_types_1.CachingProviderRegistrationPrefix + memory_cache_1.MemoryCachingProvider.identifier]: (0, awilix_1.asFunction)(() => new memory_cache_1.MemoryCachingProvider(), {
31
- lifetime: awilix_1.Lifetime.SINGLETON,
32
- }),
33
- });
34
- container.registerAdd(_types_1.CachingIdentifiersRegistrationName, (0, awilix_1.asValue)(memory_cache_1.MemoryCachingProvider.identifier));
35
- container.register(_types_1.CachingDefaultProvider, (0, awilix_1.asValue)(memory_cache_1.MemoryCachingProvider.identifier));
28
+ const inMemoryOptions = options?.in_memory ?? {};
29
+ const { enable: isInMemoryEnabled, ...restInmemoryOptions } = inMemoryOptions;
30
+ if (isInMemoryEnabled) {
31
+ // MemoryCachingProvider - default provider
32
+ container.register({
33
+ [_types_1.CachingProviderRegistrationPrefix + memory_cache_1.MemoryCachingProvider.identifier]: (0, awilix_1.asFunction)((cradle) => new memory_cache_1.MemoryCachingProvider(cradle, restInmemoryOptions), {
34
+ lifetime: awilix_1.Lifetime.SINGLETON,
35
+ }),
36
+ });
37
+ container.registerAdd(_types_1.CachingIdentifiersRegistrationName, (0, awilix_1.asValue)(memory_cache_1.MemoryCachingProvider.identifier));
38
+ container.register(_types_1.CachingDefaultProvider, (0, awilix_1.asValue)(memory_cache_1.MemoryCachingProvider.identifier));
39
+ }
36
40
  // Load other providers
37
41
  await (0, modules_sdk_1.moduleProviderLoader)({
38
42
  container,
@@ -51,7 +55,12 @@ exports.default = async ({ container, options, }) => {
51
55
  }
52
56
  const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
53
57
  if (!hasDefaultProvider) {
54
- logger.warn(`[caching-module]: No default caching provider defined. Using "${container.resolve(_types_1.CachingDefaultProvider)}" as default.`);
58
+ if (isInMemoryEnabled) {
59
+ logger.warn(`[caching-module]: No default caching provider defined. Using "${container.resolve(_types_1.CachingDefaultProvider)}" as default.`);
60
+ }
61
+ else {
62
+ throw new Error("[caching-module]: No providers have been configured and the built in memory cache has not been enabled.");
63
+ }
55
64
  }
56
65
  };
57
66
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/loaders/providers.ts"],"names":[],"mappings":";;AAAA,iEAAsE;AAEtE,qDAGkC;AAClC,yCAAkD;AAClD,mCAKe;AACf,mCAA+D;AAC/D,4DAAiE;AACjE,gDAAwD;AAExD,MAAM,cAAc,GAAG,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACxD,MAAM,GAAG,GAAG,kCAAsB,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAA;IAEnE,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,kCAA0B,EAAC;QACxC,UAAU,EAAE,EAAE;QACd,kBAAkB,EAAE,GAAG;KACxB,CAAC,CAAA;IAEF,SAAS,CAAC,QAAQ,CAAC;QACjB,CAAC,0CAAiC,GAAG,EAAE,CAAC,EAAE,IAAA,gBAAO,EAAC,MAAM,CAAC;KAC1D,CAAC,CAAA;IAEF,SAAS,CAAC,WAAW,CAAC,2CAAkC,EAAE,IAAA,gBAAO,EAAC,GAAG,CAAC,CAAC,CAAA;AACzE,CAAC,CAAA;AAED,kBAAe,KAAK,EAAE,EACpB,SAAS,EACT,OAAO,GAOR,EAAiB,EAAE;IAClB,SAAS,CAAC,WAAW,CAAC,2CAAkC,EAAE,IAAA,gBAAO,EAAC,SAAS,CAAC,CAAC,CAAA;IAE7E,MAAM,QAAQ,GAAG,+BAAoB,CAAA,CAAC,yCAAyC;IAC/E,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAA,gBAAO,EAAC,QAAQ,CAAC,CAAC,CAAA;IAEjD,2CAA2C;IAC3C,SAAS,CAAC,QAAQ,CAAC;QACjB,CAAC,0CAAiC,GAAG,oCAAqB,CAAC,UAAU,CAAC,EACpE,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,oCAAqB,EAAE,EAAE;YAC5C,QAAQ,EAAE,iBAAQ,CAAC,SAAS;SAC7B,CAAC;KACL,CAAC,CAAA;IACF,SAAS,CAAC,WAAW,CACnB,2CAAkC,EAClC,IAAA,gBAAO,EAAC,oCAAqB,CAAC,UAAU,CAAC,CAC1C,CAAA;IACD,SAAS,CAAC,QAAQ,CAChB,+BAAsB,EACtB,IAAA,gBAAO,EAAC,oCAAqB,CAAC,UAAU,CAAC,CAC1C,CAAA;IAED,uBAAuB;IACvB,MAAM,IAAA,kCAAoB,EAAC;QACzB,SAAS;QACT,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE;QACnC,iBAAiB,EAAE,cAAc;KAClC,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC,CAAA;IACzD,IAAI,kBAAkB,GAAG,KAAK,CAAA;IAC9B,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;QAChD,IAAI,QAAQ,CAAC,UAAU,IAAI,gBAAgB,EAAE,CAAC;YAC5C,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,kBAAkB,GAAG,IAAI,CAAA;YAC3B,CAAC;YACD,SAAS,CAAC,QAAQ,CAAC,+BAAsB,EAAE,IAAA,gBAAO,EAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,iCAAyB,CAAC,MAAM,CAAC,CAAA;IAClE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CACT,iEAAiE,SAAS,CAAC,OAAO,CAChF,+BAAsB,CACvB,eAAe,CACjB,CAAA;IACH,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/loaders/providers.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,25 @@
1
1
  import NodeCache from "node-cache";
2
- import type { ICachingProviderService } from "@medusajs/framework/types";
3
- export interface MemoryCacheModuleOptions {
4
- /**
5
- * TTL in seconds
6
- */
7
- ttl?: number;
8
- /**
9
- * Maximum number of keys to store (see node-cache documentation)
10
- */
11
- maxKeys?: number;
12
- /**
13
- * Check period for expired keys in seconds (see node-cache documentation)
14
- */
15
- checkPeriod?: number;
16
- /**
17
- * Use clones for cached data (see node-cache documentation)
18
- */
19
- useClones?: boolean;
20
- }
2
+ import type { ICachingProviderService, Logger } from "@medusajs/framework/types";
3
+ import { MemoryCacheModuleOptions } from "../types";
21
4
  export declare class MemoryCachingProvider implements ICachingProviderService {
22
5
  static identifier: string;
6
+ protected logger: Logger;
23
7
  protected cacheClient: NodeCache;
24
8
  protected tagIndex: Map<string, Set<string>>;
25
9
  protected keyTags: Map<string, Set<string>>;
26
10
  protected entryOptions: Map<string, {
27
11
  autoInvalidate?: boolean;
28
12
  }>;
13
+ protected keySizes: Map<string, number>;
14
+ protected approximateMemoryUsage: number;
29
15
  protected options: MemoryCacheModuleOptions;
30
- constructor();
16
+ protected maxSize: number;
17
+ protected hasher: (key: string) => string;
18
+ constructor({ logger, hasher }: {
19
+ logger?: Logger;
20
+ hasher: (key: string) => string;
21
+ }, options?: MemoryCacheModuleOptions);
22
+ private calculateEntrySize;
31
23
  private cleanupTagReferences;
32
24
  get({ key, tags }: {
33
25
  key?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"memory-cache.d.ts","sourceRoot":"","sources":["../../src/providers/memory-cache.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAA;AAClC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAExE,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,qBAAa,qBAAsB,YAAW,uBAAuB;IACnE,MAAM,CAAC,UAAU,SAAiB;IAElC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAA;IAChC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAY;IACxD,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAY;IACvD,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAY;IAC7E,SAAS,CAAC,OAAO,EAAE,wBAAwB,CAAA;;IA6B3C,OAAO,CAAC,oBAAoB;IAkBtB,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAiCnE,GAAG,CAAC,EACR,GAAG,EACH,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,OAAO,GACR,EAAE;QACD,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,OAAO,CAAC,EAAE;YACR,cAAc,CAAC,EAAE,OAAO,CAAA;SACzB,CAAA;KACF,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BX,KAAK,CAAC,EACV,GAAG,EACH,IAAI,EACJ,OAAO,GACR,EAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,OAAO,CAAC,EAAE;YACR,cAAc,CAAC,EAAE,OAAO,CAAA;SACzB,CAAA;KACF,GAAG,OAAO,CAAC,IAAI,CAAC;CA+DlB"}
1
+ {"version":3,"file":"memory-cache.d.ts","sourceRoot":"","sources":["../../src/providers/memory-cache.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAA;AAClC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAA;AAUjD,qBAAa,qBAAsB,YAAW,uBAAuB;IACnE,MAAM,CAAC,UAAU,SAAiB;IAElC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,WAAW,EAAE,SAAS,CAAA;IAChC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAY;IACxD,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAY;IACvD,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAY;IAC7E,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAY;IACnD,SAAS,CAAC,sBAAsB,EAAE,MAAM,CAAI;IAC5C,SAAS,CAAC,OAAO,EAAE,wBAAwB,CAAA;IAC3C,SAAS,CAAC,OAAO,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;gBAGvC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,EACxE,OAAO,GAAE,wBAA6B;IAmCxC,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,oBAAoB;IA0BtB,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAmCnE,GAAG,CAAC,EACR,GAAG,EACH,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,OAAO,GACR,EAAE;QACD,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,OAAO,CAAC,EAAE;YACR,cAAc,CAAC,EAAE,OAAO,CAAA;SACzB,CAAA;KACF,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDX,KAAK,CAAC,EACV,GAAG,EACH,IAAI,EACJ,OAAO,GACR,EAAE;QACD,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,OAAO,CAAC,EAAE;YACR,cAAc,CAAC,EAAE,OAAO,CAAA;SACzB,CAAA;KACF,GAAG,OAAO,CAAC,IAAI,CAAC;CAiElB"}
@@ -5,16 +5,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MemoryCachingProvider = void 0;
7
7
  const node_cache_1 = __importDefault(require("node-cache"));
8
+ const THREE_HUNDRED_MB = 300 * 1024 * 1024;
9
+ const formatBytes = (bytes) => {
10
+ if (bytes < 1024)
11
+ return `${bytes} B`;
12
+ if (bytes < 1024 * 1024)
13
+ return `${Math.round(bytes / 1024)} KB`;
14
+ return `${Math.round(bytes / 1024 / 1024)} MB`;
15
+ };
8
16
  class MemoryCachingProvider {
9
- constructor() {
17
+ constructor({ logger, hasher }, options = {}) {
10
18
  this.tagIndex = new Map(); // tag -> keys
11
19
  this.keyTags = new Map(); // key -> tags
12
20
  this.entryOptions = new Map(); // key -> options
21
+ this.keySizes = new Map(); // key -> approximate size in bytes
22
+ this.approximateMemoryUsage = 0;
23
+ this.logger = logger ?? console;
24
+ const { maxSize, ...rest } = options;
25
+ this.maxSize = maxSize ?? THREE_HUNDRED_MB;
26
+ this.hasher = hasher;
13
27
  this.options = {
14
28
  ttl: 3600,
15
29
  maxKeys: 25000,
16
30
  checkPeriod: 60, // 10 minutes
17
- useClones: false, // Default to false for speed, true would be slower but safer. we can discuss
31
+ useClones: false, // Default to false for speed, true would be slower but safer. we can ...discuss
32
+ ...rest,
18
33
  };
19
34
  const cacheClient = new node_cache_1.default({
20
35
  stdTTL: this.options.ttl,
@@ -24,13 +39,22 @@ class MemoryCachingProvider {
24
39
  });
25
40
  this.cacheClient = cacheClient;
26
41
  // Clean up tag indices when keys expire
27
- this.cacheClient.on("expired", (key, value) => {
42
+ this.cacheClient.on("expired", (key) => {
28
43
  this.cleanupTagReferences(key);
29
44
  });
30
- this.cacheClient.on("del", (key, value) => {
45
+ this.cacheClient.on("del", (key) => {
31
46
  this.cleanupTagReferences(key);
32
47
  });
33
48
  }
49
+ calculateEntrySize(key, data, tags) {
50
+ const dataSize = Buffer.byteLength(JSON.stringify(data), "utf8");
51
+ const keySize = Buffer.byteLength(key, "utf8");
52
+ let tagsSize = 0;
53
+ if (tags?.length) {
54
+ tagsSize = Buffer.byteLength(JSON.stringify(tags), "utf8");
55
+ }
56
+ return dataSize + keySize + tagsSize;
57
+ }
34
58
  cleanupTagReferences(key) {
35
59
  const tags = this.keyTags.get(key);
36
60
  if (tags) {
@@ -45,17 +69,25 @@ class MemoryCachingProvider {
45
69
  });
46
70
  this.keyTags.delete(key);
47
71
  }
72
+ // Clean up memory tracking
73
+ const keySize = this.keySizes.get(key);
74
+ if (keySize) {
75
+ this.approximateMemoryUsage -= keySize;
76
+ this.keySizes.delete(key);
77
+ }
48
78
  // Also clean up entry options
49
79
  this.entryOptions.delete(key);
50
80
  }
51
81
  async get({ key, tags }) {
52
82
  if (key) {
53
- return this.cacheClient.get(key) ?? null;
83
+ const hashedKey = this.hasher(key);
84
+ return this.cacheClient.get(hashedKey) ?? null;
54
85
  }
55
- if (tags && tags.length) {
86
+ if (tags?.length) {
56
87
  const allKeys = new Set();
57
88
  tags.forEach((tag) => {
58
- const keysForTag = this.tagIndex.get(tag);
89
+ const hashedTag = this.hasher(tag);
90
+ const keysForTag = this.tagIndex.get(hashedTag);
59
91
  if (keysForTag) {
60
92
  keysForTag.forEach((key) => allKeys.add(key));
61
93
  }
@@ -75,45 +107,60 @@ class MemoryCachingProvider {
75
107
  return null;
76
108
  }
77
109
  async set({ key, data, ttl, tags, options, }) {
110
+ // Only reject if we're already over the limit
111
+ if (this.approximateMemoryUsage > this.maxSize) {
112
+ this.logger.warn(`Cache is full. Current usage: ${formatBytes(this.approximateMemoryUsage)}, Max: ${formatBytes(this.maxSize)}. Skipping cache entry.`);
113
+ return;
114
+ }
115
+ const hashedKey = this.hasher(key);
116
+ const hashedTags = tags?.map((tag) => this.hasher(tag));
117
+ const totalSize = this.calculateEntrySize(hashedKey, data, hashedTags);
78
118
  // Set the cache entry
79
119
  const effectiveTTL = ttl ?? this.options.ttl ?? 3600;
80
- this.cacheClient.set(key, data, effectiveTTL);
120
+ this.cacheClient.set(hashedKey, data, effectiveTTL);
81
121
  // Handle tags if provided
82
- if (tags && tags.length) {
122
+ if (hashedTags?.length) {
83
123
  // Clean up any existing tag references for this key
84
- this.cleanupTagReferences(key);
85
- const tagSet = new Set(tags);
86
- this.keyTags.set(key, tagSet);
124
+ this.cleanupTagReferences(hashedKey);
125
+ const tagSet = new Set(hashedTags);
126
+ this.keyTags.set(hashedKey, tagSet);
87
127
  // Add this key to each tag's index
88
- tags.forEach((tag) => {
128
+ hashedTags.forEach((tag) => {
89
129
  if (!this.tagIndex.has(tag)) {
90
130
  this.tagIndex.set(tag, new Set());
91
131
  }
92
- this.tagIndex.get(tag).add(key);
132
+ this.tagIndex.get(tag).add(hashedKey);
93
133
  });
94
134
  }
95
135
  // Store entry options if provided
96
136
  if (Object.keys(options ?? {}).length &&
97
137
  !Object.values(options ?? {}).every((value) => value === undefined)) {
98
- this.entryOptions.set(key, options);
138
+ this.entryOptions.set(hashedKey, options);
99
139
  }
140
+ // Track memory usage
141
+ const existingSize = this.keySizes.get(hashedKey) || 0;
142
+ this.approximateMemoryUsage =
143
+ this.approximateMemoryUsage - existingSize + totalSize;
144
+ this.keySizes.set(hashedKey, totalSize);
100
145
  }
101
146
  async clear({ key, tags, options, }) {
102
147
  if (key) {
103
- this.cacheClient.del(key);
148
+ const hashedKey = this.hasher(key);
149
+ this.cacheClient.del(hashedKey);
104
150
  return;
105
151
  }
106
- if (tags && tags.length) {
152
+ if (tags?.length) {
107
153
  // Handle wildcard tag to clear all cache data
108
- if (tags.includes("*")) {
154
+ if (tags?.includes("*")) {
109
155
  this.cacheClient.flushAll();
110
156
  this.tagIndex.clear();
111
157
  this.keyTags.clear();
112
158
  this.entryOptions.clear();
113
159
  return;
114
160
  }
161
+ const hashedTags = tags.map((tag) => this.hasher(tag));
115
162
  const allKeys = new Set();
116
- tags.forEach((tag) => {
163
+ hashedTags.forEach((tag) => {
117
164
  const keysForTag = this.tagIndex.get(tag);
118
165
  if (keysForTag) {
119
166
  keysForTag.forEach((key) => allKeys.add(key));
@@ -1 +1 @@
1
- {"version":3,"file":"memory-cache.js","sourceRoot":"","sources":["../../src/providers/memory-cache.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAkC;AAsBlC,MAAa,qBAAqB;IAShC;QALU,aAAQ,GAA6B,IAAI,GAAG,EAAE,CAAA,CAAC,cAAc;QAC7D,YAAO,GAA6B,IAAI,GAAG,EAAE,CAAA,CAAC,cAAc;QAC5D,iBAAY,GAA8C,IAAI,GAAG,EAAE,CAAA,CAAC,iBAAiB;QAI7F,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,EAAE,EAAE,aAAa;YAC9B,SAAS,EAAE,KAAK,EAAE,6EAA6E;SAChG,CAAA;QAED,MAAM,WAAW,GAAG,IAAI,oBAAS,CAAC;YAChC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG;YACxB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YACrC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;SAClC,CAAC,CAAA;QAEF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAE9B,wCAAwC;QACxC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE;YACzD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE;YACrD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,oBAAoB,CAAC,GAAW;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACzC,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACtB,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBAC3B,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;QACD,8BAA8B;QAC9B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAqC;QACxD,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;QAC1C,CAAC;QAED,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;YAEjC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACzC,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC/C,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,CAAA;YACX,CAAC;YAED,MAAM,OAAO,GAAU,EAAE,CAAA;YACzB,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACvC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACrB,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,OAAO,CAAA;QAChB,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EACR,GAAG,EACH,IAAI,EACJ,GAAG,EACH,IAAI,EACJ,OAAO,GASR;QACC,sBAAsB;QACtB,MAAM,YAAY,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAA;QACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;QAE7C,0BAA0B;QAC1B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,oDAAoD;YACpD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;YAE9B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;YAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAE7B,mCAAmC;YACnC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;gBACnC,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAClC,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,kCAAkC;QAClC,IACE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM;YACjC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,EACnE,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAQ,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EACV,GAAG,EACH,IAAI,EACJ,OAAO,GAOR;QACC,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACzB,OAAM;QACR,CAAC;QAED,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,8CAA8C;YAC9C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAA;gBAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;gBACrB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;gBACpB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;gBACzB,OAAM;YACR,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;YAEjC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACzC,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC/C,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,gEAAgE;gBAChE,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBACxC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;oBAElC,+CAA+C;oBAC/C,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBAC3B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;oBAChC,CAAC,CAAC,CAAA;oBACF,OAAM;gBACR,CAAC;gBAED,mGAAmG;gBACnG,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;oBACpC,MAAM,YAAY,GAAa,EAAE,CAAA;oBAEjC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBACtB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;wBAC/C,uEAAuE;wBACvE,MAAM,oBAAoB,GAAG,YAAY,EAAE,cAAc,IAAI,IAAI,CAAA;wBACjE,IAAI,oBAAoB,EAAE,CAAC;4BACzB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;wBACxB,CAAC;oBACH,CAAC,CAAC,CAAA;oBAEF,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;wBACxB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;wBAElC,+CAA+C;wBAC/C,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;4BAC3B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;wBAChC,CAAC,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;;AA5MH,sDA6MC;AA5MQ,gCAAU,GAAG,cAAc,AAAjB,CAAiB"}
1
+ {"version":3,"file":"memory-cache.js","sourceRoot":"","sources":["../../src/providers/memory-cache.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,30 @@ export type InjectedDependencies = {
12
12
  [CachingDefaultProvider]: string;
13
13
  [Modules.EVENT_BUS]: IEventBusModuleService;
14
14
  };
15
+ export interface MemoryCacheModuleOptions {
16
+ /**
17
+ * TTL in seconds
18
+ */
19
+ ttl?: number;
20
+ /**
21
+ * Maximum number of keys to store (see node-cache documentation)
22
+ */
23
+ maxKeys?: number;
24
+ /**
25
+ * Check period for expired keys in seconds (see node-cache documentation)
26
+ */
27
+ checkPeriod?: number;
28
+ /**
29
+ * Use clones for cached data (see node-cache documentation)
30
+ */
31
+ useClones?: boolean;
32
+ /**
33
+ * Maximum size of the cache in bytes (default 300MB).
34
+ * It is an approximation, if a new entry will make the limit exceeded, the entry will be cached
35
+ * but not the following ones
36
+ */
37
+ maxSize?: number;
38
+ }
15
39
  export type CachingModuleOptions = Partial<ModuleServiceInitializeOptions> & {
16
40
  /**
17
41
  * The strategy to be used. Default to the inbuilt default strategy.
@@ -20,6 +44,13 @@ export type CachingModuleOptions = Partial<ModuleServiceInitializeOptions> & {
20
44
  * Time to keep data in cache (in seconds)
21
45
  */
22
46
  ttl?: number;
47
+ /**
48
+ * Enable and configure the built in memory cache
49
+ * @private
50
+ */
51
+ in_memory?: MemoryCacheModuleOptions & {
52
+ enable?: boolean;
53
+ };
23
54
  /**
24
55
  * Providers to be registered
25
56
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,MAAM,EACN,qBAAqB,EACrB,8BAA8B,EAC/B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAE5E,eAAO,MAAM,sBAAsB,qBAAqB,CAAA;AACxD,eAAO,MAAM,kCAAkC,iCAAiC,CAAA;AAEhF,eAAO,MAAM,iCAAiC,QAAQ,CAAA;AAEtD,MAAM,MAAM,oBAAoB,GAAG;IACjC,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;IACvC,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAChC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,sBAAsB,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,8BAA8B,CAAC,GAAG;IAC3E;;OAEG;IAEH;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,SAAS,CAAC,EAAE;QACV;;WAEG;QACH,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAAA;QACvC;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB;;WAEG;QACH,EAAE,EAAE,MAAM,CAAA;QACV;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAClC,EAAE,CAAA;CACJ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,MAAM,EACN,qBAAqB,EACrB,8BAA8B,EAC/B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACnD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAE5E,eAAO,MAAM,sBAAsB,qBAAqB,CAAA;AACxD,eAAO,MAAM,kCAAkC,iCAAiC,CAAA;AAEhF,eAAO,MAAM,iCAAiC,QAAQ,CAAA;AAEtD,MAAM,MAAM,oBAAoB,GAAG;IACjC,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAA;IACvC,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAChC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,sBAAsB,CAAA;CAC5C,CAAA;AAED,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,8BAA8B,CAAC,GAAG;IAC3E;;OAEG;IAEH;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,SAAS,CAAC,EAAE,wBAAwB,GAAG;QACrC,MAAM,CAAC,EAAE,OAAO,CAAA;KACjB,CAAA;IAED;;OAEG;IACH,SAAS,CAAC,EAAE;QACV;;WAEG;QACH,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAAA;QACvC;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB;;WAEG;QACH,EAAE,EAAE,MAAM,CAAA;QACV;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAClC,EAAE,CAAA;CACJ,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medusajs/caching",
3
- "version": "2.10.4-snapshot-20251002131849",
3
+ "version": "2.10.4-snapshot-20251003114416",
4
4
  "description": "Caching Module for Medusa",
5
5
  "main": "dist/index.js",
6
6
  "repository": {
@@ -19,17 +19,9 @@
19
19
  },
20
20
  "author": "Medusa",
21
21
  "license": "MIT",
22
- "scripts": {
23
- "watch": "tsc --build --watch",
24
- "watch:test": "tsc --build tsconfig.spec.json --watch",
25
- "resolve:aliases": "tsc --showConfig -p tsconfig.json > tsconfig.resolved.json && tsc-alias -p tsconfig.resolved.json && rimraf tsconfig.resolved.json",
26
- "build": "rimraf dist && tsc --build && npm run resolve:aliases",
27
- "test": "jest --passWithNoTests --runInBand --bail --forceExit -- src/",
28
- "test:integration": "jest --runInBand --forceExit -- integration-tests/__tests__/**/*.ts"
29
- },
30
22
  "devDependencies": {
31
- "@medusajs/framework": "2.10.4-snapshot-20251002131849",
32
- "@medusajs/test-utils": "2.10.4-snapshot-20251002131849",
23
+ "@medusajs/framework": "2.10.4-snapshot-20251003114416",
24
+ "@medusajs/test-utils": "2.10.4-snapshot-20251003114416",
33
25
  "@swc/core": "^1.7.28",
34
26
  "@swc/jest": "^0.2.36",
35
27
  "jest": "^29.7.0",
@@ -38,12 +30,20 @@
38
30
  "typescript": "^5.6.2"
39
31
  },
40
32
  "peerDependencies": {
41
- "@medusajs/framework": "2.10.4-snapshot-20251002131849",
33
+ "@medusajs/framework": "2.10.4-snapshot-20251003114416",
42
34
  "awilix": "^8.0.1"
43
35
  },
44
36
  "dependencies": {
45
37
  "fast-json-stable-stringify": "^2.1.0",
46
38
  "node-cache": "^5.1.2",
47
39
  "xxhash-wasm": "^1.1.0"
40
+ },
41
+ "scripts": {
42
+ "watch": "tsc --build --watch",
43
+ "watch:test": "tsc --build tsconfig.spec.json --watch",
44
+ "resolve:aliases": "tsc --showConfig -p tsconfig.json > tsconfig.resolved.json && tsc-alias -p tsconfig.resolved.json && rimraf tsconfig.resolved.json",
45
+ "build": "rimraf dist && tsc --build && npm run resolve:aliases",
46
+ "test": "jest --passWithNoTests --runInBand --bail --forceExit -- src/",
47
+ "test:integration": "jest --runInBand --forceExit -- integration-tests/__tests__/**/*.ts"
48
48
  }
49
- }
49
+ }