commandkit 0.1.11-dev.20250113184412 → 0.1.11-dev.20250127160127

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 (60) hide show
  1. package/bin/build.mjs +2 -3
  2. package/bin/development.mjs +6 -2
  3. package/bin/esbuild-plugins/plugin.mjs +74 -0
  4. package/bin/esbuild-plugins/use-cache.mjs +126 -143
  5. package/dist/CommandKit.js +1 -1
  6. package/dist/CommandKit.js.map +1 -1
  7. package/dist/CommandKit.mjs +1 -1
  8. package/dist/cache/CacheProvider.d.mts +4 -5
  9. package/dist/cache/CacheProvider.d.ts +4 -5
  10. package/dist/cache/CacheProvider.js.map +1 -1
  11. package/dist/cache/CacheProvider.mjs +1 -1
  12. package/dist/cache/MemoryCache.d.mts +2 -2
  13. package/dist/cache/MemoryCache.d.ts +2 -2
  14. package/dist/cache/MemoryCache.js +1 -1
  15. package/dist/cache/MemoryCache.js.map +1 -1
  16. package/dist/cache/MemoryCache.mjs +1 -1
  17. package/dist/cache/index.d.mts +23 -44
  18. package/dist/cache/index.d.ts +23 -44
  19. package/dist/cache/index.js +2 -2
  20. package/dist/cache/index.js.map +1 -1
  21. package/dist/cache/index.mjs +1 -1
  22. package/dist/chunk-CO2EZ53K.mjs +2 -0
  23. package/dist/chunk-CO2EZ53K.mjs.map +1 -0
  24. package/dist/chunk-GIQCBDID.mjs +2 -0
  25. package/dist/chunk-GIQCBDID.mjs.map +1 -0
  26. package/dist/chunk-JJTJBXV2.mjs +2 -0
  27. package/dist/chunk-JJTJBXV2.mjs.map +1 -0
  28. package/dist/{chunk-3TRGTPDU.mjs → chunk-NRRM7DKC.mjs} +2 -2
  29. package/dist/{chunk-3TRGTPDU.mjs.map → chunk-NRRM7DKC.mjs.map} +1 -1
  30. package/dist/{chunk-47FOQCN7.mjs → chunk-UPJYI5Q6.mjs} +1 -1
  31. package/dist/chunk-UPJYI5Q6.mjs.map +1 -0
  32. package/dist/context/async-context.js +1 -1
  33. package/dist/context/async-context.js.map +1 -1
  34. package/dist/context/async-context.mjs +1 -1
  35. package/dist/context/environment.mjs +1 -1
  36. package/dist/handlers/command-handler/CommandHandler.js +1 -1
  37. package/dist/handlers/command-handler/CommandHandler.js.map +1 -1
  38. package/dist/handlers/command-handler/CommandHandler.mjs +1 -1
  39. package/dist/handlers/index.js +1 -1
  40. package/dist/handlers/index.js.map +1 -1
  41. package/dist/handlers/index.mjs +1 -1
  42. package/dist/index.d.mts +2 -3
  43. package/dist/index.d.ts +2 -3
  44. package/dist/index.js +2 -2
  45. package/dist/index.js.map +1 -1
  46. package/dist/index.mjs +1 -1
  47. package/dist/index.mjs.map +1 -1
  48. package/dist/utils/warn-unstable.d.mts +2 -1
  49. package/dist/utils/warn-unstable.d.ts +2 -1
  50. package/dist/utils/warn-unstable.js +1 -1
  51. package/dist/utils/warn-unstable.js.map +1 -1
  52. package/dist/utils/warn-unstable.mjs +1 -1
  53. package/package.json +2 -2
  54. package/dist/chunk-47FOQCN7.mjs.map +0 -1
  55. package/dist/chunk-GSYRGHXQ.mjs +0 -2
  56. package/dist/chunk-GSYRGHXQ.mjs.map +0 -1
  57. package/dist/chunk-MVPNDXHU.mjs +0 -2
  58. package/dist/chunk-MVPNDXHU.mjs.map +0 -1
  59. package/dist/chunk-YLJX7MMA.mjs +0 -2
  60. package/dist/chunk-YLJX7MMA.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cache/index.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks';\nimport { GenericFunction, getCommandKit } from '../context/async-context';\nimport { warnUnstable } from '../utils/warn-unstable';\nimport { randomUUID } from 'node:crypto';\nimport ms from 'ms';\n\nconst cacheContext = new AsyncLocalStorage<CacheOptions | null>();\nconst CACHE_FN_STORE = new Map<GenericFunction, CacheOptions>();\n\nexport * from './CacheProvider';\nexport * from './MemoryCache';\n\nexport interface CacheOptions {\n /**\n * The name of the cache key.\n */\n name: string;\n /**\n * The time-to-live of the cache key in milliseconds.\n */\n ttl?: number;\n}\n\n/**\n * Assigns cache tag parameters to the current function that uses the \"use cache\" directive.\n * @param options The cache options or the name of the cache key.\n */\nexport function unstable_cacheTag(options: string | CacheOptions): void {\n warnUnstable('cacheTag()');\n\n const context = cacheContext.getStore();\n\n if (context === undefined) {\n throw new Error(\n 'cacheTag() can only be used inside a function that use the \"use cache\" directive.'\n );\n }\n\n // already tagged\n if (context === null) return;\n\n const opt = typeof options === 'string' ? { name: options } : options;\n\n if (opt.name) context.name = opt.name;\n if (opt.ttl !== undefined) context.ttl = opt.ttl;\n}\n\n/**\n * Assigns cache lifetime to the current function that uses the \"use cache\" directive.\n * @param ttl The time-to-live of the cache key in milliseconds or milliseconds parsable string.\n */\nexport function unstable_cacheLife(options: string | number): void {\n warnUnstable('cacheLife()');\n\n const context = cacheContext.getStore();\n\n if (context === undefined) {\n throw new Error(\n 'cacheLife() can only be used inside a function that use the \"use cache\" directive.'\n );\n }\n\n // already tagged\n if (context === null) return;\n\n const ttl = typeof options === 'string' ? ms(options) : options;\n\n context.ttl = ttl;\n}\n\n/**\n * Cache a value.\n * @param options The cache options.\n */\nexport function unstable_cache<R, F extends (...args: any[]) => Promise<R>>(\nfn: F,\noptions?: string | CacheOptions | undefined)\n: F {\n warnUnstable('cache()');\n const commandkit = getCommandKit(true);\n const cache = commandkit.getCacheProvider();\n\n if (!cache) {\n throw new Error('cache() cannot be used without a cache provider.');\n }\n\n options ??= randomUUID();\n\n const params =\n typeof options === 'string' ?\n {\n name: options\n } :\n options;\n\n // default ttl to 15 minutes\n params.ttl ??= 900_000;\n\n let firstRun = true;\n\n const _fn = (async (...args: Parameters<F>): Promise<R> => {\n const _context = CACHE_FN_STORE.get(_fn);\n\n if (!firstRun && !_context) {\n return await fn(...args);\n }\n\n firstRun = false;\n\n const context = _context ?? params;\n\n // check cache\n const data = await cache.get(context.name);\n\n if (data) return data as R;\n\n // cache miss\n const result = await fn(...args);\n\n await cache.set(context.name, result, context.ttl);\n\n return result;\n }) as F;\n\n CACHE_FN_STORE.set(_fn, params);\n\n return _fn;\n}\n\n/**\n * @private\n * @internal\n */\nfunction use_cache<R, F extends (...args: any[]) => Promise<R>>(fn: F): F {\n warnUnstable('\"use cache\"');\n\n let tagged = false;\n let originalFn: F;\n\n const memo = (async (...args) => {\n if (!originalFn) {\n originalFn = unstable_cache(fn);\n }\n\n if (!tagged) {\n // validate cacheTag() usage\n const _params = CACHE_FN_STORE.get(originalFn);\n\n if (!_params) return originalFn(...args);\n\n const [params, data] = await cacheContext.run(\n {\n name: _params?.name ?? '',\n ttl: _params?.ttl\n },\n async () => {\n const data = await originalFn(...args);\n const maybeTaggedParams = cacheContext.getStore();\n return [maybeTaggedParams, data];\n }\n );\n\n if (params) {\n CACHE_FN_STORE.set(originalFn, {\n name: params.name ?? _params?.name ?? randomUUID(),\n ttl: params.ttl ?? _params?.ttl\n });\n }\n\n tagged = true;\n\n return data;\n }\n\n return cacheContext.run(null, () => originalFn(...args));\n }) as F;\n\n return memo;\n}\n\n// this is intentional, do not change or you will be fired\nexport { use_cache as unstable_super_duper_secret_internal_for_use_cache_directive_of_commandkit_cli_do_not_use_it_directly_or_you_will_be_fired_kthxbai };\n\n/**\n * Revalidate a cache by its key.\n * @param cache The cache key to revalidate.\n */\nexport async function unstable_revalidate(cache: string): Promise<void> {\n warnUnstable('revalidate()');\n const commandkit = getCommandKit(true);\n const cacheProvider = commandkit.getCacheProvider();\n\n if (!cacheProvider) {\n throw new Error('revalidate() cannot be used without a cache provider.');\n }\n\n let target: GenericFunction | undefined = undefined;\n\n for (const [fn, params] of CACHE_FN_STORE) {\n if (params.name === cache) {\n target = fn;\n break;\n }\n }\n\n if (!target) {\n throw new Error('Invalid cache key.');\n }\n\n await cacheProvider.delete(cache);\n}\n\n/**\n * Manually expire a cache by its key.\n * @param cache The cache key.\n * @param ttl The new time-to-live of the cache key in milliseconds. If not provided, the cache key will be deleted.\n */\nexport async function unstable_expire(\ncache: string,\nttl?: number | string)\n: Promise<void> {\n warnUnstable('expire()');\n const commandkit = getCommandKit(true);\n const cacheProvider = commandkit.getCacheProvider();\n\n if (!cacheProvider) {\n throw new Error('expire() cannot be used without a cache provider.');\n }\n\n let target: GenericFunction | undefined = undefined;\n\n for (const [fn, params] of CACHE_FN_STORE) {\n if (params.name === cache) {\n target = fn;\n break;\n }\n }\n\n if (!target) {\n throw new Error('Invalid cache key.');\n }\n\n const _ttl =\n typeof ttl === 'string' ? ms(ttl) : typeof ttl === 'number' ? ttl : null;\n\n if (_ttl !== null) {\n await cacheProvider.expire(cache, _ttl);\n } else {\n await cacheProvider.delete(cache);\n }\n}"],"mappings":"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","names":["data"]}