├── .gitignore
├── .npmignore
├── jest.config.js
├── samples
├── tsconfig.json
├── package.json
├── index.tsx
└── yarn.lock
├── tsconfig.json
├── .github
├── ISSUE_TEMPLATE
│ ├── feature_request.md
│ └── bug_report.md
└── workflows
│ ├── release.yml
│ ├── pull_request.yml
│ └── merge.yml
├── package.json
├── LICENSE
├── README.md
├── index.ts
└── tests
└── index.spec.ts
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | coverage
4 | .vscode
5 | codecov
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | coverage
2 | node_modules
3 | samples
4 | tests
5 | *.ts
6 | !*.d.ts
7 | jest.config.js
8 | tsconfig.json
9 | yarn.lock
--------------------------------------------------------------------------------
/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | preset: 'ts-jest',
3 | testEnvironment: 'node',
4 | collectCoverage: true,
5 | coverageDirectory: './coverage/',
6 | };
--------------------------------------------------------------------------------
/samples/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "jsx": "react",
4 | "target": "es5",
5 | "module": "commonjs",
6 | "esModuleInterop": true,
7 | "forceConsistentCasingInFileNames": true,
8 | "strict": true,
9 | "skipLibCheck": true
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/samples/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "samples",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "dependencies": {
7 | "formik": "^2.2.9",
8 | "react": "^17.0.2",
9 | "react-dom": "^17.0.2",
10 | "zod": "~3.7.2",
11 | "zod-formik-adapter": "^1.0.1"
12 | },
13 | "devDependencies": {
14 | "@types/react-dom": "^17.0.11",
15 | "typescript": "^4.4.4"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "module": "commonjs",
5 | "strict": true,
6 | "esModuleInterop": true,
7 | "skipLibCheck": true,
8 | "forceConsistentCasingInFileNames": true,
9 | "baseUrl": ".",
10 | "declaration": true,
11 | "outDir": "./dist",
12 | "lib": ["ES2019"],
13 | "skipDefaultLibCheck": true,
14 | "moduleResolution": "node"
15 | },
16 | "include": ["./"],
17 | "exclude": [
18 | "node_modules",
19 | "samples",
20 | "tests",
21 | "dist",
22 | "coverage",
23 | "**/*.spec.ts",
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 | on: workflow_dispatch
3 |
4 | jobs:
5 | release:
6 | name: Release
7 | runs-on: ubuntu-latest
8 | steps:
9 | - name: Checkout
10 | uses: actions/checkout@v3
11 | with:
12 | fetch-depth: 0
13 | - name: Setup Node.js
14 | uses: actions/setup-node@v3
15 | with:
16 | node-version: 24
17 | - name: Install dependencies
18 | run: yarn install --frozen-lockfile
19 |
20 | - name: Build distributable
21 | run: yarn build
22 | - name: Release
23 | env:
24 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
26 | run: npx semantic-release
27 |
--------------------------------------------------------------------------------
/samples/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Formik } from 'formik';
3 | import { z } from 'zod';
4 | import { toFormikValidationSchema } from 'zod-formik-adapter';
5 |
6 | const Schema = z.object({
7 | name: z.string(),
8 | age: z.number(),
9 | });
10 |
11 | const initialValues = {
12 | name: "",
13 | age: 1,
14 | }
15 |
16 | export const SampleForm = () => (
17 |
22 | {({ errors, values, handleChange }) => (
23 |
30 | )}
31 |
32 | );
33 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "zod-formik-adapter",
3 | "version": "1.1.0",
4 | "description": "An adapter of zod object validation to Formik validation schema",
5 | "main": "./dist/index.js",
6 | "author": "Matheus Robert Lichtnow ",
7 | "license": "MIT",
8 | "repository": {
9 | "type": "git",
10 | "url": "https://github.com/robertLichtnow/zod-formik-adapter"
11 | },
12 | "scripts": {
13 | "build": "tsc",
14 | "test": "jest --coverage",
15 | "test:ci": "jest --ci --coverage",
16 | "build:clean": "rm -rf dist && yarn build"
17 | },
18 | "devDependencies": {
19 | "@types/jest": "^30.0.0",
20 | "formik": "~2.2.9",
21 | "jest": "^30.1.3",
22 | "react": "~17.0.2",
23 | "semantic-release": "^17.4.5",
24 | "ts-jest": "^29.4.1",
25 | "typescript": "^5.9.2",
26 | "zod": "^4.0.14"
27 | },
28 | "peerDependencies": {
29 | "formik": "^2.2.9",
30 | "zod": "4.x"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: "[BUG]"
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | **Describe the bug**
11 | A clear and concise description of what the bug is.
12 |
13 | **To Reproduce**
14 | Steps to reproduce the behavior:
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 | - OS: [e.g. iOS]
28 | - Browser [e.g. chrome, safari]
29 | - Version [e.g. 22]
30 |
31 | **Node version:**
32 |
33 | **Zod, Formik and zod-formik-adapter versions:**
34 | - Zod:
35 | - Formik:
36 | - zod-formik-adapter:
37 |
38 | **Additional context**
39 | Add any other context about the problem here.
40 |
--------------------------------------------------------------------------------
/.github/workflows/pull_request.yml:
--------------------------------------------------------------------------------
1 | name: Pull Request
2 | on:
3 | pull_request:
4 | jobs:
5 | test:
6 | name: Test
7 | runs-on: ubuntu-latest
8 | steps:
9 | - name: Checkout
10 | uses: actions/checkout@v3
11 | with:
12 | fetch-depth: 0
13 | - name: Setup Node.js
14 | uses: actions/setup-node@v3
15 | with:
16 | node-version: 24
17 | - name: Install dependencies
18 | run: yarn install --frozen-lockfile
19 | - name: Test
20 | run: yarn test:ci
21 |
22 |
23 | build:
24 | name: Build
25 | runs-on: ubuntu-latest
26 | steps:
27 | - name: Checkout
28 | uses: actions/checkout@v3
29 | with:
30 | fetch-depth: 0
31 | - name: Setup Node.js
32 | uses: actions/setup-node@v3
33 | with:
34 | node-version: 24
35 | - name: Install dependencies
36 | run: yarn install --frozen-lockfile
37 | - name: Build
38 | run: yarn build
39 |
40 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 zod-formik-adapter
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/.github/workflows/merge.yml:
--------------------------------------------------------------------------------
1 | name: Merge
2 | on:
3 | push:
4 | branches:
5 | - master
6 | jobs:
7 | test:
8 | name: Code Coverage
9 | runs-on: ubuntu-latest
10 | steps:
11 | - name: Checkout
12 | uses: actions/checkout@v3
13 | with:
14 | fetch-depth: 0
15 | - name: Setup Node.js
16 | uses: actions/setup-node@v3
17 | with:
18 | node-version: 24
19 | - name: Install dependencies
20 | run: yarn install --frozen-lockfile
21 | - name: Test
22 | run: yarn test:ci
23 | - name: Download codecov
24 | run: curl -Os https://uploader.codecov.io/latest/linux/codecov && chmod +x codecov
25 | - name: Run codecov
26 | run: ./codecov
27 |
28 | build:
29 | name: Build
30 | runs-on: ubuntu-latest
31 | steps:
32 | - name: Checkout
33 | uses: actions/checkout@v3
34 | with:
35 | fetch-depth: 0
36 | - name: Setup Node.js
37 | uses: actions/setup-node@v3
38 | with:
39 | node-version: 24
40 | - name: Install dependencies
41 | run: yarn install --frozen-lockfile
42 | - name: Build
43 | run: yarn build
44 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # zod-formik-adapter
2 |
3 | [](https://codecov.io/gh/robertLichtnow/zod-formik-adapter)
4 |
5 | This library adapts a [zod](https://www.npmjs.com/package/zod) schema to work as a `validationSchema` prop or `validate` prop on [Formik](https://www.npmjs.com/package/formik)
6 |
7 | ## Install
8 |
9 | ```sh
10 | # npm
11 | $ npm install zod-formik-adapter
12 |
13 | # yarn
14 | $ yarn add zod-formik-adapter
15 | ```
16 |
17 | ## Usage
18 |
19 | ```TSX
20 | import { z } from 'zod';
21 | import { Formik } from 'formik';
22 | import { toFormikValidationSchema } from 'zod-formik-adapter';
23 |
24 | const Schema = z.object({
25 | name: z.string(),
26 | age: z.number(),
27 | });
28 |
29 | const Component = () => (
30 |
33 | {...}
34 |
35 | );
36 | ```
37 |
38 | ```TSX
39 | import { z } from 'zod';
40 | import { Formik } from 'formik';
41 | import { toFormikValidate } from 'zod-formik-adapter';
42 |
43 | const Schema = z.object({
44 | name: z.string(),
45 | age: z.number(),
46 | });
47 |
48 | const Component = () => (
49 |
52 | {...}
53 |
54 | );
55 | ```
56 |
--------------------------------------------------------------------------------
/index.ts:
--------------------------------------------------------------------------------
1 | import { core, z } from "zod/v4";
2 |
3 | export class ValidationError extends Error {
4 | public name = "ValidationError";
5 |
6 | public inner: Array<{ path: string; message: string }> = [];
7 |
8 | public constructor(message: string) {
9 | super(message);
10 | }
11 | }
12 |
13 | function createValidationError(e: z.ZodError) {
14 | const error = new ValidationError(e.message);
15 | error.inner = e.issues.map((err) => ({
16 | message: err.message,
17 | path: err.path.join("."),
18 | }));
19 |
20 | return error;
21 | }
22 |
23 | /**
24 | * Wrap your zod schema in this function when providing it to Formik's validation schema prop
25 | * @param schema The zod schema
26 | * @returns An object containing the `validate` method expected by Formik
27 | */
28 | export function toFormikValidationSchema(
29 | schema: z.ZodSchema,
30 | params?: Partial>
31 | ): { validate: (obj: T) => Promise } {
32 | return {
33 | async validate(obj: T) {
34 | try {
35 | await schema.parseAsync(obj, params);
36 | } catch (err: unknown) {
37 | throw createValidationError(err as z.ZodError);
38 | }
39 | },
40 | };
41 | }
42 |
43 | function createValidationResult(error: z.ZodError) {
44 | const result: Record = {};
45 |
46 | for (const x of error.issues) {
47 | result[x.path.filter(Boolean).join(".")] = x.message;
48 | }
49 |
50 | return result;
51 | }
52 |
53 | /**
54 | * Wrap your zod schema in this function when providing it to Formik's validate prop
55 | * @param schema The zod schema
56 | * @returns An validate function as expected by Formik
57 | */
58 | export function toFormikValidate(
59 | schema: z.ZodSchema,
60 | params?: Partial>
61 | ) {
62 | return async (values: T) => {
63 | const result = await schema.safeParseAsync(values, params);
64 | if (!result.success) {
65 | return createValidationResult(result.error);
66 | }
67 | };
68 | }
69 |
--------------------------------------------------------------------------------
/tests/index.spec.ts:
--------------------------------------------------------------------------------
1 | import { z } from "zod/v4";
2 | import { toFormikValidationSchema, toFormikValidate } from "../index";
3 |
4 | describe("toFormikValidationSchema", () => {
5 | it("should pass validate without errors", async () => {
6 | // given
7 | const object = { name: "mock", age: 32 };
8 | const { schema } = makeSut();
9 | const { validate } = toFormikValidationSchema(schema);
10 |
11 | // when
12 | const errors = await validate(object);
13 |
14 | // then
15 | expect(errors).toEqual(undefined);
16 | });
17 |
18 | it("should fail validate with error object", async () => {
19 | // given
20 | const object = { name: undefined, age: "32" } as any;
21 | const { schema } = makeSut();
22 | const { validate } = toFormikValidationSchema(schema);
23 |
24 | const error = {} as any;
25 | error.inner = [
26 | {
27 | path: "name",
28 | message: "Invalid input: expected string, received undefined",
29 | },
30 | {
31 | path: "age",
32 | message: "Invalid input: expected number, received string",
33 | },
34 | ];
35 |
36 | // when
37 | await expect(validate(object)).rejects.toMatchObject(error);
38 | });
39 | });
40 |
41 | describe("toFormikValidate", () => {
42 | it("should pass validate without errors", async () => {
43 | // given
44 | const object = { name: "mock", age: 32 };
45 | const { schema } = makeSut();
46 | const validate = toFormikValidate(schema);
47 |
48 | // when
49 | const errors = await validate(object);
50 |
51 | // then
52 | expect(errors).toEqual(undefined);
53 | });
54 |
55 | it("should fail validate with error object", async () => {
56 | // given
57 | const object = { name: undefined, age: "32" } as any;
58 | const { schema } = makeSut();
59 | const validate = toFormikValidate(schema);
60 |
61 | const error = {
62 | name: "Invalid input: expected string, received undefined",
63 | age: "Invalid input: expected number, received string",
64 | };
65 |
66 | // when
67 | const errors = await validate(object);
68 |
69 | // then
70 | expect(errors).toMatchObject(error);
71 | });
72 | });
73 |
74 | function makeSut() {
75 | const schema = z.object({
76 | name: z.string(), // obrigatory name
77 | age: z.number().optional(), // optional age
78 | });
79 |
80 | return {
81 | schema,
82 | };
83 | }
84 |
--------------------------------------------------------------------------------
/samples/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@types/prop-types@*":
6 | version "15.7.4"
7 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11"
8 | integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
9 |
10 | "@types/react-dom@^17.0.11":
11 | version "17.0.11"
12 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466"
13 | integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==
14 | dependencies:
15 | "@types/react" "*"
16 |
17 | "@types/react@*":
18 | version "17.0.34"
19 | resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.34.tgz#797b66d359b692e3f19991b6b07e4b0c706c0102"
20 | integrity sha512-46FEGrMjc2+8XhHXILr+3+/sTe3OfzSPU9YGKILLrUYbQ1CLQC9Daqo1KzENGXAWwrFwiY0l4ZbF20gRvgpWTg==
21 | dependencies:
22 | "@types/prop-types" "*"
23 | "@types/scheduler" "*"
24 | csstype "^3.0.2"
25 |
26 | "@types/scheduler@*":
27 | version "0.16.2"
28 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
29 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
30 |
31 | csstype@^3.0.2:
32 | version "3.0.9"
33 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b"
34 | integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==
35 |
36 | deepmerge@^2.1.1:
37 | version "2.2.1"
38 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
39 | integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
40 |
41 | formik@^2.2.9:
42 | version "2.2.9"
43 | resolved "https://registry.yarnpkg.com/formik/-/formik-2.2.9.tgz#8594ba9c5e2e5cf1f42c5704128e119fc46232d0"
44 | integrity sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==
45 | dependencies:
46 | deepmerge "^2.1.1"
47 | hoist-non-react-statics "^3.3.0"
48 | lodash "^4.17.21"
49 | lodash-es "^4.17.21"
50 | react-fast-compare "^2.0.1"
51 | tiny-warning "^1.0.2"
52 | tslib "^1.10.0"
53 |
54 | hoist-non-react-statics@^3.3.0:
55 | version "3.3.2"
56 | resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
57 | integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
58 | dependencies:
59 | react-is "^16.7.0"
60 |
61 | "js-tokens@^3.0.0 || ^4.0.0":
62 | version "4.0.0"
63 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
64 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
65 |
66 | lodash-es@^4.17.21:
67 | version "4.17.21"
68 | resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
69 | integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
70 |
71 | lodash@^4.17.21:
72 | version "4.17.21"
73 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
74 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
75 |
76 | loose-envify@^1.1.0:
77 | version "1.4.0"
78 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
79 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
80 | dependencies:
81 | js-tokens "^3.0.0 || ^4.0.0"
82 |
83 | object-assign@^4.1.1:
84 | version "4.1.1"
85 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
86 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
87 |
88 | react-dom@^17.0.2:
89 | version "17.0.2"
90 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
91 | integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
92 | dependencies:
93 | loose-envify "^1.1.0"
94 | object-assign "^4.1.1"
95 | scheduler "^0.20.2"
96 |
97 | react-fast-compare@^2.0.1:
98 | version "2.0.4"
99 | resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
100 | integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
101 |
102 | react-is@^16.7.0:
103 | version "16.13.1"
104 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
105 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
106 |
107 | react@^17.0.2:
108 | version "17.0.2"
109 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
110 | integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
111 | dependencies:
112 | loose-envify "^1.1.0"
113 | object-assign "^4.1.1"
114 |
115 | scheduler@^0.20.2:
116 | version "0.20.2"
117 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
118 | integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
119 | dependencies:
120 | loose-envify "^1.1.0"
121 | object-assign "^4.1.1"
122 |
123 | tiny-warning@^1.0.2:
124 | version "1.0.3"
125 | resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
126 | integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
127 |
128 | tslib@^1.10.0:
129 | version "1.14.1"
130 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
131 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
132 |
133 | typescript@^4.4.4:
134 | version "4.4.4"
135 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.4.tgz#2cd01a1a1f160704d3101fd5a58ff0f9fcb8030c"
136 | integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==
137 |
138 | zod-formik-adapter@~1.0.1:
139 | version "1.0.1"
140 | resolved "https://registry.yarnpkg.com/zod-formik-adapter/-/zod-formik-adapter-1.0.1.tgz#6b12fe20ae17cd005aec73dc10de3381a347a92a"
141 | integrity sha512-TzX7/kpibeb6BCh0wLIM/tCX4nKbWJCfJRr6AmhP0CZEjFY8hBfVX6Y6Ir6UTkhNcCjj8cy28jQlrLmEwDefjw==
142 |
143 | zod@~3.7.2:
144 | version "3.7.3"
145 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.7.3.tgz#83363e528de4538429f0b5828a5a0ad6198b70e1"
146 | integrity sha512-g2vA55KUfAkQPNPg0Ikj1Qy9THLUBHlnh2ZRXJc0eUaue81Sm0J4w1daRcuzdgapxn+J71kbxg0lBqMJJZSK5g==
147 |
--------------------------------------------------------------------------------