Compare commits
35 Commits
@blitzjs/r
...
@blitzjs/c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad94bee56a | ||
|
|
5a14306f7b | ||
|
|
6e8eeb1514 | ||
|
|
5e61a16815 | ||
|
|
77555468f3 | ||
|
|
22e402af01 | ||
|
|
19afc57530 | ||
|
|
b7dab1d800 | ||
|
|
ee7bf87ec0 | ||
|
|
451ead089c | ||
|
|
5d9570f7f4 | ||
|
|
178c152b2c | ||
|
|
bbe1a54d7a | ||
|
|
9b075dbb47 | ||
|
|
60a4d90c86 | ||
|
|
a674897601 | ||
|
|
5a587a6c31 | ||
|
|
744242f25b | ||
|
|
0f5297f1aa | ||
|
|
76a2544f9d | ||
|
|
6f44c2334e | ||
|
|
8a417533f6 | ||
|
|
6f54841b7a | ||
|
|
e8f564ea66 | ||
|
|
71b9950037 | ||
|
|
28a79040e4 | ||
|
|
dd604c7675 | ||
|
|
0a8d4bfdaf | ||
|
|
f25aac08c0 | ||
|
|
a09685a63a | ||
|
|
595f400e9a | ||
|
|
6f333ee643 | ||
|
|
956a739e83 | ||
|
|
47722e0456 | ||
|
|
2f5c8a3a0d |
@@ -4014,6 +4014,57 @@
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "LeonMueller-OneAndOnly",
|
||||
"name": "Leonidas",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/77194479?v=4",
|
||||
"profile": "https://flow-office.eu/",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Doc0x1",
|
||||
"name": "Doc0x1",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/19937034?v=4",
|
||||
"profile": "https://hacknex.us",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "lmisea",
|
||||
"name": "Luis Isea",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/106825636?v=4",
|
||||
"profile": "https://github.com/lmisea",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "gengjiawen",
|
||||
"name": "Jiawen Geng",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/3759816?v=4",
|
||||
"profile": "https://www.gengjiawen.com",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "timneutkens",
|
||||
"name": "Tim Neutkens",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/6324199?v=4",
|
||||
"profile": "https://timn.tech",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code",
|
||||
"test"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
|
||||
13
.github/workflows/pr-release.yml
vendored
13
.github/workflows/pr-release.yml
vendored
@@ -28,17 +28,20 @@ jobs:
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ steps.refs.outputs.head_ref }}
|
||||
ref: ${{ github.event.pull_request.head.ref }}
|
||||
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
||||
|
||||
- name: Setup PNPM
|
||||
uses: pnpm/action-setup@v2.2.1
|
||||
uses: pnpm/action-setup@646cdf48217256a3d0b80361c5a50727664284f2
|
||||
with:
|
||||
version: 8.9.0
|
||||
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16
|
||||
node-version: 20
|
||||
registry-url: "https://registry.npmjs.org"
|
||||
cache: "pnpm"
|
||||
|
||||
|
||||
21
.github/workflows/release.yml
vendored
21
.github/workflows/release.yml
vendored
@@ -19,12 +19,12 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Node.js 16.x
|
||||
uses: actions/setup-node@v2
|
||||
- name: Setup Node.js 20.x
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16.x
|
||||
node-version: 20.x
|
||||
|
||||
- name: Creating .npmrc
|
||||
run: |
|
||||
@@ -37,8 +37,10 @@ jobs:
|
||||
- name: Pre-publish
|
||||
uses: pnpm/action-setup@646cdf48217256a3d0b80361c5a50727664284f2
|
||||
with:
|
||||
version: 6.32.6
|
||||
- run: pnpm install --no-frozen-lockfile
|
||||
version: 8.9.0
|
||||
- run: pnpm install
|
||||
env:
|
||||
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
||||
- run: pnpm build
|
||||
|
||||
- name: Create Release Pull Request
|
||||
@@ -49,10 +51,3 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
|
||||
# - name: Github Release
|
||||
# uses: release-drafter/release-drafter@v5.19.0
|
||||
# with:
|
||||
# config-name: release-drafter.yml
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -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-423-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-428-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">
|
||||
@@ -747,6 +747,13 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
|
||||
<td align="center"><a href="https://github.com/Zamfi99"><img src="https://avatars.githubusercontent.com/u/19189337?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Zamfira Costin-Andrei</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Zamfi99" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=Zamfi99" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/potikhanovsergey"><img src="https://avatars.githubusercontent.com/u/71494201?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sergey</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=potikhanovsergey" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/papsavas"><img src="https://avatars.githubusercontent.com/u/50584606?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Savvas Papageorgiadis</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=papsavas" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=papsavas" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://flow-office.eu/"><img src="https://avatars.githubusercontent.com/u/77194479?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Leonidas</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=LeonMueller-OneAndOnly" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=LeonMueller-OneAndOnly" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://hacknex.us"><img src="https://avatars.githubusercontent.com/u/19937034?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Doc0x1</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Doc0x1" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=Doc0x1" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/lmisea"><img src="https://avatars.githubusercontent.com/u/106825636?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Luis Isea</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=lmisea" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=lmisea" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://www.gengjiawen.com"><img src="https://avatars.githubusercontent.com/u/3759816?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jiawen Geng</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=gengjiawen" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=gengjiawen" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
@@ -1,5 +1,87 @@
|
||||
# next-blitz-auth
|
||||
|
||||
## 0.1.10
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [5a14306f7]
|
||||
- @blitzjs/next@2.0.9
|
||||
- @blitzjs/rpc@2.0.9
|
||||
- blitz@2.0.9
|
||||
- @blitzjs/auth@2.0.9
|
||||
- @blitzjs/config@2.0.9
|
||||
|
||||
## 0.1.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [5e61a1681]
|
||||
- Updated dependencies [77555468f]
|
||||
- @blitzjs/next@2.0.8
|
||||
- blitz@2.0.8
|
||||
- @blitzjs/auth@2.0.8
|
||||
- @blitzjs/rpc@2.0.8
|
||||
- @blitzjs/config@2.0.8
|
||||
|
||||
## 0.1.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [ee7bf87ec]
|
||||
- Updated dependencies [178c152b2]
|
||||
- blitz@2.0.7
|
||||
- @blitzjs/next@2.0.7
|
||||
- @blitzjs/rpc@2.0.7
|
||||
- @blitzjs/auth@2.0.7
|
||||
- @blitzjs/config@2.0.7
|
||||
|
||||
## 0.1.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [76a2544f9]
|
||||
- Updated dependencies [5a587a6c3]
|
||||
- blitz@2.0.6
|
||||
- @blitzjs/auth@2.0.6
|
||||
- @blitzjs/next@2.0.6
|
||||
- @blitzjs/rpc@2.0.6
|
||||
- @blitzjs/config@2.0.6
|
||||
|
||||
## 0.1.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6f54841b7]
|
||||
- Updated dependencies [8a417533f]
|
||||
- @blitzjs/auth@2.0.5
|
||||
- blitz@2.0.5
|
||||
- @blitzjs/rpc@2.0.5
|
||||
- @blitzjs/next@2.0.5
|
||||
- @blitzjs/config@2.0.5
|
||||
|
||||
## 0.1.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [dd604c767]
|
||||
- Updated dependencies [28a79040e]
|
||||
- @blitzjs/auth@2.0.4
|
||||
- blitz@2.0.4
|
||||
- @blitzjs/next@2.0.4
|
||||
- @blitzjs/rpc@2.0.4
|
||||
- @blitzjs/config@2.0.4
|
||||
|
||||
## 0.1.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [2f5c8a3a0]
|
||||
- @blitzjs/next@2.0.3
|
||||
- @blitzjs/rpc@2.0.3
|
||||
- blitz@2.0.3
|
||||
- @blitzjs/auth@2.0.3
|
||||
- @blitzjs/config@2.0.3
|
||||
|
||||
## 0.1.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
const {withBlitz} = require("@blitzjs/next")
|
||||
|
||||
const loaderClient = require.resolve("@blitzjs/rpc/dist/loader-client.cjs")
|
||||
const loaderServer = require.resolve("@blitzjs/rpc/dist/loader-server.cjs")
|
||||
const loaderServerResolvers = require.resolve("@blitzjs/rpc/dist/loader-server-resolvers.cjs")
|
||||
|
||||
console.log("loaderClient", loaderClient)
|
||||
console.log("loaderServer", loaderServer)
|
||||
console.log("loaderServerResolvers", loaderServerResolvers)
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "next-blitz-auth",
|
||||
"version": "0.1.3",
|
||||
"version": "0.1.10",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"blitz:dev": "next dev",
|
||||
@@ -12,17 +12,17 @@
|
||||
"schema": "prisma/schema.prisma"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@hookform/error-message": "2.0.0",
|
||||
"@hookform/resolvers": "2.9.10",
|
||||
"@prisma/client": "^4.5.0",
|
||||
"@tanstack/react-query": "4.0.10",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"flatted": "3.2.7",
|
||||
"next": "14.0.4",
|
||||
"next": "canary",
|
||||
"prisma": "^4.5.0",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
|
||||
@@ -23,15 +23,15 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@hookform/error-message": "2.0.0",
|
||||
"@hookform/resolvers": "2.9.10",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "2.0.2",
|
||||
"next": "14.0.4",
|
||||
"blitz": "2.0.9",
|
||||
"next": "canary",
|
||||
"openid-client": "5.2.1",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
|
||||
@@ -24,15 +24,15 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@hookform/error-message": "2.0.0",
|
||||
"@hookform/resolvers": "2.9.10",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "2.0.2",
|
||||
"next": "14.0.4",
|
||||
"blitz": "2.0.9",
|
||||
"next": "canary",
|
||||
"next-auth": "4.18.7",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
|
||||
@@ -16,17 +16,17 @@
|
||||
"schema": "./db/schema.prisma"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@prisma/client": "4.6.1",
|
||||
"@types/jest": "29.2.2",
|
||||
"@types/passport-twitter": "1.0.37",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jest": "29.3.0",
|
||||
"jest-environment-jsdom": "29.3.0",
|
||||
"next": "14.0.4",
|
||||
"next": "canary",
|
||||
"passport-mock-strategy": "2.0.0",
|
||||
"passport-twitter": "1.0.4",
|
||||
"prisma": "4.6.1",
|
||||
|
||||
@@ -17,16 +17,16 @@
|
||||
"prisma:studio": "prisma studio"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@hookform/error-message": "2.0.0",
|
||||
"@hookform/resolvers": "2.9.10",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"delay": "5.0.0",
|
||||
"next": "14.0.4",
|
||||
"next": "canary",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
|
||||
@@ -79,11 +79,13 @@ const runTests = () => {
|
||||
let text = await browser.elementByCss("#content").text()
|
||||
expect(text).toMatch(/logged-out/)
|
||||
await browser.elementByCss("#login").click()
|
||||
await waitFor(200)
|
||||
await waitFor(7500)
|
||||
text = await browser.elementByCss("#content").text()
|
||||
|
||||
expect(text).toMatch(/logged-in/)
|
||||
|
||||
await browser.elementByCss("#logout").click()
|
||||
await waitFor(250)
|
||||
await waitFor(5000)
|
||||
text = await browser.elementByCss("#content").text()
|
||||
expect(text).toMatch(/logged-out/)
|
||||
|
||||
@@ -93,16 +95,16 @@ const runTests = () => {
|
||||
it("should logout without infinite loop #2233", async () => {
|
||||
// Login
|
||||
let browser = await webdriver(appPort, "/login")
|
||||
await waitFor(200)
|
||||
await waitFor(5000)
|
||||
await browser.elementByCss("#login").click()
|
||||
await waitFor(200)
|
||||
await waitFor(5000)
|
||||
|
||||
await browser.eval(`window.location = "/authenticated-query"`)
|
||||
await browser.waitForElementByCss("#content")
|
||||
let text = await browser.elementByCss("#content").text()
|
||||
expect(text).toMatch(/authenticated-basic-result/)
|
||||
await browser.elementByCss("#logout").click()
|
||||
await waitFor(200)
|
||||
await waitFor(5000)
|
||||
await browser.waitForElementByCss("#error")
|
||||
text = await browser.elementByCss("#error").text()
|
||||
if (mode === "server") {
|
||||
@@ -115,9 +117,9 @@ const runTests = () => {
|
||||
|
||||
it("Page.authenticate = {role} should throw authentication error ", async () => {
|
||||
let browser = await webdriver(appPort, "/login")
|
||||
await waitFor(200)
|
||||
await waitFor(5000)
|
||||
await browser.elementByCss("#login").click()
|
||||
await waitFor(200)
|
||||
await waitFor(5000)
|
||||
await browser.eval(`window.location = "/page-dot-authenticate-role"`)
|
||||
await browser.waitForElementByCss("#error")
|
||||
let text = await browser.elementByCss("#error").text()
|
||||
@@ -169,7 +171,7 @@ const runTests = () => {
|
||||
let text = await browser.elementByCss("#content").text()
|
||||
expect(text).toMatch(/authenticated-basic-result/)
|
||||
await browser.elementByCss("#logout").click()
|
||||
await waitFor(500)
|
||||
await waitFor(5000)
|
||||
|
||||
expect(await browser.url()).toMatch(/\/login/)
|
||||
if (browser) await browser.close()
|
||||
@@ -275,7 +277,7 @@ const runTests = () => {
|
||||
}
|
||||
|
||||
describe("Auth Tests", () => {
|
||||
describe("dev mode", () => {
|
||||
describe("dev mode - webpack", () => {
|
||||
beforeAll(async () => {
|
||||
mode = "dev"
|
||||
try {
|
||||
@@ -290,6 +292,21 @@ describe("Auth Tests", () => {
|
||||
runTests()
|
||||
})
|
||||
|
||||
describe("dev mode - turbo", () => {
|
||||
beforeAll(async () => {
|
||||
mode = "dev"
|
||||
try {
|
||||
await runBlitzCommand(["prisma", "migrate", "reset", "--force"])
|
||||
appPort = await findPort()
|
||||
app = await blitzLaunchApp(appPort, {cwd: process.cwd()}, true)
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
}, 5000 * 60 * 2)
|
||||
afterAll(async () => await killApp(app))
|
||||
runTests()
|
||||
})
|
||||
|
||||
describe("server mode", () => {
|
||||
beforeAll(async () => {
|
||||
mode = "server"
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
"prisma:studio": "prisma studio"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "14.0.4",
|
||||
"next": "canary",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
|
||||
@@ -16,19 +16,19 @@
|
||||
"schema": "db/schema.prisma"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "14.0.4",
|
||||
"next": "canary",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@next/bundle-analyzer": "12.0.8",
|
||||
"@types/express": "4.17.13",
|
||||
"@types/fs-extra": "9.0.13",
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"blitz": "2.0.2",
|
||||
"next": "14.0.4",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"blitz": "2.0.9",
|
||||
"next": "canary",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0"
|
||||
},
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
"use client"
|
||||
|
||||
import {useQuery, useMutation} from "@blitzjs/rpc"
|
||||
import logout from "../src/auth/mutations/logout"
|
||||
import getCurrentUser from "../src/users/queries/getCurrentUser"
|
||||
import {useTransition} from "react"
|
||||
import {useRouter} from "next/navigation"
|
||||
|
||||
export default function Test() {
|
||||
const router = useRouter()
|
||||
const [user] = useQuery(getCurrentUser, null)
|
||||
const [isPending, startTransition] = useTransition()
|
||||
const [logoutMutation] = useMutation(logout)
|
||||
console.log(user)
|
||||
return (
|
||||
<div>
|
||||
<h1>Test</h1>
|
||||
<p>{user?.email}</p>
|
||||
<button
|
||||
className="button small"
|
||||
onClick={async () => {
|
||||
await logoutMutation()
|
||||
startTransition(() => {
|
||||
// Refresh the current route and fetch new data from the server without
|
||||
// losing client-side browser or React state.
|
||||
router.refresh()
|
||||
})
|
||||
}}
|
||||
>
|
||||
Logout
|
||||
</button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -17,14 +17,14 @@
|
||||
"prisma:studio": "prisma studio"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "14.0.4",
|
||||
"next": "canary",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
|
||||
@@ -153,7 +153,7 @@ const runTests = (mode?: string) => {
|
||||
}
|
||||
|
||||
describe("Auth Tests", () => {
|
||||
describe("dev mode", async () => {
|
||||
describe("dev mode - webpack", async () => {
|
||||
beforeAll(async () => {
|
||||
try {
|
||||
await runBlitzCommand(["prisma", "migrate", "reset", "--force"])
|
||||
@@ -169,19 +169,19 @@ describe("Auth Tests", () => {
|
||||
runTests()
|
||||
})
|
||||
|
||||
// describe("server mode", () => {
|
||||
// beforeAll(async () => {
|
||||
// try {
|
||||
// await runBlitzCommand(["prisma", "generate"])
|
||||
// await runBlitzCommand(["prisma", "migrate", "deploy"])
|
||||
// await blitzBuild()
|
||||
// // appPort = await findPort()
|
||||
// app = await blitzStart(appPort, {cwd: process.cwd()})
|
||||
// } catch (err) {
|
||||
// console.log(err)
|
||||
// }
|
||||
// }, 5000 * 60 * 2)
|
||||
// afterAll(async () => await killApp(app))
|
||||
// runTests()
|
||||
// })
|
||||
describe("dev mode - turbo", async () => {
|
||||
beforeAll(async () => {
|
||||
try {
|
||||
await runBlitzCommand(["prisma", "migrate", "reset", "--force"])
|
||||
appPort = await findPort()
|
||||
app = await blitzLaunchApp(appPort, {cwd: process.cwd()}, true)
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
}, 5000 * 60 * 2)
|
||||
afterAll(async () => {
|
||||
await killApp(app)
|
||||
})
|
||||
runTests()
|
||||
})
|
||||
})
|
||||
|
||||
@@ -16,19 +16,19 @@
|
||||
"prisma:studio": "prisma studio"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "14.0.4",
|
||||
"next": "canary",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@next/bundle-analyzer": "12.0.8",
|
||||
"@types/express": "4.17.13",
|
||||
"@types/fs-extra": "9.0.13",
|
||||
|
||||
@@ -8,14 +8,14 @@
|
||||
"clean": "rm -rf .turbo && rm -rf node_modules"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@prisma/client": "4.6.1",
|
||||
"@tanstack/react-query": "4.0.10",
|
||||
"blitz": "2.0.2",
|
||||
"next": "14.0.4",
|
||||
"blitz": "2.0.9",
|
||||
"next": "canary",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0"
|
||||
|
||||
@@ -16,18 +16,18 @@
|
||||
"schema": "db/schema.prisma"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "14.0.4",
|
||||
"next": "canary",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@next/bundle-analyzer": "12.0.8",
|
||||
"@types/express": "4.17.13",
|
||||
"@types/fs-extra": "9.0.13",
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"blitz": "2.0.2",
|
||||
"next": "14.0.4",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"blitz": "2.0.9",
|
||||
"next": "canary",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0"
|
||||
},
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"blitz": "2.0.2",
|
||||
"next": "14.0.4",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"blitz": "2.0.9",
|
||||
"next": "canary",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0"
|
||||
},
|
||||
|
||||
@@ -16,19 +16,19 @@
|
||||
"schema": "db/schema.prisma"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/next": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/next": "2.0.9",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "14.0.4",
|
||||
"next": "canary",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@next/bundle-analyzer": "12.0.8",
|
||||
"@types/express": "4.17.13",
|
||||
"@types/fs-extra": "9.0.13",
|
||||
|
||||
@@ -233,6 +233,7 @@ export function runBlitzCommandDev(argv, stdOut, opts: RunNextCommandDevOptions
|
||||
}
|
||||
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
console.log(`Running command "blitz ${argv.join(" ")}"`)
|
||||
const instance = spawn("node", [blitzBin, ...argv], {
|
||||
cwd,
|
||||
env,
|
||||
@@ -294,8 +295,8 @@ export function runBlitzCommandDev(argv, stdOut, opts: RunNextCommandDevOptions
|
||||
}
|
||||
|
||||
// Blitz Utils
|
||||
export function blitzLaunchApp(port, opts: RunNextCommandDevOptions) {
|
||||
return runBlitzCommandDev(["dev", "-p", port], undefined, opts)
|
||||
export function blitzLaunchApp(port, opts: RunNextCommandDevOptions, turbo = false) {
|
||||
return runBlitzCommandDev(["dev", "-p", port, turbo ? "--turbo" : ""], undefined, opts)
|
||||
}
|
||||
|
||||
export function blitzBuild(args = [], opts = {}): any {
|
||||
@@ -437,7 +438,7 @@ export function runNextCommandDev(argv, stdOut, opts: RunNextCommandDevOptions =
|
||||
}
|
||||
|
||||
if (opts.stdout !== false) {
|
||||
process.stdout.write(message)
|
||||
process.stdout.write(message)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -923,4 +924,5 @@ interface RunNextCommandDevOptions {
|
||||
nodeArgs?: []
|
||||
bootupMarker?: any
|
||||
nextStart?: boolean
|
||||
turbo?: boolean
|
||||
}
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "workspace:2.0.2",
|
||||
"@blitzjs/next": "workspace:2.0.2",
|
||||
"@blitzjs/rpc": "workspace:2.0.2",
|
||||
"@blitzjs/config": "workspace:2.0.9",
|
||||
"@blitzjs/next": "workspace:2.0.9",
|
||||
"@blitzjs/rpc": "workspace:2.0.9",
|
||||
"@tanstack/react-query": "4.13.0",
|
||||
"@testing-library/react": "13.4.0",
|
||||
"@types/express": "4.17.13",
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"husky": "8.0.2",
|
||||
"jsdom": "^19.0.0",
|
||||
"lint-staged": "13.0.3",
|
||||
"next": "14.0.4",
|
||||
"next": "canary",
|
||||
"only-allow": "1.1.0",
|
||||
"prettier": "^2.7.1",
|
||||
"prettier-plugin-prisma": "4.4.0",
|
||||
@@ -48,6 +48,9 @@
|
||||
"pnpm": {
|
||||
"patchedDependencies": {
|
||||
"next-auth@4.18.7": "patches/next-auth@4.18.7.patch"
|
||||
},
|
||||
"overrides": {
|
||||
"@types/mime": "3.0.4"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,62 @@
|
||||
# @blitzjs/auth
|
||||
|
||||
## 2.0.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [5a14306f7]
|
||||
- blitz@2.0.9
|
||||
|
||||
## 2.0.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 77555468f: fix: add missing host while initialising the next-auth adapter
|
||||
- Updated dependencies [5e61a1681]
|
||||
- Updated dependencies [77555468f]
|
||||
- blitz@2.0.8
|
||||
|
||||
## 2.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [ee7bf87ec]
|
||||
- Updated dependencies [178c152b2]
|
||||
- blitz@2.0.7
|
||||
|
||||
## 2.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 5a587a6c3: Fix bundling issue that occurs in vercel due to the way imports were handled internally
|
||||
- Updated dependencies [76a2544f9]
|
||||
- blitz@2.0.6
|
||||
|
||||
## 2.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 6f54841b7: fix: getBlitzContext() can only be used in React Server Components in Nextjs 13 or higher
|
||||
- 8a417533f: fix: remove restriction to use `secure` cookies in localhost / during development following spec in [developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#restrict_access_to_cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#restrict_access_to_cookies)
|
||||
- Updated dependencies [6f54841b7]
|
||||
- blitz@2.0.5
|
||||
|
||||
## 2.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- dd604c767: perf: add filter to select only non expired sessions
|
||||
- Updated dependencies [dd604c767]
|
||||
- Updated dependencies [28a79040e]
|
||||
- blitz@2.0.4
|
||||
|
||||
## 2.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [2f5c8a3a0]
|
||||
- blitz@2.0.3
|
||||
|
||||
## 2.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/auth",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.9",
|
||||
"homepage": "https://blitzjs.com/",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -50,7 +50,7 @@
|
||||
"url": "0.11.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"next": "*",
|
||||
"next-auth": "*",
|
||||
"secure-password": "4.0.0"
|
||||
@@ -67,7 +67,7 @@
|
||||
}
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@testing-library/react": "13.4.0",
|
||||
"@testing-library/react-hooks": "8.0.1",
|
||||
"@types/cookie": "0.4.1",
|
||||
@@ -75,8 +75,8 @@
|
||||
"@types/jsonwebtoken": "8.5.8",
|
||||
"@types/react": "18.0.25",
|
||||
"@types/react-dom": "17.0.14",
|
||||
"blitz": "2.0.2",
|
||||
"next": "14.0.4",
|
||||
"blitz": "2.0.9",
|
||||
"next": "canary",
|
||||
"next-auth": "4.18.7",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
|
||||
@@ -161,6 +161,8 @@ export const useSession = (options: UseSessionOptions = {}): ClientSession => {
|
||||
if (isServer) {
|
||||
const e = new Error()
|
||||
e.name = "Rendering Suspense fallback..."
|
||||
;(e as any).digest = "DYNAMIC_SERVER_USAGE"
|
||||
e.message = "DYNAMIC_SERVER_USAGE"
|
||||
delete e.stack
|
||||
throw e
|
||||
} else {
|
||||
|
||||
@@ -109,11 +109,11 @@ export function NextAuthAdapter<P extends Provider[]>(
|
||||
const {options, cookies} = await init({
|
||||
// @ts-ignore
|
||||
url: new URL(
|
||||
// @ts-ignore
|
||||
internalRequest.url!,
|
||||
internalRequest.url,
|
||||
process.env.APP_ORIGIN || process.env.BLITZ_DEV_SERVER_ORIGIN,
|
||||
),
|
||||
authOptions: config as unknown as AuthOptions,
|
||||
host: internalRequest.url.host,
|
||||
action,
|
||||
providerId,
|
||||
callbackUrl: req.body?.callbackUrl ?? (req.query?.callbackUrl as string),
|
||||
|
||||
@@ -47,7 +47,12 @@ async function readJSONBody(
|
||||
// prettier-ignore
|
||||
const actions = [ "providers", "session", "csrf", "login", "signout", "callback", "verify-request", "error", "_log"]
|
||||
|
||||
export async function toInternalRequest(req: Request): Promise<RequestInternal | Error> {
|
||||
export async function toInternalRequest(req: Request): Promise<
|
||||
| (RequestInternal & {
|
||||
url: URL
|
||||
})
|
||||
| Error
|
||||
> {
|
||||
try {
|
||||
// TODO: url.toString() should not include action and providerId
|
||||
// see init.ts
|
||||
@@ -70,7 +75,6 @@ export async function toInternalRequest(req: Request): Promise<RequestInternal |
|
||||
}
|
||||
|
||||
return {
|
||||
//@ts-ignore
|
||||
url,
|
||||
action,
|
||||
providerId,
|
||||
|
||||
@@ -22,7 +22,9 @@ interface IsAuthorized {
|
||||
interface PrismaClientWithSession {
|
||||
session: {
|
||||
findFirst(args?: {where?: {handle?: SessionModel["handle"]}}): Promise<SessionModel | null>
|
||||
findMany(args?: {where?: {userId?: PublicData["userId"]}}): Promise<SessionModel[]>
|
||||
findMany(args?: {
|
||||
where?: {userId?: PublicData["userId"]; expiresAt?: {gt?: Date}}
|
||||
}): Promise<SessionModel[]>
|
||||
create(args: {
|
||||
data: SessionModel & {
|
||||
userId?: any
|
||||
@@ -42,7 +44,7 @@ export const PrismaStorage = <Client extends PrismaClientWithSession>(
|
||||
): SessionConfigMethods => {
|
||||
return {
|
||||
getSession: (handle) => db.session.findFirst({where: {handle}}),
|
||||
getSessions: (userId) => db.session.findMany({where: {userId}}),
|
||||
getSessions: (userId) => db.session.findMany({where: {userId, expiresAt: {gt: new Date()}}}),
|
||||
createSession: (session) => {
|
||||
let user
|
||||
if (session.userId) {
|
||||
|
||||
@@ -43,7 +43,7 @@ import {Socket} from "net"
|
||||
import {UrlObject} from "url"
|
||||
import {formatWithValidation} from "../shared/url-utils"
|
||||
|
||||
export function isLocalhost(req: any): boolean {
|
||||
export function isLocalhost(req: IncomingMessage): boolean {
|
||||
let {host} = req.headers
|
||||
let localhost = false
|
||||
if (host) {
|
||||
@@ -182,30 +182,35 @@ export async function getSession(
|
||||
}
|
||||
|
||||
export async function getBlitzContext(): Promise<Ctx> {
|
||||
const {headers, cookies} = await import("next/headers").catch(() => {
|
||||
throw new Error(
|
||||
"getBlitzContext() can only be used in React Server Components in Nextjs 13 or higher",
|
||||
try {
|
||||
const {headers, cookies} = require("next/headers")
|
||||
const req = new IncomingMessage(new Socket()) as IncomingMessage & {
|
||||
cookies: {[key: string]: string}
|
||||
}
|
||||
req.headers = Object.fromEntries(headers())
|
||||
const csrfToken = cookies().get(COOKIE_CSRF_TOKEN())
|
||||
if (csrfToken) {
|
||||
req.headers[HEADER_CSRF] = csrfToken.value
|
||||
}
|
||||
req.cookies = Object.fromEntries(
|
||||
cookies()
|
||||
.getAll()
|
||||
.map((c: {name: string; value: string}) => [c.name, c.value]),
|
||||
)
|
||||
})
|
||||
const req = new IncomingMessage(new Socket()) as IncomingMessage & {
|
||||
cookies: {[key: string]: string}
|
||||
const res = new ServerResponse(req)
|
||||
const session = await getSession(req, res, true)
|
||||
const ctx: Ctx = {
|
||||
session,
|
||||
}
|
||||
return ctx
|
||||
} catch (e) {
|
||||
if ((e as NodeJS.ErrnoException).code === "MODULE_NOT_FOUND") {
|
||||
throw new Error(
|
||||
"Usage of `useAuthenticatedBlitzContext` is supported only in next.js 13.0.0 and above. Please upgrade your next.js version.",
|
||||
)
|
||||
}
|
||||
throw e
|
||||
}
|
||||
req.headers = Object.fromEntries(headers())
|
||||
const csrfToken = cookies().get(COOKIE_CSRF_TOKEN())
|
||||
if (csrfToken) {
|
||||
req.headers[HEADER_CSRF] = csrfToken.value
|
||||
}
|
||||
req.cookies = Object.fromEntries(
|
||||
cookies()
|
||||
.getAll()
|
||||
.map((c: {name: string; value: string}) => [c.name, c.value]),
|
||||
)
|
||||
const res = new ServerResponse(req)
|
||||
const session = await getSession(req, res, true)
|
||||
const ctx: Ctx = {
|
||||
session,
|
||||
}
|
||||
return ctx
|
||||
}
|
||||
|
||||
interface RouteUrlObject extends Pick<UrlObject, "pathname" | "query" | "href"> {
|
||||
@@ -227,58 +232,63 @@ export async function useAuthenticatedBlitzContext({
|
||||
})
|
||||
const ctx: Ctx = await getBlitzContext()
|
||||
const userId = ctx.session.userId
|
||||
const {redirect} = await import("next/navigation").catch(() => {
|
||||
throw new Error(
|
||||
"useAuthenticatedBlitzContext() can only be used in React Server Components in Nextjs 13 or higher",
|
||||
)
|
||||
})
|
||||
if (userId) {
|
||||
debug("[useAuthenticatedBlitzContext] User is authenticated")
|
||||
if (redirectAuthenticatedTo) {
|
||||
if (typeof redirectAuthenticatedTo === "function") {
|
||||
redirectAuthenticatedTo = redirectAuthenticatedTo(ctx)
|
||||
try {
|
||||
const {redirect} = require("next/navigation")
|
||||
if (userId) {
|
||||
debug("[useAuthenticatedBlitzContext] User is authenticated")
|
||||
if (redirectAuthenticatedTo) {
|
||||
if (typeof redirectAuthenticatedTo === "function") {
|
||||
redirectAuthenticatedTo = redirectAuthenticatedTo(ctx)
|
||||
}
|
||||
const redirectUrl =
|
||||
typeof redirectAuthenticatedTo === "string"
|
||||
? redirectAuthenticatedTo
|
||||
: formatWithValidation(redirectAuthenticatedTo)
|
||||
debug("[useAuthenticatedBlitzContext] Redirecting to", redirectUrl)
|
||||
if (role) {
|
||||
try {
|
||||
ctx.session.$authorize(role)
|
||||
} catch (e) {
|
||||
log.info("Authentication Redirect: " + customChalk.dim(`Role ${role}`), redirectTo)
|
||||
redirect(redirectUrl)
|
||||
}
|
||||
} else {
|
||||
log.info("Authentication Redirect: " + customChalk.dim("(Authenticated)"), redirectUrl)
|
||||
redirect(redirectUrl)
|
||||
}
|
||||
}
|
||||
const redirectUrl =
|
||||
typeof redirectAuthenticatedTo === "string"
|
||||
? redirectAuthenticatedTo
|
||||
: formatWithValidation(redirectAuthenticatedTo)
|
||||
debug("[useAuthenticatedBlitzContext] Redirecting to", redirectUrl)
|
||||
if (role) {
|
||||
if (redirectTo && role) {
|
||||
debug("[useAuthenticatedBlitzContext] redirectTo and role are both defined.")
|
||||
try {
|
||||
ctx.session.$authorize(role)
|
||||
} catch (e) {
|
||||
log.info("Authentication Redirect: " + customChalk.dim(`Role ${role}`), redirectTo)
|
||||
redirect(redirectUrl)
|
||||
log.error("Authorization Error: " + (e as Error).message)
|
||||
if (typeof redirectTo !== "string") {
|
||||
redirectTo = formatWithValidation(redirectTo)
|
||||
}
|
||||
log.info("Authorization Redirect: " + customChalk.dim(`Role ${role}`), redirectTo)
|
||||
redirect(redirectTo)
|
||||
}
|
||||
} else {
|
||||
log.info("Authentication Redirect: " + customChalk.dim("(Authenticated)"), redirectUrl)
|
||||
redirect(redirectUrl)
|
||||
}
|
||||
}
|
||||
if (redirectTo && role) {
|
||||
debug("[useAuthenticatedBlitzContext] redirectTo and role are both defined.")
|
||||
try {
|
||||
ctx.session.$authorize(role)
|
||||
} catch (e) {
|
||||
log.error("Authorization Error: " + (e as Error).message)
|
||||
} else {
|
||||
debug("[useAuthenticatedBlitzContext] User is not authenticated")
|
||||
if (redirectTo) {
|
||||
if (typeof redirectTo !== "string") {
|
||||
redirectTo = formatWithValidation(redirectTo)
|
||||
}
|
||||
log.info("Authorization Redirect: " + customChalk.dim(`Role ${role}`), redirectTo)
|
||||
log.info("Authentication Redirect: " + customChalk.dim("(Not authenticated)"), redirectTo)
|
||||
redirect(redirectTo)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
debug("[useAuthenticatedBlitzContext] User is not authenticated")
|
||||
if (redirectTo) {
|
||||
if (typeof redirectTo !== "string") {
|
||||
redirectTo = formatWithValidation(redirectTo)
|
||||
}
|
||||
log.info("Authentication Redirect: " + customChalk.dim("(Not authenticated)"), redirectTo)
|
||||
redirect(redirectTo)
|
||||
return ctx as AuthenticatedCtx
|
||||
} catch (e) {
|
||||
if ((e as NodeJS.ErrnoException).code === "MODULE_NOT_FOUND") {
|
||||
throw new Error(
|
||||
"Usage of `useAuthenticatedBlitzContext` is supported only in next.js 13.0.0 and above. Please upgrade your next.js version.",
|
||||
)
|
||||
}
|
||||
throw e
|
||||
}
|
||||
return ctx as AuthenticatedCtx
|
||||
}
|
||||
|
||||
const makeProxyToPublicData = <T extends SessionContextClass>(ctxClass: T): T => {
|
||||
@@ -563,18 +573,13 @@ const setHeader = (res: ServerResponse, name: string, value: string) => {
|
||||
}
|
||||
}
|
||||
|
||||
const setSessionCookie = (
|
||||
req: IncomingMessage,
|
||||
res: ServerResponse,
|
||||
sessionToken: string,
|
||||
expiresAt: Date,
|
||||
) => {
|
||||
const setSessionCookie = (res: ServerResponse, sessionToken: string, expiresAt: Date) => {
|
||||
setCookie(
|
||||
res,
|
||||
cookie.serialize(COOKIE_SESSION_TOKEN(), sessionToken, {
|
||||
path: "/",
|
||||
httpOnly: true,
|
||||
secure: global.sessionConfig.secureCookies && !isLocalhost(req),
|
||||
secure: global.sessionConfig.secureCookies,
|
||||
sameSite: global.sessionConfig.sameSite,
|
||||
domain: global.sessionConfig.domain,
|
||||
expires: expiresAt,
|
||||
@@ -582,18 +587,13 @@ const setSessionCookie = (
|
||||
)
|
||||
}
|
||||
|
||||
const setAnonymousSessionCookie = (
|
||||
req: IncomingMessage,
|
||||
res: ServerResponse,
|
||||
token: string,
|
||||
expiresAt: Date,
|
||||
) => {
|
||||
const setAnonymousSessionCookie = (res: ServerResponse, token: string, expiresAt: Date) => {
|
||||
setCookie(
|
||||
res,
|
||||
cookie.serialize(COOKIE_ANONYMOUS_SESSION_TOKEN(), token, {
|
||||
path: "/",
|
||||
httpOnly: true,
|
||||
secure: global.sessionConfig.secureCookies && !isLocalhost(req),
|
||||
secure: global.sessionConfig.secureCookies,
|
||||
sameSite: global.sessionConfig.sameSite,
|
||||
domain: global.sessionConfig.domain,
|
||||
expires: expiresAt,
|
||||
@@ -835,11 +835,11 @@ async function createNewSession(
|
||||
new Date(),
|
||||
global.sessionConfig.anonSessionExpiryMinutes as number,
|
||||
)
|
||||
setAnonymousSessionCookie(req, res, anonymousSessionToken, expiresAt)
|
||||
setAnonymousSessionCookie(res, anonymousSessionToken, expiresAt)
|
||||
setCSRFCookie(req, res, antiCSRFToken, expiresAt)
|
||||
setPublicDataCookie(req, res, publicDataToken, expiresAt)
|
||||
// Clear the essential session cookie in case it was previously set
|
||||
setSessionCookie(req, res, "", new Date(0))
|
||||
setSessionCookie(res, "", new Date(0))
|
||||
setHeader(res, HEADER_SESSION_CREATED, "true")
|
||||
|
||||
return {
|
||||
@@ -891,11 +891,11 @@ async function createNewSession(
|
||||
privateData: JSON.stringify(newPrivateData),
|
||||
})
|
||||
|
||||
setSessionCookie(req, res, sessionToken, expiresAt)
|
||||
setSessionCookie(res, sessionToken, expiresAt)
|
||||
setCSRFCookie(req, res, antiCSRFToken, expiresAt)
|
||||
setPublicDataCookie(req, res, publicDataToken, expiresAt)
|
||||
// Clear the anonymous session cookie in case it was previously set
|
||||
setAnonymousSessionCookie(req, res, "", new Date(0))
|
||||
setAnonymousSessionCookie(res, "", new Date(0))
|
||||
setHeader(res, HEADER_SESSION_CREATED, "true")
|
||||
|
||||
return {
|
||||
@@ -943,7 +943,7 @@ async function refreshSession(
|
||||
const publicDataToken = createPublicDataToken(sessionKernel.publicData)
|
||||
|
||||
const expiresAt = addYears(new Date(), 30)
|
||||
setAnonymousSessionCookie(req, res, anonymousSessionToken, expiresAt)
|
||||
setAnonymousSessionCookie(res, anonymousSessionToken, expiresAt)
|
||||
setPublicDataCookie(req, res, publicDataToken, expiresAt)
|
||||
} else if (global.sessionConfig.method === "essential" && "sessionToken" in sessionKernel) {
|
||||
const expiresAt = addMinutes(new Date(), global.sessionConfig.sessionExpiryMinutes as number)
|
||||
|
||||
@@ -1,5 +1,78 @@
|
||||
# @blitzjs/next
|
||||
|
||||
## 2.0.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 5a14306f7: fix export `enhancePrisma` in client
|
||||
- Updated dependencies [5a14306f7]
|
||||
- @blitzjs/rpc@2.0.9
|
||||
- blitz@2.0.9
|
||||
|
||||
## 2.0.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 5e61a1681: bug: merge existing and custom blitz turbo configs
|
||||
- Updated dependencies [5e61a1681]
|
||||
- Updated dependencies [77555468f]
|
||||
- blitz@2.0.8
|
||||
- @blitzjs/rpc@2.0.8
|
||||
|
||||
## 2.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ee7bf87ec: Turbopack support for Blitz
|
||||
|
||||
This PR includes the changes required to make the Blitz loaders work with Turbopack.
|
||||
|
||||
Usage:
|
||||
|
||||
```bash
|
||||
pnpm blitz dev --turbo
|
||||
```
|
||||
|
||||
- Updated dependencies [ee7bf87ec]
|
||||
- Updated dependencies [178c152b2]
|
||||
- blitz@2.0.7
|
||||
- @blitzjs/rpc@2.0.7
|
||||
|
||||
## 2.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [76a2544f9]
|
||||
- blitz@2.0.6
|
||||
- @blitzjs/rpc@2.0.6
|
||||
|
||||
## 2.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6f54841b7]
|
||||
- blitz@2.0.5
|
||||
- @blitzjs/rpc@2.0.5
|
||||
|
||||
## 2.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 28a79040e: feat: export `BlitzServerMiddleware` from blitz-next with stronger types
|
||||
- Updated dependencies [dd604c767]
|
||||
- Updated dependencies [28a79040e]
|
||||
- blitz@2.0.4
|
||||
- @blitzjs/rpc@2.0.4
|
||||
|
||||
## 2.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 2f5c8a3a0: Address missing sodium native prebuilds required to use secure-password during server rendering
|
||||
- Updated dependencies [2f5c8a3a0]
|
||||
- @blitzjs/rpc@2.0.3
|
||||
- blitz@2.0.3
|
||||
|
||||
## 2.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/next",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.9",
|
||||
"homepage": "https://blitzjs.com/",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -29,8 +29,9 @@
|
||||
"eslint.js"
|
||||
],
|
||||
"dependencies": {
|
||||
"@blitzjs/rpc": "2.0.2",
|
||||
"@blitzjs/rpc": "2.0.9",
|
||||
"@types/hoist-non-react-statics": "3.3.1",
|
||||
"copy-webpack-plugin": "11.0.0",
|
||||
"debug": "4.3.3",
|
||||
"fs-extra": "10.0.1",
|
||||
"hoist-non-react-statics": "3.3.2",
|
||||
@@ -38,13 +39,13 @@
|
||||
"supports-color": "8.1.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"next": "*",
|
||||
"react": "*",
|
||||
"tslog": "4.9.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@testing-library/dom": "8.13.0",
|
||||
"@testing-library/jest-dom": "5.16.3",
|
||||
"@testing-library/react": "13.4.0",
|
||||
@@ -55,10 +56,10 @@
|
||||
"@types/react": "18.0.25",
|
||||
"@types/react-dom": "17.0.14",
|
||||
"@types/testing-library__react-hooks": "4.0.0",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"cross-spawn": "7.0.3",
|
||||
"find-up": "4.1.0",
|
||||
"next": "14.0.4",
|
||||
"next": "canary",
|
||||
"next-router-mock": "0.9.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
|
||||
@@ -170,6 +170,7 @@ function codegen() {
|
||||
const defaultIndexJsPath = path.join(dotBlitzDir, "index.js")
|
||||
const defaultIndexBrowserJSPath = path.join(dotBlitzDir, "index-browser.js")
|
||||
const defaultIndexDTSPath = path.join(dotBlitzDir, "index.d.ts")
|
||||
const emptyJSPath = path.join(dotBlitzDir, "turbopack-empty.js")
|
||||
|
||||
if (!fs.existsSync(defaultIndexJsPath)) {
|
||||
await copyFile(path.join(__dirname, "default-index.js"), defaultIndexJsPath)
|
||||
@@ -181,6 +182,10 @@ function codegen() {
|
||||
if (!fs.existsSync(defaultIndexDTSPath)) {
|
||||
await copyFile(path.join(__dirname, "default-index.d.ts"), defaultIndexDTSPath)
|
||||
}
|
||||
|
||||
if (!fs.existsSync(emptyJSPath)) {
|
||||
await copyFile(path.join(__dirname, "turbopack-empty.js"), emptyJSPath)
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
|
||||
1
packages/blitz-next/scripts/turbopack-empty.js
Normal file
1
packages/blitz-next/scripts/turbopack-empty.js
Normal file
@@ -0,0 +1 @@
|
||||
export {}
|
||||
@@ -22,11 +22,13 @@ import {
|
||||
RouteUrlObject,
|
||||
startWatcher,
|
||||
stopWatcher,
|
||||
RequestMiddleware,
|
||||
} from "blitz"
|
||||
import {
|
||||
getInfiniteQueryKey,
|
||||
getQueryKey,
|
||||
installWebpackConfig,
|
||||
installTurboConfig,
|
||||
InstallWebpackConfigOptions,
|
||||
ResolverPathOptions,
|
||||
DefaultOptions,
|
||||
@@ -38,6 +40,9 @@ import {withSuperJsonProps} from "./superjson"
|
||||
import {ParsedUrlQuery} from "querystring"
|
||||
import {PreviewData} from "next/types"
|
||||
import {resolveHref} from "next/dist/client/resolve-href"
|
||||
import fs from "fs"
|
||||
import path from "path"
|
||||
import CopyPlugin from "copy-webpack-plugin"
|
||||
|
||||
export * from "./index-browser"
|
||||
|
||||
@@ -268,6 +273,31 @@ export function withBlitz(nextConfig: BlitzConfig = {}): NextConfig {
|
||||
},
|
||||
})
|
||||
|
||||
if (!process.env.TURBOPACK) {
|
||||
try {
|
||||
const sodiumNativePath = fs.realpathSync(
|
||||
path.join(require.resolve("sodium-native"), ".."),
|
||||
)
|
||||
const dotNextDirectory = `${process.cwd()}/.next`
|
||||
config.plugins.push(
|
||||
new CopyPlugin({
|
||||
patterns: [
|
||||
{
|
||||
//dev
|
||||
from: `${sodiumNativePath}/prebuilds/`,
|
||||
to: `${dotNextDirectory}/server/vendor-chunks/prebuilds/`,
|
||||
},
|
||||
{
|
||||
//prod
|
||||
from: `${sodiumNativePath}/prebuilds/`,
|
||||
to: `${dotNextDirectory}/server/chunks/prebuilds/`,
|
||||
},
|
||||
],
|
||||
}),
|
||||
)
|
||||
} catch {}
|
||||
}
|
||||
|
||||
if (typeof nextConfig.webpack === "function") {
|
||||
return nextConfig.webpack(config, options)
|
||||
}
|
||||
@@ -275,6 +305,26 @@ export function withBlitz(nextConfig: BlitzConfig = {}): NextConfig {
|
||||
},
|
||||
})
|
||||
|
||||
if (process.env.TURBOPACK) {
|
||||
const blitzTurboConfig = installTurboConfig()
|
||||
config.experimental = {
|
||||
...config.experimental,
|
||||
turbo: {
|
||||
loaders: {
|
||||
...config.experimental?.turbo?.loaders,
|
||||
},
|
||||
resolveAlias: {
|
||||
...config.experimental?.turbo?.resolveAlias,
|
||||
...blitzTurboConfig.resolveAlias,
|
||||
},
|
||||
rules: {
|
||||
...config.experimental?.turbo?.rules,
|
||||
...blitzTurboConfig.rules,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
const {blitz, ...rest} = config
|
||||
return rest
|
||||
}
|
||||
@@ -323,3 +373,15 @@ declare module "blitz" {
|
||||
prefetchInfiniteQuery: PrefetchQueryFn
|
||||
}
|
||||
}
|
||||
|
||||
export const BlitzServerMiddleware = <
|
||||
TMiddleware extends RequestMiddleware<NextApiRequest, BlitzNextApiResponse> = RequestMiddleware<
|
||||
NextApiRequest,
|
||||
BlitzNextApiResponse
|
||||
>,
|
||||
>(
|
||||
middleware: TMiddleware,
|
||||
): BlitzServerPlugin<{}> => ({
|
||||
requestMiddlewares: [middleware],
|
||||
exports: () => ({}),
|
||||
})
|
||||
|
||||
@@ -1,5 +1,69 @@
|
||||
# @blitzjs/rpc
|
||||
|
||||
## 2.0.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 5a14306f7: fix export `enhancePrisma` in client
|
||||
- Updated dependencies [5a14306f7]
|
||||
- blitz@2.0.9
|
||||
|
||||
## 2.0.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [5e61a1681]
|
||||
- Updated dependencies [77555468f]
|
||||
- blitz@2.0.8
|
||||
|
||||
## 2.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ee7bf87ec: Turbopack support for Blitz
|
||||
|
||||
This PR includes the changes required to make the Blitz loaders work with Turbopack.
|
||||
|
||||
Usage:
|
||||
|
||||
```bash
|
||||
pnpm blitz dev --turbo
|
||||
```
|
||||
|
||||
- Updated dependencies [ee7bf87ec]
|
||||
- Updated dependencies [178c152b2]
|
||||
- blitz@2.0.7
|
||||
|
||||
## 2.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [76a2544f9]
|
||||
- blitz@2.0.6
|
||||
|
||||
## 2.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6f54841b7]
|
||||
- blitz@2.0.5
|
||||
|
||||
## 2.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [dd604c767]
|
||||
- Updated dependencies [28a79040e]
|
||||
- blitz@2.0.4
|
||||
|
||||
## 2.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 2f5c8a3a0: Address missing sodium native prebuilds required to use secure-password during server rendering
|
||||
- Updated dependencies [2f5c8a3a0]
|
||||
- blitz@2.0.3
|
||||
|
||||
## 2.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/rpc",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.9",
|
||||
"homepage": "https://blitzjs.com/",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -37,19 +37,19 @@
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@tanstack/query-core": "4.24.4",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"next": "*",
|
||||
"react": "*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/auth": "2.0.2",
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/auth": "2.0.9",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@tanstack/query-core": "4.24.4",
|
||||
"@types/debug": "4.1.7",
|
||||
"@types/react": "18.0.25",
|
||||
"@types/react-dom": "17.0.14",
|
||||
"blitz": "2.0.2",
|
||||
"next": "14.0.4",
|
||||
"blitz": "2.0.9",
|
||||
"next": "canary",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"typescript": "^4.8.4",
|
||||
|
||||
@@ -119,6 +119,7 @@ export interface InstallWebpackConfigOptions {
|
||||
[key: string]: boolean | string
|
||||
}
|
||||
}
|
||||
plugins: any[]
|
||||
module: {
|
||||
rules: WebpackRule[]
|
||||
}
|
||||
@@ -156,6 +157,45 @@ export function installWebpackConfig({
|
||||
})
|
||||
}
|
||||
|
||||
export function installTurboConfig() {
|
||||
return {
|
||||
resolveAlias: {
|
||||
"cross-spawn": {browser: ".blitz/turbopack-empty.js"},
|
||||
"npm-which": {browser: ".blitz/turbopack-empty.js"},
|
||||
fs: {browser: ".blitz/turbopack-empty.js"},
|
||||
child_process: {browser: ".blitz/turbopack-empty.js"},
|
||||
},
|
||||
rules: {
|
||||
"**/*...blitz*.{jsx,tsx,js,ts}": {
|
||||
default: {
|
||||
loaders: [{loader: loaderServer, options: {}}],
|
||||
as: "*.ts",
|
||||
},
|
||||
},
|
||||
"**/{queries,mutations}/**": {
|
||||
browser: {
|
||||
loaders: [
|
||||
{
|
||||
loader: loaderClient,
|
||||
options: {},
|
||||
},
|
||||
],
|
||||
as: "*.ts",
|
||||
},
|
||||
default: {
|
||||
loaders: [
|
||||
{
|
||||
loader: loaderServerResolvers,
|
||||
options: {},
|
||||
},
|
||||
],
|
||||
as: "*.ts",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// ----------
|
||||
// END LOADER
|
||||
// ----------
|
||||
|
||||
@@ -14,12 +14,24 @@ import {getResolverConfig} from "../../parsers/parse-rpc-config"
|
||||
// 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 root = this.rootContext
|
||||
|
||||
const isSSR = compiler.name === "server"
|
||||
if (!isSSR) {
|
||||
// Webpack has `_compiler` property. Turbopack does not.
|
||||
const webpackCompilerName = this._compiler?.name
|
||||
if (webpackCompilerName) {
|
||||
const isSSR = webpackCompilerName === "server"
|
||||
if (!isSSR) {
|
||||
return await transformBlitzRpcResolverClient(
|
||||
input,
|
||||
toPosixPath(id),
|
||||
toPosixPath(root),
|
||||
this.query,
|
||||
)
|
||||
}
|
||||
// Handle Turbopack / other bundlers case.
|
||||
// The decision of which environment to run the loader in is decided by the loader configuration instead.
|
||||
} else {
|
||||
return await transformBlitzRpcResolverClient(
|
||||
input,
|
||||
toPosixPath(id),
|
||||
|
||||
@@ -13,12 +13,24 @@ 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 root = this.rootContext
|
||||
|
||||
const isSSR = compiler.name === "server"
|
||||
if (isSSR) {
|
||||
// Webpack has `_compiler` property. Turbopack does not.
|
||||
const webpackCompilerName = this._compiler?.name
|
||||
if (webpackCompilerName) {
|
||||
const isSSR = webpackCompilerName === "server"
|
||||
if (isSSR) {
|
||||
return await transformBlitzRpcResolverServer(
|
||||
input,
|
||||
toPosixPath(id),
|
||||
toPosixPath(root),
|
||||
this.query,
|
||||
)
|
||||
}
|
||||
// Handle Turbopack / other bundlers case.
|
||||
// The decision of which environment to run the loader in is decided by the loader configuration instead.
|
||||
} else {
|
||||
return await transformBlitzRpcResolverServer(
|
||||
input,
|
||||
toPosixPath(id),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {join} from "path"
|
||||
import {join, relative} from "path"
|
||||
import {promises} from "fs"
|
||||
import {
|
||||
assertPosixPath,
|
||||
@@ -14,17 +14,37 @@ import {
|
||||
// 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 root = this.rootContext
|
||||
const rpcFolders = this.query.includeRPCFolders ? this.query.includeRPCFolders : []
|
||||
|
||||
const isSSR = compiler.name === "server"
|
||||
if (isSSR) {
|
||||
// Webpack has `_compiler` property. Turbopack does not.
|
||||
const webpackCompilerName = this._compiler?.name
|
||||
if (webpackCompilerName) {
|
||||
const isSSR = webpackCompilerName === "server"
|
||||
if (isSSR) {
|
||||
this.cacheable(false)
|
||||
|
||||
const resolvers = await collectResolvers(root, rpcFolders, ["ts", "js", "tsx", "jsx"])
|
||||
|
||||
return await transformBlitzRpcServer(
|
||||
this.context,
|
||||
input,
|
||||
toPosixPath(id),
|
||||
toPosixPath(root),
|
||||
resolvers,
|
||||
this.query,
|
||||
)
|
||||
}
|
||||
// Handle Turbopack / other bundlers case.
|
||||
// The decision of which environment to run the loader in is decided by the loader configuration instead.
|
||||
} else {
|
||||
this.cacheable(false)
|
||||
|
||||
const resolvers = await collectResolvers(root, rpcFolders, ["ts", "js", "tsx", "jsx"])
|
||||
|
||||
return await transformBlitzRpcServer(
|
||||
this.context,
|
||||
input,
|
||||
toPosixPath(id),
|
||||
toPosixPath(root),
|
||||
@@ -43,6 +63,7 @@ function slash(str: string) {
|
||||
}
|
||||
|
||||
export async function transformBlitzRpcServer(
|
||||
context: string,
|
||||
src: string,
|
||||
id: string,
|
||||
root: string,
|
||||
@@ -68,7 +89,9 @@ export async function transformBlitzRpcServer(
|
||||
|
||||
code += `__internal_addBlitzRpcResolver('${routePath}','${slash(
|
||||
resolverFilePath,
|
||||
)}',() => ${importStrategy}('${slash(resolverFilePath)}'));`
|
||||
)}',() => ${importStrategy}('${slash(
|
||||
relative(context, resolverFilePath).replace(/\\/g, "/"),
|
||||
)}'))`
|
||||
code += "\n"
|
||||
}
|
||||
|
||||
|
||||
@@ -9,10 +9,11 @@ export interface LoaderOptions {
|
||||
}
|
||||
|
||||
export interface Loader {
|
||||
_compiler?: {
|
||||
_compiler: {
|
||||
name: string
|
||||
context: string
|
||||
}
|
||||
rootContext: string
|
||||
context: string
|
||||
resource: string
|
||||
cacheable: (enabled: boolean) => void
|
||||
query: LoaderOptions
|
||||
|
||||
@@ -1,5 +1,69 @@
|
||||
# blitz
|
||||
|
||||
## 2.0.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 5a14306f7: fix export `enhancePrisma` in client
|
||||
- @blitzjs/generator@2.0.9
|
||||
|
||||
## 2.0.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 5e61a1681: bug: merge existing and custom blitz turbo configs
|
||||
- 77555468f: fix: add missing host while initialising the next-auth adapter
|
||||
- @blitzjs/generator@2.0.8
|
||||
|
||||
## 2.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ee7bf87ec: Turbopack support for Blitz
|
||||
|
||||
This PR includes the changes required to make the Blitz loaders work with Turbopack.
|
||||
|
||||
Usage:
|
||||
|
||||
```bash
|
||||
pnpm blitz dev --turbo
|
||||
```
|
||||
|
||||
- 178c152b2: fix: patch next.js to hide intentional throws of `DYNAMIC_SERVER_USAGE`
|
||||
- @blitzjs/generator@2.0.7
|
||||
|
||||
## 2.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 76a2544f9: Use `SIGINT` signal instead of `SIGABRT` to stop the process, when using custom server for better compatibility with operative systems
|
||||
- @blitzjs/generator@2.0.6
|
||||
|
||||
## 2.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 6f54841b7: fix: getBlitzContext() can only be used in React Server Components in Nextjs 13 or higher
|
||||
- @blitzjs/generator@2.0.5
|
||||
|
||||
## 2.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- dd604c767: perf: add filter to select only non expired sessions
|
||||
- 28a79040e: feat: export `BlitzServerMiddleware` from blitz-next with stronger types
|
||||
- Updated dependencies [71b995003]
|
||||
- @blitzjs/generator@2.0.4
|
||||
|
||||
## 2.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 2f5c8a3a0: Address missing sodium native prebuilds required to use secure-password during server rendering
|
||||
- Updated dependencies [47722e045]
|
||||
- Updated dependencies [595f400e9]
|
||||
- @blitzjs/generator@2.0.3
|
||||
|
||||
## 2.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "blitz",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.9",
|
||||
"homepage": "https://blitzjs.com/",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -30,7 +30,7 @@
|
||||
"blitz": "bin/blitz"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/generator": "2.0.2",
|
||||
"@blitzjs/generator": "2.0.9",
|
||||
"@mrleebo/prisma-ast": "0.2.6",
|
||||
"@types/global-agent": "2.1.1",
|
||||
"arg": "5.0.1",
|
||||
@@ -80,7 +80,7 @@
|
||||
"watchpack": "2.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@types/cookie": "0.4.1",
|
||||
"@types/cross-spawn": "6.0.2",
|
||||
"@types/debug": "4.1.7",
|
||||
|
||||
@@ -16,7 +16,14 @@ export const codegenTasks = async () => {
|
||||
*/
|
||||
const nextDir = await resolveCwd("next")
|
||||
const nextClientIndex = join(nextDir, "../..", "client", "index.js")
|
||||
const nextClientOnRecoverableErrorIndex = join(
|
||||
nextDir,
|
||||
"../..",
|
||||
"client",
|
||||
"on-recoverable-error.js",
|
||||
)
|
||||
const readFile = await fs.readFile(nextClientIndex)
|
||||
const readOnRecoverableErrorFile = await fs.readFile(nextClientOnRecoverableErrorIndex)
|
||||
const packageJson = await getPackageJson()
|
||||
const version = packageJson.dependencies.next
|
||||
const nextVersion = semver.clean(version, {loose: true}) || semver.valid(semver.coerce(version))
|
||||
@@ -48,14 +55,16 @@ export const codegenTasks = async () => {
|
||||
)
|
||||
await fs.writeFile(nextClientIndex, updatedFile)
|
||||
log.success("Next.js was successfully patched with a React Suspense fix")
|
||||
} else if (nextVersion && semver.satisfies(nextVersion, ">=13.3.1")) {
|
||||
const updatedFile = readFile
|
||||
.toString()
|
||||
.replace(
|
||||
/_onrecoverableerror\.default$/gm,
|
||||
`(err) => (err.toString().includes("DYNAMIC_SERVER_USAGE") || err.toString().includes("could not finish this Suspense boundary") || err.toString().includes("Minified React error #419")) ? null : _onrecoverableerror.default(err)`,
|
||||
)
|
||||
await fs.writeFile(nextClientIndex, updatedFile)
|
||||
} else {
|
||||
const updatedFile = readOnRecoverableErrorFile.toString().replace(
|
||||
/defaultOnRecoverableError\(err\);/gm,
|
||||
` if (err.toString().includes("DYNAMIC_SERVER_USAGE") || err.toString().includes("could not finish this Suspense boundary") || err.toString().includes("Minified React error #419")) {
|
||||
return;
|
||||
} else {
|
||||
defaultOnRecoverableError(err)
|
||||
}`,
|
||||
)
|
||||
await fs.writeFile(nextClientOnRecoverableErrorIndex, updatedFile)
|
||||
log.success("Next.js was successfully patched with a React Suspense fix")
|
||||
}
|
||||
} catch (err) {
|
||||
|
||||
@@ -2,7 +2,7 @@ import {ChildProcess} from "child_process"
|
||||
import {spawn} from "cross-spawn"
|
||||
import detect from "detect-port"
|
||||
import path from "path"
|
||||
import {existsSync, readJSONSync} from "fs-extra"
|
||||
import {copySync, existsSync, readJSONSync} from "fs-extra"
|
||||
import * as esbuild from "esbuild"
|
||||
import pkgDir from "pkg-dir"
|
||||
import type {ServerConfig} from "./config"
|
||||
@@ -127,7 +127,7 @@ export function startCustomServer(
|
||||
console.log("\n")
|
||||
//@ts-ignore -- incorrect TS type from node
|
||||
process.exitCode = RESTART_CODE
|
||||
process.kill("SIGABRT")
|
||||
process.kill("SIGINT")
|
||||
}
|
||||
},
|
||||
}
|
||||
@@ -151,22 +151,12 @@ function getSpawnEnv(config: ServerConfig) {
|
||||
return spawnEnv
|
||||
}
|
||||
|
||||
async function createCommandAndPort(config: ServerConfig, command: string) {
|
||||
let spawnCommand: string[] = [command]
|
||||
let availablePort: number
|
||||
|
||||
availablePort = await detect({port: config.port ? config.port : 3000})
|
||||
spawnCommand = spawnCommand.concat(["-p", `${availablePort}`])
|
||||
|
||||
if (config.hostname) {
|
||||
spawnCommand = spawnCommand.concat(["-H", `${config.hostname}`])
|
||||
}
|
||||
|
||||
const spawnEnv = getSpawnEnv(config)
|
||||
|
||||
return {spawnCommand, spawnEnv, availablePort}
|
||||
async function detectAvailablePort(config: ServerConfig) {
|
||||
return await detect({port: config.port ? config.port : 3000})
|
||||
}
|
||||
|
||||
const frameworkCommands = ["blitz", "next"]
|
||||
|
||||
export async function nextStartDev(
|
||||
nextBin: string,
|
||||
cwd: string,
|
||||
@@ -174,12 +164,11 @@ export async function nextStartDev(
|
||||
_buildFolder: string,
|
||||
config: ServerConfig,
|
||||
) {
|
||||
const {spawnCommand, spawnEnv, availablePort} = await createCommandAndPort(config, "dev")
|
||||
|
||||
const spawnEnv = getSpawnEnv(config)
|
||||
const availablePort = await detectAvailablePort(config)
|
||||
process.env.BLITZ_DEV_SERVER_ORIGIN = `http://localhost:${availablePort}`
|
||||
|
||||
debug("cwd ", cwd)
|
||||
debug("spawn ", nextBin, spawnCommand)
|
||||
const spawnCommand = process.argv.slice(2).filter((arg) => !frameworkCommands.includes(arg))
|
||||
|
||||
return new Promise<void>((res, rej) => {
|
||||
spawn(nextBin, spawnCommand, {
|
||||
@@ -248,7 +237,8 @@ export function nextExport(nextBin: string, config: ServerConfig) {
|
||||
}
|
||||
|
||||
export async function nextStart(nextBin: string, _buildFolder: string, config: ServerConfig) {
|
||||
const {spawnCommand, spawnEnv} = await createCommandAndPort(config, "start")
|
||||
const spawnEnv = getSpawnEnv(config)
|
||||
const spawnCommand = process.argv.slice(2).filter((arg) => !frameworkCommands.includes(arg))
|
||||
|
||||
return new Promise<void>((res, rej) => {
|
||||
spawn(nextBin, spawnCommand, {
|
||||
|
||||
@@ -19,6 +19,7 @@ export {
|
||||
RedirectError,
|
||||
OAuthError,
|
||||
}
|
||||
export * from "./utils/enhance-prisma"
|
||||
|
||||
export type BlitzProviderComponentType = <TProps = any>(
|
||||
component: ComponentType<TProps>,
|
||||
@@ -84,6 +85,5 @@ if (typeof window !== "undefined" && process.env.NODE_ENV === "development") {
|
||||
|
||||
export * from "./utils"
|
||||
export * from "./types"
|
||||
export * from "./utils/enhance-prisma"
|
||||
export * from "./utils/zod"
|
||||
export {reduceBlitzClientPlugins} from "./plugin"
|
||||
|
||||
@@ -1,5 +1,69 @@
|
||||
# @blitzjs/codemod
|
||||
|
||||
## 2.0.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [5a14306f7]
|
||||
- blitz@2.0.9
|
||||
- @blitzjs/generator@2.0.9
|
||||
|
||||
## 2.0.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [5e61a1681]
|
||||
- Updated dependencies [77555468f]
|
||||
- blitz@2.0.8
|
||||
- @blitzjs/generator@2.0.8
|
||||
|
||||
## 2.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [ee7bf87ec]
|
||||
- Updated dependencies [178c152b2]
|
||||
- blitz@2.0.7
|
||||
- @blitzjs/generator@2.0.7
|
||||
|
||||
## 2.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [76a2544f9]
|
||||
- blitz@2.0.6
|
||||
- @blitzjs/generator@2.0.6
|
||||
|
||||
## 2.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [6f54841b7]
|
||||
- blitz@2.0.5
|
||||
- @blitzjs/generator@2.0.5
|
||||
|
||||
## 2.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- f25aac08c: Added support to codemod upgrade-legacy for projects that have their pages folder nested in a src/ folder
|
||||
- Updated dependencies [dd604c767]
|
||||
- Updated dependencies [71b995003]
|
||||
- Updated dependencies [28a79040e]
|
||||
- blitz@2.0.4
|
||||
- @blitzjs/generator@2.0.4
|
||||
|
||||
## 2.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 956a739e8: codemod: provide correct path to new template paths
|
||||
- Updated dependencies [47722e045]
|
||||
- Updated dependencies [2f5c8a3a0]
|
||||
- Updated dependencies [595f400e9]
|
||||
- @blitzjs/generator@2.0.3
|
||||
- blitz@2.0.3
|
||||
|
||||
## 2.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/codemod",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.9",
|
||||
"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.2",
|
||||
"@blitzjs/generator": "2.0.9",
|
||||
"arg": "5.0.1",
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"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.0.2",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@types/jscodeshift": "0.11.2",
|
||||
"@types/node": "18.11.9",
|
||||
"ast-types": "0.14.2",
|
||||
|
||||
@@ -32,6 +32,12 @@ class ExpectedError extends Error {
|
||||
}
|
||||
}
|
||||
|
||||
const findPagesDirectory = () => {
|
||||
const srcPagesDir = path.join("src", "pages")
|
||||
const pagesDir = path.resolve("pages")
|
||||
return fs.existsSync(srcPagesDir) ? path.resolve(srcPagesDir) : pagesDir
|
||||
}
|
||||
|
||||
const isInternalBlitzMonorepoDevelopment = fs.existsSync(
|
||||
path.join(__dirname, "../../../blitz-next"),
|
||||
)
|
||||
@@ -46,7 +52,22 @@ const upgradeLegacy = async () => {
|
||||
if (blitzConfigFile === "") {
|
||||
throw new ExpectedError("Could not identify Legacy Blitz Config file")
|
||||
}
|
||||
const appDir = path.resolve("app")
|
||||
// Check if app directory exists in either app/ or src/app
|
||||
const appDir = fs.existsSync(path.resolve("app"))
|
||||
? path.resolve("app")
|
||||
: fs.existsSync(path.resolve("src"))
|
||||
? path.resolve(path.join("src", "app"))
|
||||
: ""
|
||||
try {
|
||||
// Throw Error if appDir empty
|
||||
if (appDir === "") {
|
||||
throw new ExpectedError(
|
||||
"Could not identify Legacy Blitz App directory in project (no app/ or src/ directory found)",
|
||||
)
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
let failedAt =
|
||||
fs.existsSync(path.resolve(".migration.json")) && fs.readJSONSync("./.migration.json").failedAt
|
||||
let collectedErrors: {message: string; step: number}[] = []
|
||||
@@ -536,10 +557,10 @@ const upgradeLegacy = async () => {
|
||||
isInternalBlitzMonorepoDevelopment ? "templates" : "dist/templates",
|
||||
)
|
||||
const blitzServer = fs
|
||||
.readFileSync(path.join(templatePath, "app", "app", "blitz-server.ts"))
|
||||
.readFileSync(path.join(templatePath, "app", "src", "app", "blitz-server.ts"))
|
||||
.toString()
|
||||
const blitzClient = fs
|
||||
.readFileSync(path.join(templatePath, "app", "app", "blitz-client.ts"))
|
||||
.readFileSync(path.join(templatePath, "app", "src", "app", "blitz-client.ts"))
|
||||
.toString()
|
||||
|
||||
const replaceTemplateValues = (input: string) => {
|
||||
@@ -584,7 +605,9 @@ const upgradeLegacy = async () => {
|
||||
j.Identifier,
|
||||
(node) => node.name === "cookiePrefix",
|
||||
)
|
||||
cookieIdentifierBlitzClient.get().parentPath.value.value.value = cookiePrefix
|
||||
if (cookieIdentifierBlitzClient.length) {
|
||||
cookieIdentifierBlitzClient.get().parentPath.value.value.value = cookiePrefix
|
||||
}
|
||||
|
||||
fs.writeFileSync(
|
||||
`${appDir}/blitz-client.${isTypescript ? "ts" : "js"}`,
|
||||
@@ -676,7 +699,7 @@ const upgradeLegacy = async () => {
|
||||
steps.push({
|
||||
name: "create pages/api/rpc directory and add [[...blitz]].ts wildecard API route",
|
||||
action: async () => {
|
||||
const pagesDir = path.resolve("pages/api/rpc")
|
||||
const pagesDir = path.resolve(`${findPagesDirectory()}/api/rpc`)
|
||||
const templatePath = path.join(
|
||||
require.resolve("@blitzjs/generator"),
|
||||
"..",
|
||||
@@ -684,7 +707,9 @@ const upgradeLegacy = async () => {
|
||||
isInternalBlitzMonorepoDevelopment ? "templates" : "dist/templates",
|
||||
)
|
||||
const rpcRoute = fs
|
||||
.readFileSync(path.join(templatePath, "app", "pages", "api", "rpc", "blitzrpcroute.ts"))
|
||||
.readFileSync(
|
||||
path.join(templatePath, "app", "src", "pages", "api", "rpc", "blitzrpcroute.ts"),
|
||||
)
|
||||
.toString()
|
||||
|
||||
if (!fs.existsSync(pagesDir)) {
|
||||
@@ -925,7 +950,7 @@ const upgradeLegacy = async () => {
|
||||
name: "convert useRouterQuery to useRouter",
|
||||
action: async () => {
|
||||
//First check ./pages
|
||||
const pagesDir = path.resolve("pages")
|
||||
const pagesDir = findPagesDirectory()
|
||||
getAllFiles(pagesDir, [], [], [".ts", ".tsx", ".js", ".jsx"]).forEach((file) => {
|
||||
try {
|
||||
const filepath = path.resolve(pagesDir, file)
|
||||
@@ -1057,7 +1082,7 @@ const upgradeLegacy = async () => {
|
||||
steps.push({
|
||||
name: "wrap App component with withBlitz HOC",
|
||||
action: async () => {
|
||||
const pagesDir = path.resolve("pages")
|
||||
const pagesDir = findPagesDirectory()
|
||||
|
||||
const program = getCollectionFromSource(
|
||||
path.join(pagesDir, `_app.${isTypescript ? "tsx" : "jsx"}`),
|
||||
@@ -1107,7 +1132,7 @@ const upgradeLegacy = async () => {
|
||||
steps.push({
|
||||
name: "update imports in the _document file",
|
||||
action: async () => {
|
||||
const pagesDir = path.resolve("pages")
|
||||
const pagesDir = findPagesDirectory()
|
||||
|
||||
if (fs.existsSync(path.join(pagesDir, `_document.${isTypescript ? "tsx" : "jsx"}`))) {
|
||||
const program = getCollectionFromSource(
|
||||
@@ -1187,7 +1212,7 @@ const upgradeLegacy = async () => {
|
||||
steps.push({
|
||||
name: "wrap getServerSideProps, getStaticProps and API handlers with gSSP, gSP, and api",
|
||||
action: async () => {
|
||||
const pagesDir = path.resolve("pages")
|
||||
const pagesDir = findPagesDirectory()
|
||||
getAllFiles(pagesDir, [], ["api"], [".ts", ".tsx", ".js", ".jsx"]).forEach((file) => {
|
||||
try {
|
||||
const program = getCollectionFromSource(file)
|
||||
@@ -1310,7 +1335,9 @@ const upgradeLegacy = async () => {
|
||||
steps.push({
|
||||
name: "check for usages of invokeWithMiddleware",
|
||||
action: async () => {
|
||||
getAllFiles(path.resolve("pages"), [], [], [".ts", ".tsx", ".js", ".jsx"]).forEach((file) => {
|
||||
const srcPagesDir = path.resolve(path.join("src/pages"))
|
||||
const pagesDir = fs.existsSync(srcPagesDir) ? srcPagesDir : path.resolve("pages")
|
||||
getAllFiles(pagesDir, [], [], [".ts", ".tsx", ".js", ".jsx"]).forEach((file) => {
|
||||
const program = getCollectionFromSource(file)
|
||||
try {
|
||||
const invokeWithMiddlewarePath = findCallExpression(program, "invokeWithMiddleware")
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @blitzjs/config
|
||||
|
||||
## 2.0.9
|
||||
|
||||
## 2.0.8
|
||||
|
||||
## 2.0.7
|
||||
|
||||
## 2.0.6
|
||||
|
||||
## 2.0.5
|
||||
|
||||
## 2.0.4
|
||||
|
||||
## 2.0.3
|
||||
|
||||
## 2.0.2
|
||||
|
||||
## 2.0.1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@blitzjs/config",
|
||||
"private": true,
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.9",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "5.42.1",
|
||||
|
||||
@@ -1,5 +1,28 @@
|
||||
# @blitzjs/generator
|
||||
|
||||
## 2.0.9
|
||||
|
||||
## 2.0.8
|
||||
|
||||
## 2.0.7
|
||||
|
||||
## 2.0.6
|
||||
|
||||
## 2.0.5
|
||||
|
||||
## 2.0.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 71b995003: fix: ajv dependency was not installed with blitz new
|
||||
|
||||
## 2.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 47722e045: Fix: search inside any subdirectory to inside `src|app` directories to find `blitz-server.ts` to use the `BlitzCliConfig` configurations.
|
||||
- 595f400e9: fix: add missing `prettier`, `pretty-quick` and other missing dev dependencies in the new app template
|
||||
|
||||
## 2.0.2
|
||||
|
||||
## 2.0.1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/generator",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.9",
|
||||
"homepage": "https://blitzjs.com/",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -54,7 +54,7 @@
|
||||
"zod": "3.20.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@juanm04/cpx": "2.0.1",
|
||||
"@types/babel__core": "7.1.19",
|
||||
"@types/diff": "5.0.2",
|
||||
|
||||
@@ -35,7 +35,7 @@ export const customTemplatesBlitzConfig = async (
|
||||
codemod = false,
|
||||
) => {
|
||||
const {globby} = await import("globby")
|
||||
const blitzServer = await globby(["{app,src}/**/blitz-server.{ts,js}"], {
|
||||
const blitzServer = await globby(["{app,src}/**/**/blitz-server.{ts,js}"], {
|
||||
cwd: getProjectRootSync(),
|
||||
})
|
||||
if (blitzServer.length === 0) {
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
"@prisma/client": "5.4.2",
|
||||
"blitz": "latest",
|
||||
"formik": "2.4.5",
|
||||
"next": "13.5.4",
|
||||
"next": "14.1.4",
|
||||
"prisma": "5.4.2",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
@@ -39,14 +39,28 @@
|
||||
"zod": "3.22.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "18.11.7",
|
||||
"@types/preview-email": "3.0.4",
|
||||
"@types/react": "18.0.23",
|
||||
"@types/react-dom": "18.0.7",
|
||||
"eslint": "8.26.0",
|
||||
"eslint-config-next": "13.0.0",
|
||||
"@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",
|
||||
"@types/node": "18.11.9",
|
||||
"@types/preview-email": "2.0.1",
|
||||
"@types/react": "18.0.25",
|
||||
"@typescript-eslint/eslint-plugin": "5.42.1",
|
||||
"@vitejs/plugin-react": "2.2.0",
|
||||
"ajv": "^7.0.0",
|
||||
"eslint": "8.27.0",
|
||||
"eslint-config-next": "12.3.1",
|
||||
"eslint-config-prettier": "8.5.0",
|
||||
"husky": "8.0.2",
|
||||
"jsdom": "20.0.3",
|
||||
"lint-staged": "13.0.3",
|
||||
"prettier": "^2.7.1",
|
||||
"prettier-plugin-prisma": "4.4.0",
|
||||
"pretty-quick": "3.1.3",
|
||||
"preview-email": "3.0.7",
|
||||
"typescript": "4.8.4"
|
||||
"typescript": "^4.8.4",
|
||||
"vite-tsconfig-paths": "3.6.0",
|
||||
"vitest": "0.25.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
"@blitzjs/rpc": "latest",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "latest",
|
||||
"next": "13.4.5",
|
||||
"next": "14.1.4",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
"@blitzjs/rpc": "latest",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "latest",
|
||||
"next": "13.4.5",
|
||||
"next": "14.1.4",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
@@ -45,6 +45,7 @@
|
||||
"@types/react": "18.0.25",
|
||||
"@typescript-eslint/eslint-plugin": "5.42.1",
|
||||
"@vitejs/plugin-react": "2.2.0",
|
||||
"ajv": "^7.0.0",
|
||||
"eslint": "8.27.0",
|
||||
"eslint-config-next": "12.3.1",
|
||||
"eslint-config-prettier": "8.5.0",
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"@typescript-eslint/parser": "5.9.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.2",
|
||||
"@blitzjs/config": "2.0.9",
|
||||
"@types/react": "18.0.25",
|
||||
"@types/react-dom": "17.0.14",
|
||||
"react": "18.2.0",
|
||||
|
||||
1945
pnpm-lock.yaml
generated
1945
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -24,6 +24,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2"
|
||||
"blitz": "2.0.9"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2"
|
||||
"blitz": "2.0.9"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0",
|
||||
"uuid": "^8.3.1"
|
||||
},
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -23,6 +23,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2"
|
||||
"blitz": "2.0.9"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2"
|
||||
"blitz": "2.0.9"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -22,6 +22,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2"
|
||||
"blitz": "2.0.9"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0",
|
||||
"uuid": "^8.3.1"
|
||||
},
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "2.0.2",
|
||||
"blitz": "2.0.9",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
Reference in New Issue
Block a user