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

Compare commits

..

16 Commits

Author SHA1 Message Date
github-actions[bot]
0fc2d71a18 Version Packages (#4403)
* Version Packages

* chore: its a minor not major

* pnpm lock fix

* Apply suggestions from code review

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Siddharth Suresh <siddh.suresh@gmail.com>
2024-12-25 13:17:16 +00:00
Siddharth Suresh
3fa3a4ef30 chore: support next.js 15 (#4387)
* chore: upgrade to next.js 15

* fix: await cookies and headers in blitz auth

* chore: run codemod

* upgrade to latest react

* fix: add await to blitz rpc handler

* chore: upgrade to latest dynamic import

* fix: remaining type fixes

* Create wild-news-shop.md

* fix: react types

* upgrade testing library

* fix turbopack exports

* fix

* chore: remove outdated `@testing-library/react-hooks`

* Merge branch 'siddharth/upgrade-to-next-15' of https://github.com/blitz-js/blitz into siddharth/upgrade-to-next-15

* upgrade testing library

* fix turbopack exports

* fix

chore: remove outdated `@testing-library/react-hooks`

* upgrade to react 19

* fix unit tests

* fix

* fix

* fix again

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2024-12-23 18:02:30 +00:00
Daniel
565db3c5a8 Fix incorrect terminal message after installation (#4402)
* Fix incorrect terminal message after installation

* Updated changeset
2024-12-23 17:54:09 +00:00
github-actions[bot]
ae04524b4c Version Packages (#4397)
* Version Packages

* pnpm lock update

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Siddharth Suresh <siddh.suresh@gmail.com>
2024-12-23 12:03:32 +00:00
Siddharth Suresh
38d320fd28 chore: Upgrade to prisma v6 (#4400)
* test: upgrade to latest prisma version

* Create twelve-wolves-fix.md
2024-12-23 17:16:25 +05:30
Blitz.js Bot
8723d0053c (meta) added @fungilation as contributor 2024-12-06 22:37:48 -06:00
Gary Fung
ce23d4ed09 Fix turbopack to work with Next 15 (#4396)
* Update turbopack-empty.js

fix https://github.com/blitz-js/blitz/issues/4395

* Create brown-cobras-dream.md

---------

Co-authored-by: Siddharth Suresh <siddh.suresh@gmail.com>
2024-12-07 04:37:43 +00:00
github-actions[bot]
b6c9c4ae6d Version Packages (#4383)
* Version Packages

* pnpm lock update

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Siddharth Suresh <siddh.suresh@gmail.com>
2024-10-21 17:29:25 +00:00
Siddharth Suresh
0b3286468b chore: bump deps (#4380)
* chore: bump deps

* fix version

* Create honest-moons-build.md
2024-10-21 22:42:04 +05:30
Kevin Østerkilde
50f17d21ce chore: update prisma-ast version in blitz package (#4382)
* chore: align prisma-ast dependency versions

* chore: add changeset

* chore: add corrected changeset
2024-10-14 16:59:52 +05:30
Siddharth Suresh
57add5f1c5 chore: update pnpm lock file 2024-10-08 19:23:13 +05:30
github-actions[bot]
3f239e78b6 Version Packages (#4379)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-10-08 19:15:27 +05:30
Blitz.js Bot
3bf90c167c (meta) added @doe-base as contributor 2024-09-30 10:47:47 -05:00
Daniel Idoko
56bd32b553 Fix Incorrect Zod Schema Generation for Datetime Fields (#4377)
* Fix Zod schema generation for datetime fields

* Add changeset for datetime schema fix

* Set changeset to patch release

* chore: update unit test

---------

Co-authored-by: Siddharth Suresh <siddh.suresh@gmail.com>
2024-09-30 15:47:42 +00:00
Kevin Østerkilde
2711291e97 fix: remove views from public Session data (again) (#4375)
* fix: remove views from public Session data (again)

* Update .changeset/small-parents-press.md

---------

Co-authored-by: Siddharth Suresh <siddh.suresh@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2024-09-29 21:17:38 +00:00
Blitz.js Bot
ab29c5bf3f (meta) added @cherniavskii as contributor 2024-09-29 16:07:38 -05:00
118 changed files with 1699 additions and 1731 deletions

View File

@@ -4084,6 +4084,36 @@
"doc",
"code"
]
},
{
"login": "cherniavskii",
"name": "Andrew Cherniavskii",
"avatar_url": "https://avatars.githubusercontent.com/u/13808724?v=4",
"profile": "cherniavskii.com",
"contributions": [
"doc"
]
},
{
"login": "doe-base",
"name": "Daniel Idoko",
"avatar_url": "https://avatars.githubusercontent.com/u/95912955?v=4",
"profile": "https://danielidoko-r3zt.vercel.app/",
"contributions": [
"doc",
"code",
"test"
]
},
{
"login": "fungilation",
"name": "Gary Fung",
"avatar_url": "https://avatars.githubusercontent.com/u/3803466?v=4",
"profile": "https://garyfung.medium.com",
"contributions": [
"doc",
"code"
]
}
],
"contributorsPerLine": 7,

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-430-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-433-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">
@@ -759,6 +759,9 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
<td align="center"><a href="https://timn.tech"><img src="https://avatars.githubusercontent.com/u/6324199?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tim Neutkens</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=timneutkens" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=timneutkens" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=timneutkens" title="Tests">⚠️</a></td>
<td align="center"><a href="https://redyetidev.github.io"><img src="https://avatars.githubusercontent.com/u/38299977?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Aviv Keller</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=RedYetiDev" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/bezalel6"><img src="https://avatars.githubusercontent.com/u/51681171?v=4?s=100" width="100px;" alt=""/><br /><sub><b>bezalel6</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=bezalel6" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=bezalel6" title="Code">💻</a></td>
<td align="center"><a href="cherniavskii.com"><img src="https://avatars.githubusercontent.com/u/13808724?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andrew Cherniavskii</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=cherniavskii" title="Documentation">📖</a></td>
<td align="center"><a href="https://danielidoko-r3zt.vercel.app/"><img src="https://avatars.githubusercontent.com/u/95912955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Daniel Idoko</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=doe-base" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=doe-base" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=doe-base" title="Tests">⚠️</a></td>
<td align="center"><a href="https://garyfung.medium.com"><img src="https://avatars.githubusercontent.com/u/3803466?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gary Fung</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=fungilation" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=fungilation" title="Code">💻</a></td>
</tr>
</table>

View File

@@ -1,5 +1,50 @@
# next-blitz-auth
## 0.1.17
### Patch Changes
- Updated dependencies [565db3c5a]
- Updated dependencies [3fa3a4ef3]
- blitz@2.2.0
- @blitzjs/auth@2.2.0
- @blitzjs/next@2.2.0
- @blitzjs/rpc@2.2.0
- @blitzjs/config@2.2.0
## 0.1.16
### Patch Changes
- Updated dependencies [ce23d4ed0]
- @blitzjs/next@2.1.4
- blitz@2.1.4
- @blitzjs/auth@2.1.4
- @blitzjs/rpc@2.1.4
- @blitzjs/config@2.1.4
## 0.1.15
### Patch Changes
- Updated dependencies [0b3286468]
- Updated dependencies [50f17d21c]
- @blitzjs/auth@2.1.3
- @blitzjs/next@2.1.3
- @blitzjs/rpc@2.1.3
- blitz@2.1.3
- @blitzjs/config@2.1.3
## 0.1.14
### Patch Changes
- blitz@2.1.2
- @blitzjs/auth@2.1.2
- @blitzjs/next@2.1.2
- @blitzjs/rpc@2.1.2
- @blitzjs/config@2.1.2
## 0.1.13
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "next-blitz-auth",
"version": "0.1.13",
"version": "0.1.17",
"private": true,
"scripts": {
"blitz:dev": "next dev",
@@ -12,28 +12,28 @@
"schema": "prisma/schema.prisma"
},
"dependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/config": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/config": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"@hookform/error-message": "2.0.0",
"@hookform/resolvers": "2.9.10",
"@prisma/client": "^4.5.0",
"@tanstack/react-query": "4.0.10",
"blitz": "2.1.1",
"blitz": "2.2.0",
"flatted": "3.2.7",
"next": "14.3.0-canary.28",
"next": "15.0.1",
"prisma": "^4.5.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"react-hook-form": "7.39.1",
"superjson": "1.11.0",
"zod": "3.20.2"
"zod": "3.23.8"
},
"devDependencies": {
"@types/node": "18.11.7",
"@types/react": "18.0.23",
"@types/react-dom": "18.0.7",
"@types/react": "npm:types-react@19.0.0",
"@types/react-dom": "npm:types-react-dom@19.0.0",
"eslint": "8.26.0",
"eslint-config-next": "13.0.0",
"typescript": "4.8.4"

View File

@@ -4,7 +4,7 @@ import {zodResolver} from "@hookform/resolvers/zod"
import {z} from "zod"
export interface FormProps<S extends z.ZodType<any, any>>
extends Omit<PropsWithoutRef<JSX.IntrinsicElements["form"]>, "onSubmit"> {
extends Omit<PropsWithoutRef<React.JSX.IntrinsicElements["form"]>, "onSubmit"> {
/** All your form fields */
children?: ReactNode
/** Text to display in the submit button */

View File

@@ -2,14 +2,15 @@ import {forwardRef, PropsWithoutRef, ComponentPropsWithoutRef} from "react"
import {useFormContext} from "react-hook-form"
import {ErrorMessage} from "@hookform/error-message"
export interface LabeledTextFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["input"]> {
export interface LabeledTextFieldProps
extends PropsWithoutRef<React.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"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
labelProps?: ComponentPropsWithoutRef<"label">
}

View File

@@ -23,31 +23,30 @@
]
},
"dependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/config": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/config": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"@hookform/error-message": "2.0.0",
"@hookform/resolvers": "2.9.10",
"@prisma/client": "4.6.1",
"blitz": "2.1.1",
"next": "14.3.0-canary.28",
"@prisma/client": "6.1.0",
"blitz": "2.2.0",
"next": "15.0.1",
"openid-client": "5.2.1",
"prisma": "4.6.1",
"react": "18.2.0",
"react-dom": "18.2.0",
"prisma": "6.1.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"react-hook-form": "7.39.1",
"ts-node": "10.9.1",
"zod": "3.20.2"
"zod": "3.23.8"
},
"devDependencies": {
"@next/bundle-analyzer": "12.0.8",
"@testing-library/react": "13.4.0",
"@testing-library/react-hooks": "8.0.1",
"@testing-library/react": "16.0.1",
"@types/jest": "29.2.2",
"@types/node": "18.11.9",
"@types/preview-email": "2.0.1",
"@types/react": "18.0.25",
"@types/react": "npm:types-react@19.0.0",
"@typescript-eslint/eslint-plugin": "5.42.1",
"eslint": "8.27.0",
"eslint-config-next": "12.3.1",

View File

@@ -4,7 +4,7 @@ import { zodResolver } from "@hookform/resolvers/zod"
import { z } from "zod"
export interface FormProps<S extends z.ZodType<any, any>>
extends Omit<PropsWithoutRef<JSX.IntrinsicElements["form"]>, "onSubmit"> {
extends Omit<PropsWithoutRef<React.JSX.IntrinsicElements["form"]>, "onSubmit"> {
/** All your form fields */
children?: ReactNode
/** Text to display in the submit button */

View File

@@ -2,14 +2,15 @@ import { forwardRef, PropsWithoutRef, ComponentPropsWithoutRef } from "react"
import { useFormContext } from "react-hook-form"
import { ErrorMessage } from "@hookform/error-message"
export interface LabeledTextFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["input"]> {
export interface LabeledTextFieldProps
extends PropsWithoutRef<React.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"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
labelProps?: ComponentPropsWithoutRef<"label">
}

View File

@@ -9,7 +9,6 @@ declare module "@blitzjs/auth" {
PublicData: {
userId: User["id"]
role: Role
views?: number
}
}
}

View File

@@ -2,4 +2,4 @@
/// <reference types="next/image-types/global" />
// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.
// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information.

View File

@@ -24,31 +24,30 @@
]
},
"dependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/config": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/config": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"@hookform/error-message": "2.0.0",
"@hookform/resolvers": "2.9.10",
"@prisma/client": "4.6.1",
"blitz": "2.1.1",
"next": "14.3.0-canary.28",
"@prisma/client": "6.1.0",
"blitz": "2.2.0",
"next": "15.0.1",
"next-auth": "4.24.7",
"prisma": "4.6.1",
"react": "18.2.0",
"react-dom": "18.2.0",
"prisma": "6.1.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"react-hook-form": "7.39.1",
"ts-node": "10.9.1",
"zod": "3.20.2"
"zod": "3.23.8"
},
"devDependencies": {
"@next/bundle-analyzer": "12.0.8",
"@testing-library/jest-dom": "5.16.5",
"@testing-library/react": "13.4.0",
"@testing-library/react-hooks": "8.0.1",
"@testing-library/react": "16.0.1",
"@types/node": "18.11.9",
"@types/preview-email": "2.0.1",
"@types/react": "18.0.25",
"@types/react": "npm:types-react@19.0.0",
"@typescript-eslint/eslint-plugin": "5.42.1",
"@vitejs/plugin-react": "2.2.0",
"eslint": "8.27.0",

View File

@@ -4,7 +4,7 @@ import { zodResolver } from "@hookform/resolvers/zod"
import { z } from "zod"
export interface FormProps<S extends z.ZodType<any, any>>
extends Omit<PropsWithoutRef<JSX.IntrinsicElements["form"]>, "onSubmit"> {
extends Omit<PropsWithoutRef<React.JSX.IntrinsicElements["form"]>, "onSubmit"> {
/** All your form fields */
children?: ReactNode
/** Text to display in the submit button */

View File

@@ -2,14 +2,15 @@ import { ComponentPropsWithoutRef, forwardRef, PropsWithoutRef } from "react"
import { useFormContext } from "react-hook-form"
import { ErrorMessage } from "@hookform/error-message"
export interface LabeledSelectFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["select"]> {
export interface LabeledSelectFieldProps
extends PropsWithoutRef<React.JSX.IntrinsicElements["select"]> {
/** Field name. */
name: string
/** Field label. */
label: string
/** Field type. Doesn't include radio buttons and checkboxes */
options: any[]
outerProps?: PropsWithoutRef<JSX.IntrinsicElements["div"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
labelProps?: ComponentPropsWithoutRef<"label">
}

View File

@@ -2,14 +2,15 @@ import { forwardRef, PropsWithoutRef, ComponentPropsWithoutRef } from "react"
import { useFormContext } from "react-hook-form"
import { ErrorMessage } from "@hookform/error-message"
export interface LabeledTextFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["input"]> {
export interface LabeledTextFieldProps
extends PropsWithoutRef<React.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"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
labelProps?: ComponentPropsWithoutRef<"label">
}

View File

@@ -9,7 +9,6 @@ declare module "@blitzjs/auth" {
PublicData: {
userId: User["id"]
role: Role
views?: number
}
}
}

View File

@@ -16,27 +16,27 @@
"schema": "./db/schema.prisma"
},
"dependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/config": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"@prisma/client": "4.6.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/config": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"@prisma/client": "6.1.0",
"@types/jest": "29.2.2",
"@types/passport-twitter": "1.0.37",
"blitz": "2.1.1",
"blitz": "2.2.0",
"jest": "29.3.0",
"jest-environment-jsdom": "29.3.0",
"next": "14.3.0-canary.28",
"next": "15.0.1",
"passport-mock-strategy": "2.0.0",
"passport-twitter": "1.0.4",
"prisma": "4.6.1",
"react": "18.2.0",
"react-dom": "18.2.0",
"prisma": "6.1.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"ts-node": "10.9.1"
},
"devDependencies": {
"@next/bundle-analyzer": "12.0.8",
"@types/react": "18.0.25",
"@types/react": "npm:types-react@19.0.0",
"eslint": "8.27.0",
"typescript": "^4.8.4"
}

View File

@@ -9,7 +9,6 @@ declare module "@blitzjs/auth" {
PublicData: {
userId: User["id"]
role: Role
views?: number
}
}
}

View File

@@ -17,31 +17,30 @@
"prisma:studio": "prisma studio"
},
"dependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/config": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/config": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"@hookform/error-message": "2.0.0",
"@hookform/resolvers": "2.9.10",
"@prisma/client": "4.6.1",
"blitz": "2.1.1",
"@prisma/client": "6.1.0",
"blitz": "2.2.0",
"delay": "5.0.0",
"next": "14.3.0-canary.28",
"prisma": "4.6.1",
"react": "18.2.0",
"react-dom": "18.2.0",
"next": "15.0.1",
"prisma": "6.1.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"react-hook-form": "7.39.1",
"ts-node": "10.9.1",
"zod": "3.20.2"
"zod": "3.23.8"
},
"devDependencies": {
"@next/bundle-analyzer": "12.0.8",
"@testing-library/jest-dom": "5.16.5",
"@testing-library/react": "13.4.0",
"@testing-library/react-hooks": "8.0.1",
"@testing-library/react": "16.0.1",
"@types/node": "18.11.9",
"@types/preview-email": "2.0.1",
"@types/react": "18.0.25",
"@types/react": "npm:types-react@19.0.0",
"@typescript-eslint/eslint-plugin": "5.42.1",
"@vitejs/plugin-react": "2.2.0",
"eslint": "8.27.0",

View File

@@ -9,7 +9,6 @@ declare module "@blitzjs/auth" {
PublicData: {
userId: User["id"]
role: Role
views?: number
}
}
}

View File

@@ -17,16 +17,16 @@
"prisma:studio": "prisma studio"
},
"dependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/config": "2.1.1",
"@blitzjs/next": "2.1.1",
"@prisma/client": "4.6.1",
"blitz": "2.1.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/config": "2.2.0",
"@blitzjs/next": "2.2.0",
"@prisma/client": "6.1.0",
"blitz": "2.2.0",
"lowdb": "3.0.0",
"next": "14.3.0-canary.28",
"prisma": "4.6.1",
"react": "18.2.0",
"react-dom": "18.2.0",
"next": "15.0.1",
"prisma": "6.1.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"secure-password": "4.0.0",
"wait-port": "1.0.4"
},
@@ -36,7 +36,7 @@
"@types/fs-extra": "9.0.13",
"@types/node": "18.7.13",
"@types/node-fetch": "2.6.1",
"@types/react": "18.0.25",
"@types/react": "npm:types-react@19.0.0",
"b64-lite": "1.4.0",
"eslint": "8.27.0",
"fs-extra": "10.0.1",

View File

@@ -9,7 +9,6 @@ declare module "@blitzjs/auth" {
PublicData: {
userId: User["id"]
role: Role
views?: number
}
}
}

View File

@@ -16,24 +16,24 @@
"schema": "db/schema.prisma"
},
"dependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"@prisma/client": "4.6.1",
"blitz": "2.1.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"@prisma/client": "6.1.0",
"blitz": "2.2.0",
"lowdb": "2.1.0",
"next": "14.3.0-canary.28",
"prisma": "4.6.1",
"react": "18.2.0",
"react-dom": "18.2.0"
"next": "15.0.1",
"prisma": "6.1.0",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"devDependencies": {
"@blitzjs/config": "2.1.1",
"@blitzjs/config": "2.2.0",
"@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",
"@types/react": "npm:types-react@19.0.0",
"b64-lite": "1.4.0",
"eslint": "8.27.0",
"fs-extra": "10.0.1",

View File

@@ -9,7 +9,6 @@ declare module "@blitzjs/auth" {
PublicData: {
userId: User["id"]
role: Role
views?: number
}
}
}

View File

@@ -11,20 +11,20 @@
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next"
},
"dependencies": {
"@blitzjs/config": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"blitz": "2.1.1",
"next": "14.3.0-canary.28",
"react": "18.2.0",
"react-dom": "18.2.0"
"@blitzjs/config": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"blitz": "2.2.0",
"next": "15.0.1",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"devDependencies": {
"@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",
"@types/react": "npm:types-react@19.0.0",
"eslint": "8.27.0",
"fs-extra": "10.0.1",
"get-port": "6.1.2",

View File

@@ -2,4 +2,4 @@
/// <reference types="next/image-types/global" />
// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.
// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.

View File

@@ -17,17 +17,17 @@
"prisma:studio": "prisma studio"
},
"dependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/config": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"@prisma/client": "4.6.1",
"blitz": "2.1.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/config": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"@prisma/client": "6.1.0",
"blitz": "2.2.0",
"lowdb": "2.1.0",
"next": "14.3.0-canary.28",
"prisma": "4.6.1",
"react": "18.2.0",
"react-dom": "18.2.0",
"next": "15.0.1",
"prisma": "6.1.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"secure-password": "4.0.0",
"wait-port": "1.0.4"
},
@@ -37,7 +37,7 @@
"@types/fs-extra": "9.0.13",
"@types/node": "18.7.13",
"@types/node-fetch": "2.6.1",
"@types/react": "18.0.25",
"@types/react": "npm:types-react@19.0.0",
"b64-lite": "1.4.0",
"eslint": "8.27.0",
"fs-extra": "10.0.1",

View File

@@ -9,7 +9,6 @@ declare module "@blitzjs/auth" {
PublicData: {
userId: User["id"]
role: Role
views?: number
}
}
}

View File

@@ -16,24 +16,24 @@
"prisma:studio": "prisma studio"
},
"dependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"@prisma/client": "4.6.1",
"blitz": "2.1.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"@prisma/client": "6.1.0",
"blitz": "2.2.0",
"lowdb": "3.0.0",
"next": "14.3.0-canary.28",
"prisma": "4.6.1",
"react": "18.2.0",
"react-dom": "18.2.0"
"next": "15.0.1",
"prisma": "6.1.0",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"devDependencies": {
"@blitzjs/config": "2.1.1",
"@blitzjs/config": "2.2.0",
"@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",
"@types/react": "npm:types-react@19.0.0",
"b64-lite": "1.4.0",
"eslint": "8.27.0",
"fs-extra": "10.0.1",

View File

@@ -9,7 +9,6 @@ declare module "@blitzjs/auth" {
PublicData: {
userId: User["id"]
role: Role
views?: number
}
}
}

View File

@@ -8,21 +8,21 @@
"clean": "rm -rf .turbo && rm -rf node_modules"
},
"dependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/config": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"@prisma/client": "4.6.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/config": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"@prisma/client": "6.1.0",
"@tanstack/react-query": "4.0.10",
"blitz": "2.1.1",
"next": "14.3.0-canary.28",
"prisma": "4.6.1",
"react": "18.2.0",
"react-dom": "18.2.0"
"blitz": "2.2.0",
"next": "15.0.1",
"prisma": "6.1.0",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"devDependencies": {
"@testing-library/react": "13.4.0",
"@types/react": "18.0.25",
"@testing-library/react": "16.0.1",
"@types/react": "npm:types-react@19.0.0",
"@vitejs/plugin-react": "1.3.0",
"delay": "5.0.0",
"eslint": "8.27.0",

View File

@@ -16,23 +16,23 @@
"schema": "db/schema.prisma"
},
"dependencies": {
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"@prisma/client": "4.6.1",
"blitz": "2.1.1",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"@prisma/client": "6.1.0",
"blitz": "2.2.0",
"lowdb": "3.0.0",
"next": "14.3.0-canary.28",
"prisma": "4.6.1",
"react": "18.2.0",
"react-dom": "18.2.0"
"next": "15.0.1",
"prisma": "6.1.0",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"devDependencies": {
"@blitzjs/config": "2.1.1",
"@blitzjs/config": "2.2.0",
"@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",
"@types/react": "npm:types-react@19.0.0",
"b64-lite": "1.4.0",
"eslint": "8.27.0",
"fs-extra": "10.0.1",

View File

@@ -7,19 +7,19 @@
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next"
},
"dependencies": {
"@blitzjs/config": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"blitz": "2.1.1",
"next": "14.3.0-canary.28",
"react": "18.2.0",
"react-dom": "18.2.0"
"@blitzjs/config": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"blitz": "2.2.0",
"next": "15.0.1",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"devDependencies": {
"@types/express": "4.17.13",
"@types/fs-extra": "9.0.13",
"@types/node-fetch": "2.6.1",
"@types/react": "18.0.25",
"@types/react": "npm:types-react@19.0.0",
"b64-lite": "1.4.0",
"eslint": "8.27.0",
"fs-extra": "10.0.1",

View File

@@ -7,19 +7,19 @@
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next"
},
"dependencies": {
"@blitzjs/config": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"blitz": "2.1.1",
"next": "14.3.0-canary.28",
"react": "18.2.0",
"react-dom": "18.2.0"
"@blitzjs/config": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"blitz": "2.2.0",
"next": "15.0.1",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"devDependencies": {
"@types/express": "4.17.13",
"@types/fs-extra": "9.0.13",
"@types/node-fetch": "2.6.1",
"@types/react": "18.0.25",
"@types/react": "npm:types-react@19.0.0",
"b64-lite": "1.4.0",
"eslint": "8.27.0",
"fs-extra": "10.0.1",

View File

@@ -16,24 +16,24 @@
"schema": "db/schema.prisma"
},
"dependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/next": "2.1.1",
"@blitzjs/rpc": "2.1.1",
"@prisma/client": "4.6.1",
"blitz": "2.1.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/next": "2.2.0",
"@blitzjs/rpc": "2.2.0",
"@prisma/client": "6.1.0",
"blitz": "2.2.0",
"lowdb": "3.0.0",
"next": "14.3.0-canary.28",
"prisma": "4.6.1",
"react": "18.2.0",
"react-dom": "18.2.0"
"next": "15.0.1",
"prisma": "6.1.0",
"react": "19.0.0",
"react-dom": "19.0.0"
},
"devDependencies": {
"@blitzjs/config": "2.1.1",
"@blitzjs/config": "2.2.0",
"@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",
"@types/react": "npm:types-react@19.0.0",
"b64-lite": "1.4.0",
"eslint": "8.27.0",
"fs-extra": "10.0.1",

View File

@@ -9,7 +9,6 @@ declare module "@blitzjs/auth" {
PublicData: {
userId: User["id"]
role: Role
views?: number
}
}
}

View File

@@ -3,15 +3,15 @@
"version": "0.0.0",
"private": true,
"devDependencies": {
"@blitzjs/config": "workspace:2.1.1",
"@blitzjs/next": "workspace:2.1.1",
"@blitzjs/rpc": "workspace:2.1.1",
"@blitzjs/config": "workspace:2.2.0",
"@blitzjs/next": "workspace:2.2.0",
"@blitzjs/rpc": "workspace:2.2.0",
"@tanstack/react-query": "4.13.0",
"@testing-library/react": "13.4.0",
"@testing-library/react": "16.0.1",
"@types/express": "4.17.13",
"@types/fs-extra": "9.0.13",
"@types/node-fetch": "2.6.1",
"@types/react": "18.0.25",
"@types/react": "npm:types-react@19.0.0",
"@types/rimraf": "3.0.2",
"@types/selenium-webdriver": "4.0.18",
"chromedriver": "100.0.0",
@@ -23,8 +23,8 @@
"node-fetch": "3.2.3",
"pkg-dir": "5.0.0",
"playwright-chromium": "1.28.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"resolve-cwd": "3.0.0",
"resolve-from": "5.0.0",
"rimraf": "3.0.2",

View File

@@ -29,7 +29,7 @@
"husky": "8.0.2",
"jsdom": "^19.0.0",
"lint-staged": "13.0.3",
"next": "14.3.0-canary.28",
"next": "15.0.1",
"only-allow": "1.1.0",
"prettier": "^2.8.8",
"prettier-plugin-prisma": "4.4.0",
@@ -51,7 +51,9 @@
},
"overrides": {
"@types/mime": "3.0.4",
"next": "14.3.0-canary.28"
"next": "15.0.1",
"@types/react": "npm:types-react@rc",
"@types/react-dom": "npm:types-react-dom@rc"
}
}
}

View File

@@ -1,5 +1,38 @@
# @blitzjs/auth
## 2.2.0
### Minor Changes
- 3fa3a4ef3: chore: support next.js 15
### Patch Changes
- Updated dependencies [565db3c5a]
- Updated dependencies [3fa3a4ef3]
- blitz@2.2.0
## 2.1.4
### Patch Changes
- blitz@2.1.4
## 2.1.3
### Patch Changes
- 0b3286468: chore: bump `next.js` and `zod` versions
- Updated dependencies [0b3286468]
- Updated dependencies [50f17d21c]
- blitz@2.1.3
## 2.1.2
### Patch Changes
- blitz@2.1.2
## 2.1.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/auth",
"version": "2.1.1",
"version": "2.2.0",
"homepage": "https://blitzjs.com/",
"repository": {
"type": "git",
@@ -50,7 +50,7 @@
"url": "0.11.0"
},
"peerDependencies": {
"blitz": "2.1.1",
"blitz": "2.2.0",
"next": "*",
"next-auth": "*",
"secure-password": "4.0.0"
@@ -67,19 +67,18 @@
}
},
"devDependencies": {
"@blitzjs/config": "2.1.1",
"@testing-library/react": "13.4.0",
"@testing-library/react-hooks": "8.0.1",
"@blitzjs/config": "2.2.0",
"@testing-library/react": "16.0.1",
"@types/cookie": "0.4.1",
"@types/debug": "4.1.7",
"@types/jsonwebtoken": "8.5.8",
"@types/react": "18.0.25",
"@types/react-dom": "17.0.14",
"blitz": "2.1.1",
"next": "14.3.0-canary.28",
"@types/react": "npm:types-react@19.0.0",
"@types/react-dom": "npm:types-react-dom@19.0.0",
"blitz": "2.2.0",
"next": "15.0.1",
"next-auth": "4.24.7",
"react": "18.2.0",
"react-dom": "18.2.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"secure-password": "4.0.0",
"typescript": "^4.8.4",
"unbuild": "0.7.6",

View File

@@ -7,7 +7,7 @@ import {parsePublicDataToken, getPublicDataStore, useSession} from "./index"
import {COOKIE_PUBLIC_DATA_TOKEN} from "../shared"
import {toBase64} from "b64-lite"
import {act} from "@testing-library/react"
import {renderHook} from "@testing-library/react-hooks"
import {renderHook} from "@testing-library/react"
vi.mock("blitz", async () => {
const blitz = await vi.importActual("blitz")

View File

@@ -260,7 +260,7 @@ export type RedirectAuthenticatedToFn = (
) => RedirectAuthenticatedTo
export type BlitzPage<P = {}> = React.ComponentType<P> & {
getLayout?: (component: JSX.Element) => JSX.Element
getLayout?: (component: React.JSX.Element) => React.JSX.Element
authenticate?: boolean | {redirectTo?: string | RouteUrlObject; role?: string | Array<string>}
suppressFirstRenderFlicker?: boolean
redirectAuthenticatedTo?: RedirectAuthenticatedTo | RedirectAuthenticatedToFn

View File

@@ -289,8 +289,10 @@ const makeProxyToPublicData = <T extends SessionContextClass>(ctxClass: T): T =>
export async function getBlitzContext(): Promise<Ctx> {
try {
const {headers, cookies} = require("next/headers")
const reqHeader = Object.fromEntries(headers())
const csrfToken = cookies().get(COOKIE_CSRF_TOKEN())
const cookieStore = await cookies()
const headersStore = await headers()
const reqHeader = Object.fromEntries(headersStore)
const csrfToken = cookieStore.get(COOKIE_CSRF_TOKEN())
if (csrfToken) {
reqHeader[HEADER_CSRF] = csrfToken.value
}

View File

@@ -1,5 +1,43 @@
# @blitzjs/next
## 2.2.0
### Minor Changes
- 3fa3a4ef3: chore: support next.js 15
### Patch Changes
- Updated dependencies [565db3c5a]
- Updated dependencies [3fa3a4ef3]
- blitz@2.2.0
- @blitzjs/rpc@2.2.0
## 2.1.4
### Patch Changes
- ce23d4ed0: fix: Update `turbopack-empty.js` syntax to support latest turbopack and next.js versions
- blitz@2.1.4
- @blitzjs/rpc@2.1.4
## 2.1.3
### Patch Changes
- 0b3286468: chore: bump `next.js` and `zod` versions
- Updated dependencies [0b3286468]
- Updated dependencies [50f17d21c]
- @blitzjs/rpc@2.1.3
- blitz@2.1.3
## 2.1.2
### Patch Changes
- blitz@2.1.2
- @blitzjs/rpc@2.1.2
## 2.1.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/next",
"version": "2.1.1",
"version": "2.2.0",
"homepage": "https://blitzjs.com/",
"repository": {
"type": "git",
@@ -29,7 +29,7 @@
"eslint.js"
],
"dependencies": {
"@blitzjs/rpc": "2.1.1",
"@blitzjs/rpc": "2.2.0",
"@types/hoist-non-react-statics": "3.3.1",
"copy-webpack-plugin": "11.0.0",
"debug": "4.3.3",
@@ -39,30 +39,29 @@
"supports-color": "8.1.1"
},
"peerDependencies": {
"blitz": "2.1.1",
"blitz": "2.2.0",
"next": "*",
"react": "*",
"tslog": "4.9.0"
},
"devDependencies": {
"@blitzjs/config": "2.1.1",
"@blitzjs/config": "2.2.0",
"@testing-library/dom": "8.13.0",
"@testing-library/jest-dom": "5.16.3",
"@testing-library/react": "13.4.0",
"@testing-library/react-hooks": "8.0.1",
"@testing-library/react": "16.0.1",
"@testing-library/user-event": "13.5.0",
"@types/debug": "4.1.7",
"@types/node": "18.11.9",
"@types/react": "18.0.25",
"@types/react-dom": "17.0.14",
"@types/react": "npm:types-react@19.0.0",
"@types/react-dom": "npm:types-react-dom@19.0.0",
"@types/testing-library__react-hooks": "4.0.0",
"blitz": "2.1.1",
"blitz": "2.2.0",
"cross-spawn": "7.0.3",
"find-up": "4.1.0",
"next": "14.3.0-canary.28",
"next": "15.0.1",
"next-router-mock": "0.9.1",
"react": "18.2.0",
"react-dom": "18.2.0",
"react": "19.0.0",
"react-dom": "19.0.0",
"resolve-from": "5.0.0",
"ts-jest": "27.1.4",
"tslog": "4.9.0",

View File

@@ -1 +1,8 @@
export {}
const exports = {
"npm-which": {},
"cross-spawn": {},
fs: {},
child_process: {},
}
module.exports = exports

View File

@@ -70,7 +70,7 @@ test("handleError forwards along async errors", async () => {
//
// React will try to recreate this component tree from scratch using the error boundary you provided, ErrorBoundary."
// `)
expect(consoleError).toHaveBeenCalledTimes(3)
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
// can recover
@@ -116,7 +116,7 @@ test("can pass an error to useErrorHandler", async () => {
//
// React will try to recreate this component tree from scratch using the error boundary you provided, ErrorBoundary."
// `)
expect(consoleError).toHaveBeenCalledTimes(3)
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
// can recover

View File

@@ -77,25 +77,10 @@ test("standard use-case", () => {
const {unmount} = render(<App />)
userEvent.type(screen.getByRole("textbox", {name: /username/i}), "fail")
const [[actualError], [componentStack]] = consoleError.mock.calls
expect(firstLine(actualError as string)).toMatchInlineSnapshot(
`"Error: Uncaught [Error: 💥 CABOOM 💥]"`,
)
expect(cleanStack(componentStack)).toMatchInlineSnapshot(`
"Error: Uncaught [Error: 💥 CABOOM 💥]
at reportException
at innerInvokeEventListeners
at invokeEventListeners
at HTMLUnknownElementImpl._dispatch
at HTMLUnknownElementImpl.dispatchEvent
at HTMLUnknownElement.dispatchEvent
at Object.invokeGuardedCallbackDev
at invokeGuardedCallback
at beginWork\$1
at performUnitOfWork "
`)
expect(consoleError).toHaveBeenCalledTimes(3)
const calls = consoleError.mock.calls[0]
//@ts-expect-error - it's a mock
expect(calls[1]).toMatchInlineSnapshot("[Error: 💥 CABOOM 💥]")
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
expect(screen.getByRole("alert")).toMatchInlineSnapshot(`
@@ -149,7 +134,7 @@ test("fallbackRender prop", () => {
}
const {unmount} = render(<App />)
expect(consoleError).toHaveBeenCalledTimes(3)
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
// the render prop API allows a single action to reset the app state
@@ -168,7 +153,7 @@ test("simple fallback is supported", () => {
<span>child</span>
</ErrorBoundary>,
)
expect(consoleError).toHaveBeenCalledTimes(3)
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
expect(screen.getByText(/oh no/i)).to.exist
expect(screen.queryByText(/child/i)).to.not.exist
@@ -183,27 +168,16 @@ test("withErrorBoundary HOC", () => {
() => {
throw new Error("💥 CABOOM 💥")
},
{FallbackComponent: ErrorFallback, onError: onErrorHandler},
{
FallbackComponent: ErrorFallback,
onError: onErrorHandler,
},
)
const {unmount} = render(<Boundary />)
const [[actualError], [componentStack]] = consoleError.mock.calls
const firstLineOfError = firstLine(actualError as string)
expect(firstLineOfError).toMatchInlineSnapshot(`"Error: Uncaught [Error: 💥 CABOOM 💥]"`)
expect(cleanStack(componentStack)).toMatchInlineSnapshot(`
"Error: Uncaught [Error: 💥 CABOOM 💥]
at reportException
at innerInvokeEventListeners
at invokeEventListeners
at HTMLUnknownElementImpl._dispatch
at HTMLUnknownElementImpl.dispatchEvent
at HTMLUnknownElement.dispatchEvent
at Object.invokeGuardedCallbackDev
at invokeGuardedCallback
at beginWork\$1
at performUnitOfWork "
`)
expect(consoleError).toHaveBeenCalledTimes(3)
const calls = consoleError.mock.calls[0]
//@ts-expect-error - it's a mock
expect(calls[1]).toMatchInlineSnapshot("[Error: 💥 CABOOM 💥]")
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
const [error, onErrorComponentStack] = (onErrorHandler.mock.calls as [[Error, string]])[0]
@@ -265,7 +239,6 @@ test("requires either a fallback, fallbackRender, or FallbackComponent", () => {
let unmount: undefined | (() => void)
expect(() => {
const result = render(
// @ts-expect-error we're testing the runtime check of missing props here
<ErrorBoundary>
<Bomb />
</ErrorBoundary>,
@@ -318,7 +291,7 @@ test("supports automatic reset of error boundary when resetKeys change", () => {
// blow it up
userEvent.click(screen.getByText("toggle explode"))
expect(screen.getByRole("alert")).to.exist
expect(consoleError).toHaveBeenCalledTimes(3)
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
// recover via try again button
@@ -333,7 +306,7 @@ test("supports automatic reset of error boundary when resetKeys change", () => {
// blow it up again
userEvent.click(screen.getByText("toggle explode"))
expect(screen.getByRole("alert")).to.exist
expect(consoleError).toHaveBeenCalledTimes(3)
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
// recover via resetKeys change
@@ -348,7 +321,7 @@ test("supports automatic reset of error boundary when resetKeys change", () => {
// blow it up again
userEvent.click(screen.getByText("toggle explode"))
expect(screen.getByRole("alert")).to.exist
expect(consoleError).toHaveBeenCalledTimes(3)
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
// toggles adding an extra resetKey to the array
@@ -358,7 +331,7 @@ test("supports automatic reset of error boundary when resetKeys change", () => {
expect(handleResetKeysChange).toHaveBeenCalledWith([true], [true, true])
handleResetKeysChange.mockClear()
expect(screen.getByRole("alert")).to.exist
expect(consoleError).toHaveBeenCalledTimes(3)
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
// toggle explode back to false
@@ -369,7 +342,7 @@ test("supports automatic reset of error boundary when resetKeys change", () => {
expect(handleResetKeysChange).toHaveBeenCalledWith([true, true], [false, true])
expect(screen.getByRole("alert")).to.exist
handleResetKeysChange.mockClear()
expect(consoleError).toHaveBeenCalledTimes(3)
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
// toggle extra resetKey
@@ -411,7 +384,7 @@ test("supports reset via resetKeys right after error is triggered on component m
// it blows up on render
expect(screen.queryByRole("alert", {})).to.exist
expect(consoleError).toHaveBeenCalledTimes(3)
expect(consoleError).toHaveBeenCalledTimes(1)
consoleError.mockClear()
// recover via "toggle explode" button

View File

@@ -1,7 +1,7 @@
import {RedirectError} from "blitz"
import {useRouter} from "next/compat/router"
import type {NextRouter} from "next/router"
import * as React from "react"
import React from "react"
import {RouterContext} from "./router-context"
import _debug from "debug"
import type {ExcludeRouterProps, WithRouterProps} from "next/dist/client/with-router"
@@ -77,7 +77,7 @@ const initialState: ErrorBoundaryState = {error: null}
function withRouter<P extends WithRouterProps>(
ComposedComponent: React.ComponentType<P>,
): React.ComponentType<ExcludeRouterProps<P>> {
function WithRouterWrapper(props: any): JSX.Element {
function WithRouterWrapper(props: any): React.JSX.Element {
return <ComposedComponent router={useRouter()} {...props} />
}
@@ -114,7 +114,13 @@ export const ErrorBoundary = withRouter(
await this.props.router.push(error.url)
return
}
this.props.onError?.(error, info)
if (this.props.onError) {
let componentStack = info.componentStack
if (!componentStack) {
componentStack = new Error("Stack trace").stack || ""
}
this.props.onError(error, {componentStack})
}
}
componentDidMount() {
@@ -190,7 +196,7 @@ export const ErrorBoundary = withRouter(
},
)
function withErrorBoundary<P extends JSX.IntrinsicAttributes>(
function withErrorBoundary<P extends React.JSX.IntrinsicAttributes>(
Component: React.ComponentType<P>,
errorBoundaryProps: ErrorBoundaryProps,
): React.ComponentType<P> {

View File

@@ -1,10 +1,16 @@
import React from "react"
import {NextPageContext} from "next"
import dynamic from "next/dynamic"
const Head = dynamic(() => import("next/head").then((mod) => mod.default), {
ssr: false,
loading: () => null,
})
const Head = dynamic(
() =>
import("next/head").then((mod) => ({
default: mod.default,
})),
{
ssr: false,
loading: () => null,
},
)
const statusCodes: {[code: number]: string} = {
400: "Bad Request",

View File

@@ -9,10 +9,16 @@ import type {Router} from "next/router"
import {BlitzProvider} from "./provider"
import dynamic from "next/dynamic"
export {Routes} from ".blitz"
const Head = dynamic(() => import("next/head").then((mod) => mod.default), {
ssr: false,
loading: () => null,
})
const Head = dynamic(
() =>
import("next/head").then((mod) => ({
default: mod.default,
})),
{
ssr: false,
loading: () => null,
},
)
export {BlitzProvider} from "./provider"
@@ -55,7 +61,7 @@ type RedirectAuthenticatedToFnCtx = {
}
type RedirectAuthenticatedToFn = (args: RedirectAuthenticatedToFnCtx) => RedirectAuthenticatedTo
export type BlitzPage<P = {}> = React.ComponentType<P> & {
getLayout?: (component: JSX.Element) => JSX.Element
getLayout?: (component: React.JSX.Element) => React.JSX.Element
authenticate?: boolean | {redirectTo?: string | RouteUrlObject; role?: string | Array<string>}
suppressFirstRenderFlicker?: boolean
redirectAuthenticatedTo?: RedirectAuthenticatedTo | RedirectAuthenticatedToFn

View File

@@ -3,7 +3,7 @@ import type {QueryClient, HydrateOptions} from "@blitzjs/rpc"
import React from "react"
export type BlitzProviderProps = {
children: JSX.Element
children: React.JSX.Element
client?: QueryClient
contextSharing?: boolean
dehydratedState?: unknown

View File

@@ -4,7 +4,7 @@
import React from "react"
import {describe, it, expect, vi, afterEach} from "vitest"
import {extractRouterParams, useParam, useParams} from "./use-params"
import {renderHook as defaultRenderHook} from "@testing-library/react-hooks"
import {renderHook as defaultRenderHook} from "@testing-library/react"
import {NextRouter} from "next/router"
import {RouterContext} from "./router-context"

View File

@@ -1,5 +1,38 @@
# @blitzjs/rpc
## 2.2.0
### Minor Changes
- 3fa3a4ef3: chore: support next.js 15
### Patch Changes
- Updated dependencies [565db3c5a]
- Updated dependencies [3fa3a4ef3]
- blitz@2.2.0
## 2.1.4
### Patch Changes
- blitz@2.1.4
## 2.1.3
### Patch Changes
- 0b3286468: chore: bump `next.js` and `zod` versions
- Updated dependencies [0b3286468]
- Updated dependencies [50f17d21c]
- blitz@2.1.3
## 2.1.2
### Patch Changes
- blitz@2.1.2
## 2.1.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/rpc",
"version": "2.1.1",
"version": "2.2.0",
"homepage": "https://blitzjs.com/",
"repository": {
"type": "git",
@@ -37,25 +37,25 @@
},
"peerDependencies": {
"@tanstack/query-core": "4.24.4",
"blitz": "2.1.1",
"blitz": "2.2.0",
"next": "*",
"react": "*"
},
"devDependencies": {
"@blitzjs/auth": "2.1.1",
"@blitzjs/config": "2.1.1",
"@blitzjs/auth": "2.2.0",
"@blitzjs/config": "2.2.0",
"@tanstack/query-core": "4.24.4",
"@types/debug": "4.1.7",
"@types/react": "18.0.25",
"@types/react-dom": "17.0.14",
"blitz": "2.1.1",
"next": "14.3.0-canary.28",
"react": "18.2.0",
"react-dom": "18.2.0",
"@types/react": "npm:types-react@19.0.0",
"@types/react-dom": "npm:types-react-dom@19.0.0",
"blitz": "2.2.0",
"next": "15.0.1",
"react": "19.0.0",
"react-dom": "19.0.0",
"typescript": "^4.8.4",
"unbuild": "0.7.6",
"watch": "1.0.2",
"zod": "3.20.2"
"zod": "3.23.8"
},
"publishConfig": {
"access": "public"

View File

@@ -221,7 +221,7 @@ async function getResolverMap(): Promise<ResolverFiles | null | undefined> {
// Handles:
// - Vite
// {
// const {resolverFilesLoaded, viteProvider} = await loadTelefuncFilesWithVite(runContext)
// const {resolverFilesLoaded, viteProvider} = await loadTelefuncFilesWithVite(run
// if (resolverFilesLoaded) {
// assertUsage(
// Object.keys(resolverFilesLoaded).length > 0,
@@ -364,17 +364,18 @@ type Params = Record<string, unknown>
export function rpcAppHandler(config?: RpcConfig) {
registerBlitzErrorClasses()
async function handleRpcRequest(req: Request, context: {params: Params}, ctx?: Ctx) {
async function handleRpcRequest(req: Request, segmentData: {params: Promise<Params>}, ctx?: Ctx) {
const params = await segmentData.params
const session = ctx?.session
const resolverMap = await getResolverMap()
assert(resolverMap, "No query or mutation resolvers found")
assert(
Array.isArray(context.params.blitz),
Array.isArray(params.blitz),
"It seems your Blitz RPC endpoint file is not named [[...blitz]].(jt)s. Please ensure it is",
)
const relativeRoutePath = (context.params.blitz as string[])?.join("/")
const relativeRoutePath = (params.blitz as string[])?.join("/")
const routePath = "/" + relativeRoutePath
const resolverName = routePath.replace(/(\/api\/rpc)?\//, "")
const rpcLogger = new RpcLogger(resolverName, config?.logging)
@@ -413,14 +414,14 @@ export function rpcAppHandler(config?: RpcConfig) {
json:
req.method === "POST"
? body.params
: context.params.params
? parse(`${context.params.params}`)
: params.params
? parse(`${params.params}`)
: undefined,
meta:
req.method === "POST"
? body.meta?.params
: context.params.meta
? parse(`${context.params.meta}`)
: params.meta
? parse(`${params.meta}`)
: undefined,
})
rpcLogger.timer.initResolver()

View File

@@ -1,7 +1,7 @@
import {QueryClientProvider} from "@tanstack/react-query"
import React from "react"
export type BlitzProviderType = ({children}: {children: React.ReactNode}) => JSX.Element
export type BlitzProviderType = ({children}: {children: React.ReactNode}) => React.JSX.Element
const BlitzProvider: BlitzProviderType = ({children}) => {
const [queryClient] = React.useState(globalThis.queryClient)

View File

@@ -1,5 +1,40 @@
# blitz
## 2.2.0
### Minor Changes
- 3fa3a4ef3: chore: support next.js 15
### Patch Changes
- 565db3c5a: Fixed incorrect terminal message after creating a new Blitz project to use the correct command (`npm run dev` or `yarn dev`).
- @blitzjs/generator@2.2.0
## 2.1.4
### Patch Changes
- Updated dependencies [38d320fd2]
- @blitzjs/generator@2.1.4
## 2.1.3
### Patch Changes
- 0b3286468: chore: bump `next.js` and `zod` versions
- 50f17d21c: Update prisma-ast dependency to prevent Blitz generator from failing when Prisma keywords are used as model names
- Updated dependencies [0b3286468]
- @blitzjs/generator@2.1.3
## 2.1.2
### Patch Changes
- Updated dependencies [2711291e9]
- Updated dependencies [56bd32b55]
- @blitzjs/generator@2.1.2
## 2.1.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "blitz",
"version": "2.1.1",
"version": "2.2.0",
"homepage": "https://blitzjs.com/",
"repository": {
"type": "git",
@@ -30,8 +30,8 @@
"blitz": "bin/blitz"
},
"dependencies": {
"@blitzjs/generator": "2.1.1",
"@mrleebo/prisma-ast": "0.2.6",
"@blitzjs/generator": "2.2.0",
"@mrleebo/prisma-ast": "0.4.1",
"@types/global-agent": "2.1.1",
"arg": "5.0.1",
"ast-types": "0.14.2",
@@ -80,7 +80,7 @@
"watchpack": "2.1.1"
},
"devDependencies": {
"@blitzjs/config": "2.1.1",
"@blitzjs/config": "2.2.0",
"@types/cookie": "0.4.1",
"@types/cross-spawn": "6.0.2",
"@types/debug": "4.1.7",
@@ -95,17 +95,17 @@
"@types/npm-which": "3.0.1",
"@types/progress": "2.0.5",
"@types/prompts": "2.0.14",
"@types/react": "18.0.25",
"@types/react-dom": "17.0.14",
"@types/react": "npm:types-react@19.0.0",
"@types/react-dom": "npm:types-react-dom@19.0.0",
"@types/test-listen": "1.1.0",
"@types/watchpack": "1.1.1",
"express": "4.17.3",
"react": "18.2.0",
"react": "19.0.0",
"test-listen": "1.1.0",
"typescript": "^4.8.4",
"unbuild": "0.7.6",
"watch": "1.0.2",
"zod": "3.20.2"
"zod": "3.23.8"
},
"publishConfig": {
"access": "public"

View File

@@ -274,7 +274,7 @@ const newApp: CliCommand = async () => {
)
}
postInstallSteps.push(`${projectPkgManger} blitz dev`)
postInstallSteps.push(`${projectPkgManger} ${projectPkgManger === "npm" ? "run " : ""}dev`);
console.log("\n Your new Blitz app is ready! Next steps:")
postInstallSteps.forEach((step, index) => {

View File

@@ -11,6 +11,7 @@ import {
registerBlitzErrorClasses,
} from "./errors"
import type {EventHooks, MiddlewareHooks} from "./types"
import React from "react"
export {
AuthenticationError,
AuthorizationError,
@@ -26,7 +27,7 @@ export * from "./utils/enhance-prisma"
export type BlitzProviderComponentType = <TProps = any>(
component: ComponentType<TProps>,
) => {
(props: TProps): JSX.Element
(props: TProps): React.JSX.Element
displayName: string
}

View File

@@ -1,5 +1,40 @@
# @blitzjs/codemod
## 2.2.0
### Patch Changes
- Updated dependencies [565db3c5a]
- Updated dependencies [3fa3a4ef3]
- blitz@2.2.0
- @blitzjs/generator@2.2.0
## 2.1.4
### Patch Changes
- Updated dependencies [38d320fd2]
- @blitzjs/generator@2.1.4
- blitz@2.1.4
## 2.1.3
### Patch Changes
- Updated dependencies [0b3286468]
- Updated dependencies [50f17d21c]
- blitz@2.1.3
- @blitzjs/generator@2.1.3
## 2.1.2
### Patch Changes
- Updated dependencies [2711291e9]
- Updated dependencies [56bd32b55]
- @blitzjs/generator@2.1.2
- blitz@2.1.2
## 2.1.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/codemod",
"version": "2.1.1",
"version": "2.2.0",
"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.1.1",
"@blitzjs/generator": "2.2.0",
"arg": "5.0.1",
"blitz": "2.1.1",
"blitz": "2.2.0",
"chalk": "^4.1.0",
"cross-spawn": "7.0.3",
"debug": "4.3.3",
@@ -38,7 +38,7 @@
},
"devDependencies": {
"@babel/preset-env": "7.12.10",
"@blitzjs/config": "2.1.1",
"@blitzjs/config": "2.2.0",
"@types/jscodeshift": "0.11.2",
"@types/node": "18.11.9",
"ast-types": "0.14.2",

View File

@@ -1,5 +1,13 @@
# @blitzjs/config
## 2.2.0
## 2.1.4
## 2.1.3
## 2.1.2
## 2.1.1
## 2.1.0

View File

@@ -1,7 +1,7 @@
{
"name": "@blitzjs/config",
"private": true,
"version": "2.1.1",
"version": "2.2.0",
"license": "MIT",
"dependencies": {
"@typescript-eslint/eslint-plugin": "5.42.1",

View File

@@ -1,5 +1,26 @@
# @blitzjs/generator
## 2.2.0
## 2.1.4
### Patch Changes
- 38d320fd2: chore: Upgrade to prisma v6. Read more about migration in https://www.prisma.io/docs/orm/more/upgrade-guides/upgrading-versions/upgrading-to-prisma-6
## 2.1.3
### Patch Changes
- 0b3286468: chore: bump `next.js` and `zod` versions
## 2.1.2
### Patch Changes
- 2711291e9: Remove `views` property from `Session.PublicData` in `types.ts` file again
- 56bd32b55: Fix Zod schema generation for datetime fields by removing extra parentheses.
## 2.1.1
## 2.1.0

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/generator",
"version": "2.1.1",
"version": "2.2.0",
"homepage": "https://blitzjs.com/",
"repository": {
"type": "git",
@@ -51,10 +51,10 @@
"tslog": "4.9.0",
"username": "5.1.0",
"vinyl": "2.2.1",
"zod": "3.20.2"
"zod": "3.23.8"
},
"devDependencies": {
"@blitzjs/config": "2.1.1",
"@blitzjs/config": "2.2.0",
"@juanm04/cpx": "2.0.1",
"@types/babel__core": "7.1.19",
"@types/diff": "5.0.2",
@@ -64,15 +64,15 @@
"@types/mem-fs-editor": "7.0.1",
"@types/pluralize": "0.0.29",
"@types/prettier": "2.4.4",
"@types/react": "18.0.25",
"@types/react-dom": "17.0.14",
"@types/react": "npm:types-react@19.0.0",
"@types/react-dom": "npm:types-react-dom@19.0.0",
"@types/vinyl": "2.0.6",
"@typescript-eslint/eslint-plugin": "5.42.1",
"@typescript-eslint/parser": "5.9.1",
"babylon": "6.18.0",
"debug": "4.3.3",
"eslint": "8.27.0",
"react": "18.2.0",
"react": "19.0.0",
"typescript": "^4.8.4",
"unbuild": "0.6.9",
"watch": "1.0.2"

View File

@@ -96,7 +96,7 @@ export const defaultCodegenConfig: CodegenConfig = {
datetime: {
component: "LabeledTextField",
inputType: "text",
zodType: "string().datetime()",
zodType: "string().datetime",
prismaType: "DateTime",
},
uuid: {

View File

@@ -5,7 +5,7 @@ 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"> {
extends Omit<PropsWithoutRef<React.JSX.IntrinsicElements["form"]>, "onSubmit"> {
/** All your form fields */
children?: ReactNode
/** Text to display in the submit button */

View File

@@ -1,14 +1,14 @@
import { forwardRef, PropsWithoutRef } from "react"
import { useField } from "react-final-form"
export interface LabeledSelectFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["select"]> {
export interface LabeledSelectFieldProps extends PropsWithoutRef<React.JSX.IntrinsicElements["select"]> {
/** Field name. */
name: string
/** Field label. */
label: string
type?: "number" | "string"
options: any
outerProps?: PropsWithoutRef<JSX.IntrinsicElements["div"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
}
export const LabeledSelectField = forwardRef<HTMLSelectElement, LabeledSelectFieldProps>(

View File

@@ -1,14 +1,14 @@
import { forwardRef, ComponentPropsWithoutRef, PropsWithoutRef } from "react"
import { useField, UseFieldConfig } from "react-final-form"
export interface LabeledTextFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["input"]> {
export interface LabeledTextFieldProps extends PropsWithoutRef<React.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"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
labelProps?: ComponentPropsWithoutRef<"label">
fieldProps?: UseFieldConfig<string>
}

View File

@@ -4,7 +4,7 @@ import { validateZodSchema } from "blitz"
import { z } from "zod"
export interface FormProps<S extends z.ZodType<any, any>>
extends Omit<PropsWithoutRef<JSX.IntrinsicElements["form"]>, "onSubmit"> {
extends Omit<PropsWithoutRef<React.JSX.IntrinsicElements["form"]>, "onSubmit"> {
/** All your form fields */
children?: ReactNode
/** Text to display in the submit button */

View File

@@ -2,14 +2,14 @@ import { forwardRef, PropsWithoutRef } from "react";
import { useFormikContext, ErrorMessage, Field } from "formik";
export interface LabeledSelectFieldProps
extends PropsWithoutRef<JSX.IntrinsicElements["select"]> {
extends PropsWithoutRef<React.JSX.IntrinsicElements["select"]> {
/** Field name. */
name: string;
/** Field label. */
label: string;
/** Field options. */
options: any;
outerProps?: PropsWithoutRef<JSX.IntrinsicElements["div"]>;
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>;
}
export const LabeledSelectField = forwardRef<

View File

@@ -1,14 +1,14 @@
import { forwardRef, PropsWithoutRef } from "react"
import { useField, useFormikContext, ErrorMessage } from "formik"
export interface LabeledTextFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["input"]> {
export interface LabeledTextFieldProps extends PropsWithoutRef<React.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"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
}
export const LabeledTextField = forwardRef<HTMLInputElement, LabeledTextFieldProps>(

View File

@@ -4,7 +4,7 @@ import { zodResolver } from "@hookform/resolvers/zod"
import { z } from "zod"
export interface FormProps<S extends z.ZodType<any, any>>
extends Omit<PropsWithoutRef<JSX.IntrinsicElements["form"]>, "onSubmit"> {
extends Omit<PropsWithoutRef<React.JSX.IntrinsicElements["form"]>, "onSubmit"> {
/** All your form fields */
children?: ReactNode
/** Text to display in the submit button */

View File

@@ -2,14 +2,14 @@ import { ComponentPropsWithoutRef, forwardRef, PropsWithoutRef } from "react"
import { useFormContext } from "react-hook-form"
import { ErrorMessage } from "@hookform/error-message"
export interface LabeledSelectFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["select"]> {
export interface LabeledSelectFieldProps extends PropsWithoutRef<React.JSX.IntrinsicElements["select"]> {
/** Field name. */
name: string
/** Field label. */
label: string
/** Field type. Doesn't include radio buttons and checkboxes */
options: any[]
outerProps?: PropsWithoutRef<JSX.IntrinsicElements["div"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
labelProps?: ComponentPropsWithoutRef<"label">
}

View File

@@ -2,14 +2,14 @@ import { forwardRef, PropsWithoutRef, ComponentPropsWithoutRef } from "react"
import { useFormContext } from "react-hook-form"
import { ErrorMessage } from "@hookform/error-message"
export interface LabeledTextFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["input"]> {
export interface LabeledTextFieldProps extends PropsWithoutRef<React.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"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
labelProps?: ComponentPropsWithoutRef<"label">
}

View File

@@ -31,18 +31,17 @@
"@prisma/client": "5.4.2",
"blitz": "latest",
"formik": "2.4.5",
"next": "14.1.4",
"next": "14.2.15",
"prisma": "5.4.2",
"react": "18.2.0",
"react-dom": "18.2.0",
"secure-password": "4.0.0",
"zod": "3.22.4"
"zod": "3.23.8"
},
"devDependencies": {
"@next/env": "13.4.19",
"@testing-library/jest-dom": "5.16.5",
"@testing-library/react": "13.4.0",
"@testing-library/react-hooks": "8.0.1",
"@testing-library/react": "16.0.1",
"@types/node": "18.11.9",
"@types/preview-email": "2.0.1",
"@types/react": "18.0.25",

View File

@@ -9,7 +9,6 @@ declare module "@blitzjs/auth" {
PublicData: {
userId: User["id"]
role: Role
views?: number
}
}
}

View File

@@ -5,7 +5,7 @@ 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"> {
extends Omit<PropsWithoutRef<React.JSX.IntrinsicElements["form"]>, "onSubmit"> {
/** All your form fields */
children?: ReactNode
/** Text to display in the submit button */

View File

@@ -1,14 +1,14 @@
import { forwardRef, PropsWithoutRef } from "react"
import { useField } from "react-final-form"
export interface LabeledSelectFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["select"]> {
export interface LabeledSelectFieldProps extends PropsWithoutRef<React.JSX.IntrinsicElements["select"]> {
/** Field name. */
name: string
/** Field label. */
label: string
type?: "number" | "string"
options: any
outerProps?: PropsWithoutRef<JSX.IntrinsicElements["div"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
}
export const LabeledSelectField = forwardRef<HTMLSelectElement, LabeledSelectFieldProps>(

View File

@@ -1,14 +1,14 @@
import { forwardRef, ComponentPropsWithoutRef, PropsWithoutRef } from "react"
import { useField, UseFieldConfig } from "react-final-form"
export interface LabeledTextFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["input"]> {
export interface LabeledTextFieldProps extends PropsWithoutRef<React.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"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
labelProps?: ComponentPropsWithoutRef<"label">
fieldProps?: UseFieldConfig<string>
}

View File

@@ -4,7 +4,7 @@ import { validateZodSchema } from "blitz"
import { z } from "zod"
export interface FormProps<S extends z.ZodType<any, any>>
extends Omit<PropsWithoutRef<JSX.IntrinsicElements["form"]>, "onSubmit"> {
extends Omit<PropsWithoutRef<React.JSX.IntrinsicElements["form"]>, "onSubmit"> {
/** All your form fields */
children?: ReactNode
/** Text to display in the submit button */

View File

@@ -2,14 +2,14 @@ import { forwardRef, PropsWithoutRef } from "react";
import { useFormikContext, ErrorMessage, Field } from "formik";
export interface LabeledSelectFieldProps
extends PropsWithoutRef<JSX.IntrinsicElements["select"]> {
extends PropsWithoutRef<React.JSX.IntrinsicElements["select"]> {
/** Field name. */
name: string;
/** Field label. */
label: string;
/** Field options. */
options: any;
outerProps?: PropsWithoutRef<JSX.IntrinsicElements["div"]>;
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>;
}
export const LabeledSelectField = forwardRef<

View File

@@ -1,14 +1,14 @@
import { forwardRef, PropsWithoutRef } from "react"
import { useField, useFormikContext, ErrorMessage } from "formik"
export interface LabeledTextFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["input"]> {
export interface LabeledTextFieldProps extends PropsWithoutRef<React.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"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
}
export const LabeledTextField = forwardRef<HTMLInputElement, LabeledTextFieldProps>(

View File

@@ -4,7 +4,7 @@ import { zodResolver } from "@hookform/resolvers/zod"
import { z } from "zod"
export interface FormProps<S extends z.ZodType<any, any>>
extends Omit<PropsWithoutRef<JSX.IntrinsicElements["form"]>, "onSubmit"> {
extends Omit<PropsWithoutRef<React.JSX.IntrinsicElements["form"]>, "onSubmit"> {
/** All your form fields */
children?: ReactNode
/** Text to display in the submit button */

View File

@@ -2,14 +2,14 @@ import { ComponentPropsWithoutRef, forwardRef, PropsWithoutRef } from "react"
import { useFormContext } from "react-hook-form"
import { ErrorMessage } from "@hookform/error-message"
export interface LabeledSelectFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["select"]> {
export interface LabeledSelectFieldProps extends PropsWithoutRef<React.JSX.IntrinsicElements["select"]> {
/** Field name. */
name: string
/** Field label. */
label: string
/** Field type. Doesn't include radio buttons and checkboxes */
options: any[]
outerProps?: PropsWithoutRef<JSX.IntrinsicElements["div"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
labelProps?: ComponentPropsWithoutRef<"label">
}

View File

@@ -2,14 +2,14 @@ import { forwardRef, PropsWithoutRef, ComponentPropsWithoutRef } from "react"
import { useFormContext } from "react-hook-form"
import { ErrorMessage } from "@hookform/error-message"
export interface LabeledTextFieldProps extends PropsWithoutRef<JSX.IntrinsicElements["input"]> {
export interface LabeledTextFieldProps extends PropsWithoutRef<React.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"]>
outerProps?: PropsWithoutRef<React.JSX.IntrinsicElements["div"]>
labelProps?: ComponentPropsWithoutRef<"label">
}

View File

@@ -25,20 +25,19 @@
"@blitzjs/auth": "latest",
"@blitzjs/next": "latest",
"@blitzjs/rpc": "latest",
"@prisma/client": "4.6.1",
"@prisma/client": "6.1.0",
"blitz": "latest",
"next": "14.1.4",
"prisma": "4.6.1",
"next": "14.2.15",
"prisma": "6.1.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"secure-password": "4.0.0",
"zod": "3.20.2"
"zod": "3.23.8"
},
"devDependencies": {
"@next/bundle-analyzer": "12.0.8",
"@testing-library/jest-dom": "5.16.5",
"@testing-library/react": "13.4.0",
"@testing-library/react-hooks": "8.0.1",
"@testing-library/react": "16.0.1",
"@types/node": "18.11.9",
"@types/preview-email": "2.0.1",
"@types/react": "18.0.25",

View File

@@ -25,21 +25,20 @@
"@blitzjs/auth": "latest",
"@blitzjs/next": "latest",
"@blitzjs/rpc": "latest",
"@prisma/client": "4.6.1",
"@prisma/client": "6.1.0",
"blitz": "latest",
"next": "14.1.4",
"prisma": "4.6.1",
"next": "14.2.15",
"prisma": "6.1.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"secure-password": "4.0.0",
"zod": "3.20.2"
"zod": "3.23.8"
},
"devDependencies": {
"@next/bundle-analyzer": "12.0.8",
"@next/env": "13.4.19",
"@testing-library/jest-dom": "5.16.5",
"@testing-library/react": "13.4.0",
"@testing-library/react-hooks": "8.0.1",
"@testing-library/react": "16.0.1",
"@types/node": "18.11.9",
"@types/preview-email": "2.0.1",
"@types/react": "18.0.25",

View File

@@ -1,7 +1,7 @@
import {vi} from "vitest"
import { render as defaultRender } from "@testing-library/react"
import { renderHook as defaultRenderHook } from "@testing-library/react-hooks"
import { renderHook as defaultRenderHook } from "@testing-library/react"
import { NextRouter } from "next/router"
import {BlitzProvider, RouterContext} from "@blitzjs/next"
import { QueryClient } from "@blitzjs/rpc"

View File

@@ -5,17 +5,19 @@ import get__ModelName__ from "../../queries/get__ModelName__"
import { Edit__ModelName__ } from "../../components/Edit__ModelName__"
type Edit__ModelName__PageProps = {
params: { __modelId__: string }
params: Promise<{ __modelId__: string }>
}
export async function generateMetadata({ params }: Edit__ModelName__PageProps): Promise<Metadata> {
export async function generateMetadata(props: Edit__ModelName__PageProps): Promise<Metadata> {
const params = await props.params;
const __ModelName__ = await invoke(get__ModelName__, { id: Number(params.__modelId__) })
return {
title: `Edit __ModelName__ ${__ModelName__.id} - ${__ModelName__.name}`,
}
}
export default async function Page({ params }: Edit__ModelName__PageProps) {
export default async function Page(props: Edit__ModelName__PageProps) {
const params = await props.params;
return (
<div>
<Suspense fallback={<div>Loading...</div>}>

View File

@@ -5,7 +5,8 @@ import { invoke } from "src/app/blitz-server"
import get__ModelName__ from "../queries/get__ModelName__"
import { __ModelName__ } from "../components/__ModelName__"
export async function generateMetadata({ params }: __ModelName__PageProps): Promise<Metadata> {
export async function generateMetadata(props: __ModelName__PageProps): Promise<Metadata> {
const params = await props.params;
const __ModelName__ = await invoke(get__ModelName__, { id: Number(params.__modelId__) })
return {
title: `__ModelName__ ${__ModelName__.id} - ${__ModelName__.name}`,
@@ -13,10 +14,11 @@ export async function generateMetadata({ params }: __ModelName__PageProps): Prom
}
type __ModelName__PageProps = {
params: { __modelId__: string }
params: Promise<{ __modelId__: string }>
}
export default async function Page({ params }: __ModelName__PageProps) {
export default async function Page(props: __ModelName__PageProps) {
const params = await props.params;
return (
<div>
<p>

View File

@@ -220,7 +220,7 @@ describe("Form Generator", () => {
attributeName: "field8",
fieldName: "field8",
field_name: "field8",
zodType: "string().datetime()",
zodType: "string().datetime",
prismaType: "DateTime",
inputType: "text",
},

View File

@@ -25,10 +25,10 @@
"@typescript-eslint/parser": "5.9.1"
},
"devDependencies": {
"@blitzjs/config": "2.1.1",
"@types/react": "18.0.25",
"@types/react-dom": "17.0.14",
"react": "18.2.0",
"@blitzjs/config": "2.2.0",
"@types/react": "npm:types-react@19.0.0",
"@types/react-dom": "npm:types-react-dom@19.0.0",
"react": "19.0.0",
"typescript": "^4.8.4",
"unbuild": "0.7.6",
"watch": "1.0.2"

2331
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

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

Some files were not shown because too many files have changed in this diff Show More