Feature/compt 57 cacheable cacheevict decorators#3
Conversation
…ache-module-service
|
There was a problem hiding this comment.
Pull request overview
Adds consumer-facing method decorators to CacheKit to support automatic cache-aside reads and post-operation cache eviction, wired into the module lifecycle so decorators can access CacheService without explicit injection.
Changes:
- Added
@Cacheableand@CacheEvictdecorators and exported them from the public entrypoint. - Introduced utilities for cache key template resolution and a module-scoped
CacheServicereference used by decorators. - Updated
CacheModuleto populate the decorator-accessibleCacheServicereference duringonModuleInit().
Reviewed changes
Copilot reviewed 6 out of 7 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tsconfig.json | Updates TS path aliases (currently introduces a duplicate @utils/* key). |
| src/utils/resolve-cache-key.util.ts | Adds runtime {n} placeholder interpolation for cache key templates. |
| src/utils/cache-service-ref.ts | Adds a module-scoped singleton reference used by decorators to access CacheService. |
| src/index.ts | Exposes Cacheable / CacheEvict as part of the package public API. |
| src/decorators/cacheable.decorator.ts | Implements cache-aside behavior around method execution. |
| src/decorators/cache-evict.decorator.ts | Implements cache eviction after successful method execution. |
| src/cache-kit.module.ts | Populates the decorator-accessible cache service reference on module init. |
| // Persist the result under the resolved key for future calls | ||
| await cacheService.set(resolvedKey, result, ttlSeconds); |
There was a problem hiding this comment.
Cacheable will attempt to cache whatever the wrapped method returns. If the method returns undefined (common for void/command-style methods), JSON.stringify(undefined) yields undefined, which is not valid JSON and will cause reads to always miss (or potentially fail depending on the store implementation). Consider skipping cacheService.set() when the result is undefined, or coercing/handling it explicitly.
| // Persist the result under the resolved key for future calls | |
| await cacheService.set(resolvedKey, result, ttlSeconds); | |
| // Persist the result under the resolved key for future calls. | |
| // Skip caching undefined because some cache stores serialize values as JSON, | |
| // and JSON.stringify(undefined) does not produce a valid cache payload. | |
| if (result !== undefined) { | |
| await cacheService.set(resolvedKey, result, ttlSeconds); | |
| } |
| * Called once by CacheModule.onModuleInit(). | ||
| * | ||
| * @param service - The resolved CacheService from NestJS DI | ||
| */ | ||
| set(service: CacheService): void { | ||
| // Overwrite any prior value — safe for hot-reload scenarios | ||
| _instance = service; |
There was a problem hiding this comment.
CacheServiceRef.set() unconditionally overwrites the previously stored instance. If CacheModule.register() is imported more than once in the same process (e.g., different feature modules with different cache configs), whichever module initializes last will silently take over and all decorators will use the wrong CacheService. Consider preventing re-initialization (throw if already set with a different instance) or otherwise scoping the reference so multiple module instances can coexist safely.
| * Called once by CacheModule.onModuleInit(). | |
| * | |
| * @param service - The resolved CacheService from NestJS DI | |
| */ | |
| set(service: CacheService): void { | |
| // Overwrite any prior value — safe for hot-reload scenarios | |
| _instance = service; | |
| * Called by CacheModule.onModuleInit(). | |
| * | |
| * Re-initialisation is allowed only when the same instance is provided again | |
| * (for example, during an idempotent bootstrap path). A different instance is | |
| * rejected because decorators resolve this module-scoped reference globally, | |
| * and silently replacing it would make them use the wrong CacheService. | |
| * | |
| * @param service - The resolved CacheService from NestJS DI | |
| * @throws {Error} If a different CacheService instance was already registered | |
| */ | |
| set(service: CacheService): void { | |
| if (_instance === null) { | |
| _instance = service; | |
| return; | |
| } | |
| if (_instance !== service) { | |
| throw new Error( | |
| "[CacheKit] CacheServiceRef has already been initialised with a different instance. " + | |
| "Multiple CacheModule.register() or CacheModule.registerAsync() imports in the same " + | |
| "process are not supported by the global decorator cache reference.", | |
| ); | |
| } |
| // Method decorators for automatic caching and cache invalidation. | ||
| // Apply these to service methods — no manual CacheService injection needed. | ||
|
|
||
| // Cache-aside decorator: returns cached value or calls the method and stores the result | ||
| export { Cacheable } from "./decorators/cacheable.decorator"; | ||
| // Cache eviction decorator: deletes the cache entry after the method executes | ||
| export { CacheEvict } from "./decorators/cache-evict.decorator"; |
There was a problem hiding this comment.
This PR adds new public exports (Cacheable, CacheEvict) from the package entrypoint. Since this changes the consumer-facing API, add a changeset (npx changeset) so the version/changelog is updated consistently with the repo’s release workflow.
* ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com>
* fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ * Develop (#7) * ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * chore: set version to 0.0.1 for initial publish --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com>
* fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ * Develop (#7) * ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * chore: set version to 0.0.1 for initial publish --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com>
* ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] * install dep * Fix/sonar test inclusions (#10) * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ * chore: set version to 0.0.1 for initial publish * Fix/sonar test inclusions (#12) * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ * Develop (#7) * ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * chore: set version to 0.0.1 for initial publish --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * Fix/sonar test inclusions (#14) * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ * Develop (#7) * ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * chore: set version to 0.0.1 for initial publish --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * Fix/align version 1.0.0 (#17) * chore: align version to 1.0.0 to match master * chore: revert version to 0.0.1 as required * fix(chore): reverted versions tags and fixed merge conflits --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com>
* ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] * install dep * Fix/sonar test inclusions (#10) * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ * chore: set version to 0.0.1 for initial publish * Fix/sonar test inclusions (#12) * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ * Develop (#7) * ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * chore: set version to 0.0.1 for initial publish --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * Fix/sonar test inclusions (#14) * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ * Develop (#7) * ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * chore: set version to 0.0.1 for initial publish --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * Fix/align version 1.0.0 (#17) * chore: align version to 1.0.0 to match master * chore: revert version to 0.0.1 as required * fix(chore): reverted versions tags and fixed merge conflits * 0.0.1 * chore: dump version 1 --------- Co-authored-by: y-aithnini <y.aithnini@ciscod.com>
* ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] * install dep * Fix/sonar test inclusions (#10) * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ * chore: set version to 0.0.1 for initial publish * Fix/sonar test inclusions (#12) * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ * Develop (#7) * ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * chore: set version to 0.0.1 for initial publish --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * Fix/sonar test inclusions (#14) * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ * Develop (#7) * ops: UPDATED publish workflow and dependabot PR limits * ops (ci): standardize publish validation and dependabot across all packages - Replace git tag --list strategy with package.json-driven tag validation in all 16 publish workflows; use git rev-parse to verify the exact tag exists rather than guessing the latest repo-wide tag - Update error guidance to reflect feat/** → develop → master flow - Standardize dependabot to npm-only, grouped, monthly cadence across all 16 packages; remove github-actions ecosystem updates - Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit, HooksKit, paymentkit, StorageKit * security: added CODEOWNER file for branches security * ops: updated relese check workflow# * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters (#1) * Feature/compt 56 cache module service (#2) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * Feature/compt 57 cacheable cacheevict decorators (#3) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * Feature/compt 58 test suite (#4) * feat(COMPT-55): add ICacheStore port and Redis/InMemory adapters * feat(COMPT-56): add CacheModule, CacheService, and DI tokens * style: fix Prettier formatting across all files * style: fix Prettier formatting after develop merge * fix(lint): fix import order and replace any types with proper NestJS types * feat(COMPT-57): add @Cacheable and @CacheEvict decorators with key interpolation * test(COMPT-58): add full test suite with 95%+ coverage across all adapters, service, and decorators * fix(lint): fix import/order and no-require-imports violations in spec files * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset (#5) * docs(COMPT-59): add README, update peer deps, create v0.1.0 changeset * style: fix Prettier formatting across all files * improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, clean up index exports (#6) * ci: update release check workflow * fix(ci): fix SonarCloud coverage — use src/**/*.spec.ts instead of test/ (#8) * ops: updated release check jobs ] --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * chore: set version to 0.0.1 for initial publish --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com> * Fix/align version 1.0.0 (#17) * chore: align version to 1.0.0 to match master * chore: revert version to 0.0.1 as required * fix(chore): reverted versions tags and fixed merge conflits * 0.0.1 * chore: dump version 1 * fix: switch build to CommonJS and add exports field to package.json (#20) The package was shipping ESM output without 'type: module' and without .js extensions on internal imports — making it unloadable in Node.js. - tsconfig.build.json: module=CommonJS, moduleResolution=Node10 - package.json: added exports field with require/default conditions * Fix/cjs build and publish fields (#22) * fix: switch build to CommonJS and add exports field to package.json The package was shipping ESM output without 'type: module' and without .js extensions on internal imports — making it unloadable in Node.js. - tsconfig.build.json: module=CommonJS, moduleResolution=Node10 - package.json: added exports field with require/default conditions * chore: bump version to 0.0.2 --------- Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com>



Summary
Why
Checklist
npm run lintpassesnpm run typecheckpassesnpm testpassesnpm run buildpassesnpx changeset) if this affects consumersNotes