improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, …#6
Conversation
…clean up index exports
|
There was a problem hiding this comment.
Pull request overview
This PR updates CacheKit’s caching behavior and Redis adapter clearing strategy, while cleaning up the package’s public exports.
Changes:
- Updated
@Cacheableto wrap cached values in an envelope sonullreturn values can be cached. - Replaced Redis
KEYSusage with cursor-basedSCANinRedisCacheStore.clear()(prefix mode). - Removed “Example*” exports from the library entrypoint (
src/index.ts) to reduce/clean the public API surface.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/index.ts | Removes previously exported example DTO/guard/decorator symbols from the public entrypoint. |
| src/decorators/cacheable.decorator.ts | Implements envelope-wrapping for @Cacheable reads/writes to distinguish cached null vs cache miss. |
| src/decorators/cacheable.decorator.spec.ts | Updates TTL assertion for envelope-wrapped values and adds a test for caching null return values. |
| src/adapters/redis-cache-store.adapter.ts | Replaces KEYS + DEL with cursor-based SCAN + batched DEL when clearing prefixed keys. |
| src/adapters/redis-cache-store.adapter.spec.ts | Updates test expectations for scan+del and adds a test ensuring SCAN is used. |
Comments suppressed due to low confidence (1)
src/index.ts:40
- This PR removes previously-exported symbols from the package entrypoint (
src/index.ts). Sinceindex.tsdefines the public API surface, removing exports is a breaking change for any consumer that imported them. Please add an appropriate changeset (and ensure the version bump matches semver for removed exports), or keep the exports until a major release deprecation/removal cycle.
// ============================================================================
// SERVICES (Main API)
// ============================================================================
// CacheService is the primary interface consumers interact with.
// Inject it anywhere via constructor injection.
export { CacheService } from "./services/cache.service";
// ============================================================================
// DECORATORS
// ============================================================================
// 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
| interface CacheEnvelope { | ||
| /** The actual cached return value — may be null or undefined */ | ||
| readonly __v: unknown; | ||
| } | ||
|
|
||
| /** Type guard — true when `v` is a CacheEnvelope written by @Cacheable */ | ||
| function isEnvelope(v: unknown): v is CacheEnvelope { | ||
| return typeof v === "object" && v !== null && "__v" in v; | ||
| } |
There was a problem hiding this comment.
The envelope detection is too permissive: isEnvelope() treats any cached object with a __v property as an envelope. This can break existing caches (and manual cache.set usage) where the cached value is an object containing __v (e.g., Mongoose documents), causing the decorator to return the inner __v field instead of the full object. Consider using an unambiguous marker (e.g., __cachekit: 1 + value) and/or a stricter guard (e.g., require a marker and hasOwnProperty) so non-envelope objects are never misclassified.
| interface CacheEnvelope { | ||
| /** The actual cached return value — may be null or undefined */ | ||
| readonly __v: unknown; | ||
| } |
There was a problem hiding this comment.
CacheEnvelope claims it can preserve undefined, but JSON serialization drops undefined object properties (e.g., { __v: undefined } becomes {}), so methods returning undefined will never actually be cached and will re-execute on every call. Either remove the undefined claim from docs/types, or change the envelope format to include a dedicated marker field so an "envelope with undefined" can round-trip reliably.
| * @remarks | ||
| * Methods that return `null` are correctly cached. The decorator uses an | ||
| * internal envelope so a cached `null` is distinguishable from a cache miss. | ||
| * Do **not** read keys written by `@Cacheable` via `CacheService.get()` directly | ||
| * — you will receive the raw envelope object `{ __v: value }` instead of the value. | ||
| */ |
There was a problem hiding this comment.
Storing { __v: result } changes the on-disk/on-Redis value shape for keys written by @Cacheable, and the new JSDoc explicitly warns that CacheService.get() will now return the raw envelope object for those keys. That’s a breaking change in how @Cacheable interoperates with the library’s primary public API (CacheService). Consider keeping the external value shape stable (e.g., by namespacing decorator keys, or by unwrapping the envelope transparently in CacheService.get()/wrap() when a Cacheable-envelope marker is detected), and document the migration/compatibility story for existing cached entries.
* 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>



…clean up index exports
Summary
Why
Checklist
npm run lintpassesnpm run typecheckpassesnpm testpassesnpm run buildpassesnpx changeset) if this affects consumersNotes