Skip to content

improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, …#6

Merged
y-aithnini merged 1 commit intodevelopfrom
improvement/scan-null-envelope-index-cleanup
Apr 6, 2026
Merged

improvement: replace KEYS with SCAN, fix @Cacheable null-return bug, …#6
y-aithnini merged 1 commit intodevelopfrom
improvement/scan-null-envelope-index-cleanup

Conversation

@y-aithnini
Copy link
Copy Markdown
Contributor

…clean up index exports

Summary

  • What does this PR change?

Why

  • Why is this change needed?

Checklist

  • Added/updated tests (if behavior changed)
  • npm run lint passes
  • npm run typecheck passes
  • npm test passes
  • npm run build passes
  • Added a changeset (npx changeset) if this affects consumers

Notes

  • Anything reviewers should pay attention to?

@y-aithnini y-aithnini requested a review from a team as a code owner April 6, 2026 07:56
Copilot AI review requested due to automatic review settings April 6, 2026 07:56
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 6, 2026

@y-aithnini y-aithnini merged commit 3eb5fe9 into develop Apr 6, 2026
4 checks passed
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 @Cacheable to wrap cached values in an envelope so null return values can be cached.
  • Replaced Redis KEYS usage with cursor-based SCAN in RedisCacheStore.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). Since index.ts defines 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

Comment on lines +45 to +53
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;
}
Copy link

Copilot AI Apr 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +45 to +48
interface CacheEnvelope {
/** The actual cached return value — may be null or undefined */
readonly __v: unknown;
}
Copy link

Copilot AI Apr 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines +81 to 86
* @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.
*/
Copy link

Copilot AI Apr 6, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Zaiidmo added a commit that referenced this pull request Apr 7, 2026
* 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>
y-aithnini added a commit that referenced this pull request Apr 7, 2026
* 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>
y-aithnini added a commit that referenced this pull request Apr 7, 2026
* 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>
Zaiidmo added a commit that referenced this pull request Apr 7, 2026
* 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>
Zaiidmo added a commit that referenced this pull request Apr 7, 2026
* 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>
Zaiidmo added a commit that referenced this pull request Apr 7, 2026
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants