@hilbras/keystone 1.2.0 → 1.3.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 +18 -0
- package/README.md +4 -0
- package/package.json +7 -7
- package/src/routes/admin/sso.ts +2 -2
- package/src/routes/auth.ts +1 -1
- package/src/routes/config.ts +1 -1
- package/src/routes/profile.ts +1 -1
- package/src/routes/setup.ts +1 -1
- package/src/routes/webauthn.ts +2 -2
- package/src/routes/workflows.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -66,6 +66,24 @@ Dependency updates — safe patches and minor versions.
|
|
|
66
66
|
- **lucide-react** 1.24.0 → latest 1.x (frontend)
|
|
67
67
|
- **@playwright/test** 1.61.1 → latest 1.x (frontend)
|
|
68
68
|
|
|
69
|
+
## [1.3.0] - 2026-09-20
|
|
70
|
+
|
|
71
|
+
Core tooling upgrades — TypeScript 7, Zod 4, Drizzle latest, Commander 15, Dotenv 18.
|
|
72
|
+
|
|
73
|
+
### Changed
|
|
74
|
+
|
|
75
|
+
- **TypeScript** 5.9.3 → 7.0.2 — new major version with stricter type checking.
|
|
76
|
+
- **Zod** 3.25.76 → 4.6.5 — API redesign: `z.record()` now requires explicit key type. Updated 7 call sites across 6 route files.
|
|
77
|
+
- **Drizzle ORM** 0.31.4 → 0.45.2
|
|
78
|
+
- **Drizzle Kit** 0.22.8 → 0.31.10
|
|
79
|
+
- **Commander** 12.1.0 → 15.0.0
|
|
80
|
+
- **Dotenv** 16.6.1 → 18.0.1
|
|
81
|
+
|
|
82
|
+
### Fixed
|
|
83
|
+
|
|
84
|
+
- **Zod 4 migration** — Updated all `z.record()` calls to include explicit `z.string()` key type parameter (sso.ts, auth.ts, config.ts, profile.ts, setup.ts, webauthn.ts, workflows.ts).
|
|
85
|
+
|
|
86
|
+
[1.3.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.3.0
|
|
69
87
|
[1.2.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.2.0
|
|
70
88
|
[1.1.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.1.0
|
|
71
89
|
[1.0.0]: https://github.com/Hilbras/Keystone/releases/tag/v1.0.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.3.0
|
|
24
|
+
|
|
25
|
+
- **Core tooling upgrades** — TypeScript 7, Zod 4, Drizzle ORM 0.45, Commander 15, Dotenv 18. Updated all `z.record()` calls for Zod 4 compatibility.
|
|
26
|
+
|
|
23
27
|
## What's new in v1.2.0
|
|
24
28
|
|
|
25
29
|
- **Dependency updates** — All root and frontend packages updated to latest safe patch/minor versions (fastify, argon2, otpauth, OpenTelemetry, autoprefixer, postcss, lucide-react, Playwright).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hilbras/keystone",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"@simplewebauthn/server": "^13.3.2",
|
|
45
45
|
"argon2": "^0.45.1",
|
|
46
46
|
"bullmq": "^5.80.2",
|
|
47
|
-
"commander": "^
|
|
48
|
-
"dotenv": "^
|
|
49
|
-
"drizzle-orm": "^0.
|
|
47
|
+
"commander": "^15.0.0",
|
|
48
|
+
"dotenv": "^18.0.1",
|
|
49
|
+
"drizzle-orm": "^0.45.2",
|
|
50
50
|
"fastify": "^5.12.5",
|
|
51
51
|
"fastify-plugin": "^5.0.0",
|
|
52
52
|
"ioredis": "^5.4.0",
|
|
@@ -56,14 +56,14 @@
|
|
|
56
56
|
"postgres": "^3.4.4",
|
|
57
57
|
"prom-client": "^15.1.3",
|
|
58
58
|
"samlify": "^2.13.1",
|
|
59
|
-
"zod": "^
|
|
59
|
+
"zod": "^4.6.5"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@types/node": "^20.14.0",
|
|
63
63
|
"@types/nodemailer": "^8.0.1",
|
|
64
|
-
"drizzle-kit": "^0.
|
|
64
|
+
"drizzle-kit": "^0.31.10",
|
|
65
65
|
"light-my-request": "^6.0.0",
|
|
66
66
|
"tsx": "^4.15.0",
|
|
67
|
-
"typescript": "^
|
|
67
|
+
"typescript": "^7.0.2"
|
|
68
68
|
}
|
|
69
69
|
}
|
package/src/routes/admin/sso.ts
CHANGED
|
@@ -11,7 +11,7 @@ const SamlConnectionSchema = z.object({
|
|
|
11
11
|
idpCertificate: z.string().optional(),
|
|
12
12
|
spEntityId: z.string().min(1),
|
|
13
13
|
spAcsUrl: z.string().url(),
|
|
14
|
-
attributeMapping: z.record(z.array(z.string())).optional(),
|
|
14
|
+
attributeMapping: z.record(z.string(), z.array(z.string())).optional(),
|
|
15
15
|
isActive: z.boolean().optional(),
|
|
16
16
|
});
|
|
17
17
|
|
|
@@ -25,7 +25,7 @@ const OidcConnectionSchema = z.object({
|
|
|
25
25
|
clientId: z.string().min(1),
|
|
26
26
|
clientSecret: z.string().min(1),
|
|
27
27
|
scopes: z.array(z.string()).optional(),
|
|
28
|
-
attributeMapping: z.record(z.array(z.string())).optional(),
|
|
28
|
+
attributeMapping: z.record(z.string(), z.array(z.string())).optional(),
|
|
29
29
|
isActive: z.boolean().optional(),
|
|
30
30
|
});
|
|
31
31
|
|
package/src/routes/auth.ts
CHANGED
|
@@ -41,7 +41,7 @@ const RegisterSchema = z.object({
|
|
|
41
41
|
password: z.string().min(8).max(128),
|
|
42
42
|
name: z.string().max(255).optional(),
|
|
43
43
|
client_id: z.string().optional(),
|
|
44
|
-
metadata: z.record(z.unknown()).optional(),
|
|
44
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
45
45
|
});
|
|
46
46
|
|
|
47
47
|
const LoginSchema = z.object({
|
package/src/routes/config.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { createConfigWriter } from "../services/setup/configWriter.js";
|
|
|
4
4
|
import { queue } from "../services/queue/index.js";
|
|
5
5
|
|
|
6
6
|
const UpdateConfigSchema = z.object({
|
|
7
|
-
values: z.record(z.string()),
|
|
7
|
+
values: z.record(z.string(), z.string()),
|
|
8
8
|
});
|
|
9
9
|
|
|
10
10
|
async function requireOwner(request: FastifyRequest, reply: FastifyReply) {
|
package/src/routes/profile.ts
CHANGED
|
@@ -6,7 +6,7 @@ const UpdateProfileSchema = z.object({
|
|
|
6
6
|
name: z.string().max(255).optional(),
|
|
7
7
|
avatarUrl: z.string().url().max(2048).nullable().optional(),
|
|
8
8
|
phoneNumber: z.string().max(32).nullable().optional(),
|
|
9
|
-
metadata: z.record(z.unknown()).optional(),
|
|
9
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
10
10
|
});
|
|
11
11
|
|
|
12
12
|
export default async function profileRoutes(app: FastifyInstance) {
|
package/src/routes/setup.ts
CHANGED
|
@@ -57,7 +57,7 @@ const ValidateSmsSchema = z.object({
|
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
const SetupConfigSchema = z.object({
|
|
60
|
-
env: z.record(z.string()),
|
|
60
|
+
env: z.record(z.string(), z.string()),
|
|
61
61
|
});
|
|
62
62
|
|
|
63
63
|
function parseBody<T>(schema: z.ZodSchema<T>, body: unknown, reply: FastifyReply): T | null {
|
package/src/routes/webauthn.ts
CHANGED
|
@@ -37,7 +37,7 @@ function clearChallengeCookie(reply: FastifyReply): void {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
const RegisterVerifySchema = z.object({
|
|
40
|
-
response: z.record(z.unknown()),
|
|
40
|
+
response: z.record(z.string(), z.unknown()),
|
|
41
41
|
deviceName: z.string().max(100).optional(),
|
|
42
42
|
});
|
|
43
43
|
|
|
@@ -46,7 +46,7 @@ const AuthenticateOptionsSchema = z.object({
|
|
|
46
46
|
});
|
|
47
47
|
|
|
48
48
|
const AuthenticateVerifySchema = z.object({
|
|
49
|
-
response: z.record(z.unknown()),
|
|
49
|
+
response: z.record(z.string(), z.unknown()),
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
export default async function webauthnRoutes(app: FastifyInstance) {
|
package/src/routes/workflows.ts
CHANGED
|
@@ -15,7 +15,7 @@ const CreateWorkflowSchema = z.object({
|
|
|
15
15
|
name: z.string().min(1).max(255),
|
|
16
16
|
trigger: z.enum(["user_registered", "user_login", "organization_created"]),
|
|
17
17
|
definition: z.object({
|
|
18
|
-
steps: z.array(WorkflowStepSchema.and(z.record(z.unknown()))),
|
|
18
|
+
steps: z.array(WorkflowStepSchema.and(z.record(z.string(), z.unknown()))),
|
|
19
19
|
}),
|
|
20
20
|
isActive: z.boolean().optional(),
|
|
21
21
|
});
|