formik-validator-zod 2.0.0 → 2.1.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.
@@ -0,0 +1,34 @@
1
+ # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
2
+ # For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
3
+
4
+ name: Node.js Package
5
+
6
+ on:
7
+ release:
8
+ types: [created]
9
+
10
+ jobs:
11
+ build:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - uses: actions/setup-node@v4
16
+ with:
17
+ node-version: 20
18
+ - run: npm ci
19
+ - run: npm test
20
+
21
+ publish-npm:
22
+ needs: build
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ - uses: actions/setup-node@v4
27
+ with:
28
+ node-version: 20
29
+ registry-url: https://registry.npmjs.org/
30
+ - run: npm ci
31
+ - run: npm run build
32
+ - run: npm publish
33
+ env:
34
+ NODE_AUTH_TOKEN: ${{secrets.npm_token}}
@@ -0,0 +1,26 @@
1
+ name: Tests
2
+ on:
3
+ push:
4
+ branches: ['main']
5
+ pull_request:
6
+ branches: ['main']
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ matrix:
12
+ node-version: [18.x, 20.x, 22.x]
13
+ steps:
14
+ - name: Checkout repo
15
+ uses: actions/checkout@v4
16
+ - name: Use Node.js ${{ matrix.node-version }}
17
+ uses: actions/setup-node@v4
18
+ with:
19
+ node-version: ${{ matrix.node-version }}
20
+ cache: 'npm'
21
+ - name: Install dependencies
22
+ run: npm ci
23
+ - name: Check code style
24
+ run: npx prettier . --check
25
+ - name: Run tests
26
+ run: npm test
package/README.md CHANGED
@@ -3,20 +3,25 @@
3
3
  Allows you to easily validate [Formik](https://github.com/jaredpalmer/formik)
4
4
  forms with the power of [Zod](https://github.com/colinhacks/zod) schemas.
5
5
 
6
- WARNING: As of v2, this package uses native ESM and no longer provides a
7
- CommonJS export. If this is something you need, you should be able to use the
8
- [dynamic import](https://v8.dev/features/dynamic-import) function or use v1 of
9
- this package.
6
+ As of v2.0, this package uses ESM and no longer provides a CommonJS export. If
7
+ this is something you need, you should be able to use the
8
+ [dynamic import](https://v8.dev/features/dynamic-import) function.
10
9
 
11
10
  ## Installation
12
11
 
12
+ To install from NPM:
13
+
13
14
  ```sh
14
15
  npm install formik-validator-zod
15
16
 
17
+ pnpm add formik-validator-zod
18
+
16
19
  yarn add formik-validator-zod
20
+
21
+ bun add formik-validator-zod
17
22
  ```
18
23
 
19
- ## Example
24
+ ## Usage
20
25
 
21
26
  ```jsx
22
27
  import { Formik } from 'formik'
@@ -37,3 +42,12 @@ const MyForm = () => {
37
42
  )
38
43
  }
39
44
  ```
45
+
46
+ ## Is this library still maintained?
47
+
48
+ Yes! This library is used in a couple of production codebases that I'm aware of,
49
+ including my current employers.
50
+
51
+ I don't expect the library will need a lot of active maintenance going forwards.
52
+ This is due to its limited scope and the fact Formik itsely seems to be
53
+ abandoned.
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import merge from 'deepmerge';
1
2
  /**
2
3
  * Allows you to easily use Zod schemas with the <Formik /> component `validate`
3
4
  * prop.
@@ -11,7 +12,14 @@ export const withZodSchema = (schema, params) => (values) => {
11
12
  if (result.success)
12
13
  return {};
13
14
  return result.error.issues.reduce((acc, curr) => {
14
- const key = curr.path.join('.');
15
+ if (curr.path.length) {
16
+ return merge(acc, curr.path.reduceRight((errors, pathSegment) => ({
17
+ [pathSegment]: !Object.keys(errors).length
18
+ ? curr.message
19
+ : errors,
20
+ }), {}));
21
+ }
22
+ const key = curr.path[0];
15
23
  return Object.assign(Object.assign({}, acc), { [key]: curr.message });
16
24
  }, {});
17
25
  };
package/jsr.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "@glazy/formik-validator-zod",
3
+ "version": "2.0.1",
4
+ "exports": "./lib/index.ts",
5
+ "exclude": ["test/**", "package-lock.json", "tsconfig.json"]
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "formik-validator-zod",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Helper to simplify validating Formik values with Zod",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,15 +24,18 @@
24
24
  },
25
25
  "license": "MIT",
26
26
  "devDependencies": {
27
- "formik": "*",
27
+ "formik": "^2.2.9",
28
28
  "husky": "^8.0.0",
29
29
  "pretty-quick": "^3.1.3",
30
30
  "typescript": "^4.8.4",
31
31
  "vitest": "^0.24.3",
32
- "zod": "*"
32
+ "zod": "^3.19.1"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "formik": "^2.2.9",
36
36
  "zod": "^3.19.1"
37
+ },
38
+ "dependencies": {
39
+ "deepmerge": "^4.3.1"
37
40
  }
38
41
  }