@cacheable/node-cache 0.5.0 → 1.0.0

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/package.json CHANGED
@@ -1,9 +1,17 @@
1
1
  {
2
2
  "name": "@cacheable/node-cache",
3
- "version": "0.5.0",
3
+ "version": "1.0.0",
4
4
  "description": "Simple and Maintained fast NodeJS internal caching",
5
- "main": "./dist/index.js",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
6
8
  "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "require": "./dist/index.cjs",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
7
15
  "repository": "https://github.com/jaredwray/cacheable.git",
8
16
  "author": "Jared Wray <me@jaredwray.com>",
9
17
  "license": "MIT",
@@ -19,23 +27,25 @@
19
27
  "cacheable-node"
20
28
  ],
21
29
  "devDependencies": {
22
- "@types/node": "^22.5.4",
23
- "@vitest/coverage-v8": "^2.0.5",
30
+ "@types/node": "^22.5.5",
31
+ "@vitest/coverage-v8": "^2.1.1",
24
32
  "rimraf": "^6.0.1",
25
- "typescript": "^5.5.4",
26
- "vitest": "^2.0.5",
33
+ "tsup": "^8.3.0",
34
+ "typescript": "^5.6.2",
35
+ "vitest": "^2.1.1",
27
36
  "xo": "^0.59.3"
28
37
  },
29
38
  "dependencies": {
30
- "cacheable": "^0.3.0",
31
- "eventemitter3": "^5.0.1"
39
+ "cacheable": "^1.2.0",
40
+ "eventemitter3": "^5.0.1",
41
+ "keyv": "^5.0.1"
32
42
  },
33
43
  "files": [
34
44
  "dist",
35
45
  "license"
36
46
  ],
37
47
  "scripts": {
38
- "build": "rimraf ./dist && tsc -p tsconfig.build.json",
48
+ "build": "rimraf ./dist && tsup src/index.ts --format cjs,esm --dts --clean",
39
49
  "test": "xo --fix && vitest run --coverage",
40
50
  "test:ci": "xo && vitest run",
41
51
  "clean": "rimraf ./dist ./coverage ./node_modules"
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,MAAM,MAAM,gBAAgB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC3B,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,GAAG,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,oBAAY,eAAe;IAC1B,UAAU,mCAAmC;IAC7C,QAAQ,4EAA4E;IACpF,SAAS,0CAA0C;IACnD,QAAQ,yCAAyC;CACjD;AAED,MAAM,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,YAAY;IAClD,SAAgB,OAAO,EAAE,gBAAgB,CAOvC;IAEF,SAAgB,KAAK,mBAA0B;IAE/C,OAAO,CAAC,MAAM,CAMZ;IAEF,OAAO,CAAC,UAAU,CAA8B;gBAEpC,OAAO,CAAC,EAAE,gBAAgB;IAW/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAyC5D,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO;IAepC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG;IAuC9B,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAkB3D,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG;IAgB/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM;IAwB1D,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM;IAW1C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAoBhD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAiBhD,IAAI,IAAI,MAAM,EAAE;IAWhB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAKlC,QAAQ,IAAI,cAAc;IAK1B,QAAQ,IAAI,IAAI;IAQhB,UAAU,IAAI,IAAI;IAclB,KAAK,IAAI,IAAI;IAKb,aAAa,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO;IAI/C,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,KAAK;CAOb"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport eventemitter from 'eventemitter3';\n\nexport type NodeCacheOptions = {\n\tstdTTL?: number; // The standard ttl as number in seconds for every generated cache element. 0 = unlimited\n\tcheckperiod?: number; // Default is 600\n\tuseClones?: boolean; // Default is true\n\tdeleteOnExpire?: boolean; // Default is true\n\tmaxKeys?: number; // Default is -1\n};\n\nexport type NodeCacheItem = {\n\tkey: string | number;\n\tvalue: any;\n\tttl?: number;\n};\n\nexport enum NodeCacheErrors {\n\tECACHEFULL = 'Cache max keys amount exceeded',\n\tEKEYTYPE = 'The key argument has to be of type `string` or `number`. Found: `__key`',\n\tEKEYSTYPE = 'The keys argument has to be an array.',\n\tETTLTYPE = 'The ttl argument has to be a number.',\n}\n\nexport type NodeCacheStats = {\n\tkeys: number; // global key count\n\thits: number; // global hit count\n\tmisses: number; // global miss count\n\tksize: number; // global key size count in approximately bytes\n\tvsize: number; // global value size count in approximately bytes\n};\n\nexport default class NodeCache extends eventemitter {\n\tpublic readonly options: NodeCacheOptions = {\n\t\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\t\tstdTTL: 0,\n\t\tcheckperiod: 600,\n\t\tuseClones: true,\n\t\tdeleteOnExpire: true,\n\t\tmaxKeys: -1,\n\t};\n\n\tpublic readonly store = new Map<string, any>();\n\n\tprivate _stats: NodeCacheStats = {\n\t\tkeys: 0,\n\t\thits: 0,\n\t\tmisses: 0,\n\t\tksize: 0,\n\t\tvsize: 0,\n\t};\n\n\tprivate intervalId: number | NodeJS.Timeout = 0;\n\n\tconstructor(options?: NodeCacheOptions) {\n\t\tsuper();\n\n\t\tif (options) {\n\t\t\tthis.options = {...this.options, ...options};\n\t\t}\n\n\t\tthis.startInterval();\n\t}\n\n\t// Sets a key value pair. It is possible to define a ttl (in seconds). Returns true on success.\n\tpublic set(key: string | number, value: any, ttl?: number): boolean {\n\t\t// Check on key type\n\t\t/* c8 ignore next 3 */\n\t\tif (typeof key !== 'string' && typeof key !== 'number') {\n\t\t\tthrow this.createError(NodeCacheErrors.EKEYTYPE, key);\n\t\t}\n\n\t\t// Check on ttl type\n\t\t/* c8 ignore next 3 */\n\t\tif (ttl && typeof ttl !== 'number') {\n\t\t\tthrow this.createError(NodeCacheErrors.ETTLTYPE, this.formatKey(key));\n\t\t}\n\n\t\tconst keyValue = this.formatKey(key);\n\t\tconst ttlValue = ttl ?? this.options.stdTTL;\n\t\tlet expirationTimestamp = 0; // Never delete\n\t\tif (ttlValue && ttlValue > 0) {\n\t\t\texpirationTimestamp = this.getExpirationTimestamp(ttlValue);\n\t\t}\n\n\t\t// Check on max key size\n\t\tif (this.options.maxKeys) {\n\t\t\tconst maxKeys = this.options.maxKeys;\n\t\t\tif (maxKeys > -1 && this.store.size >= maxKeys) {\n\t\t\t\tthrow this.createError(NodeCacheErrors.ECACHEFULL, this.formatKey(key));\n\t\t\t}\n\t\t}\n\n\t\tthis.store.set(keyValue, {key: keyValue, value, ttl: expirationTimestamp});\n\n\t\t// Event\n\t\tthis.emit('set', keyValue, value, ttlValue);\n\n\t\t// Add the bytes to the stats\n\t\tthis._stats.ksize += this.roughSizeOfKey(keyValue);\n\t\tthis._stats.vsize += this.roughSizeOfObject(value);\n\t\tthis._stats.keys = this.store.size;\n\t\treturn true;\n\t}\n\n\t// Sets multiple key val pairs. It is possible to define a ttl (seconds). Returns true on success.\n\tpublic mset(data: NodeCacheItem[]): boolean {\n\t\t// Check on keys type\n\t\t/* c8 ignore next 3 */\n\t\tif (!Array.isArray(data)) {\n\t\t\tthrow this.createError(NodeCacheErrors.EKEYSTYPE);\n\t\t}\n\n\t\tfor (const item of data) {\n\t\t\tthis.set(item.key, item.value, item.ttl);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t// Gets a saved value from the cache. Returns a undefined if not found or expired. If the value was found it returns the value.\n\tpublic get(key: string | number): any {\n\t\tconst result = this.store.get(this.formatKey(key));\n\t\tif (result) {\n\t\t\tif (result.ttl > 0) {\n\t\t\t\tif (result.ttl < Date.now()) {\n\t\t\t\t\tif (this.options.deleteOnExpire) {\n\t\t\t\t\t\tthis.del(key);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.addMiss();\n\t\t\t\t\t// Event\n\t\t\t\t\tthis.emit('expired', this.formatKey(key), result.value);\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tthis.addHit();\n\t\t\t\tif (this.options.useClones) {\n\t\t\t\t\treturn this.clone(result.value);\n\t\t\t\t}\n\n\t\t\t\treturn result.value;\n\t\t\t}\n\n\t\t\tthis.addHit();\n\t\t\tif (this.options.useClones) {\n\t\t\t\treturn this.clone(result.value);\n\t\t\t}\n\n\t\t\treturn result.value;\n\t\t}\n\n\t\tthis.addMiss();\n\t\treturn undefined;\n\t}\n\n\t/*\n\t\tGets multiple saved values from the cache. Returns an empty object {} if not found or expired.\n\t\tIf the value was found it returns an object with the key value pair.\n\t*/\n\tpublic mget(keys: Array<string | number>): Record<string, unknown> {\n\t\tconst result: Record<string, unknown> = {};\n\n\t\tfor (const key of keys) {\n\t\t\tconst value = this.get(key);\n\t\t\tif (value) {\n\t\t\t\tresult[this.formatKey(key)] = value;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/*\n\t\tGet the cached value and remove the key from the cache.\n\t\tEquivalent to calling get(key) + del(key).\n\t\tUseful for implementing single use mechanism such as OTP, where once a value is read it will become obsolete.\n\t*/\n\tpublic take(key: string | number): any {\n\t\tconst result = this.get(key);\n\n\t\tif (result) {\n\t\t\tthis.del(key);\n\t\t\tif (this.options.useClones) {\n\t\t\t\treturn this.clone(result);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\t// Delete a key. Returns the number of deleted entries. A delete will never fail.\n\tpublic del(key: string | number | Array<string | number>): number {\n\t\tif (Array.isArray(key)) {\n\t\t\treturn this.mdel(key);\n\t\t}\n\n\t\tconst result = this.store.get(this.formatKey(key));\n\t\tif (result) {\n\t\t\tconst keyValue = this.formatKey(key);\n\t\t\tthis.store.delete(keyValue);\n\n\t\t\t// Event\n\t\t\tthis.emit('del', keyValue, result.value);\n\n\t\t\t// Remove the bytes from the stats\n\t\t\tthis._stats.ksize -= this.roughSizeOfKey(keyValue);\n\t\t\tthis._stats.vsize -= this.roughSizeOfObject(result.value);\n\t\t\tthis._stats.keys = this.store.size;\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\t// Delete all keys in Array that exist. Returns the number of deleted entries.\n\tpublic mdel(keys: Array<string | number>): number {\n\t\tlet result = 0;\n\t\tfor (const key of keys) {\n\t\t\tresult += this.del(key);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// Redefine the ttl of a key. Returns true if the key has been found and changed.\n\t// Otherwise returns false. If the ttl-argument isn't passed the default-TTL will be used.\n\tpublic ttl(key: string | number, ttl?: number): boolean {\n\t\tconst result = this.store.get(this.formatKey(key));\n\t\tif (result) {\n\t\t\tconst ttlValue = ttl ?? this.options.stdTTL!;\n\t\t\tresult.ttl = this.getExpirationTimestamp(ttlValue);\n\t\t\tthis.store.set(this.formatKey(key), result);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/*\n\t\tReceive the ttl of a key. You will get:\n\n\t\tundefined if the key does not exist\n\t\t0 if this key has no ttl\n\t\ta timestamp in ms representing the time at which the key will expire\n\t*/\n\n\tpublic getTtl(key: string | number): number | undefined {\n\t\tconst result = this.store.get(this.formatKey(key));\n\t\tif (result) {\n\t\t\tif (result.ttl === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\treturn result.ttl as number;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\t/*\n\t\tReturns an array of all existing keys.\n\t\t[ \"all\", \"my\", \"keys\", \"foo\", \"bar\" ]\n\t*/\n\tpublic keys(): string[] {\n\t\tconst result: string[] = [];\n\n\t\tfor (const key of this.store.keys()) {\n\t\t\tresult.push(key);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// Returns boolean indicating if the key is cached.\n\tpublic has(key: string | number): boolean {\n\t\treturn this.store.has(this.formatKey(key));\n\t}\n\n\t// Gets the stats of the cache.\n\tpublic getStats(): NodeCacheStats {\n\t\treturn this._stats;\n\t}\n\n\t// Flush the whole data.\n\tpublic flushAll(): void {\n\t\tthis.store.clear();\n\t\tthis.flushStats();\n\t\t// Event\n\t\tthis.emit('flush');\n\t}\n\n\t// Flush the stats\n\tpublic flushStats(): void {\n\t\tthis._stats = {\n\t\t\tkeys: 0,\n\t\t\thits: 0,\n\t\t\tmisses: 0,\n\t\t\tksize: 0,\n\t\t\tvsize: 0,\n\t\t};\n\n\t\t// Event\n\t\tthis.emit('flush_stats');\n\t}\n\n\t// Close the cache. This will clear the interval timeout which is set on check period option.\n\tpublic close(): void {\n\t\tthis.stopInterval();\n\t}\n\n\t// Get the interval id\n\tpublic getIntervalId(): number | NodeJS.Timeout {\n\t\treturn this.intervalId;\n\t}\n\n\tprivate formatKey(key: string | number): string {\n\t\treturn key.toString();\n\t}\n\n\tprivate getExpirationTimestamp(ttlInSeconds: number): number {\n\t\tconst currentTimestamp = Date.now(); // Current time in milliseconds\n\t\tconst ttlInMilliseconds = ttlInSeconds * 1000; // Convert TTL to milliseconds\n\t\tconst expirationTimestamp = currentTimestamp + ttlInMilliseconds;\n\t\treturn expirationTimestamp;\n\t}\n\n\tprivate addHit(): void {\n\t\tthis._stats.hits++;\n\t}\n\n\tprivate addMiss(): void {\n\t\tthis._stats.misses++;\n\t}\n\n\tprivate roughSizeOfKey(key: string): number {\n\t\t// Keys are strings (UTF-16)\n\t\treturn this.formatKey(key).toString().length * 2;\n\t}\n\n\tprivate roughSizeOfObject(object: any): number {\n\t\tconst objectList: any[] = [];\n\t\tconst stack: any[] = [object];\n\t\tlet bytes = 0;\n\n\t\twhile (stack.length > 0) {\n\t\t\tconst value = stack.pop();\n\n\t\t\tif (typeof value === 'boolean') {\n\t\t\t\tbytes += 4; // Booleans are 4 bytes\n\t\t\t} else if (typeof value === 'string') {\n\t\t\t\tbytes += value.length * 2; // Each character is 2 bytes (UTF-16 encoding)\n\t\t\t} else if (typeof value === 'number') {\n\t\t\t\tbytes += 8; // Numbers are 8 bytes (IEEE 754 format)\n\t\t\t} else if (typeof value === 'object' && value !== null && !objectList.includes(value)) {\n\t\t\t\tobjectList.push(value);\n\n\t\t\t\t// Estimate object overhead, and then recursively estimate the size of properties\n\t\t\t\t// eslint-disable-next-line guard-for-in\n\t\t\t\tfor (const key in value) {\n\t\t\t\t\tbytes += key.length * 2; // Keys are strings (UTF-16)\n\t\t\t\t\tstack.push(value[key]); // Add values to the stack to compute their size\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn bytes;\n\t}\n\n\tprivate startInterval(): void {\n\t\tif (this.options.checkperiod && this.options.checkperiod > 0) {\n\t\t\tconst checkPeriodinSeconds = this.options.checkperiod * 1000;\n\t\t\tthis.intervalId = setInterval(() => {\n\t\t\t\tthis.checkData();\n\t\t\t}, checkPeriodinSeconds);\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.intervalId = 0;\n\t}\n\n\tprivate checkData(): void {\n\t\tfor (const [key, value] of this.store.entries()) {\n\t\t\tif (value.ttl > 0 && value.ttl < Date.now()) {\n\t\t\t\tthis.del(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate stopInterval(): void {\n\t\tif (this.intervalId !== 0) {\n\t\t\tclearInterval(this.intervalId);\n\t\t\tthis.intervalId = 0;\n\t\t}\n\t}\n\n\tprivate createError(errorCode: string, key?: string): Error {\n\t\tlet error = errorCode;\n\t\t/* c8 ignore next 3 */\n\t\tif (key) {\n\t\t\terror = error.replace('__key', key);\n\t\t}\n\n\t\treturn new Error(error);\n\t}\n\n\tprivate isPrimitive(value: any): boolean {\n\t\tconst result = false;\n\n\t\t/* c8 ignore next 3 */\n\t\tif (value === null || value === undefined) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tprivate clone(value: any): any {\n\t\tif (this.isPrimitive(value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn structuredClone(value);\n\t}\n}\n\n"]}