@hilbras/keystone 1.4.0 → 1.6.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,57 @@ 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.6.0] - 2026-09-20
|
|
116
|
+
|
|
117
|
+
Frontend upgrades — React 19, Vite 8, Tailwind 4, TypeScript 7.
|
|
118
|
+
|
|
119
|
+
### Changed
|
|
120
|
+
|
|
121
|
+
- **React** 18.3.1 → 19.3.0
|
|
122
|
+
- **React DOM** 18.3.1 → 19.3.0
|
|
123
|
+
- **Vite** 5.4.21 → 8.3.0
|
|
124
|
+
- **@vitejs/plugin-react** 4.7.0 → 6.1.1
|
|
125
|
+
- **Tailwind CSS** 3.4.19 → 4.3.3 — complete rewrite: config moved from JS to CSS `@theme` directive, PostCSS plugin replaced with `@tailwindcss/vite`.
|
|
126
|
+
- **@simplewebauthn/browser** 13.3.0 → 14.0.0
|
|
127
|
+
- **TypeScript** 5.9.3 → 7.0.2 (frontend)
|
|
128
|
+
- **@types/react** 18.3.31 → 19.0.0
|
|
129
|
+
- **@types/react-dom** 18.3.7 → 19.0.0
|
|
130
|
+
|
|
131
|
+
### Removed
|
|
132
|
+
|
|
133
|
+
- **autoprefixer** — not needed with Tailwind 4.
|
|
134
|
+
- **postcss** — not needed with Tailwind 4.
|
|
135
|
+
- **tailwindcss-animate** — animations built into Tailwind 4.
|
|
136
|
+
|
|
137
|
+
### Added
|
|
138
|
+
|
|
139
|
+
- **@tailwindcss/vite** — replaces PostCSS plugin approach.
|
|
140
|
+
|
|
141
|
+
### Migration notes
|
|
142
|
+
|
|
143
|
+
- `tailwind.config.js` deleted — config now lives in `src/tailwind.css` using `@theme` directive.
|
|
144
|
+
- `postcss.config.js` deleted — Tailwind 4 uses Vite plugin directly.
|
|
145
|
+
- `src/index.css` updated to use `@import "./tailwind.css"` instead of `@tailwind base/components/utilities`.
|
|
146
|
+
|
|
147
|
+
[1.6.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.6.0
|
|
148
|
+
[1.5.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.5.0
|
|
98
149
|
[1.4.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.4.0
|
|
99
150
|
[1.3.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.3.0
|
|
100
151
|
[1.2.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.2.0
|
package/README.md
CHANGED
|
@@ -20,6 +20,14 @@ Keystone is a **standalone identity platform**, not a wrapper around another ide
|
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
23
|
+
## What's new in v1.6.0
|
|
24
|
+
|
|
25
|
+
- **Frontend overhaul** — React 19, Vite 8, Tailwind 4 (config migrated from JS to CSS `@theme` directive), TypeScript 7. Removed autoprefixer, postcss, tailwindcss-animate in favor of Tailwind 4 built-in features.
|
|
26
|
+
|
|
27
|
+
## What's new in v1.5.0
|
|
28
|
+
|
|
29
|
+
- **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.
|
|
30
|
+
|
|
23
31
|
## What's new in v1.4.0
|
|
24
32
|
|
|
25
33
|
- **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.
|
|
3
|
+
"version": "1.6.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": "^
|
|
44
|
+
"@simplewebauthn/server": "^14.0.2",
|
|
45
45
|
"argon2": "^0.45.1",
|
|
46
|
-
"bullmq": "^
|
|
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": "^
|
|
53
|
-
"jose": "^
|
|
54
|
-
"nodemailer": "^
|
|
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
|
|
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
|
|
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";
|
package/src/services/tokens.ts
CHANGED
package/src/services/webauthn.ts
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
verifyAuthenticationResponse,
|
|
8
8
|
type RegistrationResponseJSON,
|
|
9
9
|
type AuthenticationResponseJSON,
|
|
10
|
-
type
|
|
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
|
|
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?:
|
|
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
|
|
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
|
|
170
|
+
transports: (credential.transports || []) as AuthenticatorTransport[],
|
|
171
171
|
},
|
|
172
172
|
requireUserVerification: false,
|
|
173
173
|
});
|