koatty_cacheable
Version:
Cacheable for koatty.
1 lines • 34.8 kB
Source Map (JSON)
{"version":3,"sources":["../src/store.ts","../src/utils.ts","../src/cache.ts","../src/index.ts"],"names":["storeCache","store","initPromise","GetCacheStore","options","getConnection","Helper","isEmpty","logger","Warn","CacheStore","getInstance","isFunction","Error","client","CloseCacheStore","quit","close","clearAllInstances","longKey","getArgs","func","funcStr","toString","replace","argsMatch","match","argsString","trim","split","map","a","trimmed","nameMatch","filter","name","error","getParamIndex","funcParams","params","param","indexOf","generateCacheKey","cacheName","paramIndexes","paramNames","props","key","hasUnresolved","some","idx","JSON","stringify","i","length","paramIndex","undefined","murmurHash","delay","ms","Promise","resolve","setTimeout","asyncDelayedExecution","fn","CacheAble","opt","timeout","IOCContainer","createDecorator","target","methodName","descriptor","method","context","mergedOpt","addInitializer","componentType","getType","includes","originalMethod","invalidParams","forEach","index","push","join","String","catch","e","message","res","get","parse","del","err","result","apply","set","isJSONObj","value","configurable","enumerable","writable","CacheEvict","delayedDoubleDeletion","delayTime","defaultOptions","type","db","KoattyCached","app","once","on"],"mappings":"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","file":"index.mjs","sourcesContent":["/*\n * @Description: \n * @Usage: \n * @Author: richen\n * @Date: 2024-11-07 16:00:02\n * @LastEditTime: 2024-11-07 16:00:05\n * @License: BSD (3-Clause)\n * @Copyright (c): <richenlin(at)gmail.com>\n */\nimport { Helper } from \"koatty_lib\";\nimport { DefaultLogger as logger } from \"koatty_logger\";\nimport { CacheStore, StoreOptions } from \"koatty_store\";\n\n/**\n * \n *\n * @interface CacheStoreInterface\n */\ninterface CacheStoreInterface {\n store: CacheStore | null;\n}\n\n// storeCache\nconst storeCache: CacheStoreInterface = {\n store: null\n};\n\n// Promise to track initialization in progress\nlet initPromise: Promise<CacheStore> | null = null;\n\n/**\n * get instances of storeCache\n *\n * @export\n * @param {StoreOptions} options\n * @returns {*} {CacheStore}\n */\nexport async function GetCacheStore(options?: StoreOptions): Promise<CacheStore> {\n // Return existing store if available\n if (storeCache.store && storeCache.store.getConnection) {\n return storeCache.store;\n }\n\n // If initialization is in progress, wait for it\n if (initPromise) {\n return initPromise;\n }\n\n if (Helper.isEmpty(options)) {\n if (!storeCache.store) {\n logger.Warn(`CacheStore not initialized. Please call KoattyCached() first with proper options in your application startup.`);\n }\n return storeCache.store || null;\n }\n\n // Start initialization and track it\n initPromise = (async () => {\n try {\n storeCache.store = CacheStore.getInstance(options);\n if (!Helper.isFunction(storeCache.store.getConnection)) {\n throw Error(`CacheStore connection failed. `);\n }\n await storeCache.store.client.getConnection();\n return storeCache.store;\n } finally {\n // Clear init promise after completion\n initPromise = null;\n }\n })();\n\n return initPromise;\n}\n\n/**\n * Close cache store connection for cleanup (mainly for testing)\n */\nexport async function CloseCacheStore(): Promise<void> {\n if (storeCache.store) {\n try {\n if (storeCache.store.client) {\n const client = storeCache.store.client as any;\n if (typeof client.quit === 'function') {\n await client.quit();\n } else if (typeof client.close === 'function') {\n await client.close();\n }\n }\n } catch {\n // Ignore cleanup errors\n }\n }\n \n // Clear the CacheStore singleton instance\n try {\n await CacheStore.clearAllInstances();\n } catch {\n // Ignore cleanup errors\n }\n \n // Always clear the cache\n storeCache.store = null;\n initPromise = null;\n}","/* eslint-disable @typescript-eslint/no-unused-vars */\n/*\n * @Description: \n * @Usage: \n * @Author: richen\n * @Date: 2024-11-07 13:54:24\n * @LastEditTime: 2024-11-07 15:25:36\n * @License: BSD (3-Clause)\n * @Copyright (c): <richenlin(at)gmail.com>\n */\n\nimport { Helper } from \"koatty_lib\";\n\nconst longKey = 128;\n\n/**\n * Extract parameter names from function signature\n * @param func The function to extract parameters from\n * @returns Array of parameter names\n */\nexport function getArgs(func: (...args: any[]) => any): string[] {\n try {\n const funcStr = func.toString()\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/\\/\\/.*$/gm, '')\n .replace(/\\s+/g, ' ');\n\n const argsMatch = funcStr.match(/(?:async\\s+)?(?:function\\s*)?(?:\\w+\\s*)?\\(([^)]*)\\)/)\n || funcStr.match(/(?:async\\s+)?\\(([^)]*)\\)/)\n || funcStr.match(/^(?:async\\s+)?([^(]+)=>/);\n\n if (!argsMatch) {\n return [];\n }\n\n const argsString = argsMatch[1] || argsMatch[0] || '';\n if (!argsString.trim()) {\n return [];\n }\n\n return argsString.split(',')\n .map(function (a) {\n const trimmed = a.trim();\n const nameMatch = trimmed.match(/^(\\w+)/);\n return nameMatch ? nameMatch[1] : '';\n })\n .filter(function (name) {\n return name && name !== '_';\n });\n } catch (error) {\n return [];\n }\n}\n\n/**\n * Get parameter indexes based on parameter names\n * @param funcParams Function parameter names\n * @param params Target parameter names to find indexes for\n * @returns Array of parameter indexes (-1 if not found)\n */\nexport function getParamIndex(funcParams: string[], params: string[]): number[] {\n return params.map(param => funcParams.indexOf(param));\n}\n\n/**\n * Generate cache key based on cache name and parameters\n * @param cacheName base cache name\n * @param paramIndexes parameter indexes\n * @param paramNames parameter names\n * @param props method arguments\n * @returns generated cache key\n */\nexport function generateCacheKey(cacheName: string, paramIndexes: number[], paramNames: string[], props: any[]): string {\n let key = cacheName;\n const hasUnresolved = paramIndexes.some(idx => idx < 0);\n if (hasUnresolved) {\n key += `:${JSON.stringify(props)}`;\n } else {\n for (let i = 0; i < paramIndexes.length; i++) {\n const paramIndex = paramIndexes[i];\n if (paramIndex >= 0 && props[paramIndex] !== undefined) {\n key += `:${paramNames[i]}:${Helper.toString(props[paramIndex])}`;\n }\n }\n }\n return key.length > longKey ? Helper.murmurHash(key) : key;\n}\n\n/**\n * Create a delay promise\n * @param ms Delay time in milliseconds\n * @returns Promise that resolves after the specified delay\n */\nfunction delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * Execute a function after a specified delay\n * @param fn Function to execute\n * @param ms Delay time in milliseconds\n * @returns Promise that resolves with the function result\n */\nexport async function asyncDelayedExecution(fn: () => any, ms: number): Promise<any> {\n await delay(ms);\n return fn();\n}","/*\n * @Author: richen\n * @Date: 2020-07-06 19:53:43\n * @LastEditTime: 2024-11-07 15:53:46\n * @Description:\n * @Copyright (c) - <richenlin(at)gmail.com>\n */\nimport { IOCContainer } from 'koatty_container';\nimport { Helper } from \"koatty_lib\";\nimport { DefaultLogger as logger } from \"koatty_logger\";\nimport { CacheStore } from \"koatty_store\";\nimport { asyncDelayedExecution, generateCacheKey, getArgs, getParamIndex } from './utils';\nimport { GetCacheStore } from './store';\n\n/**\n * @description: \n * @return {*}\n */\nexport interface CacheAbleOpt {\n // parameter name array\n params?: string[];\n // cache validity period, seconds\n timeout?: number;\n}\n\n/**\n * @description: \n * @return {*}\n */\nexport interface CacheEvictOpt {\n // parameter name array\n params?: string[];\n // enable the delayed double deletion strategy\n delayedDoubleDeletion?: boolean;\n // delay time for double deletion in milliseconds, default 5000\n delayTime?: number;\n}\n\n/**\n * Decorate this method to support caching. \n * The cache method returns a value to ensure that the next time \n * the method is executed with the same parameters, the results can be obtained\n * directly from the cache without the need to execute the method again.\n * CacheStore server config defined in db.ts.\n * \n * @export\n * @param {string} cacheName cache name\n * @param {CacheAbleOpt} [opt] cache options\n * e.g: \n * {\n * params: [\"id\"],\n * timeout: 30\n * }\n * Use the 'id' parameters of the method as cache subkeys, the cache expiration time 30s\n * @returns {MethodDecorator}\n */\nexport function CacheAble(cacheName: string, opt: CacheAbleOpt = {\n params: [],\n timeout: 300,\n}) {\n return IOCContainer.createDecorator(({ target, methodName, descriptor, method, context }) => {\n const mergedOpt = { ...{ params: [], timeout: 300 }, ...opt };\n\n if (context) {\n // TC39 path\n // Component type check via addInitializer\n context.addInitializer?.(function (this: any) {\n const componentType = IOCContainer.getType(this.constructor);\n if (![\"SERVICE\", \"COMPONENT\"].includes(componentType)) {\n throw Error(\"This decorator only used in the service、component class.\");\n }\n });\n\n // Get the parameter list of the method\n const originalMethod = method!;\n const funcParams = getArgs(originalMethod as (...args: any[]) => any);\n // Get the defined parameter location\n const paramIndexes = getParamIndex(funcParams, mergedOpt.params || []);\n\n // Validate parameters\n const invalidParams: string[] = [];\n (mergedOpt.params || []).forEach((param, index) => {\n if (paramIndexes[index] === -1) {\n invalidParams.push(param);\n }\n });\n if (invalidParams.length > 0) {\n logger.Warn(`CacheAble: Parameter(s) [${invalidParams.join(\", \")}] not found in method ${String(methodName)}. These parameters will be ignored.`);\n }\n\n return async function (this: any, ...props: any[]) {\n const store: CacheStore = await GetCacheStore().catch((e: Error): null => {\n logger.error(\"Get cache store instance failed.\" + e.message);\n return null;\n });\n if (store) {\n const key = generateCacheKey(cacheName, paramIndexes, mergedOpt.params, props);\n const res = await store.get(key).catch((e: Error) => {\n logger.error(\"Cache get error:\" + e.message);\n });\n if (!Helper.isEmpty(res)) {\n try {\n return JSON.parse(res as string);\n } catch (e) {\n const error = e as Error;\n logger.error(\"Cache JSON parse error:\" + error.message);\n // 如果解析失败,删除损坏的缓存,重新执行方法\n store.del(key).catch((err: Error) => {\n logger.error(\"Cache del error after parse failure:\" + err.message);\n });\n }\n }\n const result = await originalMethod.apply(this, props);\n // async refresh store\n store.set(key, Helper.isJSONObj(result) ? JSON.stringify(result) : result,\n mergedOpt.timeout).catch((e: Error) => {\n logger.error(\"Cache set error:\" + e.message);\n });\n return result;\n } else {\n return originalMethod.apply(this, props);\n }\n };\n } else {\n // Legacy path\n const componentType = IOCContainer.getType(target);\n if (![\"SERVICE\", \"COMPONENT\"].includes(componentType)) {\n throw Error(\"This decorator only used in the service、component class.\");\n }\n\n const { value, configurable, enumerable } = descriptor!;\n\n // Get the parameter list of the method\n const funcParams = getArgs((<any>target)[methodName]);\n // Get the defined parameter location\n const paramIndexes = getParamIndex(funcParams, mergedOpt.params || []);\n\n // Validate parameters\n const invalidParams: string[] = [];\n (mergedOpt.params || []).forEach((param, index) => {\n if (paramIndexes[index] === -1) {\n invalidParams.push(param);\n }\n });\n if (invalidParams.length > 0) {\n logger.Warn(`CacheAble: Parameter(s) [${invalidParams.join(\", \")}] not found in method ${String(methodName)}. These parameters will be ignored.`);\n }\n\n return {\n configurable,\n enumerable,\n writable: true,\n async value(this: any, ...props: any[]) {\n const store: CacheStore = await GetCacheStore().catch((e: Error): null => {\n logger.error(\"Get cache store instance failed.\" + e.message);\n return null;\n });\n if (store) {\n const key = generateCacheKey(cacheName, paramIndexes, mergedOpt.params, props);\n const res = await store.get(key).catch((e: Error) => {\n logger.error(\"Cache get error:\" + e.message);\n });\n if (!Helper.isEmpty(res)) {\n try {\n return JSON.parse(res as string);\n } catch (e) {\n const error = e as Error;\n logger.error(\"Cache JSON parse error:\" + error.message);\n // 如果解析失败,删除损坏的缓存,重新执行方法\n store.del(key).catch((err: Error) => {\n logger.error(\"Cache del error after parse failure:\" + err.message);\n });\n }\n }\n const result = await value.apply(this, props);\n // async refresh store\n store.set(key, Helper.isJSONObj(result) ? JSON.stringify(result) : result,\n mergedOpt.timeout).catch((e: Error) => {\n logger.error(\"Cache set error:\" + e.message);\n });\n return result;\n } else {\n // tslint:disable-next-line: no-invalid-this\n return value.apply(this, props);\n }\n }\n };\n }\n }, 'method');\n}\n\n/**\n * Decorating the execution of this method will trigger a cache clear operation.\n * CacheStore server config defined in db.ts.\n *\n * @export\n * @param {string} cacheName cacheName cache name\n * @param {CacheEvictOpt} [opt] cache options\n * e.g: \n * {\n * params: [\"id\"],\n * delayedDoubleDeletion: true\n * }\n * Use the 'id' parameters of the method as cache subkeys,\n * and clear the cache after the method executed\n * @returns\n */\nexport function CacheEvict(cacheName: string, opt: CacheEvictOpt = {\n delayedDoubleDeletion: true,\n}) {\n return IOCContainer.createDecorator(({ target, methodName, descriptor, method, context }) => {\n const mergedOpt = { ...{ delayedDoubleDeletion: true, }, ...opt };\n\n if (context) {\n // TC39 path\n // Component type check via addInitializer\n context.addInitializer?.(function (this: any) {\n const componentType = IOCContainer.getType(this.constructor);\n if (![\"SERVICE\", \"COMPONENT\"].includes(componentType)) {\n throw Error(\"This decorator only used in the service、component class.\");\n }\n });\n\n const originalMethod = method!;\n // Get the parameter list of the method\n const funcParams = getArgs(originalMethod as (...args: any[]) => any);\n // Get the defined parameter location\n const paramIndexes = getParamIndex(funcParams, mergedOpt.params || []);\n\n // Validate parameters\n const invalidParams: string[] = [];\n (mergedOpt.params || []).forEach((param, index) => {\n if (paramIndexes[index] === -1) {\n invalidParams.push(param);\n }\n });\n if (invalidParams.length > 0) {\n logger.Warn(`CacheEvict: Parameter(s) [${invalidParams.join(\", \")}] not found in method ${String(methodName)}. These parameters will be ignored.`);\n }\n\n return async function (this: any, ...props: any[]) {\n const store: CacheStore = await GetCacheStore().catch((e: Error): null => {\n logger.error(\"Get cache store instance failed.\" + e.message);\n return null;\n });\n\n if (store) {\n const key = generateCacheKey(cacheName, paramIndexes, mergedOpt.params || [], props);\n\n const result = await originalMethod.apply(this, props);\n store.del(key).catch((e: Error) => {\n logger.error(\"Cache delete error:\" + e.message);\n });\n\n if (mergedOpt.delayedDoubleDeletion) {\n const delayTime = mergedOpt.delayTime || 5000;\n asyncDelayedExecution(() => {\n store.del(key).catch((e: Error) => {\n logger.error(\"Cache double delete error:\" + e.message);\n });\n }, delayTime);\n }\n return result;\n } else {\n // If store is not available, execute method directly\n return originalMethod.apply(this, props);\n }\n };\n } else {\n // Legacy path\n const componentType = IOCContainer.getType(target);\n if (![\"SERVICE\", \"COMPONENT\"].includes(componentType)) {\n throw Error(\"This decorator only used in the service、component class.\");\n }\n const { value, configurable, enumerable } = descriptor!;\n // Get the parameter list of the method\n const funcParams = getArgs((<any>target)[methodName]);\n // Get the defined parameter location\n const paramIndexes = getParamIndex(funcParams, mergedOpt.params || []);\n\n // Validate parameters\n const invalidParams: string[] = [];\n (mergedOpt.params || []).forEach((param, index) => {\n if (paramIndexes[index] === -1) {\n invalidParams.push(param);\n }\n });\n if (invalidParams.length > 0) {\n logger.Warn(`CacheEvict: Parameter(s) [${invalidParams.join(\", \")}] not found in method ${String(methodName)}. These parameters will be ignored.`);\n }\n\n return {\n configurable,\n enumerable,\n writable: true,\n async value(this: any, ...props: any[]) {\n const store: CacheStore = await GetCacheStore().catch((e: Error): null => {\n logger.error(\"Get cache store instance failed.\" + e.message);\n return null;\n });\n\n if (store) {\n const key = generateCacheKey(cacheName, paramIndexes, mergedOpt.params || [], props);\n\n const result = await value.apply(this, props);\n store.del(key).catch((e: Error) => {\n logger.error(\"Cache delete error:\" + e.message);\n });\n\n if (mergedOpt.delayedDoubleDeletion) {\n const delayTime = mergedOpt.delayTime || 5000;\n asyncDelayedExecution(() => {\n store.del(key).catch((e: Error) => {\n logger.error(\"Cache double delete error:\" + e.message);\n });\n }, delayTime);\n }\n return result;\n } else {\n // If store is not available, execute method directly\n return value.apply(this, props);\n }\n }\n };\n }\n }, 'method');\n}\n","/*\n * @Description: \n * @Usage: \n * @Author: richen\n * @Date: 2024-11-07 16:00:02\n * @LastEditTime: 2024-11-07 16:00:05\n * @License: BSD (3-Clause)\n * @Copyright (c): <richenlin(at)gmail.com>\n */\nimport { Koatty } from \"koatty_core\";\nimport { StoreOptions } from \"koatty_store\";\nimport { CloseCacheStore, GetCacheStore } from \"./store\";\n\nexport * from \"./cache\";\nexport * from \"./store\";\n\n/** \n * defaultOptions\n */\n\nconst defaultOptions: StoreOptions = {\n type: \"memory\",\n db: 0,\n timeout: 30\n}\n\n/**\n * @param options - The options for the cached options\n * @param app - The Koatty application instance\n */\nexport async function KoattyCached(options: StoreOptions, app: Koatty) {\n options = { ...defaultOptions, ...options };\n\n app.once(\"appReady\", async function () {\n // 初始化缓存存储\n await GetCacheStore(options);\n });\n\n app.on(\"appStop\", async function () {\n // 关闭缓存存储\n await CloseCacheStore();\n });\n}"]}