@bymax-one/nest-cache 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +2 -2
  3. package/package.json +2 -16
package/CHANGELOG.md CHANGED
@@ -6,6 +6,28 @@ project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.0.5] - 2026-08-06
10
+
11
+ **Documentation, tests and E2E only.** `dist/` is byte-identical to `1.0.4`.
12
+
13
+ ### Fixed
14
+
15
+ - The Redis Cluster E2E was flaky at roughly one run in three, failing with `CLUSTERDOWN` or
16
+ "Too many Cluster redirections". The container log line proves `redis-cli --cluster create`
17
+ printed its coverage message, but what the client needs is the state each node serves on the
18
+ port the test dials. The helper now polls `CLUSTER INFO` on every node until all six report
19
+ `cluster_state:ok` and full slot coverage. Six consecutive runs of the previously flaky spec
20
+ pass, where it failed three times in nine before.
21
+
22
+ ### Documentation
23
+
24
+ - The mutation badge said **100%**; the measured score is **99.78%**.
25
+
26
+ ### Tests
27
+
28
+ - `findProvider` gained a spec of its own; it had only ever been exercised through the module
29
+ suites, where either half of its disjunction covered for the other.
30
+
9
31
  ## [1.0.4] - 2026-08-04
10
32
 
11
33
  ### Security
@@ -128,6 +150,7 @@ type or export moved.
128
150
  - Published with npm OIDC provenance — no long-lived tokens
129
151
  - Zero direct runtime dependencies (`dependencies: {}`) — `ioredis` and NestJS via peer deps
130
152
 
153
+ [1.0.5]: https://github.com/bymaxone/nest-cache/compare/v1.0.4...v1.0.5
131
154
  [1.0.4]: https://github.com/bymaxone/nest-cache/compare/v1.0.3...v1.0.4
132
155
  [1.0.3]: https://github.com/bymaxone/nest-cache/releases/tag/v1.0.3
133
156
  [1.0.2]: https://github.com/bymaxone/nest-cache/releases/tag/v1.0.2
package/README.md CHANGED
@@ -14,7 +14,7 @@
14
14
  <a href="https://www.npmjs.com/package/@bymax-one/nest-cache"><img src="https://img.shields.io/npm/dm/@bymax-one/nest-cache?style=flat-square&colorA=000000&colorB=000000" alt="npm downloads" /></a>
15
15
  <a href="https://github.com/bymaxone/nest-cache/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/bymaxone/nest-cache/ci.yml?branch=main&style=flat-square&colorA=000000&label=CI" alt="CI status" /></a>
16
16
  <a href="https://github.com/bymaxone/nest-cache/actions/workflows/ci.yml"><img src="https://img.shields.io/badge/coverage-100%25-brightgreen?style=flat-square&colorA=000000" alt="coverage" /></a>
17
- <a href="https://github.com/bymaxone/nest-cache/blob/main/docs/mutation_testing_results.md"><img src="https://img.shields.io/badge/mutation-100%25-brightgreen?style=flat-square&colorA=000000" alt="mutation score" /></a>
17
+ <a href="https://github.com/bymaxone/nest-cache/blob/main/docs/mutation_testing_results.md"><img src="https://img.shields.io/badge/mutation-99.78%25-brightgreen?style=flat-square&colorA=000000" alt="mutation score" /></a>
18
18
  <a href="https://scorecard.dev/viewer/?uri=github.com/bymaxone/nest-cache"><img src="https://api.scorecard.dev/projects/github.com/bymaxone/nest-cache/badge?style=flat-square" alt="OpenSSF Scorecard" /></a>
19
19
  <a href="https://github.com/bymaxone/nest-cache/blob/main/LICENSE"><img src="https://img.shields.io/github/license/bymaxone/nest-cache?style=flat-square&colorA=000000&colorB=000000" alt="license" /></a>
20
20
  <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-strict-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript" /></a>
@@ -526,7 +526,7 @@ When integrating `@bymax-one/nest-cache` in production, verify each of the follo
526
526
  A cache is consulted on the hot path of every request that touches it, so the suite is held to a bar beyond "it runs" — every behavior is pinned so that a regression **fails a test**.
527
527
 
528
528
  - ✅ **100% line coverage** — statements, branches, functions, and lines, enforced by `jest.coverage.config.ts` as a pre-publish gate, not a target
529
- - ✅ **100% mutation score** — verified with [Stryker](https://stryker-mutator.io/) at `break: 95` and `ignoreStatic: false`: 433 seeded faults detected (427 killed, 6 timed out), **no survivors**
529
+ - ✅ **99.78% mutation score** — verified with [Stryker](https://stryker-mutator.io/) at `break: 95` and `ignoreStatic: false`; the single survivor is `configurable: false` on the withheld connection accessor, equivalent here because the resolved options are frozen on the way out, and [documented as such](./docs/mutation_testing_results.md)
530
530
  - ✅ **Zero suppressions** — the production source carries no coverage or mutation directives; the one would-be equivalent mutant was refactored away rather than silenced, so the score is an accounting rather than a number
531
531
  - ✅ **No real Redis in unit tests** — `ioredis-mock` throughout; e2e tests exercise the wired module through `@nestjs/testing` and Testcontainers against a real Redis for connection lifecycle, Pub/Sub, and Lua scripts
532
532
  - ✅ **Published-package smoke test** — `scripts/dogfood-smoke-test.mjs` validates exports, tarball shape, and a consumer install before tagging
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bymax-one/nest-cache",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Typed Redis cache for NestJS based on ioredis 5, with namespace strategy, Pub/Sub and Lua script management.",
5
5
  "author": "Bymax One <support@bymax.one>",
6
6
  "license": "MIT",
@@ -139,26 +139,12 @@
139
139
  "pubsub",
140
140
  "lua"
141
141
  ],
142
- "packageManager": "pnpm@10.8.1",
142
+ "packageManager": "pnpm@11.20.0",
143
143
  "engines": {
144
144
  "node": ">=24.0.0"
145
145
  },
146
146
  "publishConfig": {
147
147
  "access": "public",
148
148
  "registry": "https://registry.npmjs.org/"
149
- },
150
- "pnpm": {
151
- "overrides": {
152
- "brace-expansion@1": "^1.1.18",
153
- "brace-expansion@2": "^2.1.4",
154
- "brace-expansion@5": "^5.0.9",
155
- "esbuild": "^0.28.1",
156
- "fast-uri": "^3.1.5",
157
- "js-yaml@3": "^3.15.0",
158
- "js-yaml@4": "^4.3.0",
159
- "protobufjs": "^7.6.5",
160
- "qs": "^6.15.2",
161
- "undici": "^7.28.0"
162
- }
163
149
  }
164
150
  }