Compare commits
26 Commits
@blitzjs/c
...
@blitzjs/c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b364af7f57 | ||
|
|
20fc9f80f4 | ||
|
|
80e1ead7cb | ||
|
|
a3bbe6ce3f | ||
|
|
348fd6f5e4 | ||
|
|
cacb65d633 | ||
|
|
f397cc2036 | ||
|
|
ffa7b5ccc2 | ||
|
|
a961aff881 | ||
|
|
ac9c4cebc8 | ||
|
|
a7e37c58db | ||
|
|
b0d2505a85 | ||
|
|
024cd819e3 | ||
|
|
12cb7a727d | ||
|
|
923703b661 | ||
|
|
70f9ae4921 | ||
|
|
c738ecacbc | ||
|
|
ad0b087d9f | ||
|
|
dc694cf1cf | ||
|
|
4c221b655e | ||
|
|
c11f0401cf | ||
|
|
830b51d0dc | ||
|
|
bec9512e30 | ||
|
|
1493729d6b | ||
|
|
6bb5980da9 | ||
|
|
7310f7171d |
5
.changeset/cool-horses-check.md
Normal file
5
.changeset/cool-horses-check.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Fixes issue when generating a new blitz app with the form flag that ends up installing the wrong form library
|
||||
5
.changeset/good-apes-drum.md
Normal file
5
.changeset/good-apes-drum.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Fixes wrong import of the db module in `blitz db seed` command function
|
||||
6
.changeset/lemon-games-press.md
Normal file
6
.changeset/lemon-games-press.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/rpc": patch
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
Update Next.js version and addBasePath location
|
||||
6
.changeset/moody-bags-walk.md
Normal file
6
.changeset/moody-bags-walk.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/next": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Fix redirectAuthenticatedTo errors
|
||||
5
.changeset/nice-deers-dream.md
Normal file
5
.changeset/nice-deers-dream.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/next": patch
|
||||
---
|
||||
|
||||
Export BlitzProvider from @blitzjs/next
|
||||
7
.changeset/nine-birds-confess.md
Normal file
7
.changeset/nine-birds-confess.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
"@blitzjs/next": patch
|
||||
"@blitzjs/rpc": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Fix SSP / SP not prefetching queries correctly
|
||||
5
.changeset/olive-sheep-rhyme.md
Normal file
5
.changeset/olive-sheep-rhyme.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
Add missing lint deps to the new app templates
|
||||
5
.changeset/popular-teachers-pay.md
Normal file
5
.changeset/popular-teachers-pay.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/codemod": patch
|
||||
---
|
||||
|
||||
Handle next/dynamic default import in codemod
|
||||
@@ -25,6 +25,7 @@
|
||||
"breezy-cameras-double",
|
||||
"bright-mangos-run",
|
||||
"cool-doors-invent",
|
||||
"cool-horses-check",
|
||||
"dirty-monkeys-greet",
|
||||
"eleven-humans-sort",
|
||||
"empty-berries-rule",
|
||||
@@ -37,41 +38,52 @@
|
||||
"four-meals-fry",
|
||||
"fuzzy-jars-admire",
|
||||
"gentle-dogs-reply",
|
||||
"good-apes-drum",
|
||||
"good-insects-wink",
|
||||
"great-months-train",
|
||||
"green-papayas-do",
|
||||
"healthy-rice-shout",
|
||||
"hot-drinks-approve",
|
||||
"late-steaks-give",
|
||||
"lemon-games-press",
|
||||
"lovely-colts-share",
|
||||
"lucky-cows-try",
|
||||
"modern-cameras-pull",
|
||||
"moody-bags-walk",
|
||||
"moody-squids-cheer",
|
||||
"nervous-beds-travel",
|
||||
"nervous-dolls-rule",
|
||||
"new-coats-turn",
|
||||
"nice-deers-dream",
|
||||
"nice-starfishes-live",
|
||||
"nine-birds-confess",
|
||||
"nine-onions-admire",
|
||||
"ninety-pets-heal",
|
||||
"olive-bees-buy",
|
||||
"olive-feet-rhyme",
|
||||
"olive-sheep-rhyme",
|
||||
"plenty-bottles-swim",
|
||||
"poor-peas-lick",
|
||||
"poor-penguins-look",
|
||||
"poor-shrimps-think",
|
||||
"popular-teachers-pay",
|
||||
"purple-singers-greet",
|
||||
"quiet-feet-travel",
|
||||
"quiet-pans-hunt",
|
||||
"quiet-sloths-rule",
|
||||
"rich-chairs-invent",
|
||||
"rich-queens-travel",
|
||||
"sharp-falcons-begin",
|
||||
"shy-olives-hang",
|
||||
"silent-colts-reply",
|
||||
"slimy-needles-taste",
|
||||
"slow-walls-poke",
|
||||
"small-socks-confess",
|
||||
"smooth-planets-admire",
|
||||
"strong-apes-reply",
|
||||
"stupid-walls-sell",
|
||||
"swift-drinks-dress",
|
||||
"tall-meals-learn",
|
||||
"tame-keys-reply",
|
||||
"tasty-news-collect",
|
||||
"ten-hairs-listen",
|
||||
@@ -79,7 +91,9 @@
|
||||
"tender-pianos-check",
|
||||
"thick-parrots-float",
|
||||
"thirty-countries-build",
|
||||
"tidy-clouds-smoke",
|
||||
"twenty-beans-pump",
|
||||
"two-carpets-rhyme",
|
||||
"two-kiwis-help",
|
||||
"two-tigers-type",
|
||||
"unlucky-papayas-sleep",
|
||||
|
||||
5
.changeset/quiet-sloths-rule.md
Normal file
5
.changeset/quiet-sloths-rule.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/next": patch
|
||||
---
|
||||
|
||||
Removes the check for when withBlitz is mounted before rendering the users app. We had this previously to avoid the react 18 suspense error being showin in development with nextjs.
|
||||
6
.changeset/slimy-needles-taste.md
Normal file
6
.changeset/slimy-needles-taste.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/next": patch
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
Add jest.config.js to newly generated typescript apps
|
||||
6
.changeset/slow-walls-poke.md
Normal file
6
.changeset/slow-walls-poke.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/next": patch
|
||||
"@blitzjs/rpc": patch
|
||||
---
|
||||
|
||||
Allow resolverPath to be a function which is ran for every file path that is converted to RPC Route
|
||||
5
.changeset/tall-meals-learn.md
Normal file
5
.changeset/tall-meals-learn.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
Upgrade Prisma to v4.0.0
|
||||
5
.changeset/tidy-clouds-smoke.md
Normal file
5
.changeset/tidy-clouds-smoke.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Fix routes manifest showing duplicates for non queries|resolvers reso…
|
||||
5
.changeset/two-carpets-rhyme.md
Normal file
5
.changeset/two-carpets-rhyme.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
During `blitz new` if project name argument is set to "." change it to current folder name
|
||||
43
.github/release-drafter.yml
vendored
43
.github/release-drafter.yml
vendored
@@ -1,43 +0,0 @@
|
||||
name-template: "v$RESOLVED_VERSION"
|
||||
tag-template: "v$RESOLVED_VERSION"
|
||||
# categories:
|
||||
# - title: 'Blitz'
|
||||
# label: 'blitz'
|
||||
# - title: '@blitzjs/next'
|
||||
# label: 'blitz-next'
|
||||
# - title: '@blitzjs/rpc'
|
||||
# label: 'blitz-rpc'
|
||||
# - title: '@blitzjs/auth'
|
||||
# label: 'blitz-auth'
|
||||
version-resolver:
|
||||
major:
|
||||
labels:
|
||||
- "major"
|
||||
minor:
|
||||
labels:
|
||||
- "minor"
|
||||
patch:
|
||||
labels:
|
||||
- "patch"
|
||||
default: patch
|
||||
# autolabeler:
|
||||
# - label: 'blitz'
|
||||
# title:
|
||||
# - '/blitz/i'
|
||||
# - label: 'blitz-next'
|
||||
# title:
|
||||
# - '/@blitzjs\/next/i'
|
||||
# - label: 'blitz-rpc'
|
||||
# title:
|
||||
# - '/@blitzjs\/rpc/i'
|
||||
# - label: 'blitz-auth'
|
||||
# title:
|
||||
# - '/@blitzjs\/auth/i'
|
||||
template: |
|
||||
## What’s Changed
|
||||
|
||||
$CHANGES
|
||||
|
||||
## Contributors
|
||||
|
||||
$CONTRIBUTORS
|
||||
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@@ -42,10 +42,10 @@ jobs:
|
||||
- run: pnpm build
|
||||
|
||||
- name: Create Release Pull Request
|
||||
uses: changesets/action@v1
|
||||
uses: blitz-js/changesets-action@main
|
||||
with:
|
||||
publish: pnpm release
|
||||
createGithubReleases: false
|
||||
createGithubReleases: true
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
|
||||
@@ -29,14 +29,14 @@
|
||||
"@blitzjs/rpc": "workspace:*",
|
||||
"@hookform/resolvers": "2.8.8",
|
||||
"@prisma/client": "3.9.0",
|
||||
"blitz": "workspace:2.0.0-alpha.48",
|
||||
"next": "12.1.6-canary.17",
|
||||
"prisma": "3.9.0",
|
||||
"blitz": "workspace:2.0.0-alpha.54",
|
||||
"next": "12.2.0",
|
||||
"prisma": "4.0.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0",
|
||||
"react-hook-form": "7.29.0",
|
||||
"ts-node": "10.7.0",
|
||||
"zod": "3.10.1"
|
||||
"zod": "3.17.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@next/bundle-analyzer": "12.0.8",
|
||||
@@ -46,7 +46,10 @@
|
||||
"@types/node": "17.0.16",
|
||||
"@types/preview-email": "2.0.1",
|
||||
"@types/react": "18.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "5.9.1",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-config-next": "12.2.0",
|
||||
"eslint-config-prettier": "8.5.0",
|
||||
"husky": "7.0.4",
|
||||
"jest": "27.5.1",
|
||||
"lint-staged": "12.1.7",
|
||||
|
||||
@@ -10,7 +10,6 @@ module.exports = withBlitz(
|
||||
customServer: {
|
||||
hotReload: false,
|
||||
},
|
||||
resolverBasePath: "root",
|
||||
},
|
||||
}),
|
||||
)
|
||||
|
||||
@@ -25,10 +25,10 @@
|
||||
"@types/passport-twitter": "1.0.37",
|
||||
"blitz": "workspace:*",
|
||||
"jest": "27.5.1",
|
||||
"next": "12.1.6-canary.17",
|
||||
"next": "12.2.0",
|
||||
"passport-mock-strategy": "2.0.0",
|
||||
"passport-twitter": "1.0.4",
|
||||
"prisma": "3.9.0",
|
||||
"prisma": "4.0.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0",
|
||||
"ts-node": "10.7.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {ErrorFallbackProps, ErrorComponent, ErrorBoundary, AppProps} from "@blitzjs/next"
|
||||
import {AuthenticationError, AuthorizationError} from "blitz"
|
||||
import React from "react"
|
||||
import React, {Suspense} from "react"
|
||||
import {withBlitz} from "app/blitz-client"
|
||||
|
||||
function RootErrorFallback({error}: ErrorFallbackProps) {
|
||||
@@ -26,7 +26,9 @@ function RootErrorFallback({error}: ErrorFallbackProps) {
|
||||
function MyApp({Component, pageProps}: AppProps) {
|
||||
return (
|
||||
<ErrorBoundary FallbackComponent={RootErrorFallback}>
|
||||
<Component {...pageProps} />
|
||||
<Suspense fallback="Loading...">
|
||||
<Component {...pageProps} />
|
||||
</Suspense>
|
||||
</ErrorBoundary>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
"@prisma/client": "3.9.0",
|
||||
"blitz": "workspace:*",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "12.1.6-canary.17",
|
||||
"prisma": "3.9.0",
|
||||
"next": "12.2.0",
|
||||
"prisma": "4.0.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0"
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {ErrorFallbackProps, ErrorComponent, ErrorBoundary, AppProps} from "@blitzjs/next"
|
||||
import {AuthenticationError, AuthorizationError} from "blitz"
|
||||
import React from "react"
|
||||
import React, {Suspense} from "react"
|
||||
import {withBlitz} from "../app/blitz-client"
|
||||
|
||||
function RootErrorFallback({error}: ErrorFallbackProps) {
|
||||
@@ -25,9 +25,11 @@ function RootErrorFallback({error}: ErrorFallbackProps) {
|
||||
|
||||
function MyApp({Component, pageProps}: AppProps) {
|
||||
return (
|
||||
<ErrorBoundary FallbackComponent={RootErrorFallback}>
|
||||
<Component {...pageProps} />
|
||||
</ErrorBoundary>
|
||||
<Suspense fallback="Loading...">
|
||||
<ErrorBoundary FallbackComponent={RootErrorFallback}>
|
||||
<Component {...pageProps} />
|
||||
</ErrorBoundary>
|
||||
</Suspense>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
const {withBlitz} = require("@blitzjs/next")
|
||||
module.exports = withBlitz({
|
||||
// update me
|
||||
})
|
||||
module.exports = withBlitz({})
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"@blitzjs/next": "workspace:*",
|
||||
"@blitzjs/rpc": "workspace:*",
|
||||
"blitz": "workspace:*",
|
||||
"next": "12.1.6-canary.17",
|
||||
"next": "12.2.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0"
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {ErrorFallbackProps, ErrorComponent, ErrorBoundary, AppProps} from "@blitzjs/next"
|
||||
import {AuthenticationError, AuthorizationError} from "blitz"
|
||||
import React from "react"
|
||||
import React, {Suspense} from "react"
|
||||
import {withBlitz} from "../app/blitz-client"
|
||||
|
||||
function RootErrorFallback({error}: ErrorFallbackProps) {
|
||||
@@ -25,9 +25,11 @@ function RootErrorFallback({error}: ErrorFallbackProps) {
|
||||
|
||||
function MyApp({Component, pageProps}: AppProps) {
|
||||
return (
|
||||
<ErrorBoundary FallbackComponent={RootErrorFallback}>
|
||||
<Component {...pageProps} />
|
||||
</ErrorBoundary>
|
||||
<Suspense fallback="Loading...">
|
||||
<ErrorBoundary FallbackComponent={RootErrorFallback}>
|
||||
<Component {...pageProps} />
|
||||
</ErrorBoundary>
|
||||
</Suspense>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
"@prisma/client": "3.9.0",
|
||||
"blitz": "workspace:*",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "12.1.6-canary.17",
|
||||
"prisma": "3.9.0",
|
||||
"next": "12.2.0",
|
||||
"prisma": "4.0.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0"
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {ErrorFallbackProps, ErrorComponent, ErrorBoundary, AppProps} from "@blitzjs/next"
|
||||
import {AuthenticationError, AuthorizationError} from "blitz"
|
||||
import React from "react"
|
||||
import React, {Suspense} from "react"
|
||||
import {withBlitz} from "../app/blitz-client"
|
||||
|
||||
function RootErrorFallback({error}: ErrorFallbackProps) {
|
||||
@@ -25,9 +25,11 @@ function RootErrorFallback({error}: ErrorFallbackProps) {
|
||||
|
||||
function MyApp({Component, pageProps}: AppProps) {
|
||||
return (
|
||||
<ErrorBoundary FallbackComponent={RootErrorFallback}>
|
||||
<Component {...pageProps} />
|
||||
</ErrorBoundary>
|
||||
<Suspense fallback="Loading...">
|
||||
<ErrorBoundary FallbackComponent={RootErrorFallback}>
|
||||
<Component {...pageProps} />
|
||||
</ErrorBoundary>
|
||||
</Suspense>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
"@blitzjs/rpc": "workspace:*",
|
||||
"@prisma/client": "3.9.0",
|
||||
"blitz": "workspace:*",
|
||||
"next": "12.1.6-canary.17",
|
||||
"prisma": "3.9.0",
|
||||
"next": "12.2.0",
|
||||
"prisma": "4.0.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0",
|
||||
"react-query": "3.39.0"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const {withBlitz} = require("@blitzjs/next")
|
||||
module.exports = withBlitz({
|
||||
target: 'experimental-serverless-trace',
|
||||
target: "experimental-serverless-trace",
|
||||
})
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"@blitzjs/next": "workspace:*",
|
||||
"@blitzjs/rpc": "workspace:*",
|
||||
"blitz": "workspace:*",
|
||||
"next": "12.1.6-canary.17",
|
||||
"next": "12.2.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0"
|
||||
},
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
"@prisma/client": "3.9.0",
|
||||
"blitz": "workspace:*",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "12.1.6-canary.17",
|
||||
"prisma": "3.9.0",
|
||||
"next": "12.2.0",
|
||||
"prisma": "4.0.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0"
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {ErrorFallbackProps, ErrorComponent, ErrorBoundary, AppProps} from "@blitzjs/next"
|
||||
import {AuthenticationError, AuthorizationError} from "blitz"
|
||||
import React from "react"
|
||||
import React, {Suspense} from "react"
|
||||
import {withBlitz} from "../app/blitz-client"
|
||||
|
||||
function RootErrorFallback({error}: ErrorFallbackProps) {
|
||||
@@ -25,9 +25,11 @@ function RootErrorFallback({error}: ErrorFallbackProps) {
|
||||
|
||||
function MyApp({Component, pageProps}: AppProps) {
|
||||
return (
|
||||
<ErrorBoundary FallbackComponent={RootErrorFallback}>
|
||||
<Component {...pageProps} />
|
||||
</ErrorBoundary>
|
||||
<Suspense fallback="Loading...">
|
||||
<ErrorBoundary FallbackComponent={RootErrorFallback}>
|
||||
<Component {...pageProps} />
|
||||
</ErrorBoundary>
|
||||
</Suspense>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -28,9 +28,8 @@
|
||||
"husky": "7.0.4",
|
||||
"jsdom": "^19.0.0",
|
||||
"lint-staged": "12.1.7",
|
||||
"next": "12.1.6-canary.17",
|
||||
"next": "12.2.0",
|
||||
"only-allow": "1.1.0",
|
||||
"patch-package": "6.4.7",
|
||||
"prettier": "^2.5.1",
|
||||
"prettier-plugin-prisma": "3.8.0",
|
||||
"pretty-quick": "3.1.3",
|
||||
@@ -39,5 +38,5 @@
|
||||
"wait-on": "6.0.1"
|
||||
},
|
||||
"npmClient": "pnpm",
|
||||
"packageManager": "pnpm@6.21.0"
|
||||
"packageManager": "pnpm@7.4.0-1"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,47 @@
|
||||
# @blitzjs/auth
|
||||
|
||||
## 2.0.0-alpha.54
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [f397cc20]
|
||||
- Updated dependencies [cacb65d6]
|
||||
- Updated dependencies [348fd6f5]
|
||||
- Updated dependencies [20fc9f80]
|
||||
- Updated dependencies [a3bbe6ce]
|
||||
- Updated dependencies [ffa7b5cc]
|
||||
- blitz@2.0.0-alpha.54
|
||||
|
||||
## 2.0.0-alpha.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- blitz@2.0.0-alpha.53
|
||||
|
||||
## 2.0.0-alpha.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- blitz@2.0.0-alpha.52
|
||||
|
||||
## 2.0.0-alpha.51
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- blitz@2.0.0-alpha.51
|
||||
|
||||
## 2.0.0-alpha.50
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- blitz@2.0.0-alpha.50
|
||||
|
||||
## 2.0.0-alpha.49
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- blitz@2.0.0-alpha.49
|
||||
|
||||
## 2.0.0-alpha.48
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/auth",
|
||||
"version": "2.0.0-alpha.48",
|
||||
"version": "2.0.0-alpha.54",
|
||||
"scripts": {
|
||||
"build": "unbuild",
|
||||
"predev": "wait-on -d 250 ../blitz/dist/index-server.d.ts",
|
||||
@@ -26,7 +26,7 @@
|
||||
"@types/secure-password": "3.1.1",
|
||||
"b64-lite": "1.4.0",
|
||||
"bad-behavior": "1.0.1",
|
||||
"blitz": "2.0.0-alpha.48",
|
||||
"blitz": "2.0.0-alpha.54",
|
||||
"cookie": "0.4.1",
|
||||
"cookie-session": "2.0.0",
|
||||
"debug": "4.3.3",
|
||||
@@ -39,7 +39,7 @@
|
||||
"url": "0.11.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "workspace:2.0.0-alpha.48",
|
||||
"@blitzjs/config": "workspace:2.0.0-alpha.54",
|
||||
"@testing-library/react": "13.0.0",
|
||||
"@testing-library/react-hooks": "7.0.2",
|
||||
"@types/cookie": "0.4.1",
|
||||
|
||||
@@ -57,7 +57,7 @@ export type VerifyCallbackResult = {
|
||||
|
||||
export type ApiHandlerIncomingMessage = IncomingMessage & {
|
||||
query: {
|
||||
[key: string]: string | string[]
|
||||
[key: string]: string | string[] | undefined
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,50 @@
|
||||
# @blitzjs/next
|
||||
|
||||
## 2.0.0-alpha.54
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 348fd6f5: Fix redirectAuthenticatedTo errors
|
||||
- 20fc9f80: Fix SSP / SP not prefetching queries correctly
|
||||
- 80e1ead7: Add jest.config.js to newly generated typescript apps
|
||||
- Updated dependencies [20fc9f80]
|
||||
- @blitzjs/rpc@2.0.0-alpha.54
|
||||
|
||||
## 2.0.0-alpha.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- a7e37c58: Export BlitzProvider from @blitzjs/next
|
||||
- @blitzjs/rpc@2.0.0-alpha.53
|
||||
|
||||
## 2.0.0-alpha.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @blitzjs/rpc@2.0.0-alpha.52
|
||||
|
||||
## 2.0.0-alpha.51
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @blitzjs/rpc@2.0.0-alpha.51
|
||||
|
||||
## 2.0.0-alpha.50
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- dc694cf1: Removes the check for when withBlitz is mounted before rendering the users app. We had this previously to avoid the react 18 suspense error being showin in development with nextjs.
|
||||
- Updated dependencies [c11f0401]
|
||||
- @blitzjs/rpc@2.0.0-alpha.50
|
||||
|
||||
## 2.0.0-alpha.49
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- bec9512e: Allow resolverPath to be a function which is ran for every file path that is converted to RPC Route
|
||||
- Updated dependencies [bec9512e]
|
||||
- @blitzjs/rpc@2.0.0-alpha.49
|
||||
|
||||
## 2.0.0-alpha.48
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/next",
|
||||
"version": "2.0.0-alpha.48",
|
||||
"version": "2.0.0-alpha.54",
|
||||
"scripts": {
|
||||
"build": "unbuild",
|
||||
"dev": "pnpm predev && pnpm watch unbuild src --wait=0.2",
|
||||
@@ -18,12 +18,13 @@
|
||||
"sideEffects": false,
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
"jest/**",
|
||||
"dist/**",
|
||||
"scripts/**",
|
||||
"eslint.js"
|
||||
],
|
||||
"dependencies": {
|
||||
"@blitzjs/rpc": "2.0.0-alpha.48",
|
||||
"@blitzjs/rpc": "2.0.0-alpha.54",
|
||||
"@types/hoist-non-react-statics": "3.3.1",
|
||||
"debug": "4.3.3",
|
||||
"fs-extra": "10.0.1",
|
||||
@@ -32,7 +33,7 @@
|
||||
"superjson": "1.8.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "workspace:2.0.0-alpha.48",
|
||||
"@blitzjs/config": "workspace:2.0.0-alpha.54",
|
||||
"@testing-library/dom": "8.13.0",
|
||||
"@testing-library/jest-dom": "5.16.3",
|
||||
"@testing-library/react": "13.0.0",
|
||||
@@ -42,10 +43,10 @@
|
||||
"@types/react": "18.0.1",
|
||||
"@types/react-dom": "17.0.14",
|
||||
"@types/testing-library__react-hooks": "4.0.0",
|
||||
"blitz": "2.0.0-alpha.48",
|
||||
"blitz": "2.0.0-alpha.54",
|
||||
"cross-spawn": "7.0.3",
|
||||
"find-up": "4.1.0",
|
||||
"next": "12.1.6-canary.17",
|
||||
"next": "12.2.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0",
|
||||
"resolve-from": "5.0.0",
|
||||
@@ -58,7 +59,7 @@
|
||||
"access": "public"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"next": "*",
|
||||
"next": ">=12.2.0",
|
||||
"react": "*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,8 @@ import {withSuperJSONPage} from "./superjson"
|
||||
import {Ctx} from "blitz"
|
||||
import {UrlObject} from "url"
|
||||
import {AppPropsType} from "next/dist/shared/lib/utils"
|
||||
import {Router} from "next/router"
|
||||
import {Router, useRouter} from "next/router"
|
||||
import {RouterContext} from "./router-context"
|
||||
|
||||
export * from "./error-boundary"
|
||||
export * from "./error-component"
|
||||
@@ -35,11 +36,7 @@ const buildWithBlitz = <TPlugins extends readonly ClientPlugin<object>[]>(plugin
|
||||
const BlitzOuterRoot = (props: AppProps) => {
|
||||
const component = React.useMemo(() => withPlugins(props.Component), [props.Component])
|
||||
|
||||
const [mounted, setMounted] = React.useState(false)
|
||||
|
||||
React.useEffect(() => {
|
||||
// Current workaround to fix react 18 suspense error issue
|
||||
setMounted(true)
|
||||
// supress first render flicker
|
||||
setTimeout(() => {
|
||||
document.documentElement.classList.add("blitz-first-render-complete")
|
||||
@@ -51,7 +48,7 @@ const buildWithBlitz = <TPlugins extends readonly ClientPlugin<object>[]>(plugin
|
||||
<>
|
||||
{/* @ts-ignore todo */}
|
||||
{props.Component.suppressFirstRenderFlicker && <NoPageFlicker />}
|
||||
{mounted && <UserAppRoot {...props} Component={component} />}
|
||||
<UserAppRoot {...props} Component={component} />
|
||||
</>
|
||||
</BlitzProvider>
|
||||
)
|
||||
@@ -71,6 +68,7 @@ export type BlitzProviderProps = {
|
||||
interface RouteUrlObject extends Pick<UrlObject, "pathname" | "query"> {
|
||||
pathname: string
|
||||
}
|
||||
|
||||
type RedirectAuthenticatedTo = string | RouteUrlObject | false
|
||||
type RedirectAuthenticatedToFnCtx = {
|
||||
session: Ctx["session"]["$publicData"]
|
||||
@@ -89,27 +87,31 @@ export type BlitzLayout<P = {}> = React.ComponentType<P> & {
|
||||
export type AppProps<P = {}> = AppPropsType<Router, P> & {
|
||||
Component: BlitzPage
|
||||
}
|
||||
const BlitzProvider = ({
|
||||
client,
|
||||
export const BlitzProvider = ({
|
||||
client = globalThis.queryClient,
|
||||
contextSharing = false,
|
||||
dehydratedState,
|
||||
hydrateOptions,
|
||||
children,
|
||||
}: BlitzProviderProps) => {
|
||||
if (globalThis.queryClient) {
|
||||
const router = useRouter()
|
||||
|
||||
if (client) {
|
||||
return (
|
||||
<QueryClientProvider
|
||||
client={client || globalThis.queryClient}
|
||||
contextSharing={contextSharing}
|
||||
>
|
||||
<Hydrate state={dehydratedState} options={hydrateOptions}>
|
||||
{children}
|
||||
</Hydrate>
|
||||
</QueryClientProvider>
|
||||
<RouterContext.Provider value={router}>
|
||||
<QueryClientProvider
|
||||
client={client || globalThis.queryClient}
|
||||
contextSharing={contextSharing}
|
||||
>
|
||||
<Hydrate state={dehydratedState} options={hydrateOptions}>
|
||||
{children}
|
||||
</Hydrate>
|
||||
</QueryClientProvider>
|
||||
</RouterContext.Provider>
|
||||
)
|
||||
}
|
||||
|
||||
return children
|
||||
return <RouterContext.Provider value={router}>{children}</RouterContext.Provider>
|
||||
}
|
||||
|
||||
export type PluginsExports<TPlugins extends readonly ClientPlugin<object>[]> = Simplify<
|
||||
|
||||
@@ -17,11 +17,17 @@ import type {
|
||||
MiddlewareResponse,
|
||||
} from "blitz"
|
||||
import {handleRequestWithMiddleware, startWatcher, stopWatcher} from "blitz"
|
||||
import {dehydrate, getQueryKey, getInfiniteQueryKey, loaderClient, loaderServer} from "@blitzjs/rpc"
|
||||
import {
|
||||
dehydrate,
|
||||
getInfiniteQueryKey,
|
||||
getQueryKey,
|
||||
installWebpackConfig,
|
||||
InstallWebpackConfigOptions,
|
||||
ResolverPathOptions,
|
||||
} from "@blitzjs/rpc"
|
||||
import {DefaultOptions, QueryClient} from "react-query"
|
||||
import {IncomingMessage, ServerResponse} from "http"
|
||||
import {withSuperJsonProps} from "./superjson"
|
||||
import {ResolverBasePath} from "@blitzjs/rpc/src/index-server"
|
||||
import {ParsedUrlQuery} from "querystring"
|
||||
import {PreviewData} from "next/types"
|
||||
|
||||
@@ -98,7 +104,7 @@ export const setupBlitzServer = ({plugins, onError}: SetupBlitzOptions) => {
|
||||
) => {
|
||||
queryClient = new QueryClient({defaultOptions})
|
||||
|
||||
const queryKey = infinite ? getQueryKey(fn, input) : getInfiniteQueryKey(fn, input)
|
||||
const queryKey = infinite ? getInfiniteQueryKey(fn, input) : getQueryKey(fn, input)
|
||||
await queryClient.prefetchQuery(queryKey, () => fn(input, ctx))
|
||||
}
|
||||
|
||||
@@ -130,7 +136,7 @@ export const setupBlitzServer = ({plugins, onError}: SetupBlitzOptions) => {
|
||||
) => {
|
||||
queryClient = new QueryClient({defaultOptions})
|
||||
|
||||
const queryKey = infinite ? getQueryKey(fn, input) : getInfiniteQueryKey(fn, input)
|
||||
const queryKey = infinite ? getInfiniteQueryKey(fn, input) : getQueryKey(fn, input)
|
||||
await queryClient.prefetchQuery(queryKey, () => fn(input, ctx))
|
||||
}
|
||||
|
||||
@@ -163,59 +169,13 @@ export const setupBlitzServer = ({plugins, onError}: SetupBlitzOptions) => {
|
||||
|
||||
export interface BlitzConfig extends NextConfig {
|
||||
blitz?: {
|
||||
resolverBasePath?: ResolverBasePath
|
||||
resolverPath?: ResolverPathOptions
|
||||
customServer?: {
|
||||
hotReload?: boolean
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface WebpackRuleOptions {
|
||||
resolverBasePath?: ResolverBasePath
|
||||
}
|
||||
|
||||
interface WebpackRule {
|
||||
test: RegExp
|
||||
use: Array<{
|
||||
loader: string
|
||||
options: WebpackRuleOptions
|
||||
}>
|
||||
}
|
||||
|
||||
interface InstallWebpackConfigOptions {
|
||||
webpackConfig: {
|
||||
module: {
|
||||
rules: WebpackRule[]
|
||||
}
|
||||
}
|
||||
nextConfig: BlitzConfig
|
||||
}
|
||||
|
||||
export function installWebpackConfig({webpackConfig, nextConfig}: InstallWebpackConfigOptions) {
|
||||
const options: WebpackRuleOptions = {
|
||||
resolverBasePath: nextConfig.blitz?.resolverBasePath,
|
||||
}
|
||||
|
||||
webpackConfig.module.rules.push({
|
||||
test: /\/\[\[\.\.\.blitz]]\.[jt]s$/,
|
||||
use: [
|
||||
{
|
||||
loader: loaderServer,
|
||||
options,
|
||||
},
|
||||
],
|
||||
})
|
||||
webpackConfig.module.rules.push({
|
||||
test: /[\\/](queries|mutations)[\\/]/,
|
||||
use: [
|
||||
{
|
||||
loader: loaderClient,
|
||||
options,
|
||||
},
|
||||
],
|
||||
})
|
||||
}
|
||||
|
||||
export function withBlitz(nextConfig: BlitzConfig = {}) {
|
||||
if (
|
||||
process.env.NODE_ENV !== "production" &&
|
||||
@@ -236,7 +196,12 @@ export function withBlitz(nextConfig: BlitzConfig = {}) {
|
||||
|
||||
const config = Object.assign({}, nextConfig, {
|
||||
webpack: (config: InstallWebpackConfigOptions["webpackConfig"], options: any) => {
|
||||
installWebpackConfig({webpackConfig: config, nextConfig})
|
||||
installWebpackConfig({
|
||||
webpackConfig: config,
|
||||
webpackRuleOptions: {
|
||||
resolverPath: nextConfig.blitz?.resolverPath,
|
||||
},
|
||||
})
|
||||
if (typeof nextConfig.webpack === "function") {
|
||||
return nextConfig.webpack(config, options)
|
||||
}
|
||||
@@ -259,8 +224,8 @@ function withDehydratedState<T extends Result>(result: T, queryClient: QueryClie
|
||||
if (!queryClient) {
|
||||
return result
|
||||
}
|
||||
const dehydratedProps = dehydrate(queryClient)
|
||||
return {...result, props: {...("props" in result ? result.props : undefined), dehydratedProps}}
|
||||
const dehydratedState = dehydrate(queryClient)
|
||||
return {...result, props: {...("props" in result ? result.props : undefined), dehydratedState}}
|
||||
}
|
||||
|
||||
declare module "blitz" {
|
||||
|
||||
@@ -1,5 +1,56 @@
|
||||
# @blitzjs/rpc
|
||||
|
||||
## 2.0.0-alpha.54
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 20fc9f80: Fix SSP / SP not prefetching queries correctly
|
||||
- Updated dependencies [f397cc20]
|
||||
- Updated dependencies [cacb65d6]
|
||||
- Updated dependencies [348fd6f5]
|
||||
- Updated dependencies [20fc9f80]
|
||||
- Updated dependencies [a3bbe6ce]
|
||||
- Updated dependencies [ffa7b5cc]
|
||||
- blitz@2.0.0-alpha.54
|
||||
- @blitzjs/auth@2.0.0-alpha.54
|
||||
|
||||
## 2.0.0-alpha.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @blitzjs/auth@2.0.0-alpha.53
|
||||
- blitz@2.0.0-alpha.53
|
||||
|
||||
## 2.0.0-alpha.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- blitz@2.0.0-alpha.52
|
||||
- @blitzjs/auth@2.0.0-alpha.52
|
||||
|
||||
## 2.0.0-alpha.51
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @blitzjs/auth@2.0.0-alpha.51
|
||||
- blitz@2.0.0-alpha.51
|
||||
|
||||
## 2.0.0-alpha.50
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- c11f0401: Update Next.js version and addBasePath location
|
||||
- blitz@2.0.0-alpha.50
|
||||
- @blitzjs/auth@2.0.0-alpha.50
|
||||
|
||||
## 2.0.0-alpha.49
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- bec9512e: Allow resolverPath to be a function which is ran for every file path that is converted to RPC Route
|
||||
- @blitzjs/auth@2.0.0-alpha.49
|
||||
- blitz@2.0.0-alpha.49
|
||||
|
||||
## 2.0.0-alpha.48
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -5,6 +5,7 @@ const config: BuildConfig = {
|
||||
"./src/index-browser",
|
||||
"./src/index-server",
|
||||
"./src/loader-server",
|
||||
"./src/loader-server-resolvers",
|
||||
"./src/loader-client",
|
||||
],
|
||||
externals: [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/rpc",
|
||||
"version": "2.0.0-alpha.48",
|
||||
"version": "2.0.0-alpha.54",
|
||||
"scripts": {
|
||||
"build": "unbuild",
|
||||
"predev": "wait-on -d 250 ../blitz/dist/index-server.d.ts && wait-on -d 250 ../blitz-auth/dist/index-browser.d.ts",
|
||||
@@ -20,22 +20,22 @@
|
||||
"dist/**"
|
||||
],
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.0-alpha.48",
|
||||
"@blitzjs/auth": "2.0.0-alpha.54",
|
||||
"b64-lite": "1.4.0",
|
||||
"bad-behavior": "1.0.1",
|
||||
"chalk": "^4.1.0",
|
||||
"debug": "4.3.3",
|
||||
"react-query": "3.39.0",
|
||||
"superjson": "1.8.0",
|
||||
"zod": "3.10.1"
|
||||
"zod": "3.17.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "workspace:2.0.0-alpha.48",
|
||||
"@blitzjs/config": "workspace:2.0.0-alpha.54",
|
||||
"@types/debug": "4.1.7",
|
||||
"@types/react": "18.0.1",
|
||||
"@types/react-dom": "17.0.14",
|
||||
"blitz": "2.0.0-alpha.48",
|
||||
"next": "12.1.6-canary.17",
|
||||
"blitz": "2.0.0-alpha.54",
|
||||
"next": "12.2.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0",
|
||||
"typescript": "^4.5.3",
|
||||
@@ -43,8 +43,8 @@
|
||||
"watch": "1.0.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"blitz": "2.0.0-alpha.48",
|
||||
"next": "*"
|
||||
"blitz": "2.0.0-alpha.54",
|
||||
"next": ">=12.2.0"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {normalizePathTrailingSlash} from "next/dist/client/normalize-trailing-slash"
|
||||
import {addBasePath} from "next/dist/shared/lib/router/router"
|
||||
import {addBasePath} from "next/dist/client/add-base-path"
|
||||
import {deserialize, serialize} from "superjson"
|
||||
import {SuperJSONResult} from "superjson/dist/types"
|
||||
import {CSRFTokenMismatchError, isServer} from "blitz"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import {assert, Ctx, prettyMs} from "blitz"
|
||||
import {NextApiRequest, NextApiResponse} from "next"
|
||||
import {deserialize, serialize as superjsonSerialize} from "superjson"
|
||||
import chalk from "chalk"
|
||||
import {resolve} from "path"
|
||||
|
||||
// TODO - optimize end user server bundles by not exporting all client stuff here
|
||||
@@ -26,7 +25,7 @@ function getGlobalObject<T extends Record<string, unknown>>(key: string, default
|
||||
|
||||
type Resolver = (...args: unknown[]) => Promise<unknown>
|
||||
type ResolverFiles = Record<string, () => Promise<{default?: Resolver}>>
|
||||
export type ResolverBasePath = "queries|mutations" | "root" | undefined
|
||||
export type ResolverPathOptions = "queries|mutations" | "root" | ((path: string) => string)
|
||||
|
||||
// We define `global.__internal_blitzRpcResolverFiles` to ensure we use the same global object.
|
||||
// Needed for Next.js. I'm guessing that Next.js is including the `node_modules/` files in a seperate bundle than user files.
|
||||
@@ -51,8 +50,58 @@ export function __internal_addBlitzRpcResolver(
|
||||
}
|
||||
|
||||
const dir = __dirname + (() => "")() // trick to avoid `@vercel/ncc` to glob import
|
||||
export const loaderServer = resolve(dir, "./loader-server.cjs")
|
||||
export const loaderClient = resolve(dir, "./loader-client.cjs")
|
||||
const loaderClient = resolve(dir, "./loader-client.cjs")
|
||||
const loaderServer = resolve(dir, "./loader-server.cjs")
|
||||
const loaderServerResolvers = resolve(dir, "./loader-server-resolvers.cjs")
|
||||
|
||||
interface WebpackRuleOptions {
|
||||
resolverPath: ResolverPathOptions | undefined
|
||||
}
|
||||
|
||||
interface WebpackRule {
|
||||
test: RegExp
|
||||
use: Array<{
|
||||
loader: string
|
||||
options: WebpackRuleOptions
|
||||
}>
|
||||
}
|
||||
|
||||
export interface InstallWebpackConfigOptions {
|
||||
webpackConfig: {
|
||||
module: {
|
||||
rules: WebpackRule[]
|
||||
}
|
||||
}
|
||||
webpackRuleOptions: WebpackRuleOptions
|
||||
}
|
||||
|
||||
export function installWebpackConfig({
|
||||
webpackConfig,
|
||||
webpackRuleOptions,
|
||||
}: InstallWebpackConfigOptions) {
|
||||
webpackConfig.module.rules.push({
|
||||
test: /\/\[\[\.\.\.blitz]]\.[jt]s$/,
|
||||
use: [
|
||||
{
|
||||
loader: loaderServer,
|
||||
options: webpackRuleOptions,
|
||||
},
|
||||
],
|
||||
})
|
||||
webpackConfig.module.rules.push({
|
||||
test: /[\\/](queries|mutations)[\\/]/,
|
||||
use: [
|
||||
{
|
||||
loader: loaderClient,
|
||||
options: webpackRuleOptions,
|
||||
},
|
||||
{
|
||||
loader: loaderServerResolvers,
|
||||
options: webpackRuleOptions,
|
||||
},
|
||||
],
|
||||
})
|
||||
}
|
||||
|
||||
// ----------
|
||||
// END LOADER
|
||||
|
||||
@@ -42,7 +42,7 @@ export async function transformBlitzRpcResolverClient(
|
||||
|
||||
const resolverFilePath = "/" + posix.relative(root, id)
|
||||
assertPosixPath(resolverFilePath)
|
||||
const routePath = convertPageFilePathToRoutePath(resolverFilePath, options?.resolverBasePath)
|
||||
const routePath = convertPageFilePathToRoutePath(resolverFilePath, options?.resolverPath)
|
||||
const resolverName = convertFilePathToResolverName(resolverFilePath)
|
||||
const resolverType = convertFilePathToResolverType(resolverFilePath)
|
||||
|
||||
|
||||
50
packages/blitz-rpc/src/loader-server-resolvers.test.ts
Normal file
50
packages/blitz-rpc/src/loader-server-resolvers.test.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import {describe, expect, it} from "vitest"
|
||||
import {transformBlitzRpcResolverServer} from "./loader-server-resolvers"
|
||||
|
||||
const META_TAGS_AND_EXPORT = `
|
||||
__internal_rpcHandler._resolverName = 'test'
|
||||
__internal_rpcHandler._resolverType = 'query'
|
||||
__internal_rpcHandler._routePath = '/api/rpc/test'
|
||||
|
||||
export default __internal_rpcHandler
|
||||
`.trim()
|
||||
|
||||
describe("transformBlitzRpcResolverServer", () => {
|
||||
it("should compile for function", async () => {
|
||||
const result = await transformBlitzRpcResolverServer(
|
||||
"export default function test() { return 'test' }",
|
||||
"queries/test.js",
|
||||
"/",
|
||||
)
|
||||
|
||||
expect(result).toBe(
|
||||
`const __internal_rpcHandler = function test() { return 'test' }\n\n${META_TAGS_AND_EXPORT}`,
|
||||
)
|
||||
})
|
||||
|
||||
it("should compile with resolver", async () => {
|
||||
const result = await transformBlitzRpcResolverServer(
|
||||
`const test = resolver.pipe(() => Promise.resolve('test'))
|
||||
export default test`,
|
||||
"queries/test.js",
|
||||
"/",
|
||||
)
|
||||
|
||||
expect(result).toBe(
|
||||
`const test = resolver.pipe(() => Promise.resolve('test'))
|
||||
const __internal_rpcHandler = test\n\n${META_TAGS_AND_EXPORT}`,
|
||||
)
|
||||
})
|
||||
|
||||
it("should compile for plain lambda", async () => {
|
||||
const result = await transformBlitzRpcResolverServer(
|
||||
"export default () => Promise.resolve('test')",
|
||||
"queries/test.js",
|
||||
"/",
|
||||
)
|
||||
|
||||
expect(result).toBe(
|
||||
`const __internal_rpcHandler = () => Promise.resolve('test')\n\n${META_TAGS_AND_EXPORT}`,
|
||||
)
|
||||
})
|
||||
})
|
||||
68
packages/blitz-rpc/src/loader-server-resolvers.ts
Normal file
68
packages/blitz-rpc/src/loader-server-resolvers.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
import {
|
||||
assertPosixPath,
|
||||
convertFilePathToResolverName,
|
||||
convertFilePathToResolverType,
|
||||
convertPageFilePathToRoutePath,
|
||||
Loader,
|
||||
LoaderOptions,
|
||||
toPosixPath,
|
||||
} from "./loader-utils"
|
||||
import {normalizeApiRoute} from "./data-client"
|
||||
import {posix} from "path"
|
||||
|
||||
// Subset of `import type { LoaderDefinitionFunction } from 'webpack'`
|
||||
|
||||
export async function loader(this: Loader, input: string): Promise<string> {
|
||||
const compiler = this._compiler!
|
||||
const id = this.resource
|
||||
const root = this._compiler!.context
|
||||
|
||||
const isSSR = compiler.name === "server"
|
||||
if (isSSR) {
|
||||
return await transformBlitzRpcResolverServer(
|
||||
input,
|
||||
toPosixPath(id),
|
||||
toPosixPath(root),
|
||||
this.query,
|
||||
)
|
||||
}
|
||||
|
||||
return input
|
||||
}
|
||||
|
||||
module.exports = loader
|
||||
|
||||
export async function transformBlitzRpcResolverServer(
|
||||
src: string,
|
||||
id: string,
|
||||
root: string,
|
||||
options?: LoaderOptions,
|
||||
) {
|
||||
assertPosixPath(id)
|
||||
assertPosixPath(root)
|
||||
|
||||
const resolverFilePath = "/" + posix.relative(root, id)
|
||||
assertPosixPath(resolverFilePath)
|
||||
const routePath = convertPageFilePathToRoutePath(resolverFilePath, options?.resolverPath)
|
||||
const resolverName = convertFilePathToResolverName(resolverFilePath)
|
||||
const resolverType = convertFilePathToResolverType(resolverFilePath)
|
||||
|
||||
const fullRoutePath = normalizeApiRoute("/api/rpc" + routePath)
|
||||
|
||||
const lines = src.split("\n")
|
||||
const newLines = lines.map((line) => {
|
||||
if (line.trim().startsWith("export default")) {
|
||||
return line.replace("export default", "const __internal_rpcHandler =")
|
||||
}
|
||||
|
||||
return line
|
||||
})
|
||||
|
||||
return `${newLines.join("\n")}
|
||||
|
||||
__internal_rpcHandler._resolverName = '${resolverName}'
|
||||
__internal_rpcHandler._resolverType = '${resolverType}'
|
||||
__internal_rpcHandler._routePath = '${fullRoutePath}'
|
||||
|
||||
export default __internal_rpcHandler`
|
||||
}
|
||||
@@ -55,7 +55,7 @@ export async function transformBlitzRpcServer(
|
||||
|
||||
for (let resolverFilePath of resolvers) {
|
||||
const relativeResolverPath = posix.relative(dirname(id), join(root, resolverFilePath))
|
||||
const routePath = convertPageFilePathToRoutePath(resolverFilePath, options?.resolverBasePath)
|
||||
const routePath = convertPageFilePathToRoutePath(resolverFilePath, options?.resolverPath)
|
||||
code += `__internal_addBlitzRpcResolver('${routePath}', () => import('${relativeResolverPath}'));`
|
||||
code += "\n"
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import {assert} from "blitz"
|
||||
import {posix, sep, win32} from "path"
|
||||
import {ResolverBasePath} from "./index-server"
|
||||
import {ResolverPathOptions} from "./index-server"
|
||||
|
||||
export interface LoaderOptions {
|
||||
resolverBasePath?: ResolverBasePath
|
||||
resolverPath: ResolverPathOptions
|
||||
}
|
||||
|
||||
export interface Loader {
|
||||
@@ -51,9 +51,13 @@ const fileExtensionRegex = /\.([a-z]+)$/
|
||||
|
||||
export function convertPageFilePathToRoutePath(
|
||||
filePath: string,
|
||||
resolverBasePath: ResolverBasePath,
|
||||
resolverPath?: ResolverPathOptions,
|
||||
) {
|
||||
if (resolverBasePath === "root") {
|
||||
if (typeof resolverPath === "function") {
|
||||
return resolverPath(filePath)
|
||||
}
|
||||
|
||||
if (resolverPath === "root") {
|
||||
return filePath.replace(fileExtensionRegex, "")
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,51 @@
|
||||
# blitz
|
||||
|
||||
## 2.0.0-alpha.54
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- f397cc20: Fixes issue when generating a new blitz app with the form flag that ends up installing the wrong form library
|
||||
- cacb65d6: Fixes wrong import of the db module in `blitz db seed` command function
|
||||
- 348fd6f5: Fix redirectAuthenticatedTo errors
|
||||
- 20fc9f80: Fix SSP / SP not prefetching queries correctly
|
||||
- a3bbe6ce: Fix routes manifest showing duplicates for non queries|resolvers reso…
|
||||
- ffa7b5cc: During `blitz new` if project name argument is set to "." change it to current folder name
|
||||
- Updated dependencies [a961aff8]
|
||||
- Updated dependencies [80e1ead7]
|
||||
- @blitzjs/generator@2.0.0-alpha.54
|
||||
|
||||
## 2.0.0-alpha.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @blitzjs/generator@2.0.0-alpha.53
|
||||
|
||||
## 2.0.0-alpha.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [12cb7a72]
|
||||
- @blitzjs/generator@2.0.0-alpha.52
|
||||
|
||||
## 2.0.0-alpha.51
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @blitzjs/generator@2.0.0-alpha.51
|
||||
|
||||
## 2.0.0-alpha.50
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [c11f0401]
|
||||
- @blitzjs/generator@2.0.0-alpha.50
|
||||
|
||||
## 2.0.0-alpha.49
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @blitzjs/generator@2.0.0-alpha.49
|
||||
|
||||
## 2.0.0-alpha.48
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "blitz",
|
||||
"version": "2.0.0-alpha.48",
|
||||
"version": "2.0.0-alpha.54",
|
||||
"scripts": {
|
||||
"build": "unbuild",
|
||||
"dev": "watch unbuild src --wait=0.2",
|
||||
@@ -23,7 +23,7 @@
|
||||
"blitz": "bin/blitz"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/generator": "2.0.0-alpha.48",
|
||||
"@blitzjs/generator": "2.0.0-alpha.54",
|
||||
"arg": "5.0.1",
|
||||
"chalk": "^4.1.0",
|
||||
"console-table-printer": "2.10.0",
|
||||
@@ -52,7 +52,7 @@
|
||||
"watchpack": "2.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "workspace:2.0.0-alpha.48",
|
||||
"@blitzjs/config": "workspace:2.0.0-alpha.54",
|
||||
"@types/cookie": "0.4.1",
|
||||
"@types/cross-spawn": "6.0.2",
|
||||
"@types/debug": "4.1.7",
|
||||
@@ -75,7 +75,7 @@
|
||||
"typescript": "^4.5.3",
|
||||
"unbuild": "0.6.9",
|
||||
"watch": "1.0.2",
|
||||
"zod": "3.10.1"
|
||||
"zod": "3.17.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "*"
|
||||
|
||||
@@ -1,8 +1,30 @@
|
||||
import {CliCommand} from "../index"
|
||||
/* @ts-ignore */
|
||||
import {generateManifest} from "../utils/routes-manifest"
|
||||
import resolveCwd from "resolve-cwd"
|
||||
import {join} from "path"
|
||||
import fs from "fs-extra"
|
||||
|
||||
const codegen: CliCommand = async () => {
|
||||
try {
|
||||
/*
|
||||
Updates the user's nextjs file and adds onRecoverableError to the hydrateRoot 3rd parameter object.
|
||||
We can remove this when https://github.com/vercel/next.js/pull/38207 is merged into next.js
|
||||
*/
|
||||
const nextDir = await resolveCwd("next")
|
||||
const nextClientIndex = join(nextDir, "../..", "client", "index.js")
|
||||
const readFile = await fs.readFile(nextClientIndex)
|
||||
const updatedFile = readFile
|
||||
.toString()
|
||||
.replace(
|
||||
/ReactDOM\.hydrateRoot\(.*?\);/,
|
||||
`ReactDOM.hydrateRoot(domEl, reactEl, process.env.NODE_ENV === 'development' ? {onRecoverableError: (err) => err.toString().includes("could not finish this Suspense boundary") ? null : console.error(err)} : undefined);`,
|
||||
)
|
||||
await fs.writeFile(nextClientIndex, updatedFile)
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
|
||||
try {
|
||||
await generateManifest()
|
||||
} catch (err) {
|
||||
|
||||
@@ -51,7 +51,7 @@ const runSeed = async (seedBasePath: string) => {
|
||||
throw err
|
||||
}
|
||||
|
||||
const db = require(dbPath).db
|
||||
const db = require(dbPath)
|
||||
await db.$disconnect()
|
||||
console.log("Done Seeding")
|
||||
}
|
||||
|
||||
@@ -24,8 +24,13 @@ const language = {
|
||||
type TLanguage = keyof typeof language
|
||||
|
||||
type TPkgManager = "npm" | "yarn" | "pnpm"
|
||||
type TTemplate = "full" | "minimal"
|
||||
const installCommandMap: Record<TPkgManager, string> = {
|
||||
yarn: "yarn",
|
||||
pnpm: "pnpm install",
|
||||
npm: "npm install",
|
||||
}
|
||||
|
||||
type TTemplate = "full" | "minimal"
|
||||
const templates: {[key in TTemplate]: AppGeneratorOptions["template"]} = {
|
||||
full: {
|
||||
path: "app",
|
||||
@@ -87,6 +92,10 @@ const determineProjectName = async () => {
|
||||
projectPath = path.resolve(projectName)
|
||||
} else {
|
||||
projectName = args._.slice(1)[0] as string
|
||||
if (projectName === ".") {
|
||||
projectName = path.basename(process.cwd())
|
||||
}
|
||||
|
||||
projectPath = path.resolve(projectName)
|
||||
}
|
||||
}
|
||||
@@ -128,14 +137,7 @@ const determineFormLib = async () => {
|
||||
|
||||
projectFormLib = res.form
|
||||
} else {
|
||||
switch (args["--form"] as TForms) {
|
||||
case "react-final-form":
|
||||
projectFormLib = forms["react-final-form"]
|
||||
case "react-hook-form":
|
||||
projectFormLib = forms["react-hook-form"]
|
||||
case "formik":
|
||||
projectFormLib = forms["formik"]
|
||||
}
|
||||
projectFormLib = forms[args["--form"] as TForms]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,11 +204,7 @@ const determinePkgManagerToInstallDeps = async () => {
|
||||
|
||||
projectPkgManger = res.pkgManager
|
||||
|
||||
if (res.pkgManager === "skip") {
|
||||
shouldInstallDeps = false
|
||||
} else {
|
||||
shouldInstallDeps = true
|
||||
}
|
||||
shouldInstallDeps = res.pkgManager !== "skip"
|
||||
} else {
|
||||
const res = await prompts({
|
||||
type: "confirm",
|
||||
@@ -278,16 +276,7 @@ const newApp: CliCommand = async (argv) => {
|
||||
await generator.run()
|
||||
|
||||
if (requireManualInstall) {
|
||||
let cmd
|
||||
switch (projectPkgManger) {
|
||||
case "yarn":
|
||||
cmd = "yarn"
|
||||
case "npm":
|
||||
cmd = "npm install"
|
||||
case "pnpm":
|
||||
cmd = "pnpm install"
|
||||
}
|
||||
postInstallSteps.push(cmd)
|
||||
postInstallSteps.push(installCommandMap[projectPkgManger])
|
||||
postInstallSteps.push(
|
||||
"blitz prisma migrate dev (when asked, you can name the migration anything)",
|
||||
)
|
||||
|
||||
@@ -228,23 +228,39 @@ export function buildPageExtensionRegex(pageExtensions: string[]) {
|
||||
type PagesMapping = {
|
||||
[page: string]: string
|
||||
}
|
||||
export function convertPageFilePathToRoutePath(filePath: string, pageExtensions: string[]) {
|
||||
return filePath
|
||||
.replace(/^.*?[\\/]pages[\\/]/, "/")
|
||||
.replace(/^.*?[\\/]api[\\/]/, "/api/")
|
||||
.replace(/^.*?[\\/]queries[\\/]/, "/api/rpc/")
|
||||
.replace(/^.*?[\\/]mutations[\\/]/, "/api/rpc/")
|
||||
.replace(new RegExp(`\\.+(${pageExtensions.join("|")})$`), "")
|
||||
function stripExtension(filePath: string, pageExtensions: string[]) {
|
||||
return filePath.replace(new RegExp(`\\.+(${pageExtensions.join("|")})$`), "")
|
||||
}
|
||||
export function createPagesMapping(pagePaths: string[], pageExtensions: string[]) {
|
||||
export function convertPageFilePathToRoutePath(filePath: string, pageExtensions: string[]) {
|
||||
return stripExtension(
|
||||
filePath
|
||||
.replace(/^.*?[\\/]pages[\\/]/, "/")
|
||||
.replace(/^.*?[\\/]api[\\/]/, "/api/")
|
||||
.replace(/^.*?[\\/]queries[\\/]/, "/api/rpc/")
|
||||
.replace(/^.*?[\\/]mutations[\\/]/, "/api/rpc/"),
|
||||
pageExtensions,
|
||||
)
|
||||
}
|
||||
export function createPagesMapping(pagePaths: string[], config: any) {
|
||||
const {pageExtensions, blitz} = config
|
||||
const resolverType = blitz?.resolverPath || "queries|mutations"
|
||||
|
||||
const previousPages: PagesMapping = {}
|
||||
const pages = pagePaths.reduce((result: PagesMapping, pagePath): PagesMapping => {
|
||||
const pages = pagePaths.reduce<PagesMapping>((result, pagePath) => {
|
||||
let page = `${convertPageFilePathToRoutePath(pagePath, pageExtensions).replace(
|
||||
/\\/g,
|
||||
"/",
|
||||
)}`.replace(/\/index$/, "")
|
||||
let pageKey = page === "" ? "/" : page
|
||||
const isResolver = pagePath.includes("/queries/") || pagePath.includes("/mutations/")
|
||||
if (isResolver) {
|
||||
if (typeof resolverType === "function") {
|
||||
page = `/api/rpc${resolverType(pagePath)}`
|
||||
} else if (resolverType === "root") {
|
||||
page = `/api/rpc${stripExtension(pagePath, pageExtensions)}`
|
||||
}
|
||||
}
|
||||
|
||||
let pageKey = page === "" ? "/" : page
|
||||
if (pageKey in result) {
|
||||
console.warn(
|
||||
`Duplicate page detected. ${previousPages[pageKey]} and ${pagePath} both resolve to ${pageKey}.`,
|
||||
@@ -255,6 +271,7 @@ export function createPagesMapping(pagePaths: string[], pageExtensions: string[]
|
||||
result[pageKey] = join(PAGES_DIR_ALIAS, pagePath).replace(/\\/g, "/")
|
||||
return result
|
||||
}, {})
|
||||
|
||||
pages["/_app"] = pages["/_app"] || "next/dist/pages/_app"
|
||||
pages["/_error"] = pages["/_error"] || "next/dist/pages/_error"
|
||||
pages["/_document"] = pages["/_document"] || "next/dist/pages/_document"
|
||||
@@ -277,7 +294,7 @@ function getVerb(type: string) {
|
||||
const apiPathRegex = /([\\/]api[\\/])/
|
||||
export async function collectAllRoutes(directory: string, config: any) {
|
||||
const routeFiles = await collectPages(directory, config.pageExtensions!)
|
||||
const rawRouteMappings = createPagesMapping(routeFiles, config.pageExtensions!)
|
||||
const rawRouteMappings = createPagesMapping(routeFiles, config)
|
||||
const routes = []
|
||||
for (const [route, filePath] of Object.entries(rawRouteMappings)) {
|
||||
if (["/_app", "/_document", "/_error"].includes(route)) continue
|
||||
@@ -515,15 +532,6 @@ export const isInternalBlitzMonorepoDevelopment = __dirname.match(
|
||||
)
|
||||
|
||||
async function findNodeModulesRoot(src: string) {
|
||||
/*
|
||||
* Because of our package structure, and because of how things like pnpm link modules,
|
||||
* we must first find blitz package, and then find `next` and then
|
||||
* the root of `next`
|
||||
*
|
||||
* This is because we import from `.blitz` inside `next/stdlib`.
|
||||
* If that changes, then this logic here will need to change
|
||||
*/
|
||||
|
||||
let root: string
|
||||
if (isInternalBlitzMonorepoDevelopment) {
|
||||
root = join(__dirname, "..", "..", "..", "..", "/node_modules")
|
||||
|
||||
@@ -78,7 +78,7 @@ describe("formatZodError", () => {
|
||||
})
|
||||
expect(formatZodError(result.error)).toEqual({
|
||||
students: [undefined, {name: "Required"}, {name: "Expected string, received boolean"}],
|
||||
data: [undefined, "Expected true, received undefined"],
|
||||
data: [undefined, "Invalid literal value, expected true"],
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,5 +1,58 @@
|
||||
# @blitzjs/codemod
|
||||
|
||||
## 2.0.0-alpha.54
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [f397cc20]
|
||||
- Updated dependencies [cacb65d6]
|
||||
- Updated dependencies [348fd6f5]
|
||||
- Updated dependencies [20fc9f80]
|
||||
- Updated dependencies [a961aff8]
|
||||
- Updated dependencies [80e1ead7]
|
||||
- Updated dependencies [a3bbe6ce]
|
||||
- Updated dependencies [ffa7b5cc]
|
||||
- blitz@2.0.0-alpha.54
|
||||
- @blitzjs/generator@2.0.0-alpha.54
|
||||
|
||||
## 2.0.0-alpha.53
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @blitzjs/generator@2.0.0-alpha.53
|
||||
- blitz@2.0.0-alpha.53
|
||||
|
||||
## 2.0.0-alpha.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [12cb7a72]
|
||||
- @blitzjs/generator@2.0.0-alpha.52
|
||||
- blitz@2.0.0-alpha.52
|
||||
|
||||
## 2.0.0-alpha.51
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 70f9ae49: Handle next/dynamic default import in codemod
|
||||
- @blitzjs/generator@2.0.0-alpha.51
|
||||
- blitz@2.0.0-alpha.51
|
||||
|
||||
## 2.0.0-alpha.50
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [c11f0401]
|
||||
- @blitzjs/generator@2.0.0-alpha.50
|
||||
- blitz@2.0.0-alpha.50
|
||||
|
||||
## 2.0.0-alpha.49
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @blitzjs/generator@2.0.0-alpha.49
|
||||
- blitz@2.0.0-alpha.49
|
||||
|
||||
## 2.0.0-alpha.48
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/codemod",
|
||||
"version": "2.0.0-alpha.48",
|
||||
"version": "2.0.0-alpha.54",
|
||||
"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-alpha.48",
|
||||
"@blitzjs/generator": "2.0.0-alpha.54",
|
||||
"arg": "5.0.1",
|
||||
"blitz": "2.0.0-alpha.48",
|
||||
"blitz": "2.0.0-alpha.54",
|
||||
"chalk": "^4.1.0",
|
||||
"cross-spawn": "7.0.3",
|
||||
"debug": "4.3.3",
|
||||
|
||||
@@ -85,8 +85,8 @@ const upgradeLegacy = async () => {
|
||||
packageJsonPath.dependencies["react"] = "latest"
|
||||
packageJsonPath.dependencies["react-dom"] = "latest"
|
||||
packageJsonPath.dependencies["@blitzjs/next"] = "alpha"
|
||||
packageJsonPath.dependencies["@blitzjs/rpc"] = "latest"
|
||||
packageJsonPath.dependencies["@blitzjs/auth"] = "latest"
|
||||
packageJsonPath.dependencies["@blitzjs/rpc"] = "alpha"
|
||||
packageJsonPath.dependencies["@blitzjs/auth"] = "alpha"
|
||||
packageJsonPath.dependencies["blitz"] = "alpha"
|
||||
packageJsonPath.dependencies["next"] = "latest"
|
||||
packageJsonPath.dependencies["prisma"] = "latest"
|
||||
@@ -223,6 +223,7 @@ const upgradeLegacy = async () => {
|
||||
const nextImage = findImport(program, "next/image")
|
||||
const nextLink = findImport(program, "next/link")
|
||||
const nextHead = findImport(program, "next/head")
|
||||
const dynamic = findImport(program, "next/dynamic")
|
||||
|
||||
if (nextImage?.length) {
|
||||
nextImage.remove()
|
||||
@@ -260,6 +261,18 @@ const upgradeLegacy = async () => {
|
||||
)
|
||||
}
|
||||
|
||||
if (dynamic?.length) {
|
||||
dynamic.remove()
|
||||
program
|
||||
.get()
|
||||
.value.program.body.unshift(
|
||||
j.importDeclaration(
|
||||
[j.importDefaultSpecifier(j.identifier("dynamic"))],
|
||||
j.stringLiteral("next/dynamic"),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
fs.writeFileSync(path.join(path.resolve(file)), program.toSource())
|
||||
})
|
||||
},
|
||||
@@ -331,7 +344,6 @@ const upgradeLegacy = async () => {
|
||||
(file) => {
|
||||
const program = getCollectionFromSource(file)
|
||||
|
||||
// BlitzApiHandler -> NextApiHandler
|
||||
replaceImport(program, "blitz", "BlitzApiHandler", "next", "NextApiHandler")
|
||||
replaceIdentifiers(program, "BlitzApiHandler", "NextApiHandler")
|
||||
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @blitzjs/config
|
||||
|
||||
## 2.0.0-alpha.54
|
||||
|
||||
## 2.0.0-alpha.53
|
||||
|
||||
## 2.0.0-alpha.52
|
||||
|
||||
## 2.0.0-alpha.51
|
||||
|
||||
## 2.0.0-alpha.50
|
||||
|
||||
## 2.0.0-alpha.49
|
||||
|
||||
## 2.0.0-alpha.48
|
||||
|
||||
## 2.0.0-alpha.47
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"name": "@blitzjs/config",
|
||||
"private": true,
|
||||
"version": "2.0.0-alpha.48",
|
||||
"version": "2.0.0-alpha.54",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "5.9.1",
|
||||
"@typescript-eslint/parser": "5.9.1",
|
||||
"eslint-config-next": "12.0.7",
|
||||
"eslint-config-prettier": "8.3.0"
|
||||
"eslint-config-next": "12.2.0",
|
||||
"eslint-config-prettier": "8.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^4.5.3"
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
# @blitzjs/generator
|
||||
|
||||
## 2.0.0-alpha.54
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- a961aff8: Add missing lint deps to the new app templates
|
||||
- 80e1ead7: Add jest.config.js to newly generated typescript apps
|
||||
|
||||
## 2.0.0-alpha.53
|
||||
|
||||
## 2.0.0-alpha.52
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 12cb7a72: Upgrade Prisma to v4.0.0
|
||||
|
||||
## 2.0.0-alpha.51
|
||||
|
||||
## 2.0.0-alpha.50
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- c11f0401: Update Next.js version and addBasePath location
|
||||
|
||||
## 2.0.0-alpha.49
|
||||
|
||||
## 2.0.0-alpha.48
|
||||
|
||||
## 2.0.0-alpha.47
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/generator",
|
||||
"version": "2.0.0-alpha.48",
|
||||
"version": "2.0.0-alpha.54",
|
||||
"scripts": {
|
||||
"dev": "watch unbuild src --wait=0.2",
|
||||
"build": "unbuild && pnpm build:templates",
|
||||
@@ -45,7 +45,7 @@
|
||||
"vinyl": "2.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.0-alpha.48",
|
||||
"@blitzjs/config": "2.0.0-alpha.54",
|
||||
"@juanm04/cpx": "2.0.1",
|
||||
"@types/babel__core": "7.1.19",
|
||||
"@types/diff": "5.0.2",
|
||||
|
||||
@@ -49,7 +49,7 @@ export class AppGenerator extends Generator<AppGeneratorOptions> {
|
||||
"types.ts",
|
||||
]
|
||||
}
|
||||
return ["jsconfig.json", "jest.config.js", "package.js.json", "pre-push-js"]
|
||||
return ["jsconfig.json", "package.js.json", "pre-push-js"]
|
||||
}
|
||||
|
||||
async getTemplateValues() {
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
TODO
|
||||
|
||||
[](https://blitzjs.com)
|
||||
|
||||
This is a [Blitz.js](https://github.com/blitz-js/blitz) app.
|
||||
|
||||
@@ -22,16 +22,16 @@
|
||||
"*.{js}": ["eslint --fix"]
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "latest",
|
||||
"@blitzjs/auth": "alpha",
|
||||
"@blitzjs/next": "alpha",
|
||||
"@blitzjs/rpc": "latest",
|
||||
"@blitzjs/rpc": "alpha",
|
||||
"@prisma/client": "3.9.0",
|
||||
"blitz": "alpha",
|
||||
"next": "12.1.6",
|
||||
"prisma": "3.9.0",
|
||||
"next": "12.2.0",
|
||||
"prisma": "4.0.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0",
|
||||
"zod": "3.10.1"
|
||||
"zod": "3.17.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@next/bundle-analyzer": "12.0.8",
|
||||
@@ -40,6 +40,8 @@
|
||||
"@types/preview-email": "2.0.1",
|
||||
"@types/react": "18.0.1",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-config-next": "12.2.0",
|
||||
"eslint-config-prettier": "8.5.0",
|
||||
"husky": "7.0.4",
|
||||
"jest": "27.5.1",
|
||||
"lint-staged": "12.1.7",
|
||||
|
||||
@@ -22,16 +22,16 @@
|
||||
"*.{js,ts,tsx}": ["eslint --fix"]
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "latest",
|
||||
"@blitzjs/auth": "alpha",
|
||||
"@blitzjs/next": "alpha",
|
||||
"@blitzjs/rpc": "latest",
|
||||
"@blitzjs/rpc": "alpha",
|
||||
"@prisma/client": "3.9.0",
|
||||
"blitz": "alpha",
|
||||
"next": "12.1.6",
|
||||
"prisma": "3.9.0",
|
||||
"next": "12.2.0",
|
||||
"prisma": "4.0.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0",
|
||||
"zod": "3.10.1"
|
||||
"zod": "3.17.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@next/bundle-analyzer": "12.0.8",
|
||||
@@ -39,7 +39,10 @@
|
||||
"@types/node": "17.0.16",
|
||||
"@types/preview-email": "2.0.1",
|
||||
"@types/react": "18.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "5.30.5",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-config-next": "12.2.0",
|
||||
"eslint-config-prettier": "8.5.0",
|
||||
"husky": "7.0.4",
|
||||
"jest": "27.5.1",
|
||||
"lint-staged": "12.1.7",
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"dependencies": {
|
||||
"@blitzjs/next": "alpha",
|
||||
"blitz": "alpha",
|
||||
"next": "12.1.6",
|
||||
"next": "12.2.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0",
|
||||
"ts-node": "10.7.0"
|
||||
@@ -31,6 +31,8 @@
|
||||
"@types/node": "17.0.16",
|
||||
"@types/react": "18.0.1",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-config-next": "12.2.0",
|
||||
"eslint-config-prettier": "8.5.0",
|
||||
"husky": "7.0.4",
|
||||
"jest": "27.5.1",
|
||||
"lint-staged": "12.1.7",
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"dependencies": {
|
||||
"@blitzjs/next": "alpha",
|
||||
"blitz": "alpha",
|
||||
"next": "12.1.6",
|
||||
"next": "12.2.0",
|
||||
"react": "18.0.0",
|
||||
"react-dom": "18.0.0",
|
||||
"ts-node": "10.7.0"
|
||||
@@ -32,7 +32,10 @@
|
||||
"@types/jest": "27.4.1",
|
||||
"@types/node": "17.0.16",
|
||||
"@types/react": "18.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "5.30.5",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-config-prettier": "8.5.0",
|
||||
"eslint-config-next": "12.2.0",
|
||||
"husky": "7.0.4",
|
||||
"jest": "27.5.1",
|
||||
"lint-staged": "12.1.7",
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"@typescript-eslint/parser": "5.9.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.0-alpha.48",
|
||||
"@blitzjs/config": "2.0.0-alpha.54",
|
||||
"@types/react": "18.0.1",
|
||||
"@types/react-dom": "17.0.14",
|
||||
"react": "18.0.0",
|
||||
|
||||
29
patches/next@12.2.0.patch
Normal file
29
patches/next@12.2.0.patch
Normal file
@@ -0,0 +1,29 @@
|
||||
diff --git a/dist/build/webpack-config.js b/dist/build/webpack-config.js
|
||||
index f9cab03b74411376898fbf5bd14c187236d9ad1b..f91706ec39cc53d642e477ecc10978b17d2b8bb4 100755
|
||||
--- a/dist/build/webpack-config.js
|
||||
+++ b/dist/build/webpack-config.js
|
||||
@@ -910,6 +910,7 @@ async function getBaseWebpackConfig(dir, { buildId , config , compilerType , dev
|
||||
"process.env.__NEXT_I18N_SUPPORT": JSON.stringify(!!config.i18n),
|
||||
"process.env.__NEXT_I18N_DOMAINS": JSON.stringify((ref9 = config.i18n) == null ? void 0 : ref9.domains),
|
||||
"process.env.__NEXT_ANALYTICS_ID": JSON.stringify(config.analyticsId),
|
||||
+ 'process.env.__NEXT_REACT_ONRECOVERABLE_ERROR': config.reactOnRecoverableError,
|
||||
...isNodeServer || isEdgeServer ? {
|
||||
// Fix bad-actors in the npm ecosystem (e.g. `node-formidable`)
|
||||
// This is typically found in unmaintained modules from the
|
||||
diff --git a/dist/client/index.js b/dist/client/index.js
|
||||
index 74242a1991af91cc44c2d4af3516f9225043f987..ed2f298d65a636fa79b3d580ad6e3aa0792efcfd 100755
|
||||
--- a/dist/client/index.js
|
||||
+++ b/dist/client/index.js
|
||||
@@ -475,7 +475,11 @@ function renderReactElement(domEl, fn) {
|
||||
if (process.env.__NEXT_REACT_ROOT) {
|
||||
if (!reactRoot) {
|
||||
// Unlike with createRoot, you don't need a separate root.render() call here
|
||||
- reactRoot = ReactDOM.hydrateRoot(domEl, reactEl);
|
||||
+ reactRoot = ReactDOM.hydrateRoot(domEl, reactEl, Boolean(process.env.__NEXT_REACT_ONRECOVERABLE_ERROR)
|
||||
+ ? {
|
||||
+ onRecoverableError: process.env.__NEXT_REACT_ONRECOVERABLE_ERROR,
|
||||
+ }
|
||||
+ : undefined);
|
||||
// TODO: Remove shouldHydrate variable when React 18 is stable as it can depend on `reactRoot` existing
|
||||
shouldHydrate = false;
|
||||
} else {
|
||||
563
pnpm-lock.yaml
generated
563
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user