1
0
mirror of synced 2026-02-03 18:01:02 -05:00

Compare commits

...

26 Commits

Author SHA1 Message Date
github-actions[bot]
922bc276d9 Version Packages (alpha) (#3638)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2022-07-29 19:58:38 +02:00
Dillon Raphael
365e67094c Fixes db seed command (#3639)
* require db.default in db runSeed cli command
2022-07-29 19:51:23 +02:00
Dillon Raphael
31d7a6f413 Adds rootDir prefix to tsconfig alias module name mapper (#3634)
Co-authored-by: beerose <alexsandra.sikora@gmail.com>
2022-07-29 11:36:43 +02:00
github-actions[bot]
8726b16bb9 Version Packages (alpha) (#3632) 2022-07-28 20:06:17 +02:00
Dillon Raphael
240f378b54 passes the correct arguments to runCommandFromBin in blitz cli index (#3631) 2022-07-28 19:57:08 +02:00
github-actions[bot]
d6655f0178 Version Packages (alpha) (#3630)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Dillon Raphael <dillon@creatorsneverdie.com>
2022-07-28 16:23:15 +02:00
Blitz.js Bot
001c174cbf (meta) updated @dillonraphael contributions 2022-07-28 10:18:55 -04:00
Dillon Raphael
1d863f352a Fix APP_ENV not being set before running loadEnvConfig (#3629)
* rearanges the order of setting --env before loading envConfig
2022-07-28 16:16:19 +02:00
Blitz.js Bot
a36110171a (meta) added @sherryxiao1988 as contributor 2022-07-27 13:29:50 -04:00
github-actions[bot]
37b5e35e22 Version Packages (alpha) (#3622)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2022-07-27 18:51:31 +02:00
beerose
3b213a35b0 Add missing changesets 2022-07-27 18:46:06 +02:00
Marcus Reinhardt
809f6019be Remove debug print (#3616)
Co-authored-by: Aleksandra <alexsandra.sikora@gmail.com>
2022-07-27 18:44:51 +02:00
Aleksandra
a51b1e85e1 Export router-context from blitz-next (#3621) 2022-07-27 18:23:28 +02:00
Blitz.js Bot
a948dbb7b8 (meta) added @ryanwashburne as contributor 2022-07-27 11:08:20 -04:00
github-actions[bot]
4b91c429ca Version Packages (alpha) (#3588)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2022-07-26 17:09:46 +02:00
Aleksandra
6ab9db7802 Infer result type in the api handler (#3610) 2022-07-26 17:04:39 +02:00
Blitz.js Bot
d3e6b02ad4 (meta) updated @iojcde contributions 2022-07-26 05:21:37 -04:00
Jeeho Ahn
813365da61 (meta) add @iojcde as contributor (#3606) 2022-07-26 11:21:32 +02:00
Blitz.js Bot
6559c25f71 (meta) added @saadaltabari as contributor 2022-07-25 09:08:44 -04:00
saadaltabari
83b355900b Truncate error messages in passportAuth redirectUri (#3596)
Co-authored-by: Fran Zekan <zekan.fran369@gmail.com>
Co-authored-by: Aleksandra <alexsandra.sikora@gmail.com>
2022-07-25 15:08:40 +02:00
Fran Zekan
c721c104db Hook up react-query fetch cancellation (#3590)
Co-authored-by: beerose <alexsandra.sikora@gmail.com>
2022-07-25 14:57:42 +02:00
Fran Zekan
7e538ba451 Import ErrorComponent as DefaultErrorComponent (#3589)
Co-authored-by: Aleksandra <alexsandra.sikora@gmail.com>
2022-07-25 11:33:38 +02:00
Dillon Raphael
8e00605a86 Codemod: update the error messages based on if it's a babel parse error or an unexpected error (#3593) 2022-07-25 11:15:28 +02:00
Dillon Raphael
dcdcd04055 Various codemod fixes (#3576)
Co-authored-by: Aleksandra <alexsandra.sikora@gmail.com>
2022-07-22 20:55:33 +02:00
Fran Zekan
e339e2fd0a Hoist up react-query (#3585)
Co-authored-by: Aleksandra <alexsandra.sikora@gmail.com>
2022-07-22 20:35:37 +02:00
Brandon Bayer
37e1ec4abc Update README.md messaging (#3577)
* Update README.md

* Update pnpm lock

Co-authored-by: Aleksandra <alexsandra.sikora@gmail.com>
2022-07-22 20:23:02 +02:00
56 changed files with 604 additions and 225 deletions

View File

@@ -970,7 +970,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/3496193?v=4",
"profile": "https://twitter.com/dillonraphael",
"contributions": [
"code"
"code",
"doc"
]
},
{
@@ -3590,6 +3591,45 @@
"contributions": [
"doc"
]
},
{
"login": "saadaltabari",
"name": "saadaltabari",
"avatar_url": "https://avatars.githubusercontent.com/u/29986512?v=4",
"profile": "https://github.com/saadaltabari",
"contributions": [
"doc",
"code"
]
},
{
"login": "iojcde",
"name": "Jeeho Ahn",
"avatar_url": "https://avatars.githubusercontent.com/u/31413538?v=4",
"profile": "https://github.com/iojcde",
"contributions": [
"doc",
"tool",
"code"
]
},
{
"login": "ryanwashburne",
"name": "Ryan Washburne",
"avatar_url": "https://avatars.githubusercontent.com/u/12566087?v=4",
"profile": "https://linkedin.com/in/ryanwashburne",
"contributions": [
"doc"
]
},
{
"login": "sherryxiao1988",
"name": "Shundan Xiao",
"avatar_url": "https://avatars.githubusercontent.com/u/1202426?v=4",
"profile": "https://github.com/sherryxiao1988",
"contributions": [
"doc"
]
}
],
"contributorsPerLine": 7,

View File

@@ -0,0 +1,6 @@
---
"blitz": minor
"@blitzjs/auth": patch
---
Truncate errors from `api/auth/<strategy>/callback` request to 100 characters before passing them to the `?authError=` query parameter

View File

@@ -0,0 +1,5 @@
---
"blitz": patch
---
Fixes the db seed command so that the database can disconnect after running the seed file.

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/codemod": patch
---
These are various changes to will make the codemod more dynamic and work with a larger variety of codebases. These fixes are implemented to make the codemod work with flightdeck.

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/rpc": patch
---
Pass `signal` from useQuery to Blitz internal rpc client to be able to cancel queries on unmount

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/next": patch
---
Export router-context from browser entrypoint

View File

@@ -0,0 +1,5 @@
---
"blitz": patch
---
Fix APP_ENV not being set before loading env config

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/generator": patch
---
Add hoist pattern entry for react-query in new app templates

View File

@@ -0,0 +1,5 @@
---
"blitz": patch
---
Passes the correct arguments (without flags) to any bin command ran with the blitz cli

View File

@@ -23,7 +23,11 @@
"changesets": [
"big-phones-bow",
"breezy-cameras-double",
"breezy-moose-behave",
"bright-mangos-run",
"calm-carpets-deny",
"calm-nails-wait",
"clean-walls-wink",
"cool-doors-invent",
"cool-horses-check",
"curly-seas-serve",
@@ -38,6 +42,8 @@
"flat-bees-approve",
"four-brooms-juggle",
"four-meals-fry",
"four-sheep-judge",
"fuzzy-bees-warn",
"fuzzy-jars-admire",
"gentle-dogs-reply",
"good-apes-drum",
@@ -56,6 +62,7 @@
"lucky-cows-try",
"mean-gorillas-reply",
"modern-cameras-pull",
"modern-ligers-behave",
"moody-bags-walk",
"moody-squids-cheer",
"nervous-beds-travel",
@@ -72,10 +79,12 @@
"olive-sheep-rhyme",
"perfect-eyes-repeat",
"plenty-bottles-swim",
"polite-lizards-love",
"poor-peas-lick",
"poor-penguins-look",
"poor-shrimps-think",
"popular-teachers-pay",
"pretty-games-march",
"purple-singers-greet",
"quick-cycles-confess",
"quiet-feet-travel",
@@ -87,10 +96,12 @@
"shy-olives-hang",
"silent-colts-reply",
"silly-apricots-share",
"six-apricots-kick",
"slimy-needles-taste",
"slow-walls-poke",
"small-socks-confess",
"smooth-planets-admire",
"smooth-stingrays-drum",
"soft-adults-smell",
"sour-lemons-hunt",
"strong-apes-reply",
@@ -106,6 +117,7 @@
"thick-parrots-float",
"thirty-countries-build",
"tidy-clouds-smoke",
"tough-toes-pull",
"twelve-lemons-smile",
"twenty-beans-pump",
"two-carpets-rhyme",
@@ -116,6 +128,7 @@
"violet-lions-help",
"weak-suns-shave",
"wicked-ghosts-cough",
"wicked-rings-walk",
"wise-frogs-give"
]
}

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/codemod": patch
---
Import ErrorComponent as DefaultErrorComponent

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/next": patch
---
Infer result type in the `api` handler and allow customizing it

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/codemod": patch
---
Updates the error messages based on if it's a babel parse error or an unexpected error

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/rpc": patch
---
Remove debug console.log

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/next": patch
---
Set prefix in moduleNameWrapper's options in Blitz's jest configuration

View File

@@ -6,7 +6,7 @@
<img alt="" src="https://img.shields.io/badge/Join%20our%20community-6700EB.svg?style=for-the-badge&labelColor=000000&logoWidth=20&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQ9SURBVHgB7d3dVdtAEIbhcSpICUoH0IEogQqSVBBSAU4FSSpIOoAORAfQgSghHXzZ1U/YcMD4R9rZmf2ec3y448LyiNf27iLiGIAmPLrweC9Un3DhrzG6EarLNP09nlwJ1SOZ/lQr5N80/S/p2QMVCBf5N17XCfm1Y/rBHqjAG9PPHvBsz+mf9WAP+HLA9M/YA14cOP2payH7jpj+VCtk1wnTP+vj7xCy6cTpn7EHLMLp059iD1iD8eveJbVCNsSLheX1YA/YgOWnf8YeKB3Wmf7Ud6Fy4f/FHmtpxbl3YlC4MJ/Cj0bWdwPnPbARg+L0S54XQHS32WwuxClzd4CM0z9rPfeAuTtA5ulPXYQ7wZ04Y+oOoDD9KZc9YOoOoDj9s4dwFzgXR6w1wIPoOvPWA9buAHEJ173o3gWiy3AnuBUHLEbgmYwvAk1/wuM8vAgexThzbwPDkx7/DHwVXfFOxP2GmsKd4Ab6zPeAyU8CI7AHFmH2BRCBPXAyk18GzUrqAXCTiR4ssyj0VFw/oCU8+e+RZ33AWz6KMaYbIIWxB+JSLs1bsbkeMN0AqakHvoku9oA2sAfqBvbAQdw0QArsgb25aYBUQT3QgT2gB+yBuqGcHij2UCqXDZACe2Anlw2QYg/QAOyBuoE98CL3DZDCuK4/rh/Q7oGL6U+TOvcNkJoijN8X1C48+T+g75eQDrAH/qmqAVJgDwyqaoAUe4AGYA/UDZX3QLUNkEIZPRCd5+6BahsgVUgPROwBTSijB7jpVAvGHriHvmw9wAZ4BpX1ABvgmakHtPcbRuwBTWAPULgAV9D/jKDY9YRvwvgEaurD44uQHvAol7qBW7WKluVtIHiUS7GyvA0s6CiXDnxrpQfsgbqBS7GKk/2jYHCrVlGyfxTMrVo0ALdq1Q3sgSKofh0M9oA61a+D2QM0AHugbmAPqClmSRjK2apVVQ8UsySsoK1aHdgDesCtWnUDeyCrIpeFg1u3sylyWTi3btMA7IG6gT2wuuK3hoE9sKrit4YVslWLPaAN7IG6ocKt2zmY2h4O9sDiTG0PZw/QANy6XTewBxZj9ogYVHy025LMHhEz9cBn0We6B0yfERReBLfhx0/R1YQHPx/QBPbA0VwcEwf2wNFcHBPHHjiem3MC2QPHcXdSaJjA+KfgTPQ8hhfjBzHC40mhlzJ+Xq9lK4a4PCs43AVaGTed5mZq+iOXZwWHi3AnOj2wFWNcnxYe7gTxLtBKHuamP/J+Wnh8a5irB7ZC5Yk9gPX1QuXC+usHWqGyhYvUYR0a7zboUOFCNVhnk0krZAOW7wFOvzXhom2xnEbIHizTA1wEYhWW6YFGyC6c1gOcfg9wfA80Qj7g8B7g9HuCww+haIR8wf49wOn3Cvv9k8tGyC/s7gFOv3fY3QONkH+v9MBWqB7PeqDn9FcIT//kcitUn6kHOu/T/xfWzlQy3dEHhwAAAABJRU5ErkJggg==">
</a>
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
<a aria-label="All Contributors" href="#contributors-"><img alt="" src="https://img.shields.io/badge/all_contributors-381-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-385-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/canary/LICENSE">
<img alt="" src="https://img.shields.io/npm/l/blitz.svg?style=for-the-badge&labelColor=000000&color=blue">
@@ -19,25 +19,12 @@
<br>
<h1 align="center">The Fullstack React Framework</h1>
<h5 align="center">"Zero-API" Data Layer — Built on Next.js — Inspired by Ruby on Rails</h3>
<h3 align="center"><a href="https://blitzjs.com/docs/get-started" target="_blank">Read the Documentation</a></h3>
<br>
“Zero-API” data layer **lets you import server code directly into your React components** instead of having to manually add API endpoints and do client-side fetching and caching.
New Blitz apps come with **all the boring stuff already set up for you!** Like ESLint, Prettier, Jest, user sign up, log in, and password reset.
Provides **helpful defaults and conventions** for things like routing, file structure, and authentication while also being extremely flexible.
<h1 align="center">The Missing Fullstack Toolkit for Next.js</h1>
<br>
### Quick Start
You need Node.js 12 or newer
#### Install Blitz
Run `npm install -g blitz` or `yarn global add blitz`
@@ -53,37 +40,8 @@ _You can alternatively use [`npx`](https://www.npmjs.com/package/npx)_
<br><br>
<a aria-label="Bytes Newsletter" href="https://ui.dev/bytes/?r=blitzjs">
<img alt="Bytes Newsletter" src="https://files-8wtskjofb.vercel.app/smarter-16x1.jpg">
</a>
<br><br>
### The Foundational Principles
1. Fullstack & Monolithic
2. API Not Required
3. Convention over Configuration
4. Loose Opinions
5. Easy to Start, Easy to Scale
6. Stability
7. Community over Code
[The Blitz Manifesto](https://blitzjs.com/docs/manifesto) explains these principles in detail.
<br>
### What is Blitz Designed For?
Blitz is designed for tiny to large database-backed applications that have one or more graphical user interfaces.
While we currently only support web, we are pursuing the dream of a single monolithic application that runs on web and mobile with maximum code sharing and minimal boilerplate.
<br>
## Welcome to the Blitz Community 👋
The Blitz community is warm, safe, diverse, inclusive, and fun! LGBTQ+, women, and minorities are especially welcome. Please read our [Code of Conduct](https://blitzjs.com/docs/code-of-conduct).
@@ -379,7 +337,7 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
</tr>
<tr>
<td align="center"><a href="https://github.com/jschepmans"><img src="https://avatars2.githubusercontent.com/u/5782977?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Johan Schepmans</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=jschepmans" title="Code">💻</a></td>
<td align="center"><a href="https://twitter.com/dillonraphael"><img src="https://avatars0.githubusercontent.com/u/3496193?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dillon Raphael</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=dillonraphael" title="Code">💻</a></td>
<td align="center"><a href="https://twitter.com/dillonraphael"><img src="https://avatars0.githubusercontent.com/u/3496193?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dillon Raphael</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=dillonraphael" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=dillonraphael" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/clgeoio"><img src="https://avatars2.githubusercontent.com/u/37571416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cody G</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=clgeoio" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=clgeoio" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/madflow"><img src="https://avatars0.githubusercontent.com/u/183248?v=4?s=100" width="100px;" alt=""/><br /><sub><b>madflow</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=madflow" title="Documentation">📖</a></td>
<td align="center"><a href="https://twitter.com/nitaking_"><img src="https://avatars2.githubusercontent.com/u/10850034?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Satoshi Nitawaki</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=nitaking" title="Code">💻</a> <a href="#maintenance-nitaking" title="Maintenance">🚧</a> <a href="#question-nitaking" title="Answering Questions">💬</a> <a href="https://github.com/blitz-js/blitz/commits?author=nitaking" title="Documentation">📖</a></td>
@@ -741,6 +699,10 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
<td align="center"><a href="https://github.com/c-ciobanu"><img src="https://avatars.githubusercontent.com/u/33382714?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cristi Ciobanu</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=c-ciobanu" title="Documentation">📖</a></td>
<td align="center"><a href="https://arpitdalal.dev"><img src="https://avatars.githubusercontent.com/u/61059807?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Arpit Dalal</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=arpitdalal" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/robertrisch"><img src="https://avatars.githubusercontent.com/u/73828816?v=4?s=100" width="100px;" alt=""/><br /><sub><b>robertrisch</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=robertrisch" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/saadaltabari"><img src="https://avatars.githubusercontent.com/u/29986512?v=4?s=100" width="100px;" alt=""/><br /><sub><b>saadaltabari</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=saadaltabari" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=saadaltabari" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/iojcde"><img src="https://avatars.githubusercontent.com/u/31413538?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jeeho Ahn</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=iojcde" title="Documentation">📖</a> <a href="#tool-iojcde" title="Tools">🔧</a> <a href="https://github.com/blitz-js/blitz/commits?author=iojcde" title="Code">💻</a></td>
<td align="center"><a href="https://linkedin.com/in/ryanwashburne"><img src="https://avatars.githubusercontent.com/u/12566087?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ryan Washburne</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=ryanwashburne" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/sherryxiao1988"><img src="https://avatars.githubusercontent.com/u/1202426?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Shundan Xiao</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=sherryxiao1988" title="Documentation">📖</a></td>
</tr>
</table>

View File

@@ -1,6 +1,7 @@
save-exact=true
legacy-peer-deps=true
public-hoist-pattern[]=react-query
public-hoist-pattern[]=next
public-hoist-pattern[]=secure-password
public-hoist-pattern[]=*jest*

View File

@@ -28,8 +28,8 @@
"@blitzjs/next": "workspace:*",
"@blitzjs/rpc": "workspace:*",
"@hookform/resolvers": "2.8.8",
"@prisma/client": "3.9.0",
"blitz": "workspace:2.0.0-alpha.57",
"@prisma/client": "4.0.0",
"blitz": "workspace:2.0.0-alpha.62",
"next": "12.2.0",
"prisma": "4.0.0",
"react": "18.0.0",

8
apps/web/.npmrc Normal file
View File

@@ -0,0 +1,8 @@
save-exact=true
legacy-peer-deps=true
public-hoist-pattern[]=react-query
public-hoist-pattern[]=next
public-hoist-pattern[]=secure-password
public-hoist-pattern[]=*jest*
public-hoist-pattern[]=@testing-library/*

View File

@@ -20,7 +20,7 @@
"@blitzjs/config": "workspace:*",
"@blitzjs/next": "workspace:*",
"@blitzjs/rpc": "workspace:*",
"@prisma/client": "3.9.0",
"@prisma/client": "4.0.0",
"@types/jest": "27.4.1",
"@types/passport-twitter": "1.0.37",
"blitz": "workspace:*",

View File

@@ -16,7 +16,7 @@
"@blitzjs/auth": "workspace:*",
"@blitzjs/config": "workspace:*",
"@blitzjs/next": "workspace:*",
"@prisma/client": "3.9.0",
"@prisma/client": "4.0.0",
"blitz": "workspace:*",
"lowdb": "3.0.0",
"next": "12.2.0",

View File

@@ -16,7 +16,7 @@
"@blitzjs/auth": "workspace:*",
"@blitzjs/next": "workspace:*",
"@blitzjs/rpc": "workspace:*",
"@prisma/client": "3.9.0",
"@prisma/client": "4.0.0",
"blitz": "workspace:*",
"lowdb": "3.0.0",
"next": "12.2.0",

View File

@@ -12,7 +12,7 @@
"@blitzjs/config": "workspace:*",
"@blitzjs/next": "workspace:*",
"@blitzjs/rpc": "workspace:*",
"@prisma/client": "3.9.0",
"@prisma/client": "4.0.0",
"blitz": "workspace:*",
"next": "12.2.0",
"prisma": "4.0.0",

View File

@@ -19,7 +19,7 @@
"@blitzjs/auth": "workspace:*",
"@blitzjs/next": "workspace:*",
"@blitzjs/rpc": "workspace:*",
"@prisma/client": "3.9.0",
"@prisma/client": "4.0.0",
"blitz": "workspace:*",
"lowdb": "3.0.0",
"next": "12.2.0",

View File

@@ -1,5 +1,40 @@
# @blitzjs/auth
## 2.0.0-alpha.62
### Patch Changes
- Updated dependencies [365e6709]
- blitz@2.0.0-alpha.62
## 2.0.0-alpha.61
### Patch Changes
- Updated dependencies [240f378b]
- blitz@2.0.0-alpha.61
## 2.0.0-alpha.60
### Patch Changes
- Updated dependencies [1d863f35]
- blitz@2.0.0-alpha.60
## 2.0.0-alpha.59
### Patch Changes
- blitz@2.0.0-alpha.59
## 2.0.0-alpha.58
### Patch Changes
- 83b35590: Truncate errors from `api/auth/<strategy>/callback` request to 100 characters before passing them to the `?authError=` query parameter
- Updated dependencies [83b35590]
- blitz@2.0.0-alpha.58
## 2.0.0-alpha.57
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/auth",
"version": "2.0.0-alpha.57",
"version": "2.0.0-alpha.62",
"scripts": {
"build": "unbuild",
"predev": "wait-on -d 250 ../blitz/dist/index-server.d.ts",
@@ -26,7 +26,7 @@
"@types/secure-password": "3.1.1",
"b64-lite": "1.4.0",
"bad-behavior": "1.0.1",
"blitz": "2.0.0-alpha.57",
"blitz": "2.0.0-alpha.62",
"cookie": "0.4.1",
"cookie-session": "2.0.0",
"debug": "4.3.3",
@@ -39,7 +39,7 @@
"url": "0.11.0"
},
"devDependencies": {
"@blitzjs/config": "workspace:2.0.0-alpha.57",
"@blitzjs/config": "workspace:2.0.0-alpha.62",
"@testing-library/react": "13.0.0",
"@testing-library/react-hooks": "7.0.2",
"@types/cookie": "0.4.1",

View File

@@ -105,7 +105,6 @@ export function AuthServerPlugin(options: AuthPluginOptions): BlitzServerPlugin<
IncomingMessage,
ServerResponse & {blitzCtx: Ctx}
> = async (req, res, next) => {
console.log("Starting sessionMiddleware...")
if (!res.blitzCtx?.session) {
await getSession(req, res)
}

View File

@@ -11,6 +11,7 @@ import {
RequestMiddleware,
MiddlewareResponse,
secureProxyMiddleware,
truncateString,
} from "blitz"
import {IncomingMessage, ServerResponse} from "http"
import {PublicData, SessionContext} from "../shared"
@@ -161,7 +162,10 @@ export function passportAuth(config: BlitzPassportConfig): ApiHandler {
"/"
if (error) {
redirectUrl += "?authError=" + encodeURIComponent(error.toString())
console.error(`Login via ${strategyName} was unsuccessful.`)
console.error(error)
redirectUrl +=
"?authError=" + encodeURIComponent(truncateString(error.toString(), 100))
res.setHeader("Location", redirectUrl)
res.statusCode = 302
res.end()

View File

@@ -1,5 +1,40 @@
# @blitzjs/next
## 2.0.0-alpha.62
### Patch Changes
- 31d7a6f4: Set prefix in moduleNameWrapper's options in Blitz's jest configuration
- @blitzjs/rpc@2.0.0-alpha.62
## 2.0.0-alpha.61
### Patch Changes
- @blitzjs/rpc@2.0.0-alpha.61
## 2.0.0-alpha.60
### Patch Changes
- @blitzjs/rpc@2.0.0-alpha.60
## 2.0.0-alpha.59
### Patch Changes
- 3b213a35: Export router-context from browser entrypoint
- Updated dependencies [3b213a35]
- @blitzjs/rpc@2.0.0-alpha.59
## 2.0.0-alpha.58
### Patch Changes
- 6ab9db78: Infer result type in the `api` handler and allow customizing it
- Updated dependencies [c721c104]
- @blitzjs/rpc@2.0.0-alpha.58
## 2.0.0-alpha.57
### Patch Changes

View File

@@ -21,6 +21,7 @@ function createJestConfigForNext(options) {
// This ensures any path aliases in tsconfig also work in jest
...pathsToModuleNameMapper(
(tsConfig && tsConfig.compilerOptions && tsConfig.compilerOptions.paths) || {},
{prefix: "<rootDir>/"},
),
"\\.(jpg|jpeg|png|gif|webp|ico)$": path.resolve(__dirname, "./jest-preset/image-mock.js"),
},

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/next",
"version": "2.0.0-alpha.57",
"version": "2.0.0-alpha.62",
"scripts": {
"build": "unbuild",
"dev": "pnpm predev && pnpm watch unbuild src --wait=0.2",
@@ -24,7 +24,7 @@
"eslint.js"
],
"dependencies": {
"@blitzjs/rpc": "2.0.0-alpha.57",
"@blitzjs/rpc": "2.0.0-alpha.62",
"@types/hoist-non-react-statics": "3.3.1",
"debug": "4.3.3",
"fs-extra": "10.0.1",
@@ -33,7 +33,7 @@
"superjson": "1.8.0"
},
"devDependencies": {
"@blitzjs/config": "workspace:2.0.0-alpha.57",
"@blitzjs/config": "workspace:2.0.0-alpha.62",
"@testing-library/dom": "8.13.0",
"@testing-library/jest-dom": "5.16.3",
"@testing-library/react": "13.0.0",
@@ -43,7 +43,7 @@
"@types/react": "18.0.1",
"@types/react-dom": "17.0.14",
"@types/testing-library__react-hooks": "4.0.0",
"blitz": "2.0.0-alpha.57",
"blitz": "2.0.0-alpha.62",
"cross-spawn": "7.0.3",
"find-up": "4.1.0",
"next": "12.2.0",

View File

@@ -19,6 +19,7 @@ import {RouterContext} from "./router-context"
export * from "./error-boundary"
export * from "./error-component"
export * from "./use-params"
export * from "./router-context"
export {Routes} from ".blitz"
const compose =

View File

@@ -40,10 +40,10 @@ export interface BlitzNextApiResponse
extends MiddlewareResponse,
Omit<NextApiResponse, keyof MiddlewareResponse> {}
export type NextApiHandler = (
export type NextApiHandler<TResult> = (
req: NextApiRequest,
res: BlitzNextApiResponse,
) => void | Promise<void>
) => TResult | void | Promise<TResult | void>
type SetupBlitzOptions = {
plugins: BlitzServerPlugin<RequestMiddleware, Ctx>[]
@@ -74,11 +74,11 @@ export type BlitzGSPHandler<
GetStaticProps<TProps, Query, PD>
>
export type BlitzAPIHandler = (
req: Parameters<NextApiHandler>[0],
res: Parameters<NextApiHandler>[1],
export type BlitzAPIHandler<TResult> = (
req: NextApiRequest,
res: BlitzNextApiResponse,
ctx: Ctx,
) => ReturnType<NextApiHandler>
) => TResult | void | Promise<TResult | void>
const prefetchQueryFactory = (
ctx: BlitzCtx,
@@ -151,7 +151,9 @@ export const setupBlitzServer = ({plugins, onError}: SetupBlitzOptions) => {
}
const api =
(handler: BlitzAPIHandler): NextApiHandler =>
<TResult = Promise<void> | void>(
handler: BlitzAPIHandler<TResult>,
): NextApiHandler<TResult | void> =>
async (req, res) => {
try {
await handleRequestWithMiddleware(req, res, middlewares)

View File

@@ -1,5 +1,46 @@
# @blitzjs/rpc
## 2.0.0-alpha.62
### Patch Changes
- Updated dependencies [365e6709]
- blitz@2.0.0-alpha.62
- @blitzjs/auth@2.0.0-alpha.62
## 2.0.0-alpha.61
### Patch Changes
- Updated dependencies [240f378b]
- blitz@2.0.0-alpha.61
- @blitzjs/auth@2.0.0-alpha.61
## 2.0.0-alpha.60
### Patch Changes
- Updated dependencies [1d863f35]
- blitz@2.0.0-alpha.60
- @blitzjs/auth@2.0.0-alpha.60
## 2.0.0-alpha.59
### Patch Changes
- 3b213a35: Remove debug console.log
- @blitzjs/auth@2.0.0-alpha.59
- blitz@2.0.0-alpha.59
## 2.0.0-alpha.58
### Patch Changes
- c721c104: Pass `signal` from useQuery to Blitz internal rpc client to be able to cancel queries on unmount
- Updated dependencies [83b35590]
- blitz@2.0.0-alpha.58
- @blitzjs/auth@2.0.0-alpha.58
## 2.0.0-alpha.57
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/rpc",
"version": "2.0.0-alpha.57",
"version": "2.0.0-alpha.62",
"scripts": {
"build": "unbuild",
"predev": "wait-on -d 250 ../blitz/dist/index-server.d.ts && wait-on -d 250 ../blitz-auth/dist/index-browser.d.ts",
@@ -20,7 +20,7 @@
"dist/**"
],
"dependencies": {
"@blitzjs/auth": "2.0.0-alpha.57",
"@blitzjs/auth": "2.0.0-alpha.62",
"b64-lite": "1.4.0",
"bad-behavior": "1.0.1",
"chalk": "^4.1.0",
@@ -30,11 +30,11 @@
"zod": "3.17.3"
},
"devDependencies": {
"@blitzjs/config": "workspace:2.0.0-alpha.57",
"@blitzjs/config": "workspace:2.0.0-alpha.62",
"@types/debug": "4.1.7",
"@types/react": "18.0.1",
"@types/react-dom": "17.0.14",
"blitz": "2.0.0-alpha.57",
"blitz": "2.0.0-alpha.62",
"next": "12.2.0",
"react": "18.0.0",
"react-dom": "18.0.0",
@@ -43,7 +43,7 @@
"watch": "1.0.2"
},
"peerDependencies": {
"blitz": "2.0.0-alpha.57",
"blitz": "2.0.0-alpha.62",
"next": ">=12.2.0"
},
"publishConfig": {

View File

@@ -85,7 +85,7 @@ export function useQuery<
const {data, ...queryRest} = useReactQuery({
queryKey: routerIsReady ? queryKey : ["_routerNotReady_"],
queryFn: routerIsReady
? () => enhancedResolverRpcClient(params, {fromQueryHook: true})
? ({signal}) => enhancedResolverRpcClient(params, {fromQueryHook: true}, signal)
: (emptyQueryFn as any),
...options,
enabled,
@@ -170,7 +170,7 @@ export function usePaginatedQuery<
const {data, ...queryRest} = useReactQuery({
queryKey: routerIsReady ? queryKey : ["_routerNotReady_"],
queryFn: routerIsReady
? () => enhancedResolverRpcClient(params, {fromQueryHook: true})
? ({signal}) => enhancedResolverRpcClient(params, {fromQueryHook: true}, signal)
: (emptyQueryFn as any),
...options,
keepPreviousData: true,
@@ -267,10 +267,8 @@ export function useInfiniteQuery<
// Without this cache for usePaginatedQuery and this will conflict and break.
queryKey: routerIsReady ? queryKey : ["_routerNotReady_"],
queryFn: routerIsReady
? ({pageParam}) =>
enhancedResolverRpcClient(getQueryParams(pageParam), {
fromQueryHook: true,
})
? ({pageParam, signal}) =>
enhancedResolverRpcClient(getQueryParams(pageParam), {fromQueryHook: true}, signal)
: (emptyQueryFn as any),
...options,
enabled,

View File

@@ -39,7 +39,7 @@ export interface EnhancedRpc {
}
export interface RpcClientBase<Input = unknown, Result = unknown> {
(params: Input, opts?: RpcOptions): Promise<Result>
(params: Input, opts?: RpcOptions, signal?: AbortSignal): Promise<Result>
}
export interface RpcClient<Input = unknown, Result = unknown>
@@ -57,7 +57,7 @@ export function __internal_buildRpcClient({
}: BuildRpcClientParams): RpcClient {
const fullRoutePath = normalizeApiRoute("/api/rpc" + routePath)
const httpClient: RpcClientBase = async (params, opts = {}) => {
const httpClient: RpcClientBase = async (params, opts = {}, signal = undefined) => {
const debug = (await import("debug")).default("blitz:rpc")
if (!opts.fromQueryHook && !opts.fromInvoke) {
console.warn(
@@ -93,9 +93,6 @@ export function __internal_buildRpcClient({
serialized = serialize(params)
}
// Create a new AbortController instance for this request
const controller = new AbortController()
const promise = window
.fetch(fullRoutePath, {
method: "POST",
@@ -108,7 +105,7 @@ export function __internal_buildRpcClient({
params: serialized.meta,
},
}),
signal: controller.signal,
signal,
})
.then(async (response) => {
debug("Received request for", routePath)

View File

@@ -1,5 +1,43 @@
# blitz
## 2.0.0-alpha.62
### Patch Changes
- 365e6709: Fixes the db seed command so that the database can disconnect after running the seed file.
- @blitzjs/generator@2.0.0-alpha.62
## 2.0.0-alpha.61
### Patch Changes
- 240f378b: Passes the correct arguments (without flags) to any bin command ran with the blitz cli
- @blitzjs/generator@2.0.0-alpha.61
## 2.0.0-alpha.60
### Patch Changes
- 1d863f35: Fix APP_ENV not being set before loading env config
- @blitzjs/generator@2.0.0-alpha.60
## 2.0.0-alpha.59
### Patch Changes
- @blitzjs/generator@2.0.0-alpha.59
## 2.0.0-alpha.58
### Minor Changes
- 83b35590: Truncate errors from `api/auth/<strategy>/callback` request to 100 characters before passing them to the `?authError=` query parameter
### Patch Changes
- Updated dependencies [e339e2fd]
- @blitzjs/generator@2.0.0-alpha.58
## 2.0.0-alpha.57
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "blitz",
"version": "2.0.0-alpha.57",
"version": "2.0.0-alpha.62",
"scripts": {
"build": "unbuild",
"dev": "watch unbuild src --wait=0.2",
@@ -23,7 +23,7 @@
"blitz": "bin/blitz"
},
"dependencies": {
"@blitzjs/generator": "2.0.0-alpha.57",
"@blitzjs/generator": "2.0.0-alpha.62",
"arg": "5.0.1",
"boxen": "7.0.0",
"chalk": "^4.1.0",
@@ -54,7 +54,7 @@
"watchpack": "2.1.1"
},
"devDependencies": {
"@blitzjs/config": "workspace:2.0.0-alpha.57",
"@blitzjs/config": "workspace:2.0.0-alpha.62",
"@types/cookie": "0.4.1",
"@types/cross-spawn": "6.0.2",
"@types/debug": "4.1.7",

View File

@@ -51,7 +51,7 @@ const runSeed = async (seedBasePath: string) => {
throw err
}
const db = require(dbPath)
const db = require(dbPath).default
await db.$disconnect()
console.log("Done Seeding")
}

View File

@@ -63,6 +63,7 @@ async function runCommandFromBin() {
process.exit(1)
}
let commandBin: string | null = null
try {
commandBin = await getCommandBin(args._[0])
} catch (e: any) {
@@ -73,7 +74,7 @@ async function runCommandFromBin() {
process.exit(1)
}
const result = spawn.sync(commandBin, process.argv.slice(3), {stdio: "inherit"})
const result = spawn.sync(commandBin, args._.slice(1), {stdio: "inherit"})
process.exit(result.status || 0)
}
@@ -120,6 +121,9 @@ async function printEnvInfo() {
}
async function main() {
if (args["--env"]) {
process.env.APP_ENV = args["--env"]
}
loadEnvConfig(process.cwd(), undefined, {error: console.error, info: console.info})
// Version is inlined into the file using taskr build pipeline
@@ -127,10 +131,6 @@ async function main() {
await printEnvInfo()
}
if (args["--env"]) {
process.env.APP_ENV = args["--env"]
}
if (args["--help"]) {
forwardedArgs.push("--help")
}

View File

@@ -142,3 +142,7 @@ export function prettyMs(ms: number): string {
export function interopDefault(mod: any) {
return mod.default || mod
}
export function truncateString(str: string, maxLength: number): string {
return str.length > maxLength ? str.substring(0, maxLength - 3) + "..." : str
}

View File

@@ -1,5 +1,48 @@
# @blitzjs/codemod
## 2.0.0-alpha.62
### Patch Changes
- Updated dependencies [365e6709]
- blitz@2.0.0-alpha.62
- @blitzjs/generator@2.0.0-alpha.62
## 2.0.0-alpha.61
### Patch Changes
- Updated dependencies [240f378b]
- blitz@2.0.0-alpha.61
- @blitzjs/generator@2.0.0-alpha.61
## 2.0.0-alpha.60
### Patch Changes
- Updated dependencies [1d863f35]
- blitz@2.0.0-alpha.60
- @blitzjs/generator@2.0.0-alpha.60
## 2.0.0-alpha.59
### Patch Changes
- @blitzjs/generator@2.0.0-alpha.59
- blitz@2.0.0-alpha.59
## 2.0.0-alpha.58
### Patch Changes
- dcdcd040: These are various changes to will make the codemod more dynamic and work with a larger variety of codebases. These fixes are implemented to make the codemod work with flightdeck.
- 7e538ba4: Import ErrorComponent as DefaultErrorComponent
- 8e00605a: Updates the error messages based on if it's a babel parse error or an unexpected error
- Updated dependencies [83b35590]
- Updated dependencies [e339e2fd]
- blitz@2.0.0-alpha.58
- @blitzjs/generator@2.0.0-alpha.58
## 2.0.0-alpha.57
### Patch Changes

View File

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

View File

@@ -184,6 +184,10 @@ const upgradeLegacy = async () => {
BlitzLayout: "@blitzjs/next",
}
const renames: Record<string, string> = {
ErrorComponent: "DefaultErrorComponent",
}
getAllFiles(appDir, [], [], [".ts", ".tsx", ".js", ".jsx"]).forEach((filename) => {
const program = getCollectionFromSource(path.resolve(appDir, filename))
const parsedProgram = program.get()
@@ -197,7 +201,13 @@ const upgradeLegacy = async () => {
? specifier.imported.value
: specifier.imported.name
if (importedName in specialImports) {
addNamedImport(program, importedName, specialImports[importedName]!)
addNamedImport(
program,
importedName,
specialImports[importedName]!,
undefined,
renames[importedName],
)
removeImport(program, importedName, "blitz")
}
})
@@ -433,6 +443,7 @@ const upgradeLegacy = async () => {
j.Identifier,
(node) => node.name === "middleware",
)
if (middlewareArray.length) {
const middlewares = middlewareArray
.get()
@@ -451,7 +462,12 @@ const upgradeLegacy = async () => {
let importStatements = []
for (let nodes of blitzConfigProgram.get().value.program.body) {
if (nodes.type === "ImportDeclaration") {
if (nodes.source.value !== "blitz") {
// Find duplicates
const dup = blitzServerProgram.find(
j.ImportDeclaration,
(node) => node.source.value === nodes.source.value,
)
if (nodes.source.value !== "blitz" && !dup.length) {
importStatements.push(nodes)
}
}
@@ -466,11 +482,7 @@ const upgradeLegacy = async () => {
}
}
importStatements.forEach((s) =>
blitzServerProgram
.get()
.value.program.body.unshift(j.variableDeclaration(s.kind, s.declarations)),
)
importStatements.forEach((s) => blitzServerProgram.get().value.program.body.unshift(s))
fs.writeFileSync(
`${appDir}/blitz-server.${isTypescript ? "ts" : "js"}`,
@@ -741,40 +753,50 @@ const upgradeLegacy = async () => {
const parsedProgram = program.get()
const findRouterQueryImport = findImport(program, "next/router")
findRouterQueryImport?.forEach((node) => {
const getNode = node.get()
getNode.value.specifiers.slice().forEach((specifier: any, index: number) => {
const importedName =
specifier.imported.type === "StringLiteral"
? specifier.imported.value
: specifier.imported.name
if (importedName === "useRouterQuery") {
addNamedImport(program, "useRouter", "next/router")
getNode.value.specifiers.splice(index, 1)
// Removed left overs
if (!getNode.value.specifiers?.length) {
const index = parsedProgram.value.program.body.indexOf(getNode.value)
parsedProgram.value.program.body.splice(index, 1)
if (findRouterQueryImport?.length) {
findRouterQueryImport?.forEach((node) => {
const getNode = node.get()
getNode.value.specifiers.slice().forEach((specifier: any, index: number) => {
const importedName = (): string | null => {
if (specifier.imported) {
if (specifier.imported.type === "StringLiteral") {
return specifier.imported.value
} else if (specifier.imported.type === "Identifier") {
return specifier.imported.name
}
}
return null
}
}
if (importedName() && importedName() === "useRouterQuery") {
addNamedImport(program, "useRouter", "next/router")
getNode.value.specifiers.splice(index, 1)
// Removed left overs
if (!getNode.value.specifiers?.length) {
const index = parsedProgram.value.program.body.indexOf(getNode.value)
parsedProgram.value.program.body.splice(index, 1)
}
}
})
})
})
const findCallUseRouterQuery = program.find(
j.CallExpression,
(node) => node.callee.name === "useRouterQuery",
)
findCallUseRouterQuery.forEach((call) => {
const nodePath = call.get()
nodePath.parentPath.value.init = j.expressionStatement(
j.memberExpression(
j.callExpression(j.identifier("useRouter"), []),
j.identifier("query"),
),
const findCallUseRouterQuery = program.find(
j.CallExpression,
(node) => node.callee.name === "useRouterQuery",
)
})
findCallUseRouterQuery.forEach((call) => {
const nodePath = call.get()
nodePath.parentPath.value.init = j.expressionStatement(
j.memberExpression(
j.callExpression(j.identifier("useRouter"), []),
j.identifier("query"),
),
)
})
fs.writeFileSync(filepath, program.toSource())
fs.writeFileSync(filepath, program.toSource())
}
})
getAllFiles(appDir, [], [], [".ts", ".tsx", ".js", ".jsx"]).forEach((file) => {
@@ -786,45 +808,54 @@ const upgradeLegacy = async () => {
j.ImportDeclaration,
(node) => node.source.value === "next/router",
)
findRouterQueryImport.forEach((node) => {
const getNode = node.get()
getNode.value.specifiers.slice().forEach((specifier: any, index: number) => {
const importedName =
specifier.imported.type === "StringLiteral"
? specifier.imported.value
: specifier.imported.name
if (importedName === "useRouterQuery") {
parsedProgram.value.program.body.unshift(
j.importDeclaration(
[j.importSpecifier(j.identifier("useRouter"))],
j.stringLiteral("next/router"),
),
)
getNode.value.specifiers.splice(index, 1)
// Removed left overs
if (!getNode.value.specifiers?.length) {
const index = parsedProgram.value.program.body.indexOf(getNode.value)
parsedProgram.value.program.body.splice(index, 1)
if (findRouterQueryImport?.length) {
findRouterQueryImport.forEach((node) => {
const getNode = node.get()
getNode.value.specifiers.slice().forEach((specifier: any, index: number) => {
const importedName = (): string | null => {
if (specifier.imported) {
if (specifier.imported.type === "StringLiteral") {
return specifier.imported.value
} else if (specifier.imported.type === "Identifier") {
return specifier.imported.name
}
}
return null
}
}
if (importedName() && importedName() === "useRouterQuery") {
parsedProgram.value.program.body.unshift(
j.importDeclaration(
[j.importSpecifier(j.identifier("useRouter"))],
j.stringLiteral("next/router"),
),
)
getNode.value.specifiers.splice(index, 1)
// Removed left overs
if (!getNode.value.specifiers?.length) {
const index = parsedProgram.value.program.body.indexOf(getNode.value)
parsedProgram.value.program.body.splice(index, 1)
}
}
})
})
})
const findCallUseRouterQuery = program.find(
j.CallExpression,
(node) => node.callee.name === "useRouterQuery",
)
findCallUseRouterQuery.forEach((call) => {
const nodePath = call.get()
nodePath.parentPath.value.init = j.expressionStatement(
j.memberExpression(
j.callExpression(j.identifier("useRouter"), []),
j.identifier("query"),
),
const findCallUseRouterQuery = program.find(
j.CallExpression,
(node) => node.callee.name === "useRouterQuery",
)
})
findCallUseRouterQuery.forEach((call) => {
const nodePath = call.get()
nodePath.parentPath.value.init = j.expressionStatement(
j.memberExpression(
j.callExpression(j.identifier("useRouter"), []),
j.identifier("query"),
),
)
})
fs.writeFileSync(filepath, program.toSource())
fs.writeFileSync(filepath, program.toSource())
}
})
},
})
@@ -907,9 +938,11 @@ const upgradeLegacy = async () => {
)
const documentHead = program
.find(j.Identifier, (node) => node.name === "DocumentHead")
.find(j.JSXElement, (node) => node.openingElement.name.name === "DocumentHead")
.get()
documentHead.value.name = "Head"
documentHead.value.openingElement.name.name = "Head"
documentHead.value.closingElement.name.name = "Head"
const blitzScript = program.find(j.Identifier, (node) => node.name === "BlitzScript").get()
blitzScript.value.name = "NextScript"
@@ -959,15 +992,20 @@ const upgradeLegacy = async () => {
const program = getCollectionFromSource(file)
const defaultExportPath = findDefaultExportPath(program)
if (!defaultExportPath) {
return
if (defaultExportPath) {
const {node} = defaultExportPath
if (node.declaration.type === "Identifier") {
node.declaration = j.callExpression(j.identifier("api"), [node.declaration as any])
addNamedImport(program, "api", "app/blitz-server")
} else if (node.declaration.type === "FunctionDeclaration") {
node.declaration = j.template.expression`api(${node.declaration})`
addNamedImport(program, "api", "app/blitz-server")
}
fs.writeFileSync(path.join(path.resolve(file)), program.toSource())
}
const {node} = defaultExportPath
node.declaration = j.callExpression(j.identifier("api"), [node.declaration as any])
addNamedImport(program, "api", "app/blitz-server")
fs.writeFileSync(path.join(path.resolve(file)), program.toSource())
})
}
},
@@ -1118,8 +1156,23 @@ const upgradeLegacy = async () => {
try {
await step.action()
} catch (err) {
const error = err as {code: string} | string
spinner.fail(`${step.name}`)
log.error(err as string)
log.error(error as string)
if (error && typeof error === "object" && error.code === "BABEL_PARSE_ERROR") {
log.error(
log.withBrand(
"Don't panic, go to the file with the error & manually fix it. Then run the codemod again. It will continue where it left off.",
),
)
} else {
log.error(
log.withBrand(
"This is an unexpected error. Please ask for help in the discord #general-help channel. https://discord.blitzjs.com",
),
)
}
failedAt = index + 1
fs.writeJsonSync(".migration.json", {
failedAt,

View File

@@ -168,6 +168,7 @@ export function addNamedImport(
importStatement: string,
importFrom: string,
defaultSpecifier?: boolean,
asImport?: string,
) {
const existingImport = program.find(
j.ImportDeclaration,
@@ -183,7 +184,11 @@ export function addNamedImport(
if (existingSpecifier.length) {
return
}
existingImport.get().value.specifiers.push(j.importSpecifier(j.identifier(importStatement)))
existingImport
.get()
.value.specifiers.push(
j.importSpecifier(j.identifier(importStatement), asImport ? j.identifier(asImport) : null),
)
} else {
program
.get()
@@ -194,7 +199,12 @@ export function addNamedImport(
j.stringLiteral(importFrom),
)
: j.importDeclaration(
[j.importSpecifier(j.identifier(importStatement))],
[
j.importSpecifier(
j.identifier(importStatement),
asImport ? j.identifier(asImport) : null,
),
],
j.stringLiteral(importFrom),
),
)

View File

@@ -1,5 +1,15 @@
# @blitzjs/config
## 2.0.0-alpha.62
## 2.0.0-alpha.61
## 2.0.0-alpha.60
## 2.0.0-alpha.59
## 2.0.0-alpha.58
## 2.0.0-alpha.57
## 2.0.0-alpha.56

View File

@@ -1,7 +1,7 @@
{
"name": "@blitzjs/config",
"private": true,
"version": "2.0.0-alpha.57",
"version": "2.0.0-alpha.62",
"license": "MIT",
"dependencies": {
"@typescript-eslint/eslint-plugin": "5.9.1",

View File

@@ -1,5 +1,19 @@
# @blitzjs/generator
## 2.0.0-alpha.62
## 2.0.0-alpha.61
## 2.0.0-alpha.60
## 2.0.0-alpha.59
## 2.0.0-alpha.58
### Patch Changes
- e339e2fd: Add hoist pattern entry for react-query in new app templates
## 2.0.0-alpha.57
## 2.0.0-alpha.56

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/generator",
"version": "2.0.0-alpha.57",
"version": "2.0.0-alpha.62",
"scripts": {
"dev": "watch unbuild src --wait=0.2",
"build": "unbuild && pnpm build:templates",
@@ -45,7 +45,7 @@
"vinyl": "2.2.1"
},
"devDependencies": {
"@blitzjs/config": "2.0.0-alpha.57",
"@blitzjs/config": "2.0.0-alpha.62",
"@juanm04/cpx": "2.0.1",
"@types/babel__core": "7.1.19",
"@types/diff": "5.0.2",

View File

@@ -1,7 +1,9 @@
save-exact=true
legacy-peer-deps=true
strict-peer-dependencies=false
strict-peer-dependencies=false
side-effects-cache=false
public-hoist-pattern[]=react-query
public-hoist-pattern[]=next
public-hoist-pattern[]=secure-password
public-hoist-pattern[]=*jest*

View File

@@ -25,7 +25,7 @@
"@blitzjs/auth": "alpha",
"@blitzjs/next": "alpha",
"@blitzjs/rpc": "alpha",
"@prisma/client": "3.9.0",
"@prisma/client": "4.0.0",
"blitz": "alpha",
"next": "12.2.0",
"prisma": "4.0.0",

View File

@@ -25,7 +25,7 @@
"@blitzjs/auth": "alpha",
"@blitzjs/next": "alpha",
"@blitzjs/rpc": "alpha",
"@prisma/client": "3.9.0",
"@prisma/client": "4.0.0",
"blitz": "alpha",
"next": "12.2.0",
"prisma": "4.0.0",

View File

@@ -1,9 +1,11 @@
save-exact=true
legacy-peer-deps=true
strict-peer-dependencies=false
strict-peer-dependencies=false
side-effects-cache=false
public-hoist-pattern[]=react-query
public-hoist-pattern[]=next
public-hoist-pattern[]=secure-password
public-hoist-pattern[]=*jest*
public-hoist-pattern[]=@testing-library/*
# Needed for Blitz to work properly. Don't remove the lines above.
# Needed for Blitz to work properly. Don't remove the lines above.

View File

@@ -25,7 +25,7 @@
"@typescript-eslint/parser": "5.9.1"
},
"devDependencies": {
"@blitzjs/config": "2.0.0-alpha.57",
"@blitzjs/config": "2.0.0-alpha.62",
"@types/react": "18.0.1",
"@types/react-dom": "17.0.14",
"react": "18.0.0",

70
pnpm-lock.yaml generated
View File

@@ -41,7 +41,7 @@ importers:
"@blitzjs/rpc": workspace:*
"@hookform/resolvers": 2.8.8
"@next/bundle-analyzer": 12.0.8
"@prisma/client": 3.9.0
"@prisma/client": 4.0.0
"@testing-library/react": 13.0.0
"@testing-library/react-hooks": 7.0.2
"@types/jest": 27.4.1
@@ -49,7 +49,7 @@ importers:
"@types/preview-email": 2.0.1
"@types/react": 18.0.1
"@typescript-eslint/eslint-plugin": 5.9.1
blitz: workspace:2.0.0-alpha.56
blitz: workspace:2.0.0-alpha.61
eslint: 7.32.0
eslint-config-next: 12.2.0
eslint-config-prettier: 8.5.0
@@ -74,7 +74,7 @@ importers:
"@blitzjs/next": link:../../packages/blitz-next
"@blitzjs/rpc": link:../../packages/blitz-rpc
"@hookform/resolvers": 2.8.8_react-hook-form@7.29.0
"@prisma/client": 3.9.0_prisma@4.0.0
"@prisma/client": 4.0.0_prisma@4.0.0
blitz: link:../../packages/blitz
next: 12.2.0_zpnidt7m3osuk7shl3s4oenomq
prisma: 4.0.0
@@ -111,7 +111,7 @@ importers:
"@blitzjs/next": workspace:*
"@blitzjs/rpc": workspace:*
"@next/bundle-analyzer": 12.0.8
"@prisma/client": 3.9.0
"@prisma/client": 4.0.0
"@types/jest": 27.4.1
"@types/passport-twitter": 1.0.37
"@types/react": 18.0.1
@@ -131,7 +131,7 @@ importers:
"@blitzjs/config": link:../../packages/config
"@blitzjs/next": link:../../packages/blitz-next
"@blitzjs/rpc": link:../../packages/blitz-rpc
"@prisma/client": 3.9.0_prisma@4.0.0
"@prisma/client": 4.0.0_prisma@4.0.0
"@types/jest": 27.4.1
"@types/passport-twitter": 1.0.37
blitz: link:../../packages/blitz
@@ -155,7 +155,7 @@ importers:
"@blitzjs/config": workspace:*
"@blitzjs/next": workspace:*
"@next/bundle-analyzer": 12.0.8
"@prisma/client": 3.9.0
"@prisma/client": 4.0.0
"@types/express": 4.17.13
"@types/fs-extra": 9.0.13
"@types/node-fetch": 2.6.1
@@ -176,7 +176,7 @@ importers:
"@blitzjs/auth": link:../../packages/blitz-auth
"@blitzjs/config": link:../../packages/config
"@blitzjs/next": link:../../packages/blitz-next
"@prisma/client": 3.9.0_prisma@4.0.0
"@prisma/client": 4.0.0_prisma@4.0.0
blitz: link:../../packages/blitz
lowdb: 3.0.0
next: 12.2.0_zpnidt7m3osuk7shl3s4oenomq
@@ -242,7 +242,7 @@ importers:
"@blitzjs/next": workspace:*
"@blitzjs/rpc": workspace:*
"@next/bundle-analyzer": 12.0.8
"@prisma/client": 3.9.0
"@prisma/client": 4.0.0
"@types/express": 4.17.13
"@types/fs-extra": 9.0.13
"@types/node-fetch": 2.6.1
@@ -263,7 +263,7 @@ importers:
"@blitzjs/auth": link:../../packages/blitz-auth
"@blitzjs/next": link:../../packages/blitz-next
"@blitzjs/rpc": link:../../packages/blitz-rpc
"@prisma/client": 3.9.0_prisma@4.0.0
"@prisma/client": 4.0.0_prisma@4.0.0
blitz: link:../../packages/blitz
lowdb: 3.0.0
next: 12.2.0_zpnidt7m3osuk7shl3s4oenomq
@@ -290,7 +290,7 @@ importers:
"@blitzjs/config": workspace:*
"@blitzjs/next": workspace:*
"@blitzjs/rpc": workspace:*
"@prisma/client": 3.9.0
"@prisma/client": 4.0.0
"@testing-library/react": 13.0.0
"@types/react": 18.0.1
"@vitejs/plugin-react": 1.3.0
@@ -311,7 +311,7 @@ importers:
"@blitzjs/config": link:../../packages/config
"@blitzjs/next": link:../../packages/blitz-next
"@blitzjs/rpc": link:../../packages/blitz-rpc
"@prisma/client": 3.9.0_prisma@4.0.0
"@prisma/client": 4.0.0_prisma@4.0.0
blitz: link:../../packages/blitz
next: 12.2.0_zpnidt7m3osuk7shl3s4oenomq
prisma: 4.0.0
@@ -373,7 +373,7 @@ importers:
"@blitzjs/next": workspace:*
"@blitzjs/rpc": workspace:*
"@next/bundle-analyzer": 12.0.8
"@prisma/client": 3.9.0
"@prisma/client": 4.0.0
"@types/express": 4.17.13
"@types/fs-extra": 9.0.13
"@types/node-fetch": 2.6.1
@@ -394,7 +394,7 @@ importers:
"@blitzjs/auth": link:../../packages/blitz-auth
"@blitzjs/next": link:../../packages/blitz-next
"@blitzjs/rpc": link:../../packages/blitz-rpc
"@prisma/client": 3.9.0_prisma@4.0.0
"@prisma/client": 4.0.0_prisma@4.0.0
blitz: link:../../packages/blitz
lowdb: 3.0.0
next: 12.2.0_zpnidt7m3osuk7shl3s4oenomq
@@ -475,8 +475,8 @@ importers:
packages/blitz:
specifiers:
"@blitzjs/config": workspace:2.0.0-alpha.56
"@blitzjs/generator": 2.0.0-alpha.56
"@blitzjs/config": workspace:2.0.0-alpha.61
"@blitzjs/generator": 2.0.0-alpha.61
"@types/cookie": 0.4.1
"@types/cross-spawn": 6.0.2
"@types/debug": 4.1.7
@@ -584,7 +584,7 @@ importers:
packages/blitz-auth:
specifiers:
"@blitzjs/config": workspace:2.0.0-alpha.56
"@blitzjs/config": workspace:2.0.0-alpha.61
"@testing-library/react": 13.0.0
"@testing-library/react-hooks": 7.0.2
"@types/b64-lite": 1.3.0
@@ -598,7 +598,7 @@ importers:
"@types/secure-password": 3.1.1
b64-lite: 1.4.0
bad-behavior: 1.0.1
blitz: 2.0.0-alpha.56
blitz: 2.0.0-alpha.61
cookie: 0.4.1
cookie-session: 2.0.0
debug: 4.3.3
@@ -649,8 +649,8 @@ importers:
packages/blitz-next:
specifiers:
"@blitzjs/config": workspace:2.0.0-alpha.56
"@blitzjs/rpc": 2.0.0-alpha.56
"@blitzjs/config": workspace:2.0.0-alpha.61
"@blitzjs/rpc": 2.0.0-alpha.61
"@testing-library/dom": 8.13.0
"@testing-library/jest-dom": 5.16.3
"@testing-library/react": 13.0.0
@@ -661,7 +661,7 @@ importers:
"@types/react": 18.0.1
"@types/react-dom": 17.0.14
"@types/testing-library__react-hooks": 4.0.0
blitz: 2.0.0-alpha.56
blitz: 2.0.0-alpha.61
cross-spawn: 7.0.3
debug: 4.3.3
find-up: 4.1.0
@@ -710,14 +710,14 @@ importers:
packages/blitz-rpc:
specifiers:
"@blitzjs/auth": 2.0.0-alpha.56
"@blitzjs/config": workspace:2.0.0-alpha.56
"@blitzjs/auth": 2.0.0-alpha.61
"@blitzjs/config": workspace:2.0.0-alpha.61
"@types/debug": 4.1.7
"@types/react": 18.0.1
"@types/react-dom": 17.0.14
b64-lite: 1.4.0
bad-behavior: 1.0.1
blitz: 2.0.0-alpha.56
blitz: 2.0.0-alpha.61
chalk: ^4.1.0
debug: 4.3.3
next: 12.2.0
@@ -759,12 +759,12 @@ importers:
"@babel/plugin-syntax-typescript": 7.17.12
"@babel/preset-env": 7.12.10
"@blitzjs/config": workspace:*
"@blitzjs/generator": 2.0.0-alpha.56
"@blitzjs/generator": 2.0.0-alpha.61
"@types/jscodeshift": 0.11.2
"@types/node": 17.0.16
arg: 5.0.1
ast-types: 0.14.2
blitz: 2.0.0-alpha.56
blitz: 2.0.0-alpha.61
chalk: ^4.1.0
cross-spawn: 7.0.3
debug: 4.3.3
@@ -819,7 +819,7 @@ importers:
"@babel/plugin-transform-typescript": 7.12.1
"@babel/preset-env": 7.12.10
"@babel/types": 7.12.10
"@blitzjs/config": 2.0.0-alpha.56
"@blitzjs/config": 2.0.0-alpha.61
"@juanm04/cpx": 2.0.1
"@mrleebo/prisma-ast": 0.2.6
"@types/babel__core": 7.1.19
@@ -910,7 +910,7 @@ importers:
packages/pkg-template:
specifiers:
"@blitzjs/config": 2.0.0-alpha.56
"@blitzjs/config": 2.0.0-alpha.61
"@types/react": 18.0.1
"@types/react-dom": 17.0.14
"@typescript-eslint/eslint-plugin": 5.9.1
@@ -3645,12 +3645,12 @@ packages:
}
dev: true
/@prisma/client/3.9.0_prisma@4.0.0:
/@prisma/client/4.0.0_prisma@4.0.0:
resolution:
{
integrity: sha512-PByWVI7l+KYUQL/pqR81363qhUh3LhYMIYn2czz5slbt3JC6aAk+Wm7PE9nalqSE6s4xSIYdHj6N0yTNqr86sA==,
integrity: sha512-g1h2OGoRo7anBVQ9Cw3gsbjwPtvf7i0pkGxKeZICtwkvE5CZXW+xZF4FZdmrViYkKaAShbISL0teNpu9ecpf4g==,
}
engines: {node: ">=12.6"}
engines: {node: ">=14.17"}
requiresBuild: true
peerDependencies:
prisma: "*"
@@ -3658,14 +3658,14 @@ packages:
prisma:
optional: true
dependencies:
"@prisma/engines-version": 3.9.0-58.bcc2ff906db47790ee902e7bbc76d7ffb1893009
"@prisma/engines-version": 3.16.0-49.da41d2bb3406da22087b849f0e911199ba4fbf11
prisma: 4.0.0
dev: false
/@prisma/engines-version/3.9.0-58.bcc2ff906db47790ee902e7bbc76d7ffb1893009:
/@prisma/engines-version/3.16.0-49.da41d2bb3406da22087b849f0e911199ba4fbf11:
resolution:
{
integrity: sha512-5Dh+qTDhpPR66w6NNAnPs+/W/Qt4r1DSd+qhfPFcDThUK4uxoZKGlPb2IYQn5LL+18aIGnmteDf7BnVMmvBNSQ==,
integrity: sha512-PiZhdD624SrYEjyLboI0X7OugNbxUzDJx9v/6ldTKuqNDVUCmRH/Z00XwDi/dgM4FlqOSO+YiUsSiSKjxxG8cw==,
}
dev: false
@@ -10984,7 +10984,7 @@ packages:
pretty-format: 27.5.1
slash: 3.0.0
strip-json-comments: 3.1.1
ts-node: 10.7.0_fxg3r7oju3tntkxsvleuiot4fa
ts-node: 10.7.0_typescript@4.6.3
transitivePeerDependencies:
- bufferutil
- canvas
@@ -16138,6 +16138,7 @@ packages:
typescript: 4.6.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
dev: false
/ts-node/10.7.0_typescript@4.6.3:
resolution:
@@ -16170,7 +16171,6 @@ packages:
typescript: 4.6.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
dev: false
/tsconfig-paths/3.14.1:
resolution: