1
0
mirror of synced 2026-02-04 12:08:33 -05:00

Compare commits

..

12 Commits

Author SHA1 Message Date
Siddharth Suresh
4229e89825 Merge branch 'main' into remove-unmaintained-forms 2023-06-05 19:16:40 +05:30
Blitz.js Bot
85a71ffef9 (meta) added @nikola-wd as contributor 2023-05-31 11:36:16 -04:00
Blitz.js Bot
803f533a3d (meta) added @nerixim as contributor 2023-05-31 11:21:39 -04:00
Siddharth Suresh
cf6632340d fix 2023-05-16 16:04:54 +05:30
Siddharth Suresh
49cb7344dc remove formik and final form 2023-05-16 15:58:57 +05:30
Blitz.js Bot
63ee9423a9 (meta) added @GHKEN as contributor 2023-05-11 12:06:35 -04:00
Tetsuya Fukuda
89446b3656 support both directory style in tailwind recipe (#4137)
Co-authored-by: Siddharth Suresh <siddh.suresh@gmail.com>
2023-05-11 21:36:30 +05:30
github-actions[bot]
5a64f1c39c Version Packages (beta) (#4135)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Siddharth Suresh <siddh.suresh@gmail.com>
2023-05-01 23:33:32 +05:30
Blitz.js Bot
fa30de4599 (meta) added @gjmoed as contributor 2023-05-01 13:39:26 -04:00
G.J. Moed
3d004dc415 Adjust codegen logic for suspense patch (#4138)
Co-authored-by: Brandon Bayer <b@bayer.ws>
Co-authored-by: Siddharth Suresh <siddh.suresh@gmail.com>
2023-05-01 23:09:20 +05:30
Blitz.js Bot
08fbede75e (meta) added @dbrxnds as contributor 2023-05-01 12:30:21 -04:00
David
eda14fa8aa Add formatError property to Blitz server- & rpchandler setup (#4124)
Co-authored-by: Siddharth Suresh <siddh.suresh@gmail.com>
2023-05-01 22:00:15 +05:30
86 changed files with 462 additions and 710 deletions

View File

@@ -3896,6 +3896,55 @@
"doc",
"code"
]
},
{
"login": "dbrxnds",
"name": "David",
"avatar_url": "https://avatars.githubusercontent.com/u/32268383?v=4",
"profile": "https://github.com/dbrxnds",
"contributions": [
"doc",
"code",
"test"
]
},
{
"login": "gjmoed",
"name": "G.J. Moed",
"avatar_url": "https://avatars.githubusercontent.com/u/4458993?v=4",
"profile": "https://github.com/gjmoed",
"contributions": [
"doc",
"code"
]
},
{
"login": "GHKEN",
"name": "Tetsuya Fukuda",
"avatar_url": "https://avatars.githubusercontent.com/u/5304351?v=4",
"profile": "https://ghken.com",
"contributions": [
"doc",
"code"
]
},
{
"login": "nerixim",
"name": "Nikita Kamaev",
"avatar_url": "https://avatars.githubusercontent.com/u/26106502?v=4",
"profile": "https://github.com/nerixim",
"contributions": [
"doc"
]
},
{
"login": "nikola-wd",
"name": "Nikola Ivanov",
"avatar_url": "https://avatars.githubusercontent.com/u/11588823?v=4",
"profile": "https://webredone.com/",
"contributions": [
"doc"
]
}
],
"contributorsPerLine": 7,

View File

@@ -0,0 +1,6 @@
---
"@blitzjs/next": minor
"@blitzjs/rpc": minor
---
Add ability to format the error on the server before returning it to the client.

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/next": minor
---
Fix the DYNAMIC_SERVER_USAGE error for Next.js 13.3.1+

View File

@@ -70,6 +70,7 @@
"calm-papayas-protect",
"calm-tomatoes-drive",
"chatty-fireants-leave",
"chatty-gifts-whisper",
"chilled-carrots-own",
"chilly-candles-care",
"chilly-nails-nail",
@@ -119,6 +120,7 @@
"four-meals-fry",
"four-radios-tickle",
"four-sheep-judge",
"fresh-crews-chew",
"funny-cups-pay",
"fuzzy-bees-warn",
"fuzzy-dots-cross",
@@ -195,6 +197,7 @@
"nice-boxes-travel",
"nice-deers-dream",
"nice-starfishes-live",
"nine-bags-rhyme",
"nine-birds-confess",
"nine-onions-admire",
"ninety-lies-press",
@@ -322,6 +325,7 @@
"wicked-rings-walk",
"wise-eels-visit",
"wise-frogs-give",
"wise-lies-relate",
"wise-rabbits-complain",
"young-birds-talk"
]

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/recipe-tailwind": minor
---
support both directory style in tailwind recipe

View File

@@ -109,44 +109,9 @@ jobs:
tree -J -d -L 1 | jq -c '.[0].contents | map(.name | tostring) | map(select(. != "utils"))'
folders=$(tree -J -d -L 1 | jq -c '.[0].contents | map(.name | tostring) | map(select(. != "utils"))')
echo "folders=$folders" >> $GITHUB_OUTPUT
Generator:
name: :"Generator Test ${{matrix.language}}"
strategy:
matrix:
language:
- javascript
- typescript
os:
- ubuntu-latest
fail-fast: false
runs-on: "ubuntu-latest"
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup PNPM
uses: pnpm/action-setup@646cdf48217256a3d0b80361c5a50727664284f2
with:
version: 7.11.0
- name: Setup node@${{ matrix.NODE_VERSION }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.NODE_VERSION }}
cache: "pnpm"
- name: Install dependencies
run: pnpm install --frozen-lockfile
shell: bash
- name: Build
run: pnpm build
shell: bash
- name: Generate
run: |
mkdir test
cd test
pnpm blitz new . --language=${{matrix.language}}
Integration-Tests:
name: "Integration Test: ${{matrix.folder}} @ ${{matrix.os}} "
name: "Integration Test: ${{matrix.folder}} @ ${{ matrix.os }} "
needs: [find-integration-tests]
strategy:
matrix:
@@ -154,6 +119,7 @@ jobs:
os:
- ubuntu-latest
- windows-latest
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- run: echo ${{matrix.folder}}

View File

@@ -1,6 +1,6 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
pnpm manypkg check
pnpm lint
pnpm pretty-quick --staged
# pnpm manypkg check
# pnpm lint
# pnpm pretty-quick --staged

View File

@@ -6,7 +6,7 @@
<img alt="" src="https://img.shields.io/badge/Join%20our%20community-6700EB.svg?style=for-the-badge&labelColor=000000&logoWidth=20&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQ9SURBVHgB7d3dVdtAEIbhcSpICUoH0IEogQqSVBBSAU4FSSpIOoAORAfQgSghHXzZ1U/YcMD4R9rZmf2ec3y448LyiNf27iLiGIAmPLrweC9Un3DhrzG6EarLNP09nlwJ1SOZ/lQr5N80/S/p2QMVCBf5N17XCfm1Y/rBHqjAG9PPHvBsz+mf9WAP+HLA9M/YA14cOP2payH7jpj+VCtk1wnTP+vj7xCy6cTpn7EHLMLp059iD1iD8eveJbVCNsSLheX1YA/YgOWnf8YeKB3Wmf7Ud6Fy4f/FHmtpxbl3YlC4MJ/Cj0bWdwPnPbARg+L0S54XQHS32WwuxClzd4CM0z9rPfeAuTtA5ulPXYQ7wZ04Y+oOoDD9KZc9YOoOoDj9s4dwFzgXR6w1wIPoOvPWA9buAHEJ173o3gWiy3AnuBUHLEbgmYwvAk1/wuM8vAgexThzbwPDkx7/DHwVXfFOxP2GmsKd4Ab6zPeAyU8CI7AHFmH2BRCBPXAyk18GzUrqAXCTiR4ssyj0VFw/oCU8+e+RZ33AWz6KMaYbIIWxB+JSLs1bsbkeMN0AqakHvoku9oA2sAfqBvbAQdw0QArsgb25aYBUQT3QgT2gB+yBuqGcHij2UCqXDZACe2Anlw2QYg/QAOyBuoE98CL3DZDCuK4/rh/Q7oGL6U+TOvcNkJoijN8X1C48+T+g75eQDrAH/qmqAVJgDwyqaoAUe4AGYA/UDZX3QLUNkEIZPRCd5+6BahsgVUgPROwBTSijB7jpVAvGHriHvmw9wAZ4BpX1ABvgmakHtPcbRuwBTWAPULgAV9D/jKDY9YRvwvgEaurD44uQHvAol7qBW7WKluVtIHiUS7GyvA0s6CiXDnxrpQfsgbqBS7GKk/2jYHCrVlGyfxTMrVo0ALdq1Q3sgSKofh0M9oA61a+D2QM0AHugbmAPqClmSRjK2apVVQ8UsySsoK1aHdgDesCtWnUDeyCrIpeFg1u3sylyWTi3btMA7IG6gT2wuuK3hoE9sKrit4YVslWLPaAN7IG6ocKt2zmY2h4O9sDiTG0PZw/QANy6XTewBxZj9ogYVHy025LMHhEz9cBn0We6B0yfERReBLfhx0/R1YQHPx/QBPbA0VwcEwf2wNFcHBPHHjiem3MC2QPHcXdSaJjA+KfgTPQ8hhfjBzHC40mhlzJ+Xq9lK4a4PCs43AVaGTed5mZq+iOXZwWHi3AnOj2wFWNcnxYe7gTxLtBKHuamP/J+Wnh8a5irB7ZC5Yk9gPX1QuXC+usHWqGyhYvUYR0a7zboUOFCNVhnk0krZAOW7wFOvzXhom2xnEbIHizTA1wEYhWW6YFGyC6c1gOcfg9wfA80Qj7g8B7g9HuCww+haIR8wf49wOn3Cvv9k8tGyC/s7gFOv3fY3QONkH+v9MBWqB7PeqDn9FcIT//kcitUn6kHOu/T/xfWzlQy3dEHhwAAAABJRU5ErkJggg==">
</a>
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
<a aria-label="All Contributors" href="#contributors-"><img alt="" src="https://img.shields.io/badge/all_contributors-411-17BB8A.svg?style=for-the-badge&labelColor=000000"></a>
<a aria-label="All Contributors" href="#contributors-"><img alt="" src="https://img.shields.io/badge/all_contributors-416-17BB8A.svg?style=for-the-badge&labelColor=000000"></a>
<!-- ALL-CONTRIBUTORS-BADGE:END -->
<a aria-label="License" href="https://github.com/blitz-js/blitz/blob/main/LICENSE">
<img alt="" src="https://img.shields.io/npm/l/blitz.svg?style=for-the-badge&labelColor=000000&color=blue">
@@ -724,6 +724,13 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
<td align="center"><a href="https://maotoramm.com"><img src="https://avatars.githubusercontent.com/u/5174884?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Maotora ᕙ(⇀‸↼‶)ᕗ</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=maotora" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=maotora" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/vitaliemiron"><img src="https://avatars.githubusercontent.com/u/45145592?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vitalie</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=vitaliemiron" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=vitaliemiron" title="Code">💻</a></td>
<td align="center"><a href="https://estevao.org"><img src="https://avatars.githubusercontent.com/u/19409687?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nelson Estevão</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=nelsonmestevao" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=nelsonmestevao" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/dbrxnds"><img src="https://avatars.githubusercontent.com/u/32268383?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=dbrxnds" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=dbrxnds" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=dbrxnds" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/gjmoed"><img src="https://avatars.githubusercontent.com/u/4458993?v=4?s=100" width="100px;" alt=""/><br /><sub><b>G.J. Moed</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=gjmoed" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=gjmoed" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://ghken.com"><img src="https://avatars.githubusercontent.com/u/5304351?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tetsuya Fukuda</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=GHKEN" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=GHKEN" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/nerixim"><img src="https://avatars.githubusercontent.com/u/26106502?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nikita Kamaev</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=nerixim" title="Documentation">📖</a></td>
<td align="center"><a href="https://webredone.com/"><img src="https://avatars.githubusercontent.com/u/11588823?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nikola Ivanov</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=nikola-wd" title="Documentation">📖</a></td>
</tr>
</table>

View File

@@ -1,5 +1,18 @@
# next-blitz-auth
## 0.1.1-beta.3
### Patch Changes
- Updated dependencies [eda14fa8a]
- Updated dependencies [3d004dc41]
- Updated dependencies [29c2b029a]
- @blitzjs/next@2.0.0-beta.27
- @blitzjs/rpc@2.0.0-beta.27
- @blitzjs/auth@2.0.0-beta.27
- blitz@2.0.0-beta.27
- @blitzjs/config@2.0.0-beta.27
## 0.1.1-beta.2
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "next-blitz-auth",
"version": "0.1.1-beta.2",
"version": "0.1.1-beta.3",
"private": true,
"scripts": {
"blitz:dev": "next dev",

View File

@@ -30,7 +30,7 @@
"@hookform/error-message": "2.0.0",
"@hookform/resolvers": "2.9.10",
"@prisma/client": "4.6.1",
"blitz": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.27",
"next": "13.3.0",
"openid-client": "5.2.1",
"prisma": "4.6.1",

View File

@@ -31,7 +31,7 @@
"@hookform/error-message": "2.0.0",
"@hookform/resolvers": "2.9.10",
"@prisma/client": "4.6.1",
"blitz": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.27",
"next": "13.3.0",
"next-auth": "4.18.7",
"prisma": "4.6.1",

View File

@@ -10,6 +10,7 @@ type SignupFormProps = {
export const SignupForm = (props: SignupFormProps) => {
const [signupMutation] = useMutation(signup)
return (
<div>
<h1>Create an Account</h1>

View File

@@ -1,5 +1,4 @@
import db from "db"
import { SecurePassword } from "@blitzjs/auth/secure-password"
import { Role } from "types"
export default async function signup(input, ctx) {

View File

@@ -1,9 +1,8 @@
import type { BlitzCliConfig } from "blitz"
import { setupBlitzServer } from "@blitzjs/next"
import { AuthServerPlugin, PrismaStorage } from "@blitzjs/auth"
import db from "db"
import { simpleRolesIsAuthorized } from "@blitzjs/auth"
import { BlitzLogger } from "blitz"
import { setupBlitzServer } from "@blitzjs/next"
import { AuthServerPlugin, PrismaStorage, simpleRolesIsAuthorized } from "@blitzjs/auth"
import db from "db"
export const cliConfig: BlitzCliConfig = {
customTemplates: "src/templates",
@@ -27,6 +26,9 @@ const { gSSP, gSP, api } = setupBlitzServer({
isAuthorized: simpleRolesIsAuthorized,
}),
],
formatError: (error) => {
return new Error("Formatted error" + error.message)
},
logger: BlitzLogger({}),
})

View File

@@ -1,4 +1,12 @@
import { rpcHandler } from "@blitzjs/rpc"
import { api } from "src/blitz-server"
export default api(rpcHandler({ onError: console.log }))
export default api(
rpcHandler({
onError: console.log,
formatError: (error) => {
error.message = `FormatError handler: ${error.message}`
return error
},
})
)

View File

@@ -44,7 +44,7 @@ const UserInfo = () => {
<Link href={Routes.LoginPage()} className={styles.loginButton}>
<strong>Login</strong>
</Link>
<Link href="/api/auth/github/login" passHref>
<Link href="/api/auth/github/login" passHref legacyBehavior>
<a className="button small">
<strong>Sign in with GitHub</strong>
</a>

View File

@@ -17,14 +17,14 @@
"prisma:studio": "prisma studio"
},
"dependencies": {
"@blitzjs/auth": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/next": "workspace:2.0.0-beta.26",
"@blitzjs/rpc": "workspace:2.0.0-beta.26",
"@blitzjs/auth": "workspace:2.0.0-beta.27",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@blitzjs/next": "workspace:2.0.0-beta.27",
"@blitzjs/rpc": "workspace:2.0.0-beta.27",
"@hookform/error-message": "2.0.0",
"@hookform/resolvers": "2.9.10",
"@prisma/client": "4.6.1",
"blitz": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.27",
"delay": "5.0.0",
"next": "13.3.0",
"prisma": "4.6.1",

View File

@@ -1,11 +1,11 @@
import {describe, it, expect, beforeAll, afterAll} from "vitest"
import {afterAll, beforeAll, describe, expect, it} from "vitest"
import {
killApp,
findPort,
runBlitzCommand,
blitzLaunchApp,
blitzBuild,
blitzLaunchApp,
blitzStart,
findPort,
killApp,
runBlitzCommand,
waitFor,
} from "../../utils/next-test-utils"
import webdriver from "../../utils/next-webdriver"
@@ -15,7 +15,7 @@ let appPort: number
const runTests = () => {
describe("Auth", () => {
/* TODO - Add a non flaky Integration Test for custom plugin
/* TODO - Add a non flaky Integration Test for custom plugin
describe("custom plugin", () => {
it("custom plugin - events", async () => {
const browser = await webdriver(appPort, "/custom-plugin")

View File

@@ -17,11 +17,11 @@
"prisma:studio": "prisma studio"
},
"dependencies": {
"@blitzjs/auth": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/next": "workspace:2.0.0-beta.26",
"@blitzjs/auth": "workspace:2.0.0-beta.27",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@blitzjs/next": "workspace:2.0.0-beta.27",
"@prisma/client": "4.6.1",
"blitz": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.27",
"lowdb": "3.0.0",
"next": "13.3.0",
"prisma": "4.6.1",

View File

@@ -16,11 +16,11 @@
"schema": "db/schema.prisma"
},
"dependencies": {
"@blitzjs/auth": "workspace:2.0.0-beta.26",
"@blitzjs/next": "workspace:2.0.0-beta.26",
"@blitzjs/rpc": "workspace:2.0.0-beta.26",
"@blitzjs/auth": "workspace:2.0.0-beta.27",
"@blitzjs/next": "workspace:2.0.0-beta.27",
"@blitzjs/rpc": "workspace:2.0.0-beta.27",
"@prisma/client": "4.6.1",
"blitz": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.27",
"lowdb": "3.0.0",
"next": "13.3.0",
"prisma": "4.6.1",
@@ -28,7 +28,7 @@
"react-dom": "18.2.0"
},
"devDependencies": {
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@next/bundle-analyzer": "12.0.8",
"@types/express": "4.17.13",
"@types/fs-extra": "9.0.13",

View File

@@ -11,10 +11,10 @@
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next"
},
"dependencies": {
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/next": "workspace:2.0.0-beta.26",
"@blitzjs/rpc": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@blitzjs/next": "workspace:2.0.0-beta.27",
"@blitzjs/rpc": "workspace:2.0.0-beta.27",
"blitz": "workspace:2.0.0-beta.27",
"next": "13.3.0",
"react": "18.2.0",
"react-dom": "18.2.0"

View File

@@ -1,5 +1,6 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
/// <reference types="next/navigation-types/compat/navigation" />
// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.

View File

@@ -17,12 +17,12 @@
"prisma:studio": "prisma studio"
},
"dependencies": {
"@blitzjs/auth": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/next": "workspace:2.0.0-beta.26",
"@blitzjs/rpc": "workspace:2.0.0-beta.26",
"@blitzjs/auth": "workspace:2.0.0-beta.27",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@blitzjs/next": "workspace:2.0.0-beta.27",
"@blitzjs/rpc": "workspace:2.0.0-beta.27",
"@prisma/client": "4.6.1",
"blitz": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.27",
"lowdb": "3.0.0",
"next": "13.3.0",
"prisma": "4.6.1",

View File

@@ -1,13 +1,6 @@
import {describe, it, expect, beforeAll, afterAll} from "vitest"
import {afterAll, beforeAll, describe, expect, it} from "vitest"
import waitPort from "wait-port"
import {
killApp,
findPort,
runBlitzCommand,
blitzLaunchApp,
blitzBuild,
blitzStart,
} from "../../utils/next-test-utils"
import {blitzLaunchApp, findPort, killApp, runBlitzCommand} from "../../utils/next-test-utils"
import webdriver from "../../utils/next-webdriver"
import fetch from "node-fetch"
@@ -43,7 +36,7 @@ const runTests = (mode?: string) => {
const browser = await webdriver(appPort, "/authenticated-client")
let errorMsg = await browser.elementById(`error`).text()
expect(errorMsg).toMatch(/Error: You are not authenticated/)
if (browser) browser.close()
if (browser) await browser.close()
},
5000 * 60 * 2,
)
@@ -55,7 +48,7 @@ const runTests = (mode?: string) => {
const browser = await webdriver(appPort, "/authenticated-server")
let errorMsg = await browser.elementById(`error`).text()
expect(errorMsg).toMatch(/Error: You are not authenticated/)
if (browser) browser.close()
if (browser) await browser.close()
},
5000 * 60 * 2,
)

View File

@@ -9,7 +9,8 @@
{
"name": "next"
}
]
],
"strictNullChecks": true
},
"exclude": ["node_modules"],
"baseUrl": "."

View File

@@ -16,11 +16,11 @@
"prisma:studio": "prisma studio"
},
"dependencies": {
"@blitzjs/auth": "workspace:2.0.0-beta.26",
"@blitzjs/next": "workspace:2.0.0-beta.26",
"@blitzjs/rpc": "workspace:2.0.0-beta.26",
"@blitzjs/auth": "workspace:2.0.0-beta.27",
"@blitzjs/next": "workspace:2.0.0-beta.27",
"@blitzjs/rpc": "workspace:2.0.0-beta.27",
"@prisma/client": "4.6.1",
"blitz": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.27",
"lowdb": "3.0.0",
"next": "13.3.0",
"prisma": "4.6.1",
@@ -28,7 +28,7 @@
"react-dom": "18.2.0"
},
"devDependencies": {
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@next/bundle-analyzer": "12.0.8",
"@types/express": "4.17.13",
"@types/fs-extra": "9.0.13",

View File

@@ -8,13 +8,13 @@
"clean": "rm -rf .turbo && rm -rf node_modules"
},
"dependencies": {
"@blitzjs/auth": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/next": "workspace:2.0.0-beta.26",
"@blitzjs/rpc": "workspace:2.0.0-beta.26",
"@blitzjs/auth": "workspace:2.0.0-beta.27",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@blitzjs/next": "workspace:2.0.0-beta.27",
"@blitzjs/rpc": "workspace:2.0.0-beta.27",
"@prisma/client": "4.6.1",
"@tanstack/react-query": "4.0.10",
"blitz": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.27",
"next": "13.3.0",
"prisma": "4.6.1",
"react": "18.2.0",

View File

@@ -16,10 +16,10 @@
"schema": "db/schema.prisma"
},
"dependencies": {
"@blitzjs/next": "workspace:2.0.0-beta.26",
"@blitzjs/rpc": "workspace:2.0.0-beta.26",
"@blitzjs/next": "workspace:2.0.0-beta.27",
"@blitzjs/rpc": "workspace:2.0.0-beta.27",
"@prisma/client": "4.6.1",
"blitz": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.27",
"lowdb": "3.0.0",
"next": "13.3.0",
"prisma": "4.6.1",
@@ -27,7 +27,7 @@
"react-dom": "18.2.0"
},
"devDependencies": {
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@next/bundle-analyzer": "12.0.8",
"@types/express": "4.17.13",
"@types/fs-extra": "9.0.13",

View File

@@ -7,10 +7,10 @@
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next"
},
"dependencies": {
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/next": "workspace:2.0.0-beta.26",
"@blitzjs/rpc": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@blitzjs/next": "workspace:2.0.0-beta.27",
"@blitzjs/rpc": "workspace:2.0.0-beta.27",
"blitz": "workspace:2.0.0-beta.27",
"next": "13.3.0",
"react": "18.2.0",
"react-dom": "18.2.0"

View File

@@ -0,0 +1,12 @@
class ErrorWithStatusCode extends Error {
statusCode
constructor(message, statusCode) {
super(message)
this.statusCode = statusCode
}
}
export default async function getCustomStatusCodeFailure() {
throw new ErrorWithStatusCode("Error with custom status code for test", 418)
}

View File

@@ -7,10 +7,10 @@
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next"
},
"dependencies": {
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/next": "workspace:2.0.0-beta.26",
"@blitzjs/rpc": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@blitzjs/next": "workspace:2.0.0-beta.27",
"@blitzjs/rpc": "workspace:2.0.0-beta.27",
"blitz": "workspace:2.0.0-beta.27",
"next": "13.3.0",
"react": "18.2.0",
"react-dom": "18.2.0"

View File

@@ -1,14 +1,13 @@
import {describe, it, expect, beforeAll, afterAll} from "vitest"
import fs from "fs-extra"
import {afterAll, beforeAll, describe, expect, it} from "vitest"
import {join} from "path"
import {
killApp,
findPort,
launchApp,
fetchViaHTTP,
findPort,
killApp,
launchApp,
nextBuild,
nextStart,
nextExport,
nextStart,
} from "../../utils/next-test-utils"
// jest.setTimeout(1000 * 60 * 2)

View File

@@ -16,11 +16,11 @@
"schema": "db/schema.prisma"
},
"dependencies": {
"@blitzjs/auth": "workspace:2.0.0-beta.26",
"@blitzjs/next": "workspace:2.0.0-beta.26",
"@blitzjs/rpc": "workspace:2.0.0-beta.26",
"@blitzjs/auth": "workspace:2.0.0-beta.27",
"@blitzjs/next": "workspace:2.0.0-beta.27",
"@blitzjs/rpc": "workspace:2.0.0-beta.27",
"@prisma/client": "4.6.1",
"blitz": "workspace:2.0.0-beta.26",
"blitz": "workspace:2.0.0-beta.27",
"lowdb": "3.0.0",
"next": "13.3.0",
"prisma": "4.6.1",
@@ -28,7 +28,7 @@
"react-dom": "18.2.0"
},
"devDependencies": {
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@next/bundle-analyzer": "12.0.8",
"@types/express": "4.17.13",
"@types/fs-extra": "9.0.13",

View File

@@ -1,5 +1,12 @@
# @blitzjs/auth
## 2.0.0-beta.27
### Patch Changes
- 29c2b029a: Fix: Add missing entry to expose next-auth adapter in Blitz Auth
- blitz@2.0.0-beta.27
## 2.0.0-beta.26
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/auth",
"version": "2.0.0-beta.26",
"version": "2.0.0-beta.27",
"homepage": "https://blitzjs.com/",
"repository": {
"type": "git",
@@ -48,7 +48,7 @@
"url": "0.11.0"
},
"peerDependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"next": "*",
"next-auth": "*",
"secure-password": "4.0.0"
@@ -65,7 +65,7 @@
}
},
"devDependencies": {
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@testing-library/react": "13.4.0",
"@testing-library/react-hooks": "8.0.1",
"@types/cookie": "0.4.1",
@@ -73,7 +73,7 @@
"@types/jsonwebtoken": "8.5.8",
"@types/react": "18.0.25",
"@types/react-dom": "17.0.14",
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"next": "13.3.0",
"next-auth": "4.18.7",
"react": "18.2.0",

View File

@@ -1,5 +1,18 @@
# @blitzjs/next
## 2.0.0-beta.27
### Minor Changes
- eda14fa8a: Add ability to format the error on the server before returning it to the client.
- 3d004dc41: Fix the DYNAMIC_SERVER_USAGE error for Next.js 13.3.1+
### Patch Changes
- Updated dependencies [eda14fa8a]
- @blitzjs/rpc@2.0.0-beta.27
- blitz@2.0.0-beta.27
## 2.0.0-beta.26
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/next",
"version": "2.0.0-beta.26",
"version": "2.0.0-beta.27",
"homepage": "https://blitzjs.com/",
"repository": {
"type": "git",
@@ -29,7 +29,7 @@
"eslint.js"
],
"dependencies": {
"@blitzjs/rpc": "2.0.0-beta.26",
"@blitzjs/rpc": "2.0.0-beta.27",
"@types/hoist-non-react-statics": "3.3.1",
"debug": "4.3.3",
"fs-extra": "10.0.1",
@@ -38,12 +38,12 @@
"supports-color": "8.1.1"
},
"peerDependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"next": "*",
"react": "*"
},
"devDependencies": {
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@testing-library/dom": "8.13.0",
"@testing-library/jest-dom": "5.16.3",
"@testing-library/react": "13.4.0",
@@ -53,7 +53,7 @@
"@types/react": "18.0.25",
"@types/react-dom": "17.0.14",
"@types/testing-library__react-hooks": "4.0.0",
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"cross-spawn": "7.0.3",
"find-up": "4.1.0",
"next": "13.3.0",

View File

@@ -1,41 +1,43 @@
import type {
NextConfig,
GetServerSideProps,
GetServerSidePropsResult,
GetStaticProps,
GetStaticPropsResult,
NextApiRequest,
NextApiResponse,
NextConfig,
} from "next"
import {
AddParameters,
AsyncFunc,
BlitzLogger,
BlitzServerPlugin,
Ctx as BlitzCtx,
FirstParam,
RequestMiddleware,
MiddlewareResponse,
BlitzLogger,
handleRequestWithMiddleware,
initializeLogger,
Simplify,
UnionToIntersection,
isRouteUrlObject,
MiddlewareResponse,
reduceBlitzServerPlugins,
RouteUrlObject,
startWatcher,
stopWatcher,
} from "blitz"
import {handleRequestWithMiddleware, startWatcher, stopWatcher} from "blitz"
import {installWebpackConfig, InstallWebpackConfigOptions, ResolverPathOptions} from "@blitzjs/rpc"
import {
DefaultOptions,
QueryClient,
getQueryKey,
getInfiniteQueryKey,
dehydrate,
getInfiniteQueryKey,
getQueryKey,
installWebpackConfig,
InstallWebpackConfigOptions,
QueryClient,
ResolverPathOptions,
} from "@blitzjs/rpc"
import {IncomingMessage, ServerResponse} from "http"
import {withSuperJsonProps} from "./superjson"
import {ParsedUrlQuery} from "querystring"
import {PreviewData} from "next/types"
import {resolveHref} from "next/dist/shared/lib/router/utils/resolve-href"
import {RouteUrlObject, isRouteUrlObject} from "blitz"
export * from "./index-browser"
@@ -130,10 +132,12 @@ export const setupBlitzServer = <TPlugins extends readonly BlitzServerPlugin<obj
plugins,
onError,
logger,
formatError,
}: {
plugins: TPlugins
onError?: (err: Error) => void
logger?: ReturnType<typeof BlitzLogger>
formatError?: (err: Error) => Error
}) => {
initializeLogger(logger ?? BlitzLogger())
@@ -168,9 +172,9 @@ export const setupBlitzServer = <TPlugins extends readonly BlitzServerPlugin<obj
getClient(),
),
)
} catch (err: any) {
onError?.(err)
throw err
} catch (error: any) {
onError?.(error)
throw formatError?.(error) ?? error
}
}
@@ -197,9 +201,9 @@ export const setupBlitzServer = <TPlugins extends readonly BlitzServerPlugin<obj
getClient(),
),
)
} catch (err: any) {
onError?.(err)
throw err
} catch (error: any) {
onError?.(error)
throw formatError?.(error) ?? error
}
}
@@ -215,7 +219,8 @@ export const setupBlitzServer = <TPlugins extends readonly BlitzServerPlugin<obj
])
} catch (error: any) {
onError?.(error)
return res.status(400).send(error)
const formattedError = formatError?.(error) ?? error
return res.status(400).send(formattedError)
}
}

View File

@@ -1,5 +1,15 @@
# @blitzjs/rpc
## 2.0.0-beta.27
### Minor Changes
- eda14fa8a: Add ability to format the error on the server before returning it to the client.
### Patch Changes
- blitz@2.0.0-beta.27
## 2.0.0-beta.26
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/rpc",
"version": "2.0.0-beta.26",
"version": "2.0.0-beta.27",
"homepage": "https://blitzjs.com/",
"repository": {
"type": "git",
@@ -37,18 +37,18 @@
},
"peerDependencies": {
"@tanstack/query-core": "4.24.4",
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"next": "*",
"react": "*"
},
"devDependencies": {
"@blitzjs/auth": "2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/auth": "2.0.0-beta.27",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@tanstack/query-core": "4.24.4",
"@types/debug": "4.1.7",
"@types/react": "18.0.25",
"@types/react-dom": "17.0.14",
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"next": "13.3.0",
"react": "18.2.0",
"react-dom": "18.2.0",

View File

@@ -1,6 +1,6 @@
import {assert, baseLogger, Ctx, newLine, prettyMs, ResolverConfig} from "blitz"
import {NextApiRequest, NextApiResponse} from "next"
import {deserialize, serialize as superjsonSerialize, parse} from "superjson"
import {deserialize, parse, serialize as superjsonSerialize} from "superjson"
import {resolve} from "path"
import chalk from "chalk"
@@ -149,6 +149,7 @@ async function getResolverMap(): Promise<ResolverFiles | null | undefined> {
interface RpcConfig {
onError?: (error: Error) => void
formatError?: (error: Error) => Error
}
export function rpcHandler(config: RpcConfig) {
@@ -265,7 +266,8 @@ export function rpcHandler(config: RpcConfig) {
error.statusCode = 500
}
const serializedError = superjsonSerialize(error)
const formattedError = config.formatError?.(error) ?? error
const serializedError = superjsonSerialize(formattedError)
res.json({
result: null,

View File

@@ -1,5 +1,12 @@
# blitz
## 2.0.0-beta.27
### Patch Changes
- Updated dependencies [d814c2d2d]
- @blitzjs/generator@2.0.0-beta.27
## 2.0.0-beta.26
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "blitz",
"version": "2.0.0-beta.26",
"version": "2.0.0-beta.27",
"homepage": "https://blitzjs.com/",
"repository": {
"type": "git",
@@ -30,7 +30,7 @@
"blitz": "bin/blitz"
},
"dependencies": {
"@blitzjs/generator": "2.0.0-beta.26",
"@blitzjs/generator": "2.0.0-beta.27",
"@mrleebo/prisma-ast": "0.2.6",
"@types/global-agent": "2.1.1",
"arg": "5.0.1",
@@ -80,7 +80,7 @@
"watchpack": "2.1.1"
},
"devDependencies": {
"@blitzjs/config": "workspace:2.0.0-beta.26",
"@blitzjs/config": "workspace:2.0.0-beta.27",
"@types/cookie": "0.4.1",
"@types/cross-spawn": "6.0.2",
"@types/debug": "4.1.7",

View File

@@ -12,9 +12,8 @@ import {codegenTasks} from "../utils/codegen-tasks"
type NotUndefined<T> = T extends undefined ? never : T
const forms: Record<NotUndefined<AppGeneratorOptions["form"]>, string> = {
finalform: "React Final Form (recommended)",
tanstack: "Tanstack Form (Recommended)",
hookform: "React Hook Form",
formik: "Formik",
}
const language = {
@@ -75,7 +74,7 @@ const args = arg(
let projectName: string = ""
let projectPath: string = ""
let projectLanguage: string | TLanguage = ""
let projectFormLib: AppGeneratorOptions["form"] = "finalform"
let projectFormLib: AppGeneratorOptions["form"] = "tanstack"
let projectTemplate: AppGeneratorOptions["template"] = templates.full
let projectPkgManger: TPkgManager = PREFERABLE_PKG_MANAGER
let shouldInstallDeps: boolean = true

View File

@@ -16,6 +16,7 @@ export const codegenTasks = async () => {
*/
const nextDir = await resolveCwd("next")
const nextClientIndex = join(nextDir, "../..", "client", "index.js")
console.log(nextClientIndex)
const readFile = await fs.readFile(nextClientIndex)
const packageJson = await getPackageJson()
const version = packageJson.dependencies.next
@@ -39,15 +40,24 @@ export const codegenTasks = async () => {
)
await fs.writeFile(nextClientIndex, updatedFile)
log.success("Next.js was successfully patched with a React Suspense fix")
} else if (nextVersion && semver.satisfies(nextVersion, ">=13.2")) {
} else if (nextVersion && semver.satisfies(nextVersion, "13.1 - 13.3.0")) {
const updatedFile = readFile
.toString()
.replace(
/_onRecoverableError\.default/,
/_onRecoverableError\.default$/gm,
`(err) => (err.toString().includes("DYNAMIC_SERVER_USAGE") || err.toString().includes("could not finish this Suspense boundary") || err.toString().includes("Minified React error #419")) ? null : _onRecoverableError.default(err)`,
)
await fs.writeFile(nextClientIndex, updatedFile)
log.success("Next.js was successfully patched with a React Suspense fix")
} else if (nextVersion && semver.satisfies(nextVersion, ">=13.3.1")) {
const updatedFile = readFile
.toString()
.replace(
/_onrecoverableerror\.default$/gm,
`(err) => (err.toString().includes("DYNAMIC_SERVER_USAGE") || err.toString().includes("could not finish this Suspense boundary") || err.toString().includes("Minified React error #419")) ? null : _onrecoverableerror.default(err)`,
)
await fs.writeFile(nextClientIndex, updatedFile)
log.success("Next.js was successfully patched with a React Suspense fix")
}
} catch (err) {
log.error(JSON.stringify(err, null, 2))

View File

@@ -1,13 +1,10 @@
import {join, dirname} from "path"
import {join} from "path"
import os from "os"
import {promises} from "fs"
const readFile = promises.readFile
import {outputFile, readdir} from "fs-extra"
import findUp from "find-up"
import resolveFrom from "resolve-from"
import {outputFile, readdir, readFile} from "fs-extra"
import Watchpack from "watchpack"
import {isInternalBlitzMonorepoDevelopment} from "./helpers"
import {findNodeModulesRoot} from "./find-node-modules"
const debug = require("debug")("blitz")
export const CONFIG_FILE = ".blitz.config.compiled.js"
export const NEXT_CONFIG_FILE = "next.config.js"

View File

@@ -1,5 +1,5 @@
import {IncomingMessage, ServerResponse} from "http"
import {compose, Ctx, RequestMiddleware, MiddlewareNext, MiddlewareResponse} from "./index-server"
import {compose, Ctx, MiddlewareNext, MiddlewareResponse, RequestMiddleware} from "./index-server"
export async function handleRequestWithMiddleware<
Req extends IncomingMessage = IncomingMessage,

View File

@@ -1,5 +1,13 @@
# @blitzjs/codemod
## 2.0.0-beta.27
### Patch Changes
- Updated dependencies [d814c2d2d]
- @blitzjs/generator@2.0.0-beta.27
- blitz@2.0.0-beta.27
## 2.0.0-beta.26
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/codemod",
"version": "2.0.0-beta.26",
"version": "2.0.0-beta.27",
"scripts": {
"build": "unbuild",
"dev": "watch unbuild src --wait=0.2",
@@ -25,9 +25,9 @@
"@babel/plugin-proposal-class-properties": "7.17.12",
"@babel/plugin-syntax-jsx": "7.17.12",
"@babel/plugin-syntax-typescript": "7.17.12",
"@blitzjs/generator": "2.0.0-beta.26",
"@blitzjs/generator": "2.0.0-beta.27",
"arg": "5.0.1",
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"chalk": "^4.1.0",
"cross-spawn": "7.0.3",
"debug": "4.3.3",

View File

@@ -1,5 +1,7 @@
# @blitzjs/config
## 2.0.0-beta.27
## 2.0.0-beta.26
## 2.0.0-beta.25

View File

@@ -1,7 +1,7 @@
{
"name": "@blitzjs/config",
"private": true,
"version": "2.0.0-beta.26",
"version": "2.0.0-beta.27",
"license": "MIT",
"dependencies": {
"@typescript-eslint/eslint-plugin": "5.42.1",

View File

@@ -1,5 +1,11 @@
# @blitzjs/generator
## 2.0.0-beta.27
### Patch Changes
- d814c2d2d: fix: add missing key prop to LabelSelectField
## 2.0.0-beta.26
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/generator",
"version": "2.0.0-beta.26",
"version": "2.0.0-beta.27",
"homepage": "https://blitzjs.com/",
"repository": {
"type": "git",
@@ -54,7 +54,7 @@
"zod": "3.20.2"
},
"devDependencies": {
"@blitzjs/config": "2.0.0-beta.26",
"@blitzjs/config": "2.0.0-beta.27",
"@juanm04/cpx": "2.0.1",
"@types/babel__core": "7.1.19",
"@types/diff": "5.0.2",

View File

@@ -33,7 +33,7 @@ export interface AppGeneratorOptions extends GeneratorOptions {
version: string
skipInstall: boolean
skipGit: boolean
form: "finalform" | "hookform" | "formik"
form: "tanstack" | "hookform"
onPostInstall?: () => Promise<void>
}
@@ -284,18 +284,14 @@ export class AppGenerator extends Generator<AppGeneratorOptions> {
const type = this.options.form
switch (type) {
case "finalform":
pkg.dependencies["final-form"] = "4.x"
pkg.dependencies["react-final-form"] = "6.x"
case "tanstack":
pkg.dependencies["@tanstack/react-form"] = "0.x"
break
case "hookform":
pkg.dependencies["react-hook-form"] = "7.x"
pkg.dependencies["@hookform/resolvers"] = "2.x"
pkg.dependencies["@hookform/error-message"] = "2.x"
break
case "formik":
pkg.dependencies["formik"] = "2.x"
break
}
this.fs.move(
this.destinationPath(`_forms/${type}/Form.${ext}`),

View File

@@ -1,59 +0,0 @@
import { ReactNode, PropsWithoutRef } from "react"
import { Form as FinalForm, FormProps as FinalFormProps } from "react-final-form"
import { z } from "zod"
import { validateZodSchema } from "blitz"
export { FORM_ERROR } from "final-form"
export interface FormProps<S extends z.ZodType<any, any>>
extends Omit<PropsWithoutRef<JSX.IntrinsicElements["form"]>, "onSubmit"> {
/** All your form fields */
children?: ReactNode
/** Text to display in the submit button */
submitText?: string
schema?: S
onSubmit: FinalFormProps<z.infer<S>>["onSubmit"]
initialValues?: FinalFormProps<z.infer<S>>["initialValues"]
}
export function Form<S extends z.ZodType<any, any>>({
children,
submitText,
schema,
initialValues,
onSubmit,
...props
}: FormProps<S>) {
return (
<FinalForm
initialValues={initialValues}
validate={validateZodSchema(schema)}
onSubmit={onSubmit}
render={({ handleSubmit, submitting, submitError }) => (
<form onSubmit={handleSubmit} className="form" {...props}>
{/* Form fields supplied as children are rendered here */}
{children}
{submitError && (
<div role="alert" style={{ color: "red" }}>
{submitError}
</div>
)}
{submitText && (
<button type="submit" disabled={submitting}>
{submitText}
</button>
)}
<style global jsx>{`
.form > * + * {
margin-top: 1rem;
}
`}</style>
</form>
)}
/>
)
}
export default Form

View File

@@ -1,60 +0,0 @@
import { forwardRef, PropsWithoutRef } from "react"
import { useField } from "react-final-form"
export interface LabeledSelectFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["select"]> {
/** Field name. */
name: string
/** Field label. */
label: string
type?: "number" | "string"
options: any
outerProps?: PropsWithoutRef<JSX.IntrinsicElements["div"]>
}
export const LabeledSelectField = forwardRef<HTMLSelectElement, LabeledSelectFieldProps>(
({ name, label, outerProps, options, type="number", ...props }, ref) => {
const {
input,
meta: { touched, error, submitError, submitting },
} = useField(name, {
parse: type === "number" ? Number : undefined,
})
const normalizedError = Array.isArray(error) ? error.join(", ") : error || submitError
return (
<div {...outerProps}>
<label>
{label}
<select {...input} disabled={submitting} {...props} ref={ref}>
{options && options.map((value) => <option key={value.id} value={value.id}>{value[name]}</option>)}
</select>
</label>
{touched && normalizedError && (
<div role="alert" style={{ color: "red" }}>
{normalizedError}
</div>
)}
<style jsx>{`
label {
display: flex;
flex-direction: column;
align-items: start;
font-size: 1rem;
}
select {
font-size: 1rem;
padding: 0.25rem 0.5rem;
border-radius: 3px;
appearance: none;
margin-top: 0.5rem;
}
`}</style>
</div>
)
}
)
export default LabeledSelectField

View File

@@ -1,66 +0,0 @@
import { forwardRef, ComponentPropsWithoutRef, PropsWithoutRef } from "react"
import { useField, UseFieldConfig } from "react-final-form"
export interface LabeledTextFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["input"]> {
/** Field name. */
name: string
/** Field label. */
label: string
/** Field type. Doesn't include radio buttons and checkboxes */
type?: "text" | "password" | "email" | "number"
outerProps?: PropsWithoutRef<JSX.IntrinsicElements["div"]>
labelProps?: ComponentPropsWithoutRef<"label">
fieldProps?: UseFieldConfig<string>
}
export const LabeledTextField = forwardRef<HTMLInputElement, LabeledTextFieldProps>(
({ name, label, outerProps, fieldProps, labelProps, ...props }, ref) => {
const {
input,
meta: { touched, error, submitError, submitting },
} = useField(name, {
parse:
props.type === "number"
? (Number as any)
: // Converting `""` to `null` ensures empty values will be set to null in the DB
(v) => (v === "" ? null : v),
...fieldProps,
})
const normalizedError = Array.isArray(error) ? error.join(", ") : error || submitError
return (
<div {...outerProps}>
<label {...labelProps}>
{label}
<input {...input} disabled={submitting} {...props} ref={ref} />
</label>
{touched && normalizedError && (
<div role="alert" style={{ color: "red" }}>
{normalizedError}
</div>
)}
<style jsx>{`
label {
display: flex;
flex-direction: column;
align-items: start;
font-size: 1rem;
}
input {
font-size: 1rem;
padding: 0.25rem 0.5rem;
border-radius: 3px;
border: 1px solid purple;
appearance: none;
margin-top: 0.5rem;
}
`}</style>
</div>
)
}
)
export default LabeledTextField

View File

@@ -1,77 +0,0 @@
import { useState, ReactNode, PropsWithoutRef } from "react"
import { Formik, FormikProps } from "formik"
import { validateZodSchema } from "blitz"
import { z } from "zod"
export interface FormProps<S extends z.ZodType<any, any>>
extends Omit<PropsWithoutRef<JSX.IntrinsicElements["form"]>, "onSubmit"> {
/** All your form fields */
children?: ReactNode
/** Text to display in the submit button */
submitText?: string
schema?: S
onSubmit: (values: z.infer<S>) => Promise<void | OnSubmitResult>
initialValues?: FormikProps<z.infer<S>>["initialValues"]
}
interface OnSubmitResult {
FORM_ERROR?: string
[prop: string]: any
}
export const FORM_ERROR = "FORM_ERROR"
export function Form<S extends z.ZodType<any, any>>({
children,
submitText,
schema,
initialValues,
onSubmit,
...props
}: FormProps<S>) {
const [formError, setFormError] = useState<string | null>(null)
return (
<Formik
initialValues={initialValues || {}}
validate={validateZodSchema(schema)}
onSubmit={async (values, { setErrors }) => {
const { FORM_ERROR, ...otherErrors } = (await onSubmit(values)) || {}
if (FORM_ERROR) {
setFormError(FORM_ERROR)
}
if (Object.keys(otherErrors).length > 0) {
setErrors(otherErrors)
}
}}
>
{({ handleSubmit, isSubmitting }) => (
<form onSubmit={handleSubmit} className="form" {...props}>
{/* Form fields supplied as children are rendered here */}
{children}
{formError && (
<div role="alert" style={{ color: "red" }}>
{formError}
</div>
)}
{submitText && (
<button type="submit" disabled={isSubmitting}>
{submitText}
</button>
)}
<style global jsx>{`
.form > * + * {
margin-top: 1rem;
}
`}</style>
</form>
)}
</Formik>
)
}
export default Form

View File

@@ -1,68 +0,0 @@
import { forwardRef, PropsWithoutRef } from "react";
import { useFormikContext, ErrorMessage, Field } from "formik";
export interface LabeledSelectFieldProps
extends PropsWithoutRef<JSX.IntrinsicElements["select"]> {
/** Field name. */
name: string;
/** Field label. */
label: string;
/** Field options. */
options: any;
outerProps?: PropsWithoutRef<JSX.IntrinsicElements["div"]>;
}
export const LabeledSelectField = forwardRef<
HTMLSelectElement,
LabeledSelectFieldProps
>(({ name, label, outerProps, options, ...props }, ref) => {
const { isSubmitting } = useFormikContext();
return (
<div {...outerProps}>
<label
style={{
display: "flex",
flexDirection: "column",
alignItems: "start",
fontSize: "1rem",
}}
>
{label}
<Field
{...props}
disabled={isSubmitting}
ref={ref}
name={name}
as="select"
style={{
fontSize: "1rem",
padding: " 0.25rem 0.4rem",
borderRadius: "3px",
border: "1px solid purple",
marginTop: "0.5rem",
backgroundColor: "white",
}}
>
<option value="" selected disabled hidden>
Select {label}
</option>
{options.map((option, index) => (
<option key={index} value={option.id}>
{option[name]}
</option>
))}
</Field>
</label>
<ErrorMessage name={name}>
{(msg) => (
<div role="alert" style={{ color: "red" }}>
{msg}
</div>
)}
</ErrorMessage>
</div>
);
});
export default LabeledSelectField;

View File

@@ -1,55 +0,0 @@
import { forwardRef, PropsWithoutRef } from "react"
import { useField, useFormikContext, ErrorMessage } from "formik"
export interface LabeledTextFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["input"]> {
/** Field name. */
name: string
/** Field label. */
label: string
/** Field type. Doesn't include radio buttons and checkboxes */
type?: "text" | "password" | "email" | "number"
outerProps?: PropsWithoutRef<JSX.IntrinsicElements["div"]>
}
export const LabeledTextField = forwardRef<HTMLInputElement, LabeledTextFieldProps>(
({ name, label, outerProps, ...props }, ref) => {
const [input] = useField(name)
const { isSubmitting } = useFormikContext()
return (
<div {...outerProps}>
<label>
{label}
<input {...input} disabled={isSubmitting} {...props} ref={ref} />
</label>
<ErrorMessage name={name}>
{(msg) => (
<div role="alert" style={{ color: "red" }}>
{msg}
</div>
)}
</ErrorMessage>
<style jsx>{`
label {
display: flex;
flex-direction: column;
align-items: start;
font-size: 1rem;
}
input {
font-size: 1rem;
padding: 0.25rem 0.5rem;
border-radius: 3px;
border: 1px solid purple;
appearance: none;
margin-top: 0.5rem;
}
`}</style>
</div>
)
}
)
export default LabeledTextField

View File

@@ -25,7 +25,7 @@
"@typescript-eslint/parser": "5.9.1"
},
"devDependencies": {
"@blitzjs/config": "2.0.0-beta.26",
"@blitzjs/config": "2.0.0-beta.27",
"@types/react": "18.0.25",
"@types/react-dom": "17.0.14",
"react": "18.2.0",

225
pnpm-lock.yaml generated
View File

@@ -102,7 +102,7 @@ importers:
"@types/react": 18.0.25
"@typescript-eslint/eslint-plugin": 5.42.1
"@vitejs/plugin-react": 2.2.0
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
eslint: 8.27.0
eslint-config-next: 12.3.1
eslint-config-prettier: 8.5.0
@@ -182,7 +182,7 @@ importers:
"@types/preview-email": 2.0.1
"@types/react": 18.0.25
"@typescript-eslint/eslint-plugin": 5.42.1
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
eslint: 8.27.0
eslint-config-next: 12.3.1
eslint-config-prettier: 8.5.0
@@ -291,9 +291,9 @@ importers:
integration-tests/auth:
specifiers:
"@blitzjs/auth": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/next": workspace:2.0.0-beta.26
"@blitzjs/auth": workspace:2.0.0-beta.27
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/next": workspace:2.0.0-beta.27
"@next/bundle-analyzer": 12.0.8
"@prisma/client": 4.6.1
"@types/express": 4.17.13
@@ -302,7 +302,7 @@ importers:
"@types/node-fetch": 2.6.1
"@types/react": 18.0.25
b64-lite: 1.4.0
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
eslint: 8.27.0
fs-extra: 10.0.1
get-port: 6.1.2
@@ -348,10 +348,10 @@ importers:
integration-tests/auth-with-rpc:
specifiers:
"@blitzjs/auth": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/next": workspace:2.0.0-beta.26
"@blitzjs/rpc": workspace:2.0.0-beta.26
"@blitzjs/auth": workspace:2.0.0-beta.27
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/next": workspace:2.0.0-beta.27
"@blitzjs/rpc": workspace:2.0.0-beta.27
"@hookform/error-message": 2.0.0
"@hookform/resolvers": 2.9.10
"@next/bundle-analyzer": 12.0.8
@@ -364,7 +364,7 @@ importers:
"@types/react": 18.0.25
"@typescript-eslint/eslint-plugin": 5.42.1
"@vitejs/plugin-react": 2.2.0
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
delay: 5.0.0
eslint: 8.27.0
eslint-config-next: 12.3.1
@@ -431,10 +431,10 @@ importers:
integration-tests/get-initial-props:
specifiers:
"@blitzjs/auth": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/next": workspace:2.0.0-beta.26
"@blitzjs/rpc": workspace:2.0.0-beta.26
"@blitzjs/auth": workspace:2.0.0-beta.27
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/next": workspace:2.0.0-beta.27
"@blitzjs/rpc": workspace:2.0.0-beta.27
"@next/bundle-analyzer": 12.0.8
"@prisma/client": 4.6.1
"@types/express": 4.17.13
@@ -442,7 +442,7 @@ importers:
"@types/node-fetch": 2.6.1
"@types/react": 18.0.25
b64-lite: 1.4.0
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
eslint: 8.27.0
fs-extra: 10.0.1
get-port: 6.1.2
@@ -480,15 +480,15 @@ importers:
integration-tests/middleware:
specifiers:
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/next": workspace:2.0.0-beta.26
"@blitzjs/rpc": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/next": workspace:2.0.0-beta.27
"@blitzjs/rpc": workspace:2.0.0-beta.27
"@next/bundle-analyzer": 12.0.8
"@types/express": 4.17.13
"@types/fs-extra": 9.0.13
"@types/node-fetch": 2.6.1
"@types/react": 18.0.25
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
eslint: 8.27.0
fs-extra: 10.0.1
get-port: 6.1.2
@@ -519,10 +519,10 @@ importers:
integration-tests/next-13-app-dir:
specifiers:
"@blitzjs/auth": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/next": workspace:2.0.0-beta.26
"@blitzjs/rpc": workspace:2.0.0-beta.26
"@blitzjs/auth": workspace:2.0.0-beta.27
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/next": workspace:2.0.0-beta.27
"@blitzjs/rpc": workspace:2.0.0-beta.27
"@next/bundle-analyzer": 12.0.8
"@prisma/client": 4.6.1
"@types/express": 4.17.13
@@ -531,7 +531,7 @@ importers:
"@types/node-fetch": 2.6.1
"@types/react": 18.0.25
b64-lite: 1.4.0
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
eslint: 8.27.0
fs-extra: 10.0.1
get-port: 6.1.2
@@ -578,10 +578,10 @@ importers:
integration-tests/no-suspense:
specifiers:
"@blitzjs/auth": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/next": workspace:2.0.0-beta.26
"@blitzjs/rpc": workspace:2.0.0-beta.26
"@blitzjs/auth": workspace:2.0.0-beta.27
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/next": workspace:2.0.0-beta.27
"@blitzjs/rpc": workspace:2.0.0-beta.27
"@next/bundle-analyzer": 12.0.8
"@prisma/client": 4.6.1
"@types/express": 4.17.13
@@ -589,7 +589,7 @@ importers:
"@types/node-fetch": 2.6.1
"@types/react": 18.0.25
b64-lite: 1.4.0
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
eslint: 8.27.0
fs-extra: 10.0.1
get-port: 6.1.2
@@ -627,16 +627,16 @@ importers:
integration-tests/qm:
specifiers:
"@blitzjs/auth": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/next": workspace:2.0.0-beta.26
"@blitzjs/rpc": workspace:2.0.0-beta.26
"@blitzjs/auth": workspace:2.0.0-beta.27
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/next": workspace:2.0.0-beta.27
"@blitzjs/rpc": workspace:2.0.0-beta.27
"@prisma/client": 4.6.1
"@tanstack/react-query": 4.0.10
"@testing-library/react": 13.4.0
"@types/react": 18.0.25
"@vitejs/plugin-react": 1.3.0
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
delay: 5.0.0
eslint: 8.27.0
eslint-config-next: latest
@@ -665,16 +665,16 @@ importers:
"@vitejs/plugin-react": 1.3.0
delay: 5.0.0
eslint: 8.27.0
eslint-config-next: 13.3.0_rmayb2veg2btbq6mbmnyivgasy
eslint-config-next: 13.3.4_rmayb2veg2btbq6mbmnyivgasy
eslint-plugin-testing-library: 5.0.1_rmayb2veg2btbq6mbmnyivgasy
jsdom: 19.0.0
typescript: 4.8.4
integration-tests/react-query-utils:
specifiers:
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/next": workspace:2.0.0-beta.26
"@blitzjs/rpc": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/next": workspace:2.0.0-beta.27
"@blitzjs/rpc": workspace:2.0.0-beta.27
"@next/bundle-analyzer": 12.0.8
"@prisma/client": 4.6.1
"@types/express": 4.17.13
@@ -682,7 +682,7 @@ importers:
"@types/node-fetch": 2.6.1
"@types/react": 18.0.25
b64-lite: 1.4.0
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
eslint: 8.27.0
fs-extra: 10.0.1
get-port: 6.1.2
@@ -719,15 +719,15 @@ importers:
integration-tests/rpc:
specifiers:
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/next": workspace:2.0.0-beta.26
"@blitzjs/rpc": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/next": workspace:2.0.0-beta.27
"@blitzjs/rpc": workspace:2.0.0-beta.27
"@types/express": 4.17.13
"@types/fs-extra": 9.0.13
"@types/node-fetch": 2.6.1
"@types/react": 18.0.25
b64-lite: 1.4.0
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
eslint: 8.27.0
fs-extra: 10.0.1
next: 13.3.0
@@ -754,15 +754,15 @@ importers:
integration-tests/rpc-path-root:
specifiers:
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/next": workspace:2.0.0-beta.26
"@blitzjs/rpc": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/next": workspace:2.0.0-beta.27
"@blitzjs/rpc": workspace:2.0.0-beta.27
"@types/express": 4.17.13
"@types/fs-extra": 9.0.13
"@types/node-fetch": 2.6.1
"@types/react": 18.0.25
b64-lite: 1.4.0
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
eslint: 8.27.0
fs-extra: 10.0.1
next: 13.3.0
@@ -789,10 +789,10 @@ importers:
integration-tests/trailing-slash:
specifiers:
"@blitzjs/auth": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/next": workspace:2.0.0-beta.26
"@blitzjs/rpc": workspace:2.0.0-beta.26
"@blitzjs/auth": workspace:2.0.0-beta.27
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/next": workspace:2.0.0-beta.27
"@blitzjs/rpc": workspace:2.0.0-beta.27
"@next/bundle-analyzer": 12.0.8
"@prisma/client": 4.6.1
"@types/express": 4.17.13
@@ -800,7 +800,7 @@ importers:
"@types/node-fetch": 2.6.1
"@types/react": 18.0.25
b64-lite: 1.4.0
blitz: workspace:2.0.0-beta.26
blitz: workspace:2.0.0-beta.27
eslint: 8.27.0
fs-extra: 10.0.1
get-port: 6.1.2
@@ -896,8 +896,8 @@ importers:
packages/blitz:
specifiers:
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/generator": 2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/generator": 2.0.0-beta.27
"@mrleebo/prisma-ast": 0.2.6
"@types/cookie": 0.4.1
"@types/cross-spawn": 6.0.2
@@ -1049,7 +1049,7 @@ importers:
packages/blitz-auth:
specifiers:
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.27
"@testing-library/react": 13.4.0
"@testing-library/react-hooks": 8.0.1
"@types/b64-lite": 1.3.0
@@ -1064,7 +1064,7 @@ importers:
"@types/secure-password": 3.1.1
b64-lite: 1.4.0
bad-behavior: 1.0.1
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
cookie: 0.4.1
cookie-session: 2.0.0
debug: 4.3.3
@@ -1126,8 +1126,8 @@ importers:
packages/blitz-next:
specifiers:
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/rpc": 2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.27
"@blitzjs/rpc": 2.0.0-beta.27
"@testing-library/dom": 8.13.0
"@testing-library/jest-dom": 5.16.3
"@testing-library/react": 13.4.0
@@ -1138,7 +1138,7 @@ importers:
"@types/react": 18.0.25
"@types/react-dom": 17.0.14
"@types/testing-library__react-hooks": 4.0.0
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
cross-spawn: 7.0.3
debug: 4.3.3
find-up: 4.1.0
@@ -1189,8 +1189,8 @@ importers:
packages/blitz-rpc:
specifiers:
"@blitzjs/auth": 2.0.0-beta.26
"@blitzjs/config": workspace:2.0.0-beta.26
"@blitzjs/auth": 2.0.0-beta.27
"@blitzjs/config": workspace:2.0.0-beta.27
"@swc/core": 1.3.7
"@tanstack/query-core": 4.24.4
"@tanstack/react-query": 4.24.4
@@ -1199,7 +1199,7 @@ importers:
"@types/react-dom": 17.0.14
b64-lite: 1.4.0
bad-behavior: 1.0.1
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
chalk: ^4.1.0
debug: 4.3.3
next: 13.3.0
@@ -1244,12 +1244,12 @@ importers:
"@babel/plugin-syntax-typescript": 7.17.12
"@babel/preset-env": 7.12.10
"@blitzjs/config": workspace:*
"@blitzjs/generator": 2.0.0-beta.26
"@blitzjs/generator": 2.0.0-beta.27
"@types/jscodeshift": 0.11.2
"@types/node": 18.11.9
arg: 5.0.1
ast-types: 0.14.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
chalk: ^4.1.0
cross-spawn: 7.0.3
debug: 4.3.3
@@ -1304,7 +1304,7 @@ importers:
"@babel/plugin-transform-typescript": 7.12.1
"@babel/preset-env": 7.12.10
"@babel/types": 7.12.10
"@blitzjs/config": 2.0.0-beta.26
"@blitzjs/config": 2.0.0-beta.27
"@juanm04/cpx": 2.0.1
"@mrleebo/prisma-ast": 0.4.1
"@types/babel__core": 7.1.19
@@ -1403,7 +1403,7 @@ importers:
packages/pkg-template:
specifiers:
"@blitzjs/config": 2.0.0-beta.26
"@blitzjs/config": 2.0.0-beta.27
"@types/react": 18.0.25
"@types/react-dom": 17.0.14
"@typescript-eslint/eslint-plugin": 5.42.1
@@ -1427,7 +1427,7 @@ importers:
recipes/base-web:
specifiers:
"@types/jscodeshift": 0.11.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1438,7 +1438,7 @@ importers:
recipes/bulma:
specifiers:
"@types/jscodeshift": 0.11.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1450,7 +1450,7 @@ importers:
specifiers:
"@types/jscodeshift": 0.11.2
ast-types: 0.14.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1463,7 +1463,7 @@ importers:
specifiers:
"@types/jscodeshift": 0.11.2
ast-types: 0.14.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1475,7 +1475,7 @@ importers:
recipes/emotion:
specifiers:
"@types/jscodeshift": 0.11.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1485,20 +1485,20 @@ importers:
recipes/gh-action-yarn-mariadb:
specifiers:
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
dependencies:
blitz: link:../../packages/blitz
recipes/gh-action-yarn-postgres:
specifiers:
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
dependencies:
blitz: link:../../packages/blitz
recipes/ghost:
specifiers:
"@types/jscodeshift": 0.11.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1509,7 +1509,7 @@ importers:
recipes/graphql-apollo-server:
specifiers:
"@types/jscodeshift": 0.11.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
uuid: ^8.3.1
dependencies:
@@ -1522,7 +1522,7 @@ importers:
recipes/logrocket:
specifiers:
"@types/jscodeshift": 0.11.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1533,7 +1533,7 @@ importers:
recipes/material-ui:
specifiers:
"@types/jscodeshift": 0.11.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1545,7 +1545,7 @@ importers:
specifiers:
"@types/jscodeshift": 0.11.2
ast-types: 0.14.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1556,13 +1556,13 @@ importers:
recipes/passenger:
specifiers:
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
dependencies:
blitz: link:../../packages/blitz
recipes/quirrel:
specifiers:
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
dependencies:
blitz: link:../../packages/blitz
@@ -1570,7 +1570,7 @@ importers:
specifiers:
"@types/jscodeshift": 0.11.2
ast-types: 0.14.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1581,14 +1581,14 @@ importers:
recipes/render:
specifiers:
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
dependencies:
blitz: link:../../packages/blitz
recipes/secureheaders:
specifiers:
"@types/jscodeshift": 0.11.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
uuid: ^8.3.1
dependencies:
@@ -1601,7 +1601,7 @@ importers:
recipes/stitches:
specifiers:
"@types/jscodeshift": 0.11.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1613,7 +1613,7 @@ importers:
specifiers:
"@types/jscodeshift": 0.11.2
ast-types: 0.14.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1625,7 +1625,7 @@ importers:
recipes/tailwind:
specifiers:
"@types/jscodeshift": 0.11.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1637,7 +1637,7 @@ importers:
specifiers:
"@types/jscodeshift": 0.11.2
ast-types: 0.14.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1649,7 +1649,7 @@ importers:
recipes/vanilla-extract:
specifiers:
"@types/jscodeshift": 0.11.2
blitz: 2.0.0-beta.26
blitz: 2.0.0-beta.27
jscodeshift: 0.13.0
dependencies:
blitz: link:../../packages/blitz
@@ -1778,7 +1778,7 @@ packages:
"@babel/traverse": 7.18.2
"@babel/types": 7.18.4
convert-source-map: 1.8.0
debug: 4.3.3
debug: 4.3.4
gensync: 1.0.0-beta.2
json5: 2.2.1
semver: 6.3.0
@@ -1803,7 +1803,7 @@ packages:
"@babel/traverse": 7.18.2_supports-color@8.1.1
"@babel/types": 7.18.4
convert-source-map: 1.8.0
debug: 4.3.3_supports-color@8.1.1
debug: 4.3.4_supports-color@8.1.1
gensync: 1.0.0-beta.2
json5: 2.2.1
semver: 6.3.0
@@ -1829,7 +1829,7 @@ packages:
"@babel/traverse": 7.20.1
"@babel/types": 7.20.2
convert-source-map: 1.8.0
debug: 4.3.3
debug: 4.3.4
gensync: 1.0.0-beta.2
json5: 2.2.1
semver: 6.3.0
@@ -1854,7 +1854,7 @@ packages:
"@babel/traverse": 7.20.1_supports-color@8.1.1
"@babel/types": 7.20.2
convert-source-map: 1.8.0
debug: 4.3.3_supports-color@8.1.1
debug: 4.3.4_supports-color@8.1.1
gensync: 1.0.0-beta.2
json5: 2.2.1
semver: 6.3.0
@@ -4293,7 +4293,7 @@ packages:
"@babel/helper-split-export-declaration": 7.16.7
"@babel/parser": 7.18.4
"@babel/types": 7.18.4
debug: 4.3.3
debug: 4.3.4
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -4313,7 +4313,7 @@ packages:
"@babel/helper-split-export-declaration": 7.16.7
"@babel/parser": 7.18.4
"@babel/types": 7.18.4
debug: 4.3.3_supports-color@8.1.1
debug: 4.3.4_supports-color@8.1.1
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -4334,7 +4334,7 @@ packages:
"@babel/helper-split-export-declaration": 7.18.6
"@babel/parser": 7.20.3
"@babel/types": 7.20.2
debug: 4.3.3
debug: 4.3.4
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -4354,7 +4354,7 @@ packages:
"@babel/helper-split-export-declaration": 7.18.6
"@babel/parser": 7.20.3
"@babel/types": 7.20.2
debug: 4.3.3_supports-color@8.1.1
debug: 4.3.4_supports-color@8.1.1
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -5330,10 +5330,10 @@ packages:
glob: 7.1.7
dev: true
/@next/eslint-plugin-next/13.3.0:
/@next/eslint-plugin-next/13.3.4:
resolution:
{
integrity: sha512-wuGN5qSEjSgcq9fVkH0Y/qIPFjnZtW3ZPwfjJOn7l/rrf6y8J24h/lo61kwqunTyzZJm/ETGfGVU9PUs8cnzEA==,
integrity: sha512-mvS+HafOPy31oJbAi920WJXMdjbyb4v5FAMr9PeGZfRIdEcsLkA3mU/ZvmwzovJgP3nAWw2e2yM8iIFW8VpvIA==,
}
dependencies:
glob: 7.1.7
@@ -5567,7 +5567,7 @@ packages:
glob: 7.2.0
is-reference: 1.2.1
magic-string: 0.25.9
resolve: 1.22.0
resolve: 1.22.1
rollup: 2.77.2
dev: true
@@ -7808,7 +7808,7 @@ packages:
}
engines: {node: ">= 6.0.0"}
dependencies:
debug: 4.3.3
debug: 4.3.4
transitivePeerDependencies:
- supports-color
@@ -11336,10 +11336,10 @@ packages:
- supports-color
dev: true
/eslint-config-next/13.3.0_rmayb2veg2btbq6mbmnyivgasy:
/eslint-config-next/13.3.4_rmayb2veg2btbq6mbmnyivgasy:
resolution:
{
integrity: sha512-6YEwmFBX0VjBd3ODGW9df0Is0FLaRFdMN8eAahQG9CN6LjQ28J8AFr19ngxqMSg7Qv6Uca/3VeeBosJh1bzu0w==,
integrity: sha512-TknEcP+EdTqLvJ2zMY1KnWqcx8ZHl1C2Tjjbq3qmtWcHRU5oxe1PAsz3vrKG3NOzonSaPcB2SpCSfYqcgj6nfA==,
}
peerDependencies:
eslint: ^7.23.0 || ^8.0.0
@@ -11348,7 +11348,7 @@ packages:
typescript:
optional: true
dependencies:
"@next/eslint-plugin-next": 13.3.0
"@next/eslint-plugin-next": 13.3.4
"@rushstack/eslint-patch": 1.1.3
"@typescript-eslint/parser": 5.43.0_rmayb2veg2btbq6mbmnyivgasy
eslint: 8.27.0
@@ -13606,7 +13606,7 @@ packages:
dependencies:
"@tootallnate/once": 2.0.0
agent-base: 6.0.2
debug: 4.3.3
debug: 4.3.4
transitivePeerDependencies:
- supports-color
@@ -14430,7 +14430,7 @@ packages:
}
engines: {node: ">=10"}
dependencies:
debug: 4.3.3
debug: 4.3.4
istanbul-lib-coverage: 3.2.0
source-map: 0.6.1
transitivePeerDependencies:
@@ -14599,7 +14599,7 @@ packages:
pretty-format: 29.2.1
slash: 3.0.0
strip-json-comments: 3.1.1
ts-node: 10.9.1_cbe7ovvae6zqfnmtgctpgpys54
ts-node: 10.9.1_typescript@4.8.4
transitivePeerDependencies:
- supports-color
@@ -14842,7 +14842,7 @@ packages:
jest-pnp-resolver: 1.2.2_jest-resolve@29.3.0
jest-util: 29.2.1
jest-validate: 29.2.2
resolve: 1.22.0
resolve: 1.22.1
resolve.exports: 1.1.0
slash: 3.0.0
@@ -16797,7 +16797,7 @@ packages:
}
dependencies:
hosted-git-info: 2.8.9
resolve: 1.22.0
resolve: 1.22.1
semver: 5.7.1
validate-npm-package-license: 3.0.4
dev: false
@@ -18763,6 +18763,7 @@ packages:
is-core-module: 2.11.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: true
/resolve/1.22.1:
resolution:
@@ -18894,7 +18895,7 @@ packages:
rollup: ^1.20.0 || ^2.0.0
dependencies:
"@rollup/pluginutils": 4.2.1
debug: 4.3.3
debug: 4.3.4
es-module-lexer: 0.9.3
esbuild: 0.14.51
joycon: 3.1.1
@@ -18915,7 +18916,7 @@ packages:
rollup: ^1.20.0 || ^2.0.0
dependencies:
"@rollup/pluginutils": 4.2.1
debug: 4.3.3_supports-color@8.1.1
debug: 4.3.4_supports-color@8.1.1
es-module-lexer: 0.9.3
esbuild: 0.14.51
joycon: 3.1.1
@@ -20398,6 +20399,7 @@ packages:
typescript: 4.8.4
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
dev: false
/ts-node/10.9.1_ieummqxttktzud32hpyrer46t4:
resolution:
@@ -20464,7 +20466,6 @@ packages:
typescript: 4.8.4
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
dev: false
/tsconfig-paths/3.14.1:
resolution:

View File

@@ -23,7 +23,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -22,7 +22,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -24,7 +24,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -24,7 +24,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -22,7 +22,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -24,6 +24,6 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26"
"blitz": "2.0.0-beta.27"
}
}

View File

@@ -24,6 +24,6 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26"
"blitz": "2.0.0-beta.27"
}
}

View File

@@ -23,7 +23,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -22,7 +22,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0",
"uuid": "^8.3.1"
},

View File

@@ -23,7 +23,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -23,7 +23,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -23,7 +23,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -23,6 +23,6 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26"
"blitz": "2.0.0-beta.27"
}
}

View File

@@ -22,6 +22,6 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26"
"blitz": "2.0.0-beta.27"
}
}

View File

@@ -23,7 +23,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -22,6 +22,6 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26"
"blitz": "2.0.0-beta.27"
}
}

View File

@@ -22,7 +22,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0",
"uuid": "^8.3.1"
},

View File

@@ -24,7 +24,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -24,7 +24,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -29,7 +29,7 @@ export default RecipeBuilder()
stepId: "addStyles",
stepName: "Stylesheet",
explanation: `Adds a root CSS stylesheet where Tailwind is imported and where you can add global styles`,
targetDirectory: "./app/core",
targetDirectory: `./${paths.appSrcDirectory()}/core`,
templatePath: join(__dirname, "templates", "styles"),
templateValues: {},
})
@@ -39,7 +39,10 @@ export default RecipeBuilder()
explanation: `Imports the stylesheet we just added into your app`,
singleFileSearch: paths.app(),
transform(program) {
const stylesImport = j.importDeclaration([], j.literal("app/core/styles/index.css"))
const stylesImport = j.importDeclaration(
[],
j.literal(`${paths.appSrcDirectory()}/core/styles/index.css`),
)
return addImport(program, stylesImport)
},
})

View File

@@ -22,7 +22,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -23,7 +23,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {

View File

@@ -25,7 +25,7 @@
},
"homepage": "https://github.com/blitz-js/blitz#readme",
"dependencies": {
"blitz": "2.0.0-beta.26",
"blitz": "2.0.0-beta.27",
"jscodeshift": "0.13.0"
},
"devDependencies": {