@hilbras/keystone 1.4.0 → 1.5.0

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.
package/CHANGELOG.md CHANGED
@@ -95,6 +95,24 @@ Fastify ecosystem upgrades — all plugins updated to latest major versions.
95
95
  - **@fastify/static** 8.3.0 → 10.1.4
96
96
  - **@fastify/swagger-ui** 5.2.6 → 6.1.1
97
97
 
98
+ ## [1.5.0] - 2026-09-20
99
+
100
+ Auth & infrastructure upgrades — jose 6, ioredis 6, bullmq 6, simplewebauthn 14, nodemailer 10.
101
+
102
+ ### Changed
103
+
104
+ - **jose** 5.10.0 → 6.2.12 — `KeyLike` type removed, replaced with `CryptoKey`.
105
+ - **ioredis** 5.11.1 → 6.0.0
106
+ - **bullmq** 5.80.2 → 6.3.8
107
+ - **@simplewebauthn/server** 13.3.2 → 14.0.2 — `AuthenticatorTransportFuture` renamed to `AuthenticatorTransport`.
108
+ - **nodemailer** 9.0.3 → 10.0.10
109
+
110
+ ### Fixed
111
+
112
+ - **jose 6 migration** — Replaced `KeyLike` with `CryptoKey` in secrets provider, tokens service, and database/environment secrets providers.
113
+ - **simplewebauthn 14 migration** — Renamed `AuthenticatorTransportFuture` to `AuthenticatorTransport` in webauthn service.
114
+
115
+ [1.5.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.5.0
98
116
  [1.4.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.4.0
99
117
  [1.3.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.3.0
100
118
  [1.2.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.2.0
package/README.md CHANGED
@@ -20,6 +20,10 @@ Keystone is a **standalone identity platform**, not a wrapper around another ide
20
20
 
21
21
  ---
22
22
 
23
+ ## What's new in v1.5.0
24
+
25
+ - **Auth & infrastructure upgrades** — jose 6, ioredis 6, bullmq 6, @simplewebauthn/server 14, nodemailer 10. Updated KeyLike→CryptoKey for jose 6 and AuthenticatorTransportFuture→AuthenticatorTransport for simplewebauthn 14.
26
+
23
27
  ## What's new in v1.4.0
24
28
 
25
29
  - **Fastify ecosystem upgrades** — fastify-plugin 6, @fastify/cookie 11, @fastify/cors 11, @fastify/static 10, @fastify/swagger-ui 6. All plugins updated to latest major versions with no code changes required.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hilbras/keystone",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",
@@ -41,17 +41,17 @@
41
41
  "@opentelemetry/api": "^1.9.1",
42
42
  "@opentelemetry/auto-instrumentations-node": "^0.80.0",
43
43
  "@opentelemetry/sdk-node": "^0.222.0",
44
- "@simplewebauthn/server": "^13.3.2",
44
+ "@simplewebauthn/server": "^14.0.2",
45
45
  "argon2": "^0.45.1",
46
- "bullmq": "^5.80.2",
46
+ "bullmq": "^6.3.8",
47
47
  "commander": "^15.0.0",
48
48
  "dotenv": "^18.0.1",
49
49
  "drizzle-orm": "^0.45.2",
50
50
  "fastify": "^5.12.5",
51
51
  "fastify-plugin": "^6.0.0",
52
- "ioredis": "^5.4.0",
53
- "jose": "^5.6.0",
54
- "nodemailer": "^9.0.3",
52
+ "ioredis": "^6.0.0",
53
+ "jose": "^6.2.12",
54
+ "nodemailer": "^10.0.10",
55
55
  "otpauth": "^9.5.2",
56
56
  "postgres": "^3.4.4",
57
57
  "prom-client": "^15.1.3",
@@ -1,6 +1,6 @@
1
1
  import crypto from "node:crypto";
2
2
  import { eq, and, or, gt, isNull } from "drizzle-orm";
3
- import { importPKCS8, importSPKI, exportPKCS8, exportSPKI, generateKeyPair, type KeyLike } from "jose";
3
+ import { importPKCS8, importSPKI, exportPKCS8, exportSPKI, generateKeyPair } from "jose";
4
4
  import { db } from "../../db/index.js";
5
5
  import { secrets, type Secret } from "../../db/schema.js";
6
6
  import { config } from "../../config.js";
@@ -1,5 +1,5 @@
1
1
  import crypto from "node:crypto";
2
- import { importPKCS8, importSPKI, exportPKCS8, exportSPKI, generateKeyPair, type KeyLike } from "jose";
2
+ import { importPKCS8, importSPKI, exportPKCS8, exportSPKI, generateKeyPair } from "jose";
3
3
  import { config } from "../../config.js";
4
4
  import type { SecretsProvider, SigningKeyPair } from "./provider.js";
5
5
  import { hashPassword, verifyPassword } from "./password.js";
@@ -1,9 +1,7 @@
1
- import type { KeyLike } from "jose";
2
-
3
1
  export interface SigningKeyPair {
4
2
  keyId: string;
5
- privateKey: KeyLike | Uint8Array;
6
- publicKey: KeyLike;
3
+ privateKey: CryptoKey | Uint8Array;
4
+ publicKey: CryptoKey;
7
5
  }
8
6
 
9
7
  export interface SecretsProvider {
@@ -7,7 +7,6 @@ import {
7
7
  decodeProtectedHeader,
8
8
  exportJWK,
9
9
  type JWTPayload,
10
- type KeyLike,
11
10
  } from "jose";
12
11
  import { eq, and, gt, isNull } from "drizzle-orm";
13
12
  import { db } from "../db/index.js";
@@ -7,7 +7,7 @@ import {
7
7
  verifyAuthenticationResponse,
8
8
  type RegistrationResponseJSON,
9
9
  type AuthenticationResponseJSON,
10
- type AuthenticatorTransportFuture,
10
+ type AuthenticatorTransport,
11
11
  } from "@simplewebauthn/server";
12
12
  import { db } from "../db/index.js";
13
13
  import {
@@ -114,7 +114,7 @@ export async function verifyAndStoreRegistration(
114
114
  credentialId: credential.id,
115
115
  publicKey: Buffer.from(credential.publicKey).toString("base64url"),
116
116
  counter: credential.counter,
117
- transports: (credential.transports || []) as AuthenticatorTransportFuture[],
117
+ transports: (credential.transports || []) as AuthenticatorTransport[],
118
118
  aaguid: info.aaguid || null,
119
119
  deviceName: deviceName || null,
120
120
  });
@@ -124,7 +124,7 @@ export async function verifyAndStoreRegistration(
124
124
 
125
125
  export async function buildAuthenticationOptions(email?: string) {
126
126
  let allowCredentials:
127
- | { id: string; type: "public-key"; transports?: AuthenticatorTransportFuture[] }[]
127
+ | { id: string; type: "public-key"; transports?: AuthenticatorTransport[] }[]
128
128
  | undefined;
129
129
  let userId: string | undefined;
130
130
 
@@ -136,7 +136,7 @@ export async function buildAuthenticationOptions(email?: string) {
136
136
  allowCredentials = credentials.map((c) => ({
137
137
  id: c.credentialId,
138
138
  type: "public-key" as const,
139
- transports: (c.transports || []) as AuthenticatorTransportFuture[],
139
+ transports: (c.transports || []) as AuthenticatorTransport[],
140
140
  }));
141
141
  }
142
142
  }
@@ -167,7 +167,7 @@ export async function verifyAuthentication(response: AuthenticationResponseJSON,
167
167
  id: credential.credentialId,
168
168
  publicKey: Buffer.from(credential.publicKey, "base64url"),
169
169
  counter: credential.counter,
170
- transports: (credential.transports || []) as AuthenticatorTransportFuture[],
170
+ transports: (credential.transports || []) as AuthenticatorTransport[],
171
171
  },
172
172
  requireUserVerification: false,
173
173
  });