@bymax-one/nest-queue 1.0.4 → 1.0.6

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 +74 -0
  2. package/README.md +8 -8
  3. package/package.json +27 -23
package/CHANGELOG.md CHANGED
@@ -7,6 +7,76 @@ versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ---
9
9
 
10
+ ## [1.0.6] — 2026-08-02
11
+
12
+ Metadata only. `dist/` is byte-identical to `1.0.5` — verified by diffing a fresh
13
+ build against the published tarball — so there is no runtime change.
14
+
15
+ ### Fixed
16
+
17
+ - **The npm package page showed no documentation.** `1.0.5` reached the registry
18
+ with an empty `readme` field, so the page rendered nothing, even though
19
+ `README.md` was in the tarball all along. Publishing goes through the npm CLI
20
+ now instead of `pnpm publish`, and this release is what carries the README to
21
+ the registry.
22
+
23
+ The cause is measurable: across the five published `@bymax-one/*` libraries,
24
+ every package released under pnpm 11 landed with an empty `readme` and no
25
+ `_npmVersion`, while every one released under pnpm 10 — which delegated to the
26
+ npm CLI — carries both. `nest-realtime@1.0.1` confirmed it, restoring both
27
+ fields in a single release by switching the command.
28
+
29
+ ---
30
+
31
+ ## [1.0.5] — 2026-08-01
32
+
33
+ Documentation only. `dist/` is byte-identical to `1.0.4` — verified by diffing a
34
+ fresh build against the published tarball — so there is no runtime change.
35
+
36
+ ### Fixed
37
+
38
+ - **The README's configuration examples did not compile in a strict project.**
39
+ Eight snippets passed `process.env.REDIS_URL` where a `string` is required:
40
+
41
+ ```
42
+ TS2322: Type 'string | undefined' is not assignable to type 'string'.
43
+ ```
44
+
45
+ `process.env.X` is `string | undefined` under `strict`, so anyone copying the
46
+ Quick Start into a strict TypeScript project — the configuration this library
47
+ itself uses and recommends — got a type error out of the box. Now shown with a
48
+ fallback, which is what the code has to do anyway:
49
+
50
+ ```ts
51
+ connection: {
52
+ url: process.env.REDIS_URL ?? 'redis://localhost:6379'
53
+ }
54
+ ```
55
+
56
+ Found by `pnpm check:published`, added in the same release, which compiles the
57
+ README's own snippets against the built package. Nobody had reported it, and
58
+ nothing before this would have.
59
+
60
+ ### Added
61
+
62
+ - **`pnpm check:published`** — a gate that verifies the published surface matches
63
+ the documentation, before a tag rather than after it. It scaffolds a throwaway
64
+ consumer, symlinks the package into its own `node_modules` so resolution runs
65
+ through the `exports` map into `dist/`, and then checks that the README's links
66
+ resolve, that its TypeScript snippets and the type tests compile against the
67
+ built package, and that every `v*.*.*` tag has a `## [x.y.z]` CHANGELOG section.
68
+
69
+ Each of those exists because its absence let a defect reach npm: the 404 link
70
+ corrected in `1.0.3`, the exported type that rejected the README's own snippet
71
+ corrected in `1.0.4`, and a deleted heading that would have turned release notes
72
+ into the generic fallback.
73
+
74
+ It runs in CI, in `release.yml`, and inside `prepublishOnly` — the last one
75
+ because the first publish of a package is manual by design, which is precisely
76
+ the path that bypasses the tag workflow.
77
+
78
+ ---
79
+
10
80
  ## [1.0.4] — 2026-08-01
11
81
 
12
82
  ### Fixed
@@ -262,6 +332,10 @@ v6 peer range.
262
332
 
263
333
  ---
264
334
 
335
+ [1.0.6]: https://github.com/bymaxone/nest-queue/releases/tag/v1.0.6
336
+ [1.0.5]: https://github.com/bymaxone/nest-queue/releases/tag/v1.0.5
337
+ [1.0.4]: https://github.com/bymaxone/nest-queue/releases/tag/v1.0.4
338
+ [1.0.3]: https://github.com/bymaxone/nest-queue/releases/tag/v1.0.3
265
339
  [1.0.2]: https://github.com/bymaxone/nest-queue/releases/tag/v1.0.2
266
340
  [1.0.1]: https://github.com/bymaxone/nest-queue/releases/tag/v1.0.1
267
341
  [1.0.0]: https://github.com/bymaxone/nest-queue/releases/tag/v1.0.0
package/README.md CHANGED
@@ -149,7 +149,7 @@ import { BymaxQueueModule } from '@bymax-one/nest-queue'
149
149
  @Module({
150
150
  imports: [
151
151
  BymaxQueueModule.forRoot({
152
- connection: { url: process.env.REDIS_URL },
152
+ connection: { url: process.env.REDIS_URL ?? 'redis://localhost:6379' },
153
153
  isGlobal: true,
154
154
  }),
155
155
  ],
@@ -259,7 +259,7 @@ Mode B lets the library own the Redis connections. Pass either a URL or raw iore
259
259
  ```typescript
260
260
  // URL form
261
261
  BymaxQueueModule.forRoot({
262
- connection: { url: process.env.REDIS_URL },
262
+ connection: { url: process.env.REDIS_URL ?? 'redis://localhost:6379' },
263
263
  isGlobal: true,
264
264
  })
265
265
 
@@ -267,9 +267,9 @@ BymaxQueueModule.forRoot({
267
267
  BymaxQueueModule.forRoot({
268
268
  connection: {
269
269
  options: {
270
- host: process.env.REDIS_HOST,
270
+ host: process.env.REDIS_HOST ?? 'localhost',
271
271
  port: Number(process.env.REDIS_PORT),
272
- password: process.env.REDIS_PASSWORD,
272
+ password: process.env.REDIS_PASSWORD ?? undefined,
273
273
  tls: {},
274
274
  },
275
275
  },
@@ -345,7 +345,7 @@ Enable flows in the module options and inject the service:
345
345
 
346
346
  ```typescript
347
347
  BymaxQueueModule.forRoot({
348
- connection: { url: process.env.REDIS_URL },
348
+ connection: { url: process.env.REDIS_URL ?? 'redis://localhost:6379' },
349
349
  flows: { enabled: true },
350
350
  })
351
351
 
@@ -370,7 +370,7 @@ Provide a per-queue snapshot with a configurable TTL cache:
370
370
 
371
371
  ```typescript
372
372
  BymaxQueueModule.forRoot({
373
- connection: { url: process.env.REDIS_URL },
373
+ connection: { url: process.env.REDIS_URL ?? 'redis://localhost:6379' },
374
374
  metrics: { enabled: true, cacheTtlMs: 5_000 },
375
375
  })
376
376
 
@@ -562,7 +562,7 @@ Pass a `bullmq-otel` telemetry instance (optional peer dep) to trace spans from
562
562
  import { BullMQOtel } from 'bullmq-otel'
563
563
 
564
564
  BymaxQueueModule.forRoot({
565
- connection: { url: process.env.REDIS_URL },
565
+ connection: { url: process.env.REDIS_URL ?? 'redis://localhost:6379' },
566
566
  telemetry: new BullMQOtel('my-service', tracer),
567
567
  })
568
568
  ```
@@ -602,7 +602,7 @@ Tune `drainTimeoutMs` when jobs may run longer than 30 s:
602
602
 
603
603
  ```typescript
604
604
  BymaxQueueModule.forRoot({
605
- connection: { url: process.env.REDIS_URL },
605
+ connection: { url: process.env.REDIS_URL ?? 'redis://localhost:6379' },
606
606
  shutdown: { drainTimeoutMs: 60_000 },
607
607
  })
608
608
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bymax-one/nest-queue",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "NestJS dynamic module wrapping BullMQ — typed jobs, flows, job schedulers, deduplication, OpenTelemetry, graceful shutdown",
5
5
  "author": "Bymax One <support@bymax.one>",
6
6
  "license": "MIT",
@@ -53,6 +53,30 @@
53
53
  ]
54
54
  }
55
55
  },
56
+ "scripts": {
57
+ "build": "pnpm clean && tsup",
58
+ "check:exports": "attw --pack .",
59
+ "check:published": "node scripts/check-published-surface.mjs",
60
+ "clean": "rm -rf dist coverage",
61
+ "lint": "eslint src scripts test",
62
+ "lint:fix": "eslint src scripts test --fix",
63
+ "mutation": "stryker run",
64
+ "mutation:dry-run": "stryker run --dryRunOnly",
65
+ "mutation:incremental": "stryker run --incremental",
66
+ "prepare": "husky",
67
+ "prepublishOnly": "pnpm clean && pnpm typecheck && pnpm test:types && pnpm lint && pnpm test:cov:all && pnpm build && pnpm check:published",
68
+ "release": "npm publish --provenance --access public",
69
+ "size": "node scripts/check-size.mjs",
70
+ "smoke": "node scripts/dogfood-smoke-test.mjs",
71
+ "test": "jest",
72
+ "test:all": "pnpm test && pnpm test:e2e",
73
+ "test:cov": "jest --coverage",
74
+ "test:cov:all": "jest --config jest.coverage.config.ts --coverage",
75
+ "test:e2e": "jest --config jest.e2e.config.ts",
76
+ "test:types": "tsc --noEmit -p tsconfig.typetest.json",
77
+ "test:watch": "jest --watch",
78
+ "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.server.json"
79
+ },
56
80
  "dependencies": {},
57
81
  "peerDependencies": {
58
82
  "@nestjs/common": "^11.0.16",
@@ -122,32 +146,12 @@
122
146
  "prettier --write"
123
147
  ]
124
148
  },
149
+ "packageManager": "pnpm@11.0.0",
125
150
  "engines": {
126
151
  "node": ">=24.0.0"
127
152
  },
128
153
  "publishConfig": {
129
154
  "access": "public",
130
155
  "registry": "https://registry.npmjs.org/"
131
- },
132
- "scripts": {
133
- "build": "pnpm clean && tsup",
134
- "lint": "eslint src scripts test",
135
- "lint:fix": "eslint src scripts test --fix",
136
- "test": "jest",
137
- "test:cov": "jest --coverage",
138
- "test:watch": "jest --watch",
139
- "test:e2e": "jest --config jest.e2e.config.ts",
140
- "test:all": "pnpm test && pnpm test:e2e",
141
- "test:cov:all": "jest --config jest.coverage.config.ts --coverage",
142
- "test:types": "tsc --noEmit -p tsconfig.typetest.json",
143
- "mutation": "stryker run",
144
- "mutation:incremental": "stryker run --incremental",
145
- "mutation:dry-run": "stryker run --dryRunOnly",
146
- "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.server.json",
147
- "size": "node scripts/check-size.mjs",
148
- "smoke": "node scripts/dogfood-smoke-test.mjs",
149
- "check:exports": "attw --pack .",
150
- "clean": "rm -rf dist coverage",
151
- "release": "pnpm publish --provenance"
152
156
  }
153
- }
157
+ }