Compare commits
80 Commits
@blitzjs/a
...
@blitzjs/n
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f7735d59a3 | ||
|
|
6d5f9efe14 | ||
|
|
b84c5bedbd | ||
|
|
f80cd3dba9 | ||
|
|
e5cd2c8622 | ||
|
|
86e8eb7c8c | ||
|
|
99541848b3 | ||
|
|
09e0c68db9 | ||
|
|
fb232d126e | ||
|
|
b97366c427 | ||
|
|
11eeebee67 | ||
|
|
c89cb943bb | ||
|
|
3bcbad1a91 | ||
|
|
98d04ed613 | ||
|
|
cee2dec179 | ||
|
|
aec1bb076b | ||
|
|
2c72af7175 | ||
|
|
465a5c0720 | ||
|
|
353af3fae6 | ||
|
|
3ddb57072b | ||
|
|
8477d44aa7 | ||
|
|
6802c67809 | ||
|
|
fe8c937d24 | ||
|
|
30fd613164 | ||
|
|
9a5ce2e8ea | ||
|
|
81290b478c | ||
|
|
19898a4886 | ||
|
|
6811eab1aa | ||
|
|
022392c123 | ||
|
|
e3522d65ef | ||
|
|
cb1600a821 | ||
|
|
e1bffdf3d6 | ||
|
|
8b01175b47 | ||
|
|
0f1beb55b7 | ||
|
|
82649f3415 | ||
|
|
231c2ff5ab | ||
|
|
47c6b62dcb | ||
|
|
cf393786c0 | ||
|
|
8d29b8afa9 | ||
|
|
f8bf8af28f | ||
|
|
8255172940 | ||
|
|
90f1741dac | ||
|
|
df3265b854 | ||
|
|
0ba2f4e77a | ||
|
|
da76acc90a | ||
|
|
c5572bec6e | ||
|
|
727734955a | ||
|
|
831a493ab6 | ||
|
|
b6b9a1c5a4 | ||
|
|
61888d1a30 | ||
|
|
7aef610d85 | ||
|
|
b266254247 | ||
|
|
67e00d9108 | ||
|
|
d25c965bc8 | ||
|
|
1bb3a65566 | ||
|
|
28b0ffeb5f | ||
|
|
c7ac86b857 | ||
|
|
5166e5e037 | ||
|
|
2533caf484 | ||
|
|
85a71ffef9 | ||
|
|
803f533a3d | ||
|
|
63ee9423a9 | ||
|
|
89446b3656 | ||
|
|
5a64f1c39c | ||
|
|
fa30de4599 | ||
|
|
3d004dc415 | ||
|
|
08fbede75e | ||
|
|
eda14fa8aa | ||
|
|
7e0e0f984c | ||
|
|
d814c2d2d8 | ||
|
|
29c2b029ac | ||
|
|
ed22706e5f | ||
|
|
3e8f04ed03 | ||
|
|
e82a79be50 | ||
|
|
b1fdb63470 | ||
|
|
38d945a3fb | ||
|
|
ac587b6ac3 | ||
|
|
c07a13eefb | ||
|
|
9f316d73f5 | ||
|
|
f84d77a425 |
@@ -3866,6 +3866,154 @@
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "maotora",
|
||||
"name": "Maotora ᕙ(⇀‸↼‶)ᕗ",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/5174884?v=4",
|
||||
"profile": "https://maotoramm.com",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "vitaliemiron",
|
||||
"name": "Vitalie",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/45145592?v=4",
|
||||
"profile": "https://github.com/vitaliemiron",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "nelsonmestevao",
|
||||
"name": "Nelson Estevão",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/19409687?v=4",
|
||||
"profile": "https://estevao.org",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "dbrxnds",
|
||||
"name": "David",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/32268383?v=4",
|
||||
"profile": "https://github.com/dbrxnds",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code",
|
||||
"test"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "gjmoed",
|
||||
"name": "G.J. Moed",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/4458993?v=4",
|
||||
"profile": "https://github.com/gjmoed",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "GHKEN",
|
||||
"name": "Tetsuya Fukuda",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/5304351?v=4",
|
||||
"profile": "https://ghken.com",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "nerixim",
|
||||
"name": "Nikita Kamaev",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/26106502?v=4",
|
||||
"profile": "https://github.com/nerixim",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "nikola-wd",
|
||||
"name": "Nikola Ivanov",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/11588823?v=4",
|
||||
"profile": "https://webredone.com/",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "jayu",
|
||||
"name": "Jakub Mazurek",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/11561585?v=4",
|
||||
"profile": "jayu.dev",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "maciej-ka",
|
||||
"name": "Maciej Kasprzyk",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/5403694?v=4",
|
||||
"profile": "https://github.com/maciej-ka",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "justinsmid",
|
||||
"name": "Justin Smid",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/34271675?v=4",
|
||||
"profile": "https://github.com/justinsmid",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "rodobre",
|
||||
"name": "rodobre",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/52138375?v=4",
|
||||
"profile": "https://github.com/rodobre",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Zamfi99",
|
||||
"name": "Zamfira Costin-Andrei",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/19189337?v=4",
|
||||
"profile": "https://github.com/Zamfi99",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "potikhanovsergey",
|
||||
"name": "Sergey",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/71494201?v=4",
|
||||
"profile": "https://github.com/potikhanovsergey",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "papsavas",
|
||||
"name": "Savvas Papageorgiadis",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/50584606?v=4",
|
||||
"profile": "https://github.com/papsavas",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
|
||||
6
.changeset/afraid-ligers-build.md
Normal file
6
.changeset/afraid-ligers-build.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Fix bug that did not allow `Page.authenicate = {role: "" }` to correctly work
|
||||
9
.changeset/big-turtles-tease.md
Normal file
9
.changeset/big-turtles-tease.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
"@blitzjs/next": patch
|
||||
"@blitzjs/rpc": patch
|
||||
"blitz": patch
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
(feat) upgrade tslog to v4.8.2
|
||||
6
.changeset/chatty-gifts-whisper.md
Normal file
6
.changeset/chatty-gifts-whisper.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/next": minor
|
||||
"@blitzjs/rpc": minor
|
||||
---
|
||||
|
||||
Add ability to format the error on the server before returning it to the client.
|
||||
6
.changeset/chatty-scissors-jump.md
Normal file
6
.changeset/chatty-scissors-jump.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/next": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
blitz-next: Fix `next/head` used in app directory warning
|
||||
5
.changeset/chilly-jeans-fix.md
Normal file
5
.changeset/chilly-jeans-fix.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
Update examples of generate all in docs to include one column in model.
|
||||
9
.changeset/clever-hornets-talk.md
Normal file
9
.changeset/clever-hornets-talk.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
"blitz": patch
|
||||
"@blitzjs/next": patch
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
Upgrade tslog to `4.9.0`.
|
||||
|
||||
This due a [tslog issue](https://github.com/fullstack-build/tslog/issues/227) that causes tslog to crash when attempting to log an error whose constructor expects more than one argument.
|
||||
6
.changeset/curvy-drinks-perform.md
Normal file
6
.changeset/curvy-drinks-perform.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
blitz-auth: Fix webpack from following next-auth
|
||||
6
.changeset/cyan-rings-play.md
Normal file
6
.changeset/cyan-rings-play.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/rpc": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Add helpful error message when RPC resolvers have the same path
|
||||
5
.changeset/few-elephants-approve.md
Normal file
5
.changeset/few-elephants-approve.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/rpc": patch
|
||||
---
|
||||
|
||||
Fix return type of `requestMiddlewares` in `RpcServerPlugin`
|
||||
8
.changeset/fifty-drinks-cry.md
Normal file
8
.changeset/fifty-drinks-cry.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
blitz-auth: Support for Prisma v5
|
||||
|
||||
Internal: Make `handle` a required paramter while updating the `session` modal.
|
||||
5
.changeset/fresh-camels-return.md
Normal file
5
.changeset/fresh-camels-return.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
---
|
||||
|
||||
Updated `useAuthenticatedBlitzContext` to now return `AuthenticatedCtx`
|
||||
5
.changeset/fresh-crews-chew.md
Normal file
5
.changeset/fresh-crews-chew.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/next": minor
|
||||
---
|
||||
|
||||
Fix the DYNAMIC_SERVER_USAGE error for Next.js 13.3.1+
|
||||
26
.changeset/good-oranges-pretend.md
Normal file
26
.changeset/good-oranges-pretend.md
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
"@blitzjs/rpc": patch
|
||||
---
|
||||
|
||||
Fixes enormous memory consumption of the dev server by changing the default import strategy to "require" instead of "import" which in webpack causes multiple chunks to be created for each import.
|
||||
|
||||
## Blitz Configuration
|
||||
|
||||
To configure this behaviour, you can add the following to your next.config.js:
|
||||
|
||||
```js
|
||||
/**
|
||||
* @type {import('@blitzjs/next').BlitzConfig}
|
||||
**/
|
||||
const config = {
|
||||
blitz: {
|
||||
resolversDynamicImport: true,
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
When `resolversDynamicImport` is set to `true`, the import strategy will be "import" instead of "require".
|
||||
|
||||
### On Vercel
|
||||
|
||||
If you are using Vercel, `resolversDynamicImport` will be set to `true` by default, since it is better for the separate chunks to be create for serverless lambdas.
|
||||
5
.changeset/green-years-behave.md
Normal file
5
.changeset/green-years-behave.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
Upgrade next, prisma and zod to latest versions in a newly created app
|
||||
6
.changeset/hot-knives-vanish.md
Normal file
6
.changeset/hot-knives-vanish.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Automatically authorize role with usage of `redirectAuthenticatedTo` in `useAuthenticatedBlitzContext` utility
|
||||
5
.changeset/large-hairs-battle.md
Normal file
5
.changeset/large-hairs-battle.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
Make Next.js version stick to 13.4.5 when generating a new app
|
||||
6
.changeset/little-cycles-hang.md
Normal file
6
.changeset/little-cycles-hang.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
- Removes language selection step from `blitz new` menu
|
||||
- Make `formik` the default/recommended form library
|
||||
10
.changeset/lucky-teachers-sleep.md
Normal file
10
.changeset/lucky-teachers-sleep.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
"@blitzjs/next": major
|
||||
"@blitzjs/rpc": patch
|
||||
"blitz": patch
|
||||
---
|
||||
⚠️ Breaking Change:
|
||||
Next.js version 13.5 or above is now required to use `@blitzjs/next`
|
||||
|
||||
Fix `Error: Cannot find module 'next/dist/shared/lib/router/utils/resolve-href'` by updating the location of next.js internal function.
|
||||
7
.changeset/many-fans-fetch.md
Normal file
7
.changeset/many-fans-fetch.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
"@blitzjs/recipe-chakra-ui": patch
|
||||
"@blitzjs/recipe-next-ui": patch
|
||||
"@blitzjs/recipe-tailwind": patch
|
||||
---
|
||||
|
||||
This change reflects the directory change from app/pages to src/pages for the receipts chakra-ui, next-ui, tailwind. It checks for which directories exists and is compatible with either versions.
|
||||
9
.changeset/modern-cups-cheat.md
Normal file
9
.changeset/modern-cups-cheat.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
"@blitzjs/next": patch
|
||||
"@blitzjs/rpc": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Next 14 Compatibility
|
||||
|
||||
13
.changeset/modern-insects-raise.md
Normal file
13
.changeset/modern-insects-raise.md
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Remove unintended dependency on next-auth by removing it from the core build of @blitzjs/auth
|
||||
|
||||
⚠️ Breaking Change for current users of `withNextAuthAdapter`
|
||||
|
||||
Update your import in `next.config.js` in the following way
|
||||
```diff
|
||||
-const { withNextAuthAdapter } = require("@blitzjs/auth")
|
||||
+const { withNextAuthAdapter } = require("@blitzjs/auth/next-auth")
|
||||
5
.changeset/moody-crews-travel.md
Normal file
5
.changeset/moody-crews-travel.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/auth": minor
|
||||
---
|
||||
|
||||
Stop exporting `useAuthenticatedBlitzContext` from `@blitzjs/auth` this must be imported from `app/blitz-server.ts` file in order to work correctly
|
||||
9
.changeset/moody-pandas-do.md
Normal file
9
.changeset/moody-pandas-do.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
"@blitzjs/rpc": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
- Introduce Blitz RPC's logging system to the `invoke` function which is the recommended way to call resolvers in nextjs `app` directory's react server components.
|
||||
|
||||
- This refactor also removes the re-introduced dependency between `blitz-auth` and `blitz-rpc`, allowing independent usage of `blitz-rpc`
|
||||
5
.changeset/neat-gorillas-switch.md
Normal file
5
.changeset/neat-gorillas-switch.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/recipe-tailwind": patch
|
||||
---
|
||||
|
||||
Change tailwind recipe to install dependencies as devDependencies
|
||||
6
.changeset/nervous-shrimps-serve.md
Normal file
6
.changeset/nervous-shrimps-serve.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/rpc": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Fix for tslog error `TypeError: Cannot read properties of undefined (reading 'map')` while using custom errors.
|
||||
5
.changeset/nice-boxes-travel.md
Normal file
5
.changeset/nice-boxes-travel.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/rpc": patch
|
||||
---
|
||||
|
||||
Fix return type of the `invoke` method from returning type function to return the type of resolved data
|
||||
6
.changeset/nice-cats-lay.md
Normal file
6
.changeset/nice-cats-lay.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/rpc": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Allow `.tsx` & `.jsx` file extensions to be used for resolvers
|
||||
5
.changeset/nine-bags-rhyme.md
Normal file
5
.changeset/nine-bags-rhyme.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
fix: add missing key prop to LabelSelectField
|
||||
9
.changeset/ninety-pots-learn.md
Normal file
9
.changeset/ninety-pots-learn.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
"@blitzjs/next": patch
|
||||
"@blitzjs/rpc": patch
|
||||
"blitz": patch
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
Update the version of next in the new template from 13.2 to 13.3.0
|
||||
5
.changeset/plenty-gifts-provide.md
Normal file
5
.changeset/plenty-gifts-provide.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
The issue is that the version provided, "13.2", is not a valid SemVer version. A valid SemVer version must have three components: major, minor, and patch (e.g., "13.2.0").
|
||||
5
.changeset/poor-bikes-wait.md
Normal file
5
.changeset/poor-bikes-wait.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
new blitz app starter
|
||||
5
.changeset/poor-crabs-drum.md
Normal file
5
.changeset/poor-crabs-drum.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
blitz-rpc: Cleanup Event Listeners - Fix potential memory leak by cleaning up any residual event listeners set by blitz.
|
||||
@@ -53,8 +53,10 @@
|
||||
"changesets": [
|
||||
"afraid-dancers-juggle",
|
||||
"afraid-ears-repair",
|
||||
"afraid-ligers-build",
|
||||
"big-boats-lay",
|
||||
"big-phones-bow",
|
||||
"big-turtles-tease",
|
||||
"blue-flowers-peel",
|
||||
"blue-pigs-tan",
|
||||
"brave-zebras-deny",
|
||||
@@ -70,12 +72,16 @@
|
||||
"calm-papayas-protect",
|
||||
"calm-tomatoes-drive",
|
||||
"chatty-fireants-leave",
|
||||
"chatty-gifts-whisper",
|
||||
"chatty-scissors-jump",
|
||||
"chilled-carrots-own",
|
||||
"chilly-candles-care",
|
||||
"chilly-jeans-fix",
|
||||
"chilly-nails-nail",
|
||||
"clean-hats-pump",
|
||||
"clean-hounds-laugh",
|
||||
"clean-walls-wink",
|
||||
"clever-hornets-talk",
|
||||
"clever-radios-lie",
|
||||
"cool-doors-invent",
|
||||
"cool-horses-check",
|
||||
@@ -84,8 +90,10 @@
|
||||
"curly-rules-speak",
|
||||
"curly-seas-serve",
|
||||
"curvy-days-attend",
|
||||
"curvy-drinks-perform",
|
||||
"cyan-bulldogs-heal",
|
||||
"cyan-cars-greet",
|
||||
"cyan-rings-play",
|
||||
"dirty-monkeys-greet",
|
||||
"dirty-planets-chew",
|
||||
"dull-rings-arrive",
|
||||
@@ -108,8 +116,10 @@
|
||||
"fast-toys-wash",
|
||||
"fast-trainers-kneel",
|
||||
"few-dogs-fetch",
|
||||
"few-elephants-approve",
|
||||
"few-hounds-worry",
|
||||
"few-shrimps-leave",
|
||||
"fifty-drinks-cry",
|
||||
"flat-bees-approve",
|
||||
"fluffy-coats-flow",
|
||||
"fluffy-mangos-begin",
|
||||
@@ -119,6 +129,8 @@
|
||||
"four-meals-fry",
|
||||
"four-radios-tickle",
|
||||
"four-sheep-judge",
|
||||
"fresh-camels-return",
|
||||
"fresh-crews-chew",
|
||||
"funny-cups-pay",
|
||||
"fuzzy-bees-warn",
|
||||
"fuzzy-dots-cross",
|
||||
@@ -131,6 +143,7 @@
|
||||
"gold-horses-punch",
|
||||
"good-apes-drum",
|
||||
"good-insects-wink",
|
||||
"good-oranges-pretend",
|
||||
"gorgeous-birds-warn",
|
||||
"gorgeous-buses-scream",
|
||||
"gorgeous-games-obey",
|
||||
@@ -139,6 +152,7 @@
|
||||
"great-terms-rescue",
|
||||
"green-papayas-do",
|
||||
"green-pillows-hammer",
|
||||
"green-years-behave",
|
||||
"happy-bees-lick",
|
||||
"happy-hotels-visit",
|
||||
"happy-paws-join",
|
||||
@@ -152,6 +166,7 @@
|
||||
"honest-comics-vanish",
|
||||
"hot-cups-rhyme",
|
||||
"hot-drinks-approve",
|
||||
"hot-knives-vanish",
|
||||
"hungry-baboons-swim",
|
||||
"hungry-pens-collect",
|
||||
"itchy-cups-double",
|
||||
@@ -160,6 +175,7 @@
|
||||
"khaki-ducks-cheer",
|
||||
"khaki-pens-rest",
|
||||
"kind-walls-suffer",
|
||||
"large-hairs-battle",
|
||||
"late-steaks-give",
|
||||
"lazy-maps-sort",
|
||||
"lemon-games-press",
|
||||
@@ -168,6 +184,7 @@
|
||||
"lemon-teachers-jam",
|
||||
"light-donkeys-double",
|
||||
"light-squids-draw",
|
||||
"little-cycles-hang",
|
||||
"little-pears-ring",
|
||||
"long-bees-hope",
|
||||
"long-dancers-jog",
|
||||
@@ -177,26 +194,38 @@
|
||||
"lovely-colts-share",
|
||||
"lucky-cows-try",
|
||||
"lucky-months-guess",
|
||||
"lucky-teachers-sleep",
|
||||
"lucky-years-turn",
|
||||
"many-fans-fetch",
|
||||
"mean-ears-speak",
|
||||
"mean-gorillas-reply",
|
||||
"modern-cameras-pull",
|
||||
"modern-cups-cheat",
|
||||
"modern-games-dream",
|
||||
"modern-insects-raise",
|
||||
"modern-ligers-behave",
|
||||
"moody-bags-walk",
|
||||
"moody-crews-travel",
|
||||
"moody-pandas-do",
|
||||
"moody-spoons-rhyme",
|
||||
"moody-squids-cheer",
|
||||
"nasty-suns-wash",
|
||||
"neat-gorillas-switch",
|
||||
"nervous-beds-travel",
|
||||
"nervous-dolls-rule",
|
||||
"nervous-shrimps-serve",
|
||||
"new-coats-turn",
|
||||
"new-olives-protect",
|
||||
"nice-boxes-travel",
|
||||
"nice-cats-lay",
|
||||
"nice-deers-dream",
|
||||
"nice-starfishes-live",
|
||||
"nine-bags-rhyme",
|
||||
"nine-birds-confess",
|
||||
"nine-onions-admire",
|
||||
"ninety-lies-press",
|
||||
"ninety-pets-heal",
|
||||
"ninety-pots-learn",
|
||||
"ninety-rice-tickle",
|
||||
"odd-bears-run",
|
||||
"olive-bees-buy",
|
||||
@@ -210,23 +239,29 @@
|
||||
"perfect-eyes-repeat",
|
||||
"perfect-trains-double",
|
||||
"plenty-bottles-swim",
|
||||
"plenty-gifts-provide",
|
||||
"plenty-kiwis-greet",
|
||||
"polite-lizards-love",
|
||||
"poor-bikes-wait",
|
||||
"poor-crabs-drum",
|
||||
"poor-peas-lick",
|
||||
"poor-penguins-look",
|
||||
"poor-shrimps-think",
|
||||
"poor-walls-relax",
|
||||
"popular-teachers-pay",
|
||||
"pretty-games-march",
|
||||
"pretty-snakes-search",
|
||||
"purple-donkeys-smash",
|
||||
"purple-jars-begin",
|
||||
"purple-singers-greet",
|
||||
"quick-crews-occur",
|
||||
"quick-cycles-confess",
|
||||
"quick-dots-fetch",
|
||||
"quiet-feet-travel",
|
||||
"quiet-pans-hunt",
|
||||
"quiet-sloths-rule",
|
||||
"rare-crews-sleep",
|
||||
"rare-squids-brake",
|
||||
"red-badgers-retire",
|
||||
"red-gorillas-marry",
|
||||
"rich-chairs-invent",
|
||||
@@ -235,6 +270,7 @@
|
||||
"rotten-rocks-remember",
|
||||
"rude-trainers-visit",
|
||||
"serious-mugs-leave",
|
||||
"shaggy-boxes-exercise",
|
||||
"shaggy-carpets-brake",
|
||||
"sharp-falcons-begin",
|
||||
"sharp-olives-sip",
|
||||
@@ -247,11 +283,13 @@
|
||||
"silly-peas-work",
|
||||
"silly-shoes-agree",
|
||||
"six-apricots-kick",
|
||||
"sixty-rockets-count",
|
||||
"slimy-humans-impress",
|
||||
"slimy-needles-taste",
|
||||
"slow-impalas-tap",
|
||||
"slow-walls-camp",
|
||||
"slow-walls-poke",
|
||||
"small-monkeys-battle",
|
||||
"small-socks-confess",
|
||||
"smooth-planets-admire",
|
||||
"smooth-rice-clap",
|
||||
@@ -281,6 +319,7 @@
|
||||
"tall-radios-clean",
|
||||
"tame-keys-reply",
|
||||
"tame-pumpkins-nail",
|
||||
"tame-rocks-unite",
|
||||
"tasty-maps-fetch",
|
||||
"tasty-news-collect",
|
||||
"tasty-squids-sin",
|
||||
@@ -318,7 +357,9 @@
|
||||
"wicked-rings-walk",
|
||||
"wise-eels-visit",
|
||||
"wise-frogs-give",
|
||||
"wise-lies-relate",
|
||||
"wise-rabbits-complain",
|
||||
"yellow-numbers-serve",
|
||||
"young-birds-talk"
|
||||
]
|
||||
}
|
||||
|
||||
5
.changeset/pretty-snakes-search.md
Normal file
5
.changeset/pretty-snakes-search.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/recipe-next-ui": patch
|
||||
---
|
||||
|
||||
Add `framer-motion` as a dependency of `next-ui`
|
||||
5
.changeset/quick-crews-occur.md
Normal file
5
.changeset/quick-crews-occur.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Remove rouge `console.log` during start
|
||||
5
.changeset/rare-squids-brake.md
Normal file
5
.changeset/rare-squids-brake.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/rpc": minor
|
||||
---
|
||||
|
||||
expose `ctx` to `rpcHandler` error callbacks in [[...blitz]].ts files
|
||||
9
.changeset/shaggy-boxes-exercise.md
Normal file
9
.changeset/shaggy-boxes-exercise.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
"@blitzjs/next": patch
|
||||
"blitz": patch
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
- Updates `ts-log` peer dependency to `4.9.0`
|
||||
- Removes `javascript` from `blitz new` menu
|
||||
- Hot Fix the `Update Schema` when using blitz generator
|
||||
70
.changeset/sixty-rockets-count.md
Normal file
70
.changeset/sixty-rockets-count.md
Normal file
@@ -0,0 +1,70 @@
|
||||
---
|
||||
"@blitzjs/rpc": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
### Now we can configure Blitz RPC in the following way,
|
||||
|
||||
In your `[[...blitz]].ts` api file you can see the following settings
|
||||
|
||||
```ts
|
||||
logging?: {
|
||||
/**
|
||||
* allowList Represents the list of routes for which logging should be enabled
|
||||
* If whiteList is defined then only those routes will be logged
|
||||
*/
|
||||
allowList?: string[]
|
||||
/**
|
||||
* blockList Represents the list of routes for which logging should be disabled
|
||||
* If blockList is defined then all routes except those will be logged
|
||||
*/
|
||||
blockList?: string[]
|
||||
/**
|
||||
* verbose Represents the flag to enable/disable logging
|
||||
* If verbose is true then Blitz RPC will log the input and output of each resolver
|
||||
*/
|
||||
verbose?: boolean
|
||||
/**
|
||||
* disablelevel Represents the flag to enable/disable logging for a particular level
|
||||
*/
|
||||
disablelevel?: "debug" | "info"
|
||||
}
|
||||
```
|
||||
|
||||
```ts
|
||||
import { rpcHandler } from "@blitzjs/rpc"
|
||||
import { api } from "src/blitz-server"
|
||||
|
||||
export default api(
|
||||
rpcHandler({
|
||||
onError: console.log,
|
||||
formatError: (error) => {
|
||||
error.message = `FormatError handler: ${error.message}`
|
||||
return error
|
||||
},
|
||||
logging: {
|
||||
...
|
||||
}
|
||||
})
|
||||
)
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```ts
|
||||
export default api(
|
||||
rpcHandler({
|
||||
onError: console.log,
|
||||
formatError: (error) => {
|
||||
error.message = `FormatError handler: ${error.message}`
|
||||
return error
|
||||
},
|
||||
logging: {
|
||||
verbose: true,
|
||||
blockList: ["getCurrentUser", ...], //just write the resolver name [which is the resolver file name]
|
||||
},
|
||||
})
|
||||
)
|
||||
```
|
||||
|
||||
This is enable verbose blitz rpc logging for all resolvers except the resolvers `getCurrentUser` and others mentioned in the `blockList`
|
||||
6
.changeset/small-monkeys-battle.md
Normal file
6
.changeset/small-monkeys-battle.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Fix Next-Auth integration: `Unable to use next-auth with provider: Error [ERR_PACKAGE_PATH_NOT_EXPORTED]`
|
||||
5
.changeset/tame-rocks-unite.md
Normal file
5
.changeset/tame-rocks-unite.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Fix log formatting to not show the path of blitz rpc
|
||||
5
.changeset/wise-lies-relate.md
Normal file
5
.changeset/wise-lies-relate.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/auth": patch
|
||||
---
|
||||
|
||||
Fix: Add missing entry to expose next-auth adapter in Blitz Auth
|
||||
5
.changeset/yellow-numbers-serve.md
Normal file
5
.changeset/yellow-numbers-serve.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/recipe-tailwind": minor
|
||||
---
|
||||
|
||||
support both directory style in tailwind recipe
|
||||
43
.github/workflows/main.yml
vendored
43
.github/workflows/main.yml
vendored
@@ -7,8 +7,8 @@ on:
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
|
||||
env:
|
||||
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
||||
|
||||
jobs:
|
||||
@@ -17,13 +17,13 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: pnpm/action-setup@646cdf48217256a3d0b80361c5a50727664284f2
|
||||
- uses: pnpm/action-setup@v2.2.4
|
||||
with:
|
||||
version: 7.11.0
|
||||
version: 8.6.5
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: 16
|
||||
node-version: 18
|
||||
cache: "pnpm"
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
@@ -38,13 +38,13 @@ jobs:
|
||||
name: Build
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: pnpm/action-setup@646cdf48217256a3d0b80361c5a50727664284f2
|
||||
- uses: pnpm/action-setup@v2.2.4
|
||||
with:
|
||||
version: 7.11.0
|
||||
version: 8.6.5
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: 16
|
||||
node-version: 18
|
||||
cache: "pnpm"
|
||||
- run: pnpm install --frozen-lockfile
|
||||
- name: Build
|
||||
@@ -62,20 +62,20 @@ jobs:
|
||||
- windows-latest
|
||||
fail-fast: false
|
||||
env:
|
||||
NODE_VERSION: 16
|
||||
NODE_VERSION: 18
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup PNPM
|
||||
uses: pnpm/action-setup@646cdf48217256a3d0b80361c5a50727664284f2
|
||||
uses: pnpm/action-setup@v2.2.4
|
||||
with:
|
||||
version: 7.11.0
|
||||
version: 8.6.5
|
||||
|
||||
- name: Setup node@16
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: 16
|
||||
node-version: 18
|
||||
cache: "pnpm"
|
||||
|
||||
- name: Install dependencies
|
||||
@@ -111,7 +111,7 @@ jobs:
|
||||
echo "folders=$folders" >> $GITHUB_OUTPUT
|
||||
|
||||
Integration-Tests:
|
||||
name: "Integration Test: ${{matrix.folder}} @ ${{ matrix.os }} "
|
||||
name: "Integration Test: ${{matrix.folder}} @ ${{ matrix.os }}"
|
||||
needs: [find-integration-tests]
|
||||
strategy:
|
||||
matrix:
|
||||
@@ -124,32 +124,39 @@ jobs:
|
||||
steps:
|
||||
- run: echo ${{matrix.folder}}
|
||||
- name: Checkout
|
||||
if: matrix.folder != 'next-13-app-dir' || matrix.os != 'windows-latest'
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup PNPM
|
||||
uses: pnpm/action-setup@646cdf48217256a3d0b80361c5a50727664284f2
|
||||
if: matrix.folder != 'next-13-app-dir' || matrix.os != 'windows-latest'
|
||||
uses: pnpm/action-setup@v2.2.4
|
||||
with:
|
||||
version: 7.11.0
|
||||
version: 8.6.5
|
||||
|
||||
- name: Setup node@${{ matrix.NODE_VERSION }}
|
||||
- name: Setup node@18
|
||||
if: matrix.folder != 'next-13-app-dir' || matrix.os != 'windows-latest'
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: ${{ matrix.NODE_VERSION }}
|
||||
node-version: 18
|
||||
cache: "pnpm"
|
||||
|
||||
- name: Install dependencies
|
||||
if: matrix.folder != 'next-13-app-dir' || matrix.os != 'windows-latest'
|
||||
run: pnpm install --frozen-lockfile
|
||||
shell: bash
|
||||
|
||||
- name: Install playwright
|
||||
if: matrix.folder != 'next-13-app-dir' || matrix.os != 'windows-latest'
|
||||
run: |
|
||||
pnpx playwright@1.28.0 install --with-deps
|
||||
pnpx playwright@1.28.0 install --with-deps
|
||||
shell: bash
|
||||
|
||||
- name: Build
|
||||
if: matrix.folder != 'next-13-app-dir' || matrix.os != 'windows-latest'
|
||||
run: pnpm build
|
||||
shell: bash
|
||||
|
||||
- name: Test Packages
|
||||
if: matrix.folder != 'next-13-app-dir' || matrix.os != 'windows-latest'
|
||||
run: pnpm test -- --filter=./integration-tests/${{matrix.folder}}
|
||||
shell: bash
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
pnpm manypkg check
|
||||
pnpm lint
|
||||
# pnpm lint
|
||||
pnpm pretty-quick --staged
|
||||
|
||||
1
.npmrc
1
.npmrc
@@ -1,4 +1,5 @@
|
||||
save-exact=true
|
||||
dedupe-peer-dependents=true
|
||||
strict-peer-dependencies=false
|
||||
|
||||
public-hoist-pattern[]=secure-password
|
||||
|
||||
28
README.md
28
README.md
@@ -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-408-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-423-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">
|
||||
@@ -94,6 +94,11 @@ Your financial contributions help ensure Blitz continues to be developed and mai
|
||||
<td><a aria-label="Boostry" href="https://boostry.co.jp/?utm_source=BlitzJS&utm_medium=sponsorship&utm_campaign=BlitzJS_Sponsorship_2021">
|
||||
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/main/assets/boostry.svg" width="200px">
|
||||
</a></td>
|
||||
<td>
|
||||
<a aria-label="Byteflow" href="https://byteflow.app/?ref=blitzjs">
|
||||
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/main/assets/byteflow.png" width="70px">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -121,9 +126,11 @@ Your financial contributions help ensure Blitz continues to be developed and mai
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<a aria-label="Flightcontrol" href="https://www.flightcontrol.dev?ref=blitzjs">
|
||||
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/main/assets/flightcontrol.png" width="400px">
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -721,6 +728,25 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/jeliasson"><img src="https://avatars.githubusercontent.com/u/865493?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Johan Eliasson</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=jeliasson" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/jafarlihi"><img src="https://avatars.githubusercontent.com/u/43515211?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hikmat Jafarli</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=jafarlihi" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=jafarlihi" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://maotoramm.com"><img src="https://avatars.githubusercontent.com/u/5174884?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Maotora ᕙ(⇀‸↼‶)ᕗ</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=maotora" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=maotora" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/vitaliemiron"><img src="https://avatars.githubusercontent.com/u/45145592?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vitalie</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=vitaliemiron" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=vitaliemiron" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://estevao.org"><img src="https://avatars.githubusercontent.com/u/19409687?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nelson Estevão</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=nelsonmestevao" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=nelsonmestevao" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/dbrxnds"><img src="https://avatars.githubusercontent.com/u/32268383?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=dbrxnds" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=dbrxnds" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=dbrxnds" title="Tests">⚠️</a></td>
|
||||
<td align="center"><a href="https://github.com/gjmoed"><img src="https://avatars.githubusercontent.com/u/4458993?v=4?s=100" width="100px;" alt=""/><br /><sub><b>G.J. Moed</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=gjmoed" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=gjmoed" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://ghken.com"><img src="https://avatars.githubusercontent.com/u/5304351?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tetsuya Fukuda</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=GHKEN" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=GHKEN" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/nerixim"><img src="https://avatars.githubusercontent.com/u/26106502?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nikita Kamaev</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=nerixim" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://webredone.com/"><img src="https://avatars.githubusercontent.com/u/11588823?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nikola Ivanov</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=nikola-wd" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="jayu.dev"><img src="https://avatars.githubusercontent.com/u/11561585?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jakub Mazurek</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=jayu" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=jayu" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/maciej-ka"><img src="https://avatars.githubusercontent.com/u/5403694?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Maciej Kasprzyk</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=maciej-ka" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=maciej-ka" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/justinsmid"><img src="https://avatars.githubusercontent.com/u/34271675?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Justin Smid</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=justinsmid" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=justinsmid" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/rodobre"><img src="https://avatars.githubusercontent.com/u/52138375?v=4?s=100" width="100px;" alt=""/><br /><sub><b>rodobre</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=rodobre" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=rodobre" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<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>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
@@ -1,5 +1,167 @@
|
||||
# next-blitz-auth
|
||||
|
||||
## 0.1.1-beta.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [86e8eb7c8]
|
||||
- Updated dependencies [b84c5bedb]
|
||||
- Updated dependencies [e5cd2c862]
|
||||
- @blitzjs/rpc@2.0.0-beta.37
|
||||
- blitz@2.0.0-beta.37
|
||||
- @blitzjs/auth@2.0.0-beta.37
|
||||
- @blitzjs/next@2.0.0-beta.37
|
||||
- @blitzjs/config@2.0.0-beta.37
|
||||
|
||||
## 0.1.1-beta.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [09e0c68db]
|
||||
- @blitzjs/auth@2.0.0-beta.36
|
||||
- blitz@2.0.0-beta.36
|
||||
- @blitzjs/rpc@2.0.0-beta.36
|
||||
- @blitzjs/next@2.0.0-beta.36
|
||||
- @blitzjs/config@2.0.0-beta.36
|
||||
|
||||
## 0.1.1-beta.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cee2dec17]
|
||||
- Updated dependencies [aec1bb076]
|
||||
- Updated dependencies [b97366c42]
|
||||
- Updated dependencies [3bcbad1a9]
|
||||
- @blitzjs/auth@2.0.0-beta.35
|
||||
- blitz@2.0.0-beta.35
|
||||
- @blitzjs/next@2.0.0-beta.35
|
||||
- @blitzjs/rpc@2.0.0-beta.35
|
||||
- @blitzjs/config@2.0.0-beta.35
|
||||
|
||||
## 0.1.1-beta.10
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [30fd61316]
|
||||
- Updated dependencies [3ddb57072]
|
||||
- Updated dependencies [fe8c937d2]
|
||||
- blitz@2.0.0-beta.34
|
||||
- @blitzjs/auth@2.0.0-beta.34
|
||||
- @blitzjs/next@2.0.0-beta.34
|
||||
- @blitzjs/rpc@2.0.0-beta.34
|
||||
- @blitzjs/config@2.0.0-beta.34
|
||||
|
||||
## 0.1.1-beta.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [19898a488]
|
||||
- Updated dependencies [6811eab1a]
|
||||
- Updated dependencies [022392c12]
|
||||
- @blitzjs/rpc@2.0.0-beta.33
|
||||
- blitz@2.0.0-beta.33
|
||||
- @blitzjs/next@2.0.0-beta.33
|
||||
- @blitzjs/auth@2.0.0-beta.33
|
||||
- @blitzjs/config@2.0.0-beta.33
|
||||
|
||||
## 0.1.1-beta.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [82649f341]
|
||||
- Updated dependencies [8b01175b4]
|
||||
- blitz@2.0.0-beta.32
|
||||
- @blitzjs/next@2.0.0-beta.32
|
||||
- @blitzjs/auth@2.0.0-beta.32
|
||||
- @blitzjs/rpc@2.0.0-beta.32
|
||||
- @blitzjs/config@2.0.0-beta.32
|
||||
|
||||
## 0.1.1-beta.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [90f1741da]
|
||||
- Updated dependencies [df3265b85]
|
||||
- @blitzjs/auth@2.0.0-beta.31
|
||||
- blitz@2.0.0-beta.31
|
||||
- @blitzjs/rpc@2.0.0-beta.31
|
||||
- @blitzjs/next@2.0.0-beta.31
|
||||
- @blitzjs/config@2.0.0-beta.31
|
||||
|
||||
## 0.1.1-beta.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [c5572bec6]
|
||||
- Updated dependencies [727734955]
|
||||
- @blitzjs/auth@2.0.0-beta.30
|
||||
- blitz@2.0.0-beta.30
|
||||
- @blitzjs/rpc@2.0.0-beta.30
|
||||
- @blitzjs/next@2.0.0-beta.30
|
||||
- @blitzjs/config@2.0.0-beta.30
|
||||
|
||||
## 0.1.1-beta.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [b6b9a1c5a]
|
||||
- Updated dependencies [61888d1a3]
|
||||
- @blitzjs/auth@2.0.0-beta.29
|
||||
- blitz@2.0.0-beta.29
|
||||
- @blitzjs/rpc@2.0.0-beta.29
|
||||
- @blitzjs/next@2.0.0-beta.29
|
||||
- @blitzjs/config@2.0.0-beta.29
|
||||
|
||||
## 0.1.1-beta.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [5166e5e03]
|
||||
- Updated dependencies [2533caf48]
|
||||
- Updated dependencies [c7ac86b85]
|
||||
- Updated dependencies [1bb3a6556]
|
||||
- @blitzjs/auth@2.0.0-beta.28
|
||||
- @blitzjs/next@2.0.0-beta.28
|
||||
- @blitzjs/rpc@2.0.0-beta.28
|
||||
- blitz@2.0.0-beta.28
|
||||
- @blitzjs/config@2.0.0-beta.28
|
||||
|
||||
## 0.1.1-beta.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [eda14fa8a]
|
||||
- Updated dependencies [3d004dc41]
|
||||
- Updated dependencies [29c2b029a]
|
||||
- @blitzjs/next@2.0.0-beta.27
|
||||
- @blitzjs/rpc@2.0.0-beta.27
|
||||
- @blitzjs/auth@2.0.0-beta.27
|
||||
- blitz@2.0.0-beta.27
|
||||
- @blitzjs/config@2.0.0-beta.27
|
||||
|
||||
## 0.1.1-beta.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [e82a79be5]
|
||||
- Updated dependencies [38d945a3f]
|
||||
- @blitzjs/auth@2.0.0-beta.26
|
||||
- @blitzjs/next@2.0.0-beta.26
|
||||
- @blitzjs/rpc@2.0.0-beta.26
|
||||
- blitz@2.0.0-beta.26
|
||||
- @blitzjs/config@2.0.0-beta.26
|
||||
|
||||
## 0.1.1-beta.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [f84d77a42]
|
||||
- @blitzjs/rpc@2.0.0-beta.25
|
||||
- @blitzjs/next@2.0.0-beta.25
|
||||
- @blitzjs/auth@2.0.0-beta.25
|
||||
- @blitzjs/config@2.0.0-beta.25
|
||||
- blitz@2.0.0-beta.25
|
||||
|
||||
## 0.1.1-beta.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
const {withBlitz} = require("@blitzjs/next")
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig = {
|
||||
experimental: {
|
||||
appDir: true,
|
||||
serverComponentsExternalPackages: ["@prisma/client", "prisma"],
|
||||
},
|
||||
}
|
||||
const nextConfig = {}
|
||||
|
||||
module.exports = withBlitz(nextConfig)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "next-blitz-auth",
|
||||
"version": "0.1.1-beta.0",
|
||||
"version": "0.1.1-beta.13",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"blitz:dev": "next dev",
|
||||
@@ -8,18 +8,21 @@
|
||||
"blitz:start": "next start",
|
||||
"lint": "next lint"
|
||||
},
|
||||
"prisma": {
|
||||
"schema": "prisma/schema.prisma"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "workspace:*",
|
||||
"@blitzjs/config": "workspace:*",
|
||||
"@blitzjs/next": "workspace:*",
|
||||
"@blitzjs/rpc": "workspace:*",
|
||||
"@blitzjs/auth": "2.0.0-beta.37",
|
||||
"@blitzjs/config": "2.0.0-beta.37",
|
||||
"@blitzjs/next": "2.0.0-beta.37",
|
||||
"@blitzjs/rpc": "2.0.0-beta.37",
|
||||
"@hookform/error-message": "2.0.0",
|
||||
"@hookform/resolvers": "2.9.10",
|
||||
"@prisma/client": "^4.5.0",
|
||||
"@tanstack/react-query": "4.0.10",
|
||||
"blitz": "workspace:*",
|
||||
"blitz": "2.0.0-beta.37",
|
||||
"flatted": "3.2.7",
|
||||
"next": "13.2.4",
|
||||
"next": "14.0.4",
|
||||
"prisma": "^4.5.0",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
|
||||
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
import {useAuthenticatedBlitzContext} from "@blitzjs/auth"
|
||||
import {useAuthenticatedBlitzContext} from "../../blitz-server"
|
||||
|
||||
export default async function RootLayout({children}: {children: React.ReactNode}) {
|
||||
await useAuthenticatedBlitzContext({
|
||||
@@ -1,6 +1,6 @@
|
||||
"use client"
|
||||
|
||||
import {LoginForm} from "../../../src/auth/components/LoginForm"
|
||||
import {LoginForm} from "../../../auth/components/LoginForm"
|
||||
import {useRouter} from "next/navigation"
|
||||
import {useSearchParams} from "next/navigation"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"use client"
|
||||
|
||||
import {useRouter} from "next/navigation"
|
||||
import SignupForm from "../../../src/auth/components/SignupForm"
|
||||
import SignupForm from "../../../auth/components/SignupForm"
|
||||
|
||||
const SignUp = () => {
|
||||
const router = useRouter()
|
||||
@@ -1,5 +1,5 @@
|
||||
import "src/styles/globals.css"
|
||||
import {BlitzProvider} from "../src/blitz-client"
|
||||
import {BlitzProvider} from "../blitz-client"
|
||||
import styles from "src/styles/Home.module.css"
|
||||
|
||||
export default function RootLayout({children}: {children: React.ReactNode}) {
|
||||
@@ -1,15 +1,14 @@
|
||||
import Link from "next/link"
|
||||
import styles from "src/styles/Home.module.css"
|
||||
import Test from "./react-query"
|
||||
import {invoke, useAuthenticatedBlitzContext} from "../src/blitz-server"
|
||||
import getCurrentUser from "../src/users/queries/getCurrentUser"
|
||||
import {invoke, useAuthenticatedBlitzContext} from "../blitz-server"
|
||||
import getCurrentUser from "../users/queries/getCurrentUser"
|
||||
|
||||
export default async function Home() {
|
||||
await useAuthenticatedBlitzContext({
|
||||
redirectTo: "/auth/login",
|
||||
})
|
||||
const user = await invoke(getCurrentUser, null)
|
||||
console.log("user", user)
|
||||
return (
|
||||
<div
|
||||
style={{
|
||||
@@ -1,8 +1,8 @@
|
||||
"use client"
|
||||
|
||||
import {useQuery, useMutation} from "@blitzjs/rpc"
|
||||
import logout from "../src/auth/mutations/logout"
|
||||
import getCurrentUser from "../src/users/queries/getCurrentUser"
|
||||
import logout from "../auth/mutations/logout"
|
||||
import getCurrentUser from "../users/queries/getCurrentUser"
|
||||
import {useTransition} from "react"
|
||||
import {useRouter} from "next/navigation"
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
import db from "../../../prisma"
|
||||
// import {SecurePassword} from "@blitzjs/auth"
|
||||
import {SecurePassword} from "@blitzjs/auth/secure-password"
|
||||
|
||||
export default async function signup(input: {password: string; email: string}, ctx: any) {
|
||||
const blitzContext = ctx
|
||||
// const hashedPassword = await SecurePassword.hash((input.password as string) || "test-password")
|
||||
const hashedPassword = (input.password as string) || "test-password"
|
||||
const email = (input.email as string) || "test" + Math.random() + "@test.com"
|
||||
const hashedPassword = await SecurePassword.hash((input.password as string) || "test-password")
|
||||
const email = input.email
|
||||
const user = await db.user.create({
|
||||
data: {email, hashedPassword},
|
||||
})
|
||||
|
||||
@@ -13,7 +13,14 @@ const {api, getBlitzContext, useAuthenticatedBlitzContext, invoke} = setupBlitzS
|
||||
storage: PrismaStorage(db),
|
||||
isAuthorized: simpleRolesIsAuthorized,
|
||||
}),
|
||||
RpcServerPlugin({}),
|
||||
RpcServerPlugin({
|
||||
logging: {
|
||||
disablelevel: "debug",
|
||||
},
|
||||
onInvokeError(error) {
|
||||
console.log("onInvokeError", error)
|
||||
},
|
||||
}),
|
||||
],
|
||||
logger: BlitzLogger({}),
|
||||
})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {rpcHandler} from "@blitzjs/rpc"
|
||||
import {api} from "../../../blitz-server"
|
||||
|
||||
export default api(rpcHandler({onError: console.log}))
|
||||
export default api(rpcHandler({onError: (error, ctx) => console.log(error)}))
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"isolatedModules": true,
|
||||
"jsx": "preserve",
|
||||
"incremental": true,
|
||||
"baseUrl": ".",
|
||||
"plugins": [
|
||||
{
|
||||
"name": "next"
|
||||
|
||||
@@ -23,15 +23,15 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "workspace:*",
|
||||
"@blitzjs/config": "workspace:*",
|
||||
"@blitzjs/next": "workspace:*",
|
||||
"@blitzjs/rpc": "workspace:*",
|
||||
"@blitzjs/auth": "2.0.0-beta.37",
|
||||
"@blitzjs/config": "2.0.0-beta.37",
|
||||
"@blitzjs/next": "2.0.0-beta.37",
|
||||
"@blitzjs/rpc": "2.0.0-beta.37",
|
||||
"@hookform/error-message": "2.0.0",
|
||||
"@hookform/resolvers": "2.9.10",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "workspace:2.0.0-beta.24",
|
||||
"next": "13.2.4",
|
||||
"blitz": "2.0.0-beta.37",
|
||||
"next": "14.0.4",
|
||||
"openid-client": "5.2.1",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { rpcHandler } from "@blitzjs/rpc"
|
||||
import { api } from "src/blitz-server"
|
||||
|
||||
export default api(rpcHandler({ onError: console.log }))
|
||||
export default api(rpcHandler({ onError: (error, ctx) => console.log(error) }))
|
||||
|
||||
@@ -2,10 +2,13 @@ const { withNextAuthAdapter } = require("@blitzjs/auth/next-auth")
|
||||
const { withBlitz } = require("@blitzjs/next")
|
||||
|
||||
/**
|
||||
* @type {import('@blitzjs/next').BlitzConfig}
|
||||
* @type {import('next').NextConfig}
|
||||
**/
|
||||
const config = {
|
||||
reactStrictMode: true,
|
||||
blitz: {
|
||||
resolversDynamicImport: true,
|
||||
},
|
||||
}
|
||||
|
||||
module.exports = withBlitz(withNextAuthAdapter(config))
|
||||
|
||||
@@ -24,15 +24,15 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "workspace:*",
|
||||
"@blitzjs/config": "workspace:*",
|
||||
"@blitzjs/next": "workspace:*",
|
||||
"@blitzjs/rpc": "workspace:*",
|
||||
"@blitzjs/auth": "2.0.0-beta.37",
|
||||
"@blitzjs/config": "2.0.0-beta.37",
|
||||
"@blitzjs/next": "2.0.0-beta.37",
|
||||
"@blitzjs/rpc": "2.0.0-beta.37",
|
||||
"@hookform/error-message": "2.0.0",
|
||||
"@hookform/resolvers": "2.9.10",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "workspace:2.0.0-beta.24",
|
||||
"next": "13.2.4",
|
||||
"blitz": "2.0.0-beta.37",
|
||||
"next": "14.0.4",
|
||||
"next-auth": "4.18.7",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
|
||||
@@ -10,6 +10,7 @@ type SignupFormProps = {
|
||||
|
||||
export const SignupForm = (props: SignupFormProps) => {
|
||||
const [signupMutation] = useMutation(signup)
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h1>Create an Account</h1>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import db from "db"
|
||||
import { SecurePassword } from "@blitzjs/auth/secure-password"
|
||||
import { Role } from "types"
|
||||
|
||||
export default async function signup(input, ctx) {
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import type { BlitzCliConfig } from "blitz"
|
||||
import { setupBlitzServer } from "@blitzjs/next"
|
||||
import { AuthServerPlugin, PrismaStorage } from "@blitzjs/auth"
|
||||
import db from "db"
|
||||
import { simpleRolesIsAuthorized } from "@blitzjs/auth"
|
||||
import { BlitzLogger } from "blitz"
|
||||
import { setupBlitzServer } from "@blitzjs/next"
|
||||
import { AuthServerPlugin, PrismaStorage, simpleRolesIsAuthorized } from "@blitzjs/auth"
|
||||
import db from "db"
|
||||
|
||||
export const cliConfig: BlitzCliConfig = {
|
||||
customTemplates: "src/templates",
|
||||
@@ -27,6 +26,9 @@ const { gSSP, gSP, api } = setupBlitzServer({
|
||||
isAuthorized: simpleRolesIsAuthorized,
|
||||
}),
|
||||
],
|
||||
formatError: (error) => {
|
||||
return new Error("Formatted error" + error.message)
|
||||
},
|
||||
logger: BlitzLogger({}),
|
||||
})
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { api } from "src/blitz-server"
|
||||
import GithubProvider from "next-auth/providers/github"
|
||||
import EmailProvider from "next-auth/providers/email"
|
||||
import { NextAuthAdapter, BlitzNextAuthOptions } from "@blitzjs/auth/next-auth"
|
||||
import db, { User } from "db"
|
||||
import { Role } from "types"
|
||||
@@ -10,6 +11,10 @@ const providers = [
|
||||
clientId: process.env.GITHUB_CLIENT_ID as string,
|
||||
clientSecret: process.env.GITHUB_CLIENT_SECRET as string,
|
||||
}),
|
||||
EmailProvider({
|
||||
from: process.env.GITHUB_CLIENT_ID as string,
|
||||
server: process.env.GITHUB_CLIENT_SECRET as string,
|
||||
}),
|
||||
]
|
||||
|
||||
export default api(
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
import { rpcHandler } from "@blitzjs/rpc"
|
||||
import { api } from "src/blitz-server"
|
||||
|
||||
export default api(rpcHandler({ onError: console.log }))
|
||||
export default api(
|
||||
rpcHandler({
|
||||
onError: (error, ctx) => console.log(error),
|
||||
formatError: (error, ctx) => {
|
||||
error.message = `FormatError handler: ${error.message}`
|
||||
return error
|
||||
},
|
||||
// logging: {
|
||||
// verbose: true,
|
||||
// blockList: ["/getCurrentUser"],
|
||||
// },
|
||||
})
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { useEffect, useState } from "react"
|
||||
import Layout from "src/core/layouts/Layout"
|
||||
import { LabeledTextField } from "src/core/components/LabeledTextField"
|
||||
import { Form, FORM_ERROR } from "src/core/components/Form"
|
||||
|
||||
@@ -38,13 +38,13 @@ const UserInfo = () => {
|
||||
} else {
|
||||
return (
|
||||
<>
|
||||
<Link href={Routes.SignupPage()} className={styles.button}>
|
||||
<Link href={"/auth/signup"} className={styles.button}>
|
||||
<strong>Sign Up</strong>
|
||||
</Link>
|
||||
<Link href={Routes.LoginPage()} className={styles.loginButton}>
|
||||
<Link href={"/auth/login"} className={styles.loginButton}>
|
||||
<strong>Login</strong>
|
||||
</Link>
|
||||
<Link href="/api/auth/github/login" passHref>
|
||||
<Link href="/api/auth/github/login" passHref legacyBehavior>
|
||||
<a className="button small">
|
||||
<strong>Sign in with GitHub</strong>
|
||||
</a>
|
||||
@@ -99,7 +99,7 @@ const Home: BlitzPage = () => {
|
||||
<div className={styles.code}>
|
||||
<span>1</span>
|
||||
<pre>
|
||||
<code>blitz generate all project</code>
|
||||
<code>blitz generate all project name:string</code>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
/**
|
||||
* @vitest-environment jsdom
|
||||
*/
|
||||
|
||||
import { expect, vi, test } from "vitest"
|
||||
import { render } from "test/utils"
|
||||
|
||||
import Home from "../src/pages/index"
|
||||
|
||||
vi.mock("public/logo.png", () => ({
|
||||
default: { src: "/logo.png" },
|
||||
}))
|
||||
|
||||
test.skip("renders blitz documentation link", () => {
|
||||
// This is an example of how to ensure a specific item is in the document
|
||||
// But it's disabled by default (by test.skip) so the test doesn't fail
|
||||
// when you remove the default content from the page
|
||||
|
||||
// This is an example on how to mock api hooks when testing
|
||||
vi.mock("src/users/hooks/useCurrentUser", () => ({
|
||||
useCurrentUser: () => ({
|
||||
id: 1,
|
||||
name: "User",
|
||||
email: "user@email.com",
|
||||
role: "user",
|
||||
}),
|
||||
}))
|
||||
|
||||
const { getByText } = render(<Home />)
|
||||
const linkElement = getByText(/Blitz Docs/i)
|
||||
expect(linkElement).toBeInTheDocument()
|
||||
})
|
||||
@@ -1,3 +0,0 @@
|
||||
import "@testing-library/jest-dom"
|
||||
|
||||
export {}
|
||||
@@ -1,106 +0,0 @@
|
||||
import { vi } from "vitest"
|
||||
import { render as defaultRender } from "@testing-library/react"
|
||||
import { renderHook as defaultRenderHook } from "@testing-library/react-hooks"
|
||||
import { NextRouter } from "next/router"
|
||||
import { BlitzProvider, RouterContext } from "@blitzjs/next"
|
||||
import { QueryClient } from "@blitzjs/rpc"
|
||||
|
||||
export * from "@testing-library/react"
|
||||
|
||||
// --------------------------------------------------------------------------------
|
||||
// This file customizes the render() and renderHook() test functions provided
|
||||
// by React testing library. It adds a router context wrapper with a mocked router.
|
||||
//
|
||||
// You should always import `render` and `renderHook` from this file
|
||||
//
|
||||
// This is the place to add any other context providers you need while testing.
|
||||
// --------------------------------------------------------------------------------
|
||||
|
||||
// --------------------------------------------------
|
||||
// render()
|
||||
// --------------------------------------------------
|
||||
// Override the default test render with our own
|
||||
//
|
||||
// You can override the router mock like this:
|
||||
//
|
||||
// const { baseElement } = render(<MyComponent />, {
|
||||
// router: { pathname: '/my-custom-pathname' },
|
||||
// });
|
||||
// --------------------------------------------------
|
||||
|
||||
const queryClient = new QueryClient()
|
||||
export function render(
|
||||
ui: RenderUI,
|
||||
{ wrapper, router, dehydratedState, ...options }: RenderOptions = {}
|
||||
) {
|
||||
if (!wrapper) {
|
||||
// Add a default context wrapper if one isn't supplied from the test
|
||||
wrapper = ({ children }: { children: React.ReactNode }) => (
|
||||
<BlitzProvider dehydratedState={dehydratedState} client={queryClient}>
|
||||
<RouterContext.Provider value={{ ...mockRouter, ...router }}>
|
||||
{children}
|
||||
</RouterContext.Provider>
|
||||
</BlitzProvider>
|
||||
)
|
||||
}
|
||||
return defaultRender(ui, { wrapper, ...options })
|
||||
}
|
||||
|
||||
// --------------------------------------------------
|
||||
// renderHook()
|
||||
// --------------------------------------------------
|
||||
// Override the default test renderHook with our own
|
||||
//
|
||||
// You can override the router mock like this:
|
||||
//
|
||||
// const result = renderHook(() => myHook(), {
|
||||
// router: { pathname: '/my-custom-pathname' },
|
||||
// });
|
||||
// --------------------------------------------------
|
||||
export function renderHook(
|
||||
hook: RenderHook,
|
||||
{ wrapper, router, dehydratedState, ...options }: RenderOptions = {}
|
||||
) {
|
||||
if (!wrapper) {
|
||||
// Add a default context wrapper if one isn't supplied from the test
|
||||
wrapper = ({ children }: { children: React.ReactNode }) => (
|
||||
<BlitzProvider dehydratedState={dehydratedState} client={queryClient}>
|
||||
<RouterContext.Provider value={{ ...mockRouter, ...router }}>
|
||||
{children}
|
||||
</RouterContext.Provider>
|
||||
</BlitzProvider>
|
||||
)
|
||||
}
|
||||
return defaultRenderHook(hook, { wrapper, ...options })
|
||||
}
|
||||
|
||||
export const mockRouter: NextRouter = {
|
||||
basePath: "",
|
||||
pathname: "/",
|
||||
route: "/",
|
||||
asPath: "/",
|
||||
query: {},
|
||||
isReady: true,
|
||||
isLocaleDomain: false,
|
||||
forward: vi.fn(),
|
||||
prefetch: vi.fn(),
|
||||
isPreview: false,
|
||||
push: vi.fn(),
|
||||
replace: vi.fn(),
|
||||
reload: vi.fn(),
|
||||
back: vi.fn(),
|
||||
beforePopState: vi.fn(),
|
||||
events: {
|
||||
on: vi.fn(),
|
||||
off: vi.fn(),
|
||||
emit: vi.fn(),
|
||||
},
|
||||
isFallback: false,
|
||||
}
|
||||
|
||||
type DefaultParams = Parameters<typeof defaultRender>
|
||||
type RenderUI = DefaultParams[0]
|
||||
type RenderOptions = DefaultParams[1] & { router?: Partial<NextRouter>; dehydratedState?: unknown }
|
||||
|
||||
type DefaultHookParams = Parameters<typeof defaultRenderHook>
|
||||
type RenderHook = DefaultHookParams[0]
|
||||
@@ -16,17 +16,17 @@
|
||||
"schema": "./db/schema.prisma"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "workspace:*",
|
||||
"@blitzjs/config": "workspace:*",
|
||||
"@blitzjs/next": "workspace:*",
|
||||
"@blitzjs/rpc": "workspace:*",
|
||||
"@blitzjs/auth": "2.0.0-beta.37",
|
||||
"@blitzjs/config": "2.0.0-beta.37",
|
||||
"@blitzjs/next": "2.0.0-beta.37",
|
||||
"@blitzjs/rpc": "2.0.0-beta.37",
|
||||
"@prisma/client": "4.6.1",
|
||||
"@types/jest": "29.2.2",
|
||||
"@types/passport-twitter": "1.0.37",
|
||||
"blitz": "workspace:*",
|
||||
"blitz": "2.0.0-beta.37",
|
||||
"jest": "29.3.0",
|
||||
"jest-environment-jsdom": "29.3.0",
|
||||
"next": "13.2.4",
|
||||
"next": "14.0.4",
|
||||
"passport-mock-strategy": "2.0.0",
|
||||
"passport-twitter": "1.0.4",
|
||||
"prisma": "4.6.1",
|
||||
|
||||
@@ -13,7 +13,6 @@ const {gSSP, gSP, api} = setupBlitzServer({
|
||||
}),
|
||||
],
|
||||
logger: BlitzLogger({
|
||||
colorizePrettyLogs: true,
|
||||
prefix: ["[blitz]>>>>>"],
|
||||
}),
|
||||
})
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {rpcHandler} from "@blitzjs/rpc"
|
||||
import {api} from "src/blitz-server"
|
||||
|
||||
export default api(rpcHandler({onError: console.log}))
|
||||
export default api(rpcHandler({onError: (error, ctx) => console.log(error)}))
|
||||
|
||||
BIN
assets/byteflow.png
Normal file
BIN
assets/byteflow.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.9 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 9.7 KiB After Width: | Height: | Size: 87 KiB |
61
flake.lock
generated
Normal file
61
flake.lock
generated
Normal file
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1687709756,
|
||||
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1688221086,
|
||||
"narHash": "sha256-cdW6qUL71cNWhHCpMPOJjlw0wzSRP0pVlRn2vqX/VVg=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "cd99c2b3c9f160cd004318e0697f90bbd5960825",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
39
flake.nix
Normal file
39
flake.nix
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
description = "The Blitzjs Monorepo";
|
||||
nixConfig.bash-prompt = "\[nix:blitz\]$ ";
|
||||
|
||||
inputs = {
|
||||
nixpkgs = {
|
||||
url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
};
|
||||
|
||||
flake-utils = {
|
||||
url = "github:numtide/flake-utils";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = {
|
||||
nixpkgs,
|
||||
flake-utils,
|
||||
...
|
||||
}:
|
||||
flake-utils.lib.eachDefaultSystem (system: let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in {
|
||||
formatter = pkgs.alejandra;
|
||||
|
||||
devShells = {
|
||||
default = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
nodejs-18_x
|
||||
];
|
||||
|
||||
shellHook = ''
|
||||
mkdir -p $out/bin
|
||||
${pkgs.nodejs-18_x}/bin/corepack enable --install-directory $out/bin
|
||||
export PATH="$out/bin:$PATH"
|
||||
'';
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
@@ -17,16 +17,16 @@
|
||||
"prisma:studio": "prisma studio"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/next": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/rpc": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/auth": "2.0.0-beta.37",
|
||||
"@blitzjs/config": "2.0.0-beta.37",
|
||||
"@blitzjs/next": "2.0.0-beta.37",
|
||||
"@blitzjs/rpc": "2.0.0-beta.37",
|
||||
"@hookform/error-message": "2.0.0",
|
||||
"@hookform/resolvers": "2.9.10",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "workspace:2.0.0-beta.24",
|
||||
"blitz": "2.0.0-beta.37",
|
||||
"delay": "5.0.0",
|
||||
"next": "13.2.4",
|
||||
"next": "14.0.4",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
import {Ctx} from "blitz"
|
||||
import db from "../../db"
|
||||
|
||||
const getRand = () => Math.random().toString(36).substring(7)
|
||||
|
||||
export default async function login(_: any, ctx: Ctx) {
|
||||
await ctx.session.$create({userId: 1, role: "USER"})
|
||||
const user = await db.user.create({data: {email: `${getRand()}@example.com`}})
|
||||
await ctx.session.$create({userId: user.id, role: "USER"})
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {rpcHandler} from "@blitzjs/rpc"
|
||||
import {api} from "../../../blitz-server"
|
||||
|
||||
export default api(rpcHandler({onError: console.log}))
|
||||
export default api(rpcHandler({onError: (error, ctx) => console.log(error)}))
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
import {useMutation, useQuery} from "@blitzjs/rpc"
|
||||
import {BlitzPage} from "@blitzjs/next"
|
||||
import logout from "../mutations/logout"
|
||||
import getAuthenticatedBasic from "../queries/getAuthenticatedBasic"
|
||||
import {Suspense} from "react"
|
||||
|
||||
function Content() {
|
||||
const [result] = useQuery(getAuthenticatedBasic, undefined)
|
||||
const [logoutMutation] = useMutation(logout)
|
||||
return (
|
||||
<div>
|
||||
<div id="content">{result}</div>
|
||||
<button
|
||||
id="logout"
|
||||
onClick={async () => {
|
||||
await logoutMutation()
|
||||
}}
|
||||
>
|
||||
logout
|
||||
</button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
const Authenticate: BlitzPage = () => {
|
||||
return (
|
||||
<div id="page">
|
||||
<Suspense fallback={"Loading..."}>
|
||||
<Content />
|
||||
</Suspense>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
Authenticate.authenticate = {role: "USER", redirectTo: "/noauth-query"}
|
||||
|
||||
export default Authenticate
|
||||
@@ -0,0 +1,37 @@
|
||||
import {useMutation, useQuery} from "@blitzjs/rpc"
|
||||
import {BlitzPage} from "@blitzjs/next"
|
||||
import logout from "../mutations/logout"
|
||||
import getAuthenticatedBasic from "../queries/getAuthenticatedBasic"
|
||||
import {Suspense} from "react"
|
||||
|
||||
function Content() {
|
||||
const [result] = useQuery(getAuthenticatedBasic, undefined)
|
||||
const [logoutMutation] = useMutation(logout)
|
||||
return (
|
||||
<div>
|
||||
<div id="content">{result}</div>
|
||||
<button
|
||||
id="logout"
|
||||
onClick={async () => {
|
||||
await logoutMutation()
|
||||
}}
|
||||
>
|
||||
logout
|
||||
</button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
const Authenticate: BlitzPage = () => {
|
||||
return (
|
||||
<div id="page">
|
||||
<Suspense fallback={"Loading..."}>
|
||||
<Content />
|
||||
</Suspense>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
Authenticate.authenticate = {role: "ADMIN", redirectTo: "/noauth-query"}
|
||||
|
||||
export default Authenticate
|
||||
@@ -0,0 +1,37 @@
|
||||
import {useMutation, useQuery} from "@blitzjs/rpc"
|
||||
import {BlitzPage} from "@blitzjs/next"
|
||||
import logout from "../mutations/logout"
|
||||
import getAuthenticatedBasic from "../queries/getAuthenticatedBasic"
|
||||
import {Suspense} from "react"
|
||||
|
||||
function Content() {
|
||||
const [result] = useQuery(getAuthenticatedBasic, undefined)
|
||||
const [logoutMutation] = useMutation(logout)
|
||||
return (
|
||||
<div>
|
||||
<div id="content">{result}</div>
|
||||
<button
|
||||
id="logout"
|
||||
onClick={async () => {
|
||||
await logoutMutation()
|
||||
}}
|
||||
>
|
||||
logout
|
||||
</button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
const Authenticate: BlitzPage = () => {
|
||||
return (
|
||||
<div id="page">
|
||||
<Suspense fallback={"Loading..."}>
|
||||
<Content />
|
||||
</Suspense>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
Authenticate.authenticate = {role: "USER"}
|
||||
|
||||
export default Authenticate
|
||||
@@ -0,0 +1,37 @@
|
||||
import {useMutation, useQuery} from "@blitzjs/rpc"
|
||||
import {BlitzPage} from "@blitzjs/next"
|
||||
import logout from "../mutations/logout"
|
||||
import getAuthenticatedBasic from "../queries/getAuthenticatedBasic"
|
||||
import {Suspense} from "react"
|
||||
|
||||
function Content() {
|
||||
const [result] = useQuery(getAuthenticatedBasic, undefined)
|
||||
const [logoutMutation] = useMutation(logout)
|
||||
return (
|
||||
<div>
|
||||
<div id="content">{result}</div>
|
||||
<button
|
||||
id="logout"
|
||||
onClick={async () => {
|
||||
await logoutMutation()
|
||||
}}
|
||||
>
|
||||
logout
|
||||
</button>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
const Authenticate: BlitzPage = () => {
|
||||
return (
|
||||
<div id="page">
|
||||
<Suspense fallback={"Loading..."}>
|
||||
<Content />
|
||||
</Suspense>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
Authenticate.authenticate = {role: "ADMIN"}
|
||||
|
||||
export default Authenticate
|
||||
@@ -1,11 +1,11 @@
|
||||
import {describe, it, expect, beforeAll, afterAll} from "vitest"
|
||||
import {afterAll, beforeAll, describe, expect, it} from "vitest"
|
||||
import {
|
||||
killApp,
|
||||
findPort,
|
||||
runBlitzCommand,
|
||||
blitzLaunchApp,
|
||||
blitzBuild,
|
||||
blitzLaunchApp,
|
||||
blitzStart,
|
||||
findPort,
|
||||
killApp,
|
||||
runBlitzCommand,
|
||||
waitFor,
|
||||
} from "../../utils/next-test-utils"
|
||||
import webdriver from "../../utils/next-webdriver"
|
||||
@@ -13,35 +13,10 @@ import webdriver from "../../utils/next-webdriver"
|
||||
let app: any
|
||||
let appPort: number
|
||||
|
||||
let mode: "dev" | "server" = "dev"
|
||||
|
||||
const runTests = () => {
|
||||
describe("Auth", () => {
|
||||
describe("custom plugin", () => {
|
||||
it("custom plugin - events", async () => {
|
||||
const browser = await webdriver(appPort, "/custom-plugin")
|
||||
let text = await browser.elementByCss("#page").text()
|
||||
await waitFor(250)
|
||||
text = await browser.elementByCss("#page").text()
|
||||
expect(text).toBe("Custom plugin Session Created")
|
||||
await waitFor(3000)
|
||||
text = await browser.elementByCss("#page").text()
|
||||
expect(text).toBe("Custom plugin RPC Error")
|
||||
if (browser) {
|
||||
await browser.close()
|
||||
}
|
||||
})
|
||||
it("custom plugin - middleware", async () => {
|
||||
const browser = await webdriver(appPort, "/custom-plugin")
|
||||
await waitFor(100)
|
||||
let text = await browser.elementByCss("#before-req").text()
|
||||
expect(text).toBe("customHeaderValue")
|
||||
await waitFor(1000)
|
||||
text = await browser.elementByCss("#before-res").text()
|
||||
expect(text).toBe("55")
|
||||
if (browser) {
|
||||
await browser.close()
|
||||
}
|
||||
})
|
||||
})
|
||||
describe("unauthenticated", () => {
|
||||
it("should render result for open query", async () => {
|
||||
const browser = await webdriver(appPort, "/noauth-query")
|
||||
@@ -56,7 +31,11 @@ const runTests = () => {
|
||||
const browser = await webdriver(appPort, "/authenticated-query")
|
||||
await browser.waitForElementByCss("#error")
|
||||
let text = await browser.elementByCss("#error").text()
|
||||
expect(text).toMatch(/AuthenticationError/)
|
||||
if (mode === "server") {
|
||||
expect(text).toMatch(/AuthenticationError/)
|
||||
} else {
|
||||
expect(text).toContain("Error")
|
||||
}
|
||||
if (browser) await browser.close()
|
||||
})
|
||||
|
||||
@@ -68,6 +47,14 @@ const runTests = () => {
|
||||
if (browser) await browser.close()
|
||||
})
|
||||
|
||||
it("Page.authenticate = {role} should work ", async () => {
|
||||
const browser = await webdriver(appPort, "/page-dot-authenticate-role")
|
||||
await browser.waitForElementByCss("#error")
|
||||
let text = await browser.elementByCss("#error").text()
|
||||
expect(text).toMatch(/AuthenticationError/)
|
||||
if (browser) await browser.close()
|
||||
})
|
||||
|
||||
it("should render error for protected layout", async () => {
|
||||
const browser = await webdriver(appPort, "/layout-authenticate")
|
||||
await browser.waitForElementByCss("#error")
|
||||
@@ -118,18 +105,36 @@ const runTests = () => {
|
||||
await waitFor(200)
|
||||
await browser.waitForElementByCss("#error")
|
||||
text = await browser.elementByCss("#error").text()
|
||||
expect(text).toMatch(/AuthenticationError/)
|
||||
if (mode === "server") {
|
||||
expect(text).toMatch(/AuthenticationError/)
|
||||
} else {
|
||||
expect(text).toContain("Error")
|
||||
}
|
||||
if (browser) await browser.close()
|
||||
})
|
||||
|
||||
it("Page.authenticate = {redirect} should work ", async () => {
|
||||
// Login
|
||||
it("Page.authenticate = {role} should throw authentication error ", async () => {
|
||||
let browser = await webdriver(appPort, "/login")
|
||||
await waitFor(200)
|
||||
await browser.elementByCss("#login").click()
|
||||
await waitFor(200)
|
||||
await browser.eval(`window.location = "/page-dot-authenticate-role"`)
|
||||
await browser.waitForElementByCss("#error")
|
||||
let text = await browser.elementByCss("#error").text()
|
||||
expect(text).toMatch(/AuthenticationError/)
|
||||
if (browser) await browser.close()
|
||||
})
|
||||
|
||||
await browser.eval(`window.location = "/page-dot-authenticate-redirect"`)
|
||||
it("Page.authenticate = {role: 'custom'} should work ", async () => {
|
||||
let browser = await webdriver(appPort, "/page-dot-authenticate-role-working")
|
||||
await browser.waitForElementByCss("#content")
|
||||
let text = await browser.elementByCss("#content").text()
|
||||
expect(text).toMatch(/authenticated-basic-result/)
|
||||
if (browser) await browser.close()
|
||||
})
|
||||
|
||||
it("Page.authenticate = {redirect} should work ", async () => {
|
||||
let browser = await webdriver(appPort, "/page-dot-authenticate-redirect")
|
||||
await browser.waitForElementByCss("#content")
|
||||
let text = await browser.elementByCss("#content").text()
|
||||
expect(text).toMatch(/authenticated-basic-result/)
|
||||
@@ -140,14 +145,26 @@ const runTests = () => {
|
||||
if (browser) await browser.close()
|
||||
})
|
||||
|
||||
it("Layout.authenticate = {redirect} should work ", async () => {
|
||||
// Login
|
||||
it("Page.authenticate = {role: 'custom', redirect: 'url'} should work ", async () => {
|
||||
let browser = await webdriver(appPort, "/login")
|
||||
await waitFor(200)
|
||||
await browser.elementByCss("#login").click()
|
||||
await waitFor(200)
|
||||
await browser.eval(`window.location = "/page-dot-authenticate-role-redirect"`)
|
||||
await browser.waitForElementByCss("#content")
|
||||
expect(await browser.url()).toMatch(/\/noauth-query/)
|
||||
if (browser) await browser.close()
|
||||
})
|
||||
|
||||
await browser.eval(`window.location = "/layout-authenticate-redirect"`)
|
||||
it("Page.authenticate = {role: 'custom', redirect: 'url'} should stay ", async () => {
|
||||
let browser = await webdriver(appPort, "/page-dot-authenticate-role-redirect-stay")
|
||||
await browser.waitForElementByCss("#content")
|
||||
expect(await browser.url()).toMatch(/\/page-dot-authenticate-role-redirect-stay/)
|
||||
if (browser) await browser.close()
|
||||
})
|
||||
|
||||
it("Layout.authenticate = {redirect} should work ", async () => {
|
||||
let browser = await webdriver(appPort, "/layout-authenticate-redirect")
|
||||
await browser.waitForElementByCss("#content")
|
||||
let text = await browser.elementByCss("#content").text()
|
||||
expect(text).toMatch(/authenticated-basic-result/)
|
||||
@@ -260,6 +277,7 @@ const runTests = () => {
|
||||
describe("Auth Tests", () => {
|
||||
describe("dev mode", () => {
|
||||
beforeAll(async () => {
|
||||
mode = "dev"
|
||||
try {
|
||||
await runBlitzCommand(["prisma", "migrate", "reset", "--force"])
|
||||
appPort = await findPort()
|
||||
@@ -274,6 +292,7 @@ describe("Auth Tests", () => {
|
||||
|
||||
describe("server mode", () => {
|
||||
beforeAll(async () => {
|
||||
mode = "server"
|
||||
try {
|
||||
await runBlitzCommand(["prisma", "generate"])
|
||||
await runBlitzCommand(["prisma", "migrate", "deploy"])
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
"prisma:studio": "prisma studio"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/next": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/auth": "2.0.0-beta.37",
|
||||
"@blitzjs/config": "2.0.0-beta.37",
|
||||
"@blitzjs/next": "2.0.0-beta.37",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "workspace:2.0.0-beta.24",
|
||||
"blitz": "2.0.0-beta.37",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "13.2.4",
|
||||
"next": "14.0.4",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
|
||||
@@ -43,7 +43,7 @@ const runTests = (mode?: string) => {
|
||||
const browser = await webdriver(appPort, "/authenticated-page")
|
||||
let errorMsg = await browser.elementById(`error`).text()
|
||||
expect(errorMsg).toMatch(/Error: You are not authenticated/)
|
||||
if (browser) browser.close()
|
||||
if (browser) void browser.close()
|
||||
},
|
||||
5000 * 60 * 2,
|
||||
)
|
||||
|
||||
@@ -16,19 +16,19 @@
|
||||
"schema": "db/schema.prisma"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/next": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/rpc": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/auth": "2.0.0-beta.37",
|
||||
"@blitzjs/next": "2.0.0-beta.37",
|
||||
"@blitzjs/rpc": "2.0.0-beta.37",
|
||||
"@prisma/client": "4.6.1",
|
||||
"blitz": "workspace:2.0.0-beta.24",
|
||||
"blitz": "2.0.0-beta.37",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "13.2.4",
|
||||
"next": "14.0.4",
|
||||
"prisma": "4.6.1",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/config": "2.0.0-beta.37",
|
||||
"@next/bundle-analyzer": "12.0.8",
|
||||
"@types/express": "4.17.13",
|
||||
"@types/fs-extra": "9.0.13",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {rpcHandler} from "@blitzjs/rpc"
|
||||
import {api} from "../../../app/blitz-server"
|
||||
|
||||
export default api(rpcHandler({onError: console.log}))
|
||||
export default api(rpcHandler({onError: (error, ctx) => console.log(error)}))
|
||||
|
||||
1
integration-tests/middleware/next-env.d.ts
vendored
1
integration-tests/middleware/next-env.d.ts
vendored
@@ -1,5 +1,6 @@
|
||||
/// <reference types="next" />
|
||||
/// <reference types="next/image-types/global" />
|
||||
/// <reference types="next/navigation-types/compat/navigation" />
|
||||
|
||||
// NOTE: This file should not be edited
|
||||
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/next": "workspace:2.0.0-beta.24",
|
||||
"@blitzjs/rpc": "workspace:2.0.0-beta.24",
|
||||
"blitz": "workspace:2.0.0-beta.24",
|
||||
"next": "13.2.4",
|
||||
"@blitzjs/config": "2.0.0-beta.37",
|
||||
"@blitzjs/next": "2.0.0-beta.37",
|
||||
"@blitzjs/rpc": "2.0.0-beta.37",
|
||||
"blitz": "2.0.0-beta.37",
|
||||
"next": "14.0.4",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0"
|
||||
},
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import {rpcHandler} from "@blitzjs/rpc"
|
||||
|
||||
export default rpcHandler({onError: console.log})
|
||||
export default rpcHandler({onError: (error, ctx) => console.log(error)})
|
||||
|
||||
@@ -1,10 +1,16 @@
|
||||
{
|
||||
"extends": "@blitzjs/config/tsconfig.nextjs.json",
|
||||
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "types"],
|
||||
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", "types", ".next/types/**/*.ts"],
|
||||
"compilerOptions": {
|
||||
"paths": {
|
||||
"react": ["./node_modules/@types/react"]
|
||||
}
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "next"
|
||||
}
|
||||
],
|
||||
"strictNullChecks": true
|
||||
},
|
||||
"exclude": ["node_modules"],
|
||||
"baseUrl": "."
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/// <reference types="next" />
|
||||
/// <reference types="next/image-types/global" />
|
||||
/// <reference types="next/navigation-types/compat/navigation" />
|
||||
|
||||
// NOTE: This file should not be edited
|
||||
// see https://nextjs.org/docs/basic-features/typescript for more information.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user