From fed2b27201cbf0fd4e2e9ec205a35dfc608ef901 Mon Sep 17 00:00:00 2001 From: Joris Date: Fri, 26 Mar 2021 23:00:34 +0100 Subject: [PATCH 1/3] docs: superstruct resolver update (#142) --- README.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 24f55395..a7c64f1c 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,8 @@ const App = () => { ); }; + +export default App; ``` ### [Zod](https://github.com/vriad/zod) @@ -115,11 +117,11 @@ A simple and composable way to validate data in JavaScript (or TypeScript). import React from 'react'; import { useForm } from 'react-hook-form'; import { superstructResolver } from '@hookform/resolvers/superstruct'; -import { struct } from 'superstruct'; +import { object, string, number } from 'superstruct'; -const schema = struct({ - name: 'string', - age: 'number', +const schema = object({ + name: string(), + age: number(), }); const App = () => { @@ -130,11 +132,13 @@ const App = () => { return (
console.log(d))}> - +
); }; + +export default App; ``` ### [Joi](https://github.com/sideway/joi) @@ -166,6 +170,8 @@ const App = () => { ); }; + +export default App; ``` ### [Vest](https://github.com/ealush/vest) @@ -219,6 +225,8 @@ const App = () => { ); }; + +export default App; ``` ## Backers From 260448a4c0db0ad48516341bdb1ffa688c63011d Mon Sep 17 00:00:00 2001 From: Joris Date: Tue, 30 Mar 2021 10:23:46 +0200 Subject: [PATCH 2/3] fix: support ie11 (#144) * fix: ie11 build * use fs-extra instead of move-file Ref: #143 --- .eslintrc.js | 5 +++- config/build-ie11.js | 54 ++++++++++++++++++++++++++++++++++++ config/check-ie11.js | 18 ++++++++++++ config/get-resolvers-name.js | 7 +++++ package.json | 9 +++--- yarn.lock | 10 +++++++ 6 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 config/build-ie11.js create mode 100644 config/check-ie11.js create mode 100644 config/get-resolvers-name.js diff --git a/.eslintrc.js b/.eslintrc.js index 2f3b63a3..b76b24ec 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -28,7 +28,10 @@ module.exports = { overrides: [ { files: ['config/*.js'], - rules: { '@typescript-eslint/no-var-requires': 'off' }, + rules: { + '@typescript-eslint/no-var-requires': 'off', + 'no-console': 'off', + }, }, ], }; diff --git a/config/build-ie11.js b/config/build-ie11.js new file mode 100644 index 00000000..8b4f095d --- /dev/null +++ b/config/build-ie11.js @@ -0,0 +1,54 @@ +const path = require('path'); +const fs = require('fs'); +const { move } = require('fs-extra'); +const microbundle = require('microbundle'); +const getResolversName = require('./get-resolvers-name'); + +const IE11_PATH = 'ie11'; +const OUTPUT = 'dist'; + +(async () => { + console.log(`Build IE11 resolvers to ${OUTPUT}`); + const resolvers = getResolversName(); + + for await (let resolver of resolvers) { + console.log(`> Build ${resolver}`); + const filePath = path.join(resolver, 'package.json'); + + const resolverPkg = JSON.parse(fs.readFileSync(filePath)); + const resolverPkgCopy = Object.assign({}, resolverPkg); + + // Temporary update `types` field + resolverPkg.types = `${IE11_PATH}/index.d.ts`; + + await fs.writeFileSync(filePath, JSON.stringify(resolverPkg, null, 2)); + + try { + await microbundle({ + cwd: resolver, + output: IE11_PATH, + globals: '@hookform/resolvers=hookformResolvers', + format: 'cjs', + alias: 'react-hook-form=react-hook-form/dist/index.ie11', + }); + + // Move `./{resolver}/ie11` -> `./dist/ie11/{resolver}` + await move( + `${resolver}/${IE11_PATH}`, + `${OUTPUT}/${IE11_PATH}/${resolver}`, + { + overwrite: true, + }, + ); + } catch (error) { + console.error(error); + process.exit(1); + } finally { + // Revert back changes on `{resolver}/package.json` + await fs.writeFileSync( + filePath, + JSON.stringify(resolverPkgCopy, null, 2), + ); + } + } +})(); diff --git a/config/check-ie11.js b/config/check-ie11.js new file mode 100644 index 00000000..133f6444 --- /dev/null +++ b/config/check-ie11.js @@ -0,0 +1,18 @@ +const fs = require('fs'); +const getResolversName = require('./get-resolvers-name'); + +(async () => { + console.log('Checking IE11 bundles...'); + const resolvers = getResolversName(); + + for await (const resolver of resolvers) { + console.log(`> Checking ${resolver} IE11 bundle`); + const file = fs.readFileSync(`dist/ie11/${resolver}/${resolver}.js`); + + if (!file.includes('react-hook-form/dist/index.ie11')) { + throw new Error( + 'IE11 bundle should require `react-hook-form/dist/index.ie11`', + ); + } + } +})(); diff --git a/config/get-resolvers-name.js b/config/get-resolvers-name.js new file mode 100644 index 00000000..7a01d299 --- /dev/null +++ b/config/get-resolvers-name.js @@ -0,0 +1,7 @@ +const pkg = require('../package.json'); + +module.exports = function () { + return Object.keys(pkg.exports) + .map((e) => e.replace(/(\.\/|\.)/, '').replace(/package.*/, '')) + .filter(Boolean); +}; diff --git a/package.json b/package.json index e3bb121a..9128e5ac 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "access": "public" }, "scripts": { - "prepare": "run-s build:src build && check-export-map", + "prepare": "run-s build:src build && check-export-map && node ./config/check-ie11.js", "build": "npm-run-all --parallel build:*", "build:src": "microbundle build", "build:zod": "microbundle --cwd zod --globals '@hookform/resolvers=hookformResolvers'", @@ -79,7 +79,8 @@ "build:joi": "microbundle --cwd joi --globals '@hookform/resolvers=hookformResolvers'", "build:superstruct": "microbundle --cwd superstruct --globals '@hookform/resolvers=hookformResolvers'", "build:vest": "microbundle --cwd vest --globals '@hookform/resolvers=hookformResolvers'", - "postbuild": "node ./config/node-13-exports.js", + "build:ie11": "node ./config/build-ie11", + "postbuild": "node ./config/node-13-exports.js && node ./config/check-ie11.js", "lint": "eslint . --ext .ts,.js --ignore-path .gitignore", "lint:types": "tsc", "test": "jest", @@ -117,6 +118,7 @@ "eslint": "^7.16.0", "eslint-config-prettier": "^7.1.0", "eslint-plugin-prettier": "^3.3.0", + "fs-extra": "^9.1.0", "husky": "^4.3.6", "jest": "^26.6.3", "joi": "^17.3.0", @@ -154,6 +156,5 @@ "*.{md,json,yml}": [ "prettier --write" ] - }, - "dependencies": {} + } } diff --git a/yarn.lock b/yarn.lock index 5a252b54..8f933ae2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4483,6 +4483,16 @@ fs-extra@^9.0.0: jsonfile "^6.0.1" universalify "^1.0.0" +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" From 5672e65c2907f95c9a3a04e2daf662d5e10e8059 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Mar 2021 11:38:03 +0200 Subject: [PATCH 3/3] Bump y18n from 3.2.1 to 3.2.2 (#145) Bumps [y18n](https://github.com/yargs/y18n) from 3.2.1 to 3.2.2. - [Release notes](https://github.com/yargs/y18n/releases) - [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md) - [Commits](https://github.com/yargs/y18n/commits) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8f933ae2..5e5d58a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10641,9 +10641,9 @@ xtend@~4.0.1: integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== y18n@^4.0.0: version "4.0.0"