From 4dcd24f1fd5649d3103940f6a19ce715b45d9148 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 13 Jul 2025 00:58:35 +0200 Subject: [PATCH] fix(deps): update dependency zod to v4 (#6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [zod](https://zod.dev) ([source](https://github.com/colinhacks/zod)) | [`^3.24.3` -> `^4.0.0`](https://renovatebot.com/diffs/npm/zod/3.25.76/4.0.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/zod/4.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/zod/3.25.76/4.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
colinhacks/zod (zod) ### [`v4.0.5`](https://github.com/colinhacks/zod/releases/tag/v4.0.5) [Compare Source](https://github.com/colinhacks/zod/compare/v4.0.4...v4.0.5) #### Commits: - [`f91a73e`](https://github.com/colinhacks/zod/commit/f91a73ec23f9ec28d908af2caa643a54088516c5) Support pipes in discriminated unions. Closes [#​4856](https://github.com/colinhacks/zod/issues/4856) ([#​4861](https://github.com/colinhacks/zod/issues/4861)) - [`45afab0`](https://github.com/colinhacks/zod/commit/45afab0f846dffd591362b6f770017507eb185b5) 4.0.5 ### [`v4.0.4`](https://github.com/colinhacks/zod/releases/tag/v4.0.4) [Compare Source](https://github.com/colinhacks/zod/compare/v4.0.3...v4.0.4) #### Commits: - [`9335f05`](https://github.com/colinhacks/zod/commit/9335f0543d6359f9236e3e33b78cc5b2788dbe0f) Adds `ZodFirstPartyTypeKind` stub to fix module resolution failure inside `zod-to-json-schema` ### [`v4.0.3`](https://github.com/colinhacks/zod/releases/tag/v4.0.3) [Compare Source](https://github.com/colinhacks/zod/compare/44a936cb77961e57a0988d8a3c63d9c71fce69ac...v4.0.3) #### Commits: - [`5905a8d`](https://github.com/colinhacks/zod/commit/5905a8d810eff6f4677e6aa9e557f92a676805cf) Improve check-versions script - [`f3e749b`](https://github.com/colinhacks/zod/commit/f3e749b1b057a2cf0a0bce7e07abec4e0520e0f8) Remove global File interface - [`44a936c`](https://github.com/colinhacks/zod/commit/44a936cb77961e57a0988d8a3c63d9c71fce69ac) 4.0.2 - [`74006ed`](https://github.com/colinhacks/zod/commit/74006edd49e3fe8d74010090462859593c2bd1e2) Fix JSR provenance - [`ff4af5e`](https://github.com/colinhacks/zod/commit/ff4af5e889d4ad7136a9cde7202b16261db5c83c) 4.0.3 - [`ce573e8`](https://github.com/colinhacks/zod/commit/ce573e8799f86e2f68307eba95c2d40fc92617b7) Update test badge - [`9a7161a`](https://github.com/colinhacks/zod/commit/9a7161a976d6349f738c00cb6d6528c0407a65e8) Fix versions ### [`v4.0.2`](https://github.com/colinhacks/zod/compare/v4.0.1...44a936cb77961e57a0988d8a3c63d9c71fce69ac) [Compare Source](https://github.com/colinhacks/zod/compare/v4.0.1...44a936cb77961e57a0988d8a3c63d9c71fce69ac) ### [`v4.0.1`](https://github.com/colinhacks/zod/releases/tag/v4.0.1): v4.0.0 [Compare Source](https://github.com/colinhacks/zod/compare/79d4d80e3b47f04752c5c281077b53f889551441...v4.0.1) With this release, `zod@4.0.0` has been published to `npm`. There were no code changes between 3.25.76 and 4.0.0! Zod 4 has been stable for the past 6 weeks, but it was published inside zod@3.25.x on npm. this transitionary window gave the ecosystem time to incrementally support for Zod 4 (without dropping support for Zod 3). As there is now near-universal support for Zod 4 in the ecosystem, ths time feels right to finally put a bow on things 🎀 To upgrade to Zod 4: ``` npm upgrade zod@^4.0.0 ``` If you’ve already migrated to Zod 4 using the subpaths, there are no changes required. however you can optionally simplify your imports (recommended) ```ts // after upgrading to zod@4.0.0: import * as z from "zod"; // Zod 4 (regular) import * as z from "zod/mini" // Zod 4 Mini // these still work, but are no longer needed import * as z from "zod/v4"; import * as z from "zod/v4-mini": // if you still need Zod 3 import * as z from "zod/v3"; // Zod 3 ``` **Library authors** — if you've already implemented Zod 4 support according to the best practices outlined in the [Library authors](/library-authors) guide, bump your peer dependency to include `zod@^4.0.0`: ```json // package.json { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } } ``` *There should be no other code changes necessary.* No code changes were made between the latest `3.25.x` release and `4.0.0`. This does not require a major version bump. ### [`v4.0.0`](https://github.com/colinhacks/zod/compare/v3.25.76...79d4d80e3b47f04752c5c281077b53f889551441) [Compare Source](https://github.com/colinhacks/zod/compare/v3.25.76...79d4d80e3b47f04752c5c281077b53f889551441)
--- ### Configuration 📅 **Schedule**: Branch creation - "every weekend" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). Co-authored-by: Felix Schulze Reviewed-on: https://git.schulze.network/schulze/fire/pulls/6 Co-authored-by: Renovate Bot Co-committed-by: Renovate Bot --- package-lock.json | 8 +- package.json | 2 +- src/app/components/FireCalculatorForm.tsx | 111 ++++++++++++++++------ 3 files changed, 86 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9aa792c..3a99857 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "react-hook-form": "^7.56.1", "recharts": "^2.15.3", "tailwind-merge": "^3.2.0", - "zod": "^3.24.3" + "zod": "^4.0.0" }, "devDependencies": { "@eslint/eslintrc": "3.3.1", @@ -7637,9 +7637,9 @@ } }, "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.0.5.tgz", + "integrity": "sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index 5e942e6..728cadd 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "react-hook-form": "^7.56.1", "recharts": "^2.15.3", "tailwind-merge": "^3.2.0", - "zod": "^3.24.3" + "zod": "^4.0.0" }, "devDependencies": { "@eslint/eslintrc": "3.3.1", diff --git a/src/app/components/FireCalculatorForm.tsx b/src/app/components/FireCalculatorForm.tsx index 26f9818..ec79a03 100644 --- a/src/app/components/FireCalculatorForm.tsx +++ b/src/app/components/FireCalculatorForm.tsx @@ -120,7 +120,7 @@ export default function FireCalculatorForm() { const [showing4percent, setShowing4percent] = useState(false); // Initialize form with default values - const form = useForm({ + const form = useForm, undefined, FormValues>({ resolver: zodResolver(formSchema), defaultValues: { startingCapital: 50000, @@ -258,11 +258,18 @@ export default function FireCalculatorForm() { { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -279,11 +286,18 @@ export default function FireCalculatorForm() { { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -300,11 +314,18 @@ export default function FireCalculatorForm() { { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -321,11 +342,18 @@ export default function FireCalculatorForm() { { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -343,11 +371,18 @@ export default function FireCalculatorForm() { placeholder="e.g., 7" type="number" step="0.1" - {...field} - onChange={(value) => { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -365,11 +400,18 @@ export default function FireCalculatorForm() { placeholder="e.g., 2" type="number" step="0.1" - {...field} - onChange={(value) => { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -388,11 +430,18 @@ export default function FireCalculatorForm() { { - field.onChange(value); + value={field.value as number | string | undefined} + onChange={(e) => { + field.onChange( + e.target.value === "" + ? undefined + : Number(e.target.value), + ); void form.handleSubmit(onSubmit)(); }} + onBlur={field.onBlur} + name={field.name} + ref={field.ref} /> @@ -406,11 +455,13 @@ export default function FireCalculatorForm() { name="retirementAge" render={({ field }) => ( - Retirement Age: {field.value} + + Retirement Age: {field.value as number} +

- {form.getValues("lifeExpectancy") - - form.getValues("retirementAge")} + {Number(form.getValues("lifeExpectancy")) - + Number(form.getValues("retirementAge"))}

@@ -674,7 +725,7 @@ export default function FireCalculatorForm() {

- {form.getValues("lifeExpectancy") - + {Number(form.getValues("lifeExpectancy")) - (result.retirementAge4percent ?? 0)}