From f4ddc744d4afd558114f0def475edf00724e3fcc Mon Sep 17 00:00:00 2001 From: Ben Date: Sun, 14 Jul 2024 17:30:12 -0400 Subject: [PATCH] Fix bug with missing discriminator, add playground page, restructure to monorepo, misc other changes (#2) --- .eslintrc.cjs | 5 +- .github/workflows/ci.yaml | 24 +- img/logo-wide.png | Bin 71474 -> 0 bytes package.json | 62 +- packages/docs-site/README.md | 30 + index.html => packages/docs-site/index.html | 4 +- packages/docs-site/package.json | 26 + packages/docs-site/public/favicon.svg | 67 +++ packages/docs-site/src/App.tsx | 25 + packages/docs-site/src/assets/logo.png | Bin 0 -> 34795 bytes packages/docs-site/src/components/Layout.css | 53 ++ packages/docs-site/src/components/Layout.tsx | 59 ++ packages/docs-site/src/components/Router.tsx | 91 +++ packages/docs-site/src/index.css | 15 + packages/docs-site/src/main.tsx | 10 + packages/docs-site/src/pages/HomePage.css | 28 + packages/docs-site/src/pages/HomePage.tsx | 49 ++ .../docs-site/src/pages/PlaygroundPage.css | 70 +++ .../docs-site/src/pages/PlaygroundPage.tsx | 169 ++++++ packages/docs-site/src/vite-env.d.ts | 1 + packages/docs-site/tsconfig.json | 25 + packages/docs-site/tsconfig.node.json | 11 + .../docs-site/vite.config.ts | 0 .../zod-error-viewer/.storybook}/main.ts | 0 .../.storybook}/manager-head.html | 0 .../zod-error-viewer/.storybook}/manager.ts | 4 - packages/zod-error-viewer/package.json | 74 +++ .../src}/ZodErrorViewer.stories.tsx | 0 .../src}/ZodErrorViewer.test.tsx | 24 + .../zod-error-viewer/src}/ZodErrorViewer.tsx | 132 ++++- .../zod-error-viewer/tsconfig.cjs.json | 0 .../zod-error-viewer/tsconfig.esm.json | 0 .../zod-error-viewer/tsconfig.json | 0 packages/zod-error-viewer/vite.config.ts | 7 + pnpm-lock.yaml | 535 ++++++++++++++---- pnpm-workspace.yaml | 2 + 36 files changed, 1407 insertions(+), 195 deletions(-) delete mode 100644 img/logo-wide.png create mode 100644 packages/docs-site/README.md rename index.html => packages/docs-site/index.html (72%) create mode 100644 packages/docs-site/package.json create mode 100644 packages/docs-site/public/favicon.svg create mode 100644 packages/docs-site/src/App.tsx create mode 100644 packages/docs-site/src/assets/logo.png create mode 100644 packages/docs-site/src/components/Layout.css create mode 100644 packages/docs-site/src/components/Layout.tsx create mode 100644 packages/docs-site/src/components/Router.tsx create mode 100644 packages/docs-site/src/index.css create mode 100644 packages/docs-site/src/main.tsx create mode 100644 packages/docs-site/src/pages/HomePage.css create mode 100644 packages/docs-site/src/pages/HomePage.tsx create mode 100644 packages/docs-site/src/pages/PlaygroundPage.css create mode 100644 packages/docs-site/src/pages/PlaygroundPage.tsx create mode 100644 packages/docs-site/src/vite-env.d.ts create mode 100644 packages/docs-site/tsconfig.json create mode 100644 packages/docs-site/tsconfig.node.json rename vite.config.ts => packages/docs-site/vite.config.ts (100%) rename {.storybook => packages/zod-error-viewer/.storybook}/main.ts (100%) rename {.storybook => packages/zod-error-viewer/.storybook}/manager-head.html (100%) rename {.storybook => packages/zod-error-viewer/.storybook}/manager.ts (72%) create mode 100644 packages/zod-error-viewer/package.json rename {src => packages/zod-error-viewer/src}/ZodErrorViewer.stories.tsx (100%) rename {src => packages/zod-error-viewer/src}/ZodErrorViewer.test.tsx (95%) rename {src => packages/zod-error-viewer/src}/ZodErrorViewer.tsx (87%) rename tsconfig.cjs.json => packages/zod-error-viewer/tsconfig.cjs.json (100%) rename tsconfig.esm.json => packages/zod-error-viewer/tsconfig.esm.json (100%) rename tsconfig.json => packages/zod-error-viewer/tsconfig.json (100%) create mode 100644 packages/zod-error-viewer/vite.config.ts create mode 100644 pnpm-workspace.yaml diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 3db2e79..57f0231 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -12,9 +12,6 @@ module.exports = { parser: "@typescript-eslint/parser", plugins: ["react-refresh"], rules: { - "react-refresh/only-export-components": [ - "warn", - { allowConstantExport: true }, - ], + "react-refresh/only-export-components": 0, }, }; diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index de92157..c3c753a 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -14,11 +14,14 @@ jobs: with: fetch-depth: 2 - run: pnpm install - - run: pnpm test - run: pnpm lint - run: pnpm format:check + - run: pnpm test + working-directory: packages/zod-error-viewer - run: pnpm build + working-directory: packages/zod-error-viewer - name: Publish package + working-directory: packages/zod-error-viewer run: | if [ $GITHUB_REF != "refs/heads/main" ]; then echo "Branch is not main, skipping publish step" @@ -27,7 +30,7 @@ jobs: echo "Branch is main, proceeding..." - prev_version=$(git show HEAD~1:package.json | jq -r '.version') + prev_version=$(git show HEAD~1:packages/zod-error-viewer/package.json | jq -r '.version') new_version=$(cat package.json | jq -r '.version') if [ $prev_version = $new_version ]; then @@ -43,11 +46,24 @@ jobs: echo "Publishing package..." pnpm publish - - name: Build documentation + - name: Build storybook + working-directory: packages/zod-error-viewer run: pnpm build-storybook + - name: Build docs site + working-directory: packages/docs-site + run: pnpm build + - name: Move storybook to under docs site + run: mv ./packages/zod-error-viewer/storybook-static ./packages/docs-site/dist/storybook-static + # Workaround since github pages does not support routing all requests to index.html + - name: Create fake pages + run: | + mkdir ./packages/docs-site/dist/docs + cp ./packages/docs-site/dist/index.html ./packages/docs-site/dist/docs/index.html + mkdir ./packages/docs-site/dist/playground + cp ./packages/docs-site/dist/index.html ./packages/docs-site/dist/playground/index.html - name: Upload documentation artifact uses: actions/upload-pages-artifact@v3 with: - path: storybook-static + path: packages/docs-site/dist - name: Publish documentation uses: actions/deploy-pages@v4 diff --git a/img/logo-wide.png b/img/logo-wide.png deleted file mode 100644 index 9fb2bb3c33b12547def93df8ce439b746bf35a46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71474 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 diff --git a/package.json b/package.json index 2abfcf8..a4e3f66 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { - "name": "zod-error-viewer", - "version": "1.2.1", + "name": "zod-error-viewer-monorepo", + "private": true, + "version": "1.0.0", "license": "MIT", "author": { "name": "Ben Lorantfy", @@ -10,42 +11,10 @@ "type": "git", "url": "https://github.com/BenLorantfy/zod-error-viewer" }, - "keywords": [ - "zod", - "visualization", - "viewer" - ], - "files": [ - "dist" - ], - "type": "module", - "module": "dist/esm/ZodErrorViewer.js", - "main": "dist/cjs/ZodErrorViewer.js", - "types": "dist/types/ZodErrorViewer.d.ts", - "sideEffects": false, - "exports": { - ".": { - "import": "./dist/esm/ZodErrorViewer.js", - "require": "./dist/cjs/ZodErrorViewer.js", - "types": "./dist/types/ZodErrorViewer.d.ts" - } - }, "scripts": { - "dev": "storybook dev -p 6006", - "storybook": "pnpm run dev", - "build": "tsc -p ./tsconfig.cjs.json && tsc -p ./tsconfig.esm.json", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "format:check": "prettier --check .", - "build-storybook": "storybook build", - "prepare": "husky", - "test": "vitest" - }, - "dependencies": { - "zod": ">=3" - }, - "peerDependencies": { - "react": ">=16", - "react-dom": ">=16" + "prepare": "husky" }, "lint-staged": { "**/*.{js,ts,tsx,jsx}": [ @@ -55,19 +24,6 @@ "**/*.json": "prettier --check --ignore-unknown" }, "devDependencies": { - "@chromatic-com/storybook": "^1.5.0", - "@storybook/addon-essentials": "^8.1.5", - "@storybook/addon-interactions": "^8.1.5", - "@storybook/addon-links": "^8.1.5", - "@storybook/blocks": "^8.1.5", - "@storybook/react": "^8.1.5", - "@storybook/react-vite": "^8.1.5", - "@storybook/test": "^8.1.5", - "@storybook/theming": "^8.1.5", - "@testing-library/react": "^15.0.7", - "@testing-library/user-event": "^14.5.2", - "@types/react": "^18.2.66", - "@types/react-dom": "^18.2.22", "@typescript-eslint/eslint-plugin": "^7.2.0", "@typescript-eslint/parser": "^7.2.0", "@vitejs/plugin-react": "^4.2.1", @@ -76,16 +32,8 @@ "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.6", "eslint-plugin-storybook": "^0.8.0", - "happy-dom": "^14.12.0", "husky": "^9.0.11", "lint-staged": "^15.2.5", - "prettier": "3.3.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "storybook": "^8.1.5", - "typescript": "^5.2.2", - "vite": "^5.2.0", - "vitest": "^1.6.0", - "zod": "^3.23.8" + "prettier": "3.3.0" } } diff --git a/packages/docs-site/README.md b/packages/docs-site/README.md new file mode 100644 index 0000000..bb15685 --- /dev/null +++ b/packages/docs-site/README.md @@ -0,0 +1,30 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: "latest", + sourceType: "module", + project: ["./tsconfig.json", "./tsconfig.node.json"], + tsconfigRootDir: __dirname, + }, +}; +``` + +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/index.html b/packages/docs-site/index.html similarity index 72% rename from index.html rename to packages/docs-site/index.html index e4b78ea..842afe5 100644 --- a/index.html +++ b/packages/docs-site/index.html @@ -2,9 +2,9 @@ - + - Vite + React + TS + zod-error-viewer
diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json new file mode 100644 index 0000000..a1597e7 --- /dev/null +++ b/packages/docs-site/package.json @@ -0,0 +1,26 @@ +{ + "name": "docs-site", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@codemirror/lang-javascript": "^6.2.2", + "@uiw/react-codemirror": "^4.22.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "zod": ">=3", + "zod-error-viewer": "workspace:*" + }, + "devDependencies": { + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@vitejs/plugin-react": "^4.2.1", + "typescript": "^5.2.2", + "vite": "^5.2.0" + } +} diff --git a/packages/docs-site/public/favicon.svg b/packages/docs-site/public/favicon.svg new file mode 100644 index 0000000..7be4ed1 --- /dev/null +++ b/packages/docs-site/public/favicon.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/docs-site/src/App.tsx b/packages/docs-site/src/App.tsx new file mode 100644 index 0000000..9d50e8e --- /dev/null +++ b/packages/docs-site/src/App.tsx @@ -0,0 +1,25 @@ +import { PlaygroundPage } from "./pages/PlaygroundPage"; +import { Route, Router } from "./components/Router"; +import { HomePage } from "./pages/HomePage"; +import { Layout } from "./components/Layout"; + +export function App() { + return ( + + + + + + + + + +