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

Compare commits

...

438 Commits

Author SHA1 Message Date
Brandon Bayer
59272f7334 v0.36.4 2021-06-02 13:21:09 -04:00
Brandon Bayer
3416e097d8 Add helpful error when trying blitz export with blitz auth (patch) (#2435) 2021-06-02 13:11:22 -04:00
Brandon Bayer
49e7abbdfe add couple missing dependencies to @blitzjs/cli package (patch) (#2439) 2021-06-02 13:09:51 -04:00
Blitz.js Bot
a00f162bca (meta) added @swinner2 as contributor 2021-06-01 17:25:53 -04:00
Sean Winner
31498e2d46 Fix so blitz new always generates valid cookiePrefix (#2427)
Co-authored-by: Brandon Bayer <b@bayer.ws>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> (patch)
2021-06-01 17:25:49 -04:00
Blitz.js Bot
6b463fcdd1 (meta) added @AntoineGuestin as contributor 2021-06-01 16:05:35 -04:00
Antoine G
e1785f97a9 add debug to blitz package (#2426)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-06-01 20:05:30 +00:00
Brandon Bayer
d4dc932bc3 remove CI from canary branch
(meta)
2021-06-01 15:33:03 -04:00
Brandon Bayer
750ba2e429 add to nextjs fork instructions
(ignore)
2021-06-01 14:43:00 -04:00
Brandon Bayer
a4e4cb2f64 git subrepo push --force nextjs
subrepo:
  subdir:   "nextjs"
  merged:   "9d5938e8f"
upstream:
  origin:   "git@github.com:blitz-js/next.js.git"
  branch:   "canary"
  commit:   "9d5938e8f"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"
2021-06-01 14:41:43 -04:00
Brandon Bayer
c5b461c641 fix nextjs subrepo
(ignore)
2021-06-01 10:26:46 -04:00
Brandon Bayer
174bf32c84 remove nextjs experimental react github action
(ignore)
2021-06-01 10:22:24 -04:00
Blitz.js Bot
cb432b6276 (meta) added @ormarek as contributor 2021-05-29 20:17:25 -04:00
Brandon Bayer
1ff0f00715 bump recipe/example versions (ignore) 2021-05-29 18:48:21 -04:00
Brandon Bayer
a3cf482e8f v0.36.3 2021-05-29 18:47:06 -04:00
Brandon Bayer
684b3f34c8 Fix broken Vercel deployments from version 0.35+ (patch) (#2419) 2021-05-29 18:45:14 -04:00
Brandon Bayer
f547f311f7 Fix third-party recipes not working (patch) (#2418) 2021-05-29 18:44:51 -04:00
Brandon Bayer
e7dc1b8352 Fix caught authentication errors showing as uncaught in Firefox (patch) (#2417) 2021-05-29 18:18:18 -04:00
Brandon Bayer
8fb8608e49 (newapp) Fix zod bug on /reset-password page
closes: #2414
2021-05-29 17:23:05 -04:00
Brandon Bayer
63e200e173 bump recipe/example versions (ignore) 2021-05-28 17:16:00 -04:00
Brandon Bayer
53bb153df8 v0.36.2 2021-05-28 17:14:14 -04:00
Brandon Bayer
3727385cd6 yet another fix
(ignore)
2021-05-28 17:11:44 -04:00
Brandon Bayer
1de36fd8dd v0.36.1 2021-05-28 17:10:05 -04:00
Brandon Bayer
5e2dafe519 another build fix
(ignore)
2021-05-28 17:07:12 -04:00
Brandon Bayer
8f08f38d80 fix build (ignore) 2021-05-28 17:06:02 -04:00
Brandon Bayer
61b8c95be8 v0.36.0 2021-05-28 17:03:39 -04:00
Brandon Bayer
a429013360 fix inability to install recipes for npm users (patch) (#2404) 2021-05-28 17:01:38 -04:00
Brandon Bayer
01c609be9e Add BlitzConfig type and add it to newapp template (#2411)
(minor)
2021-05-28 17:01:04 -04:00
Brandon Bayer
7e333955aa Upgrade nextjs to 10.2.3 (#2409)
(patch)
2021-05-28 16:18:58 -04:00
Brandon Bayer
0bfa5fdb7a add cross-spawn to blitz package (#2410)
(ignore)
2021-05-28 16:18:41 -04:00
JuanM04
27336d423a Upgrade templates to work with Zod v3 (#2375)
(minor)
2021-05-28 16:16:47 -04:00
Brandon Bayer
fa82ac913f git subrepo push nextjs
subrepo:
  subdir:   "nextjs"
  merged:   "17f3f0f88"
upstream:
  origin:   "git@github.com:blitz-js/next.js.git"
  branch:   "canary"
  commit:   "17f3f0f88"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"
2021-05-28 15:08:01 -04:00
Blitz.js Bot
65405b6f43 (meta) added @timbooker as contributor 2021-05-28 12:35:36 -04:00
Tim
ada67b5aed Fix queries & mutations to work with trailing slash config (patch) (#2392)
* Added trailingslash support for API endpoints.

* Accidentally RM'd actual condition it was meant to be based upon.

* simplify integration test

Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-05-28 16:35:31 +00:00
Blitz.js Bot
3dcc885186 (meta) added @guoqqqi as contributor 2021-05-28 11:12:22 -04:00
guoqqqi
0ce552c90e add contributor over time graph to CONTRIBUTOR_STATS (#2397)
(meta)
2021-05-28 11:12:17 -04:00
Mark Hughes
ec3930ca46 add support for nonce and crossOrigin in BlitzScript (#2377)
(minor)
2021-05-28 11:11:25 -04:00
Brandon Bayer
e3a5420cea Upgrade react-query and Fix CancelledError when clicking Logout (patch) (#2406) 2021-05-27 18:41:55 -04:00
Brandon Bayer
4156368b75 fix bug: cannot find module next/constants (patch) (#2402)
* fix bug of cannot find module `next/constants` (patch)

* fix

* fix

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-05-27 20:45:47 +00:00
Brandon Bayer
632df97342 bump recipe/example versions (ignore) 2021-05-26 17:39:24 -04:00
Brandon Bayer
eae332b0c7 v0.35.2 2021-05-26 17:38:14 -04:00
Brandon Bayer
7fdd07e598 (newapp) Fix typescript issue in forgotPassword.test.ts
closes: #2378
2021-05-26 17:34:50 -04:00
Blitz.js Bot
a328b6c19c (meta) updated @mabadir contributions 2021-05-26 17:30:25 -04:00
Mina Abadir
7e22f61079 Add Mina as L1 maintainer (#2391)
(meta)
2021-05-26 17:30:20 -04:00
Brandon Bayer
719d867eea remove debug log from cli (patch) 2021-05-26 17:29:23 -04:00
Brandon Bayer
3501f29521 bump recipe/example versions (ignore) 2021-05-26 17:15:57 -04:00
Brandon Bayer
d86b885897 v0.35.1 2021-05-26 16:14:40 -05:00
Blitz.js Bot
2302786e60 (meta) added @chronark as contributor 2021-05-26 06:50:25 -04:00
Brandon Bayer
0f4c2fb226 Only build blitz config when needed and Fix blitz.config.js not found error (patch) (#2389)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-05-25 16:00:21 -04:00
Blitz.js Bot
1e29525ef0 (meta) added @nimashoghi as contributor 2021-05-25 14:01:35 -04:00
Nima Shoghi
4a9776c94e Fixed blitz compile bug when noPropertyAccessFromIndexSignature is true (#2385)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-05-25 18:01:30 +00:00
Blitz.js Bot
ac67dc05e4 (meta) added @benbender as contributor 2021-05-25 11:57:49 -04:00
Benjamin Bender
662065380b Fix Regression on Tailwind Recipe purging in production (#2383)
Fix Regression on Tailwind Recipe for css-purging in production (originally fixed in #930, broken since #2304)
2021-05-25 11:57:45 -04:00
Blitz.js Bot
059e75ae08 (meta) added @Dipeshwagle as contributor 2021-05-25 11:41:03 -04:00
Dipesh Wagle
684f74bf6f Fix HEAD requests 'Cannot read property '$authorize' of undefined' (#2364)
(patch)
2021-05-25 11:40:58 -04:00
Brandon Bayer
573ffa7d34 disable the react@next cron workflow
(ignore)
2021-05-24 09:59:52 -05:00
Blitz.js Bot
e22a44ba77 (meta) added @enemycnt as contributor 2021-05-21 18:37:51 -04:00
Simon Knott
cea66f9f1b Allow passing Route Manifest result to Page.authenticate.redirectTo (#2359)
(patch)
2021-05-19 10:56:34 -04:00
Blitz.js Bot
2e05dec219 (meta) added @frankiesardo as contributor 2021-05-19 10:45:35 -04:00
Brandon Bayer
df2f83092a bump recipe/example versions (ignore) 2021-05-17 18:46:59 -04:00
Brandon Bayer
782a71026e v0.35.0 2021-05-17 18:45:44 -04:00
Blitz.js Bot
62fb61fa56 (meta) added @mabadir as contributor 2021-05-17 18:41:01 -04:00
Mina Abadir
af9df4cda4 Use cookie prefix from config.blitz.js instead of package.json name field (#2311)
Co-authored-by: Brandon Bayer <b@bayer.ws> (major)
2021-05-17 18:40:55 -04:00
Simon Knott
a535b7f458 Allow using Route Manifest for Page.redirectAuthenticatedTo (#2243)
(minor)
2021-05-17 18:29:36 -04:00
Simon Knott
79ca87ef71 Fix Routes.X is not a function when inside a monorepo
(patch)
2021-05-17 17:57:10 -04:00
Blitz.js Bot
1034b0189a (meta) added @Patil2099 as contributor 2021-05-17 17:18:32 -04:00
Blitz.js Bot
3ca262d5e3 (meta) added @swiftgaruda as contributor 2021-05-16 18:43:52 -04:00
Blitz.js Bot
b5d7095408 (meta) added @fernvilla as contributor 2021-05-14 11:21:52 -04:00
Fernando Villasenor
8ff005f9e6 Default dependencies parameter to empty object when undefined - fixes #2339 (#2340) 2021-05-14 15:21:47 +00:00
JuanM04
830e92e956 Added userTrack image to assets 2021-05-12 08:27:43 -03:00
Blitz.js Bot
f6ee4b4753 (meta) added @craigglennie as contributor 2021-05-11 06:28:17 -04:00
Brandon Bayer
6e9e787500 bump recipe/example versions (ignore) 2021-05-10 18:42:47 -04:00
Brandon Bayer
37f3c951d8 v0.35.0-canary.6 2021-05-10 18:41:39 -04:00
Brandon Bayer
c9be82c5f8 add ability to increase bodyParser size for queries & mutations (#2328)
(minor)
2021-05-10 18:40:13 -04:00
Brandon Bayer
e67291fa11 fix flaky cypress test
(ignore)
2021-05-10 18:39:05 -04:00
Brandon Bayer
93f7b8f981 fix incorrect csrf warning log
(ignore)
2021-05-10 18:39:05 -04:00
Brandon Bayer
0595a951b3 fix to not compile blitz.config.js if it is using tsconfig-paths/register (#2327)
(patch)
2021-05-10 18:14:11 -04:00
Brandon Bayer
0ec39efc3b fix custom server not being detected (#2326)
(patch)
2021-05-10 17:56:24 -04:00
Brandon Bayer
971013ae32 (newapp) move all devDependencies to regular dependencies (#2325) 2021-05-10 17:27:50 -04:00
Joe Edelman
d0a7e23231 allow useQuery to run during SSR or SSG (#1940)
Co-authored-by: Jeremy Liberman <jeremy@jeremyliberman.com>
Co-authored-by: Jeremy Liberman <mrleebo@msn.com> (minor)
2021-05-10 16:38:09 -04:00
Simon Knott
cf428bb563 Deserialize SuperJSON-ed pageProps before passing to dehydratedState (#2281)
Co-authored-by: Jeremy Liberman <mrleebo@msn.com>
Co-authored-by: Brandon Bayer <b@bayer.ws> (patch)
2021-05-10 16:31:11 -04:00
Blitz.js Bot
2ff44aa3e5 (meta) added @acornellier as contributor 2021-05-10 15:50:00 -04:00
acornellier
d3fcd285ff fix useInfiniteQuery return type when suspense is disabled (#2312)
(patch)
2021-05-10 15:49:56 -04:00
Blitz.js Bot
b6d173acc3 (meta) added @Hardik3296 as contributor 2021-05-10 15:43:15 -04:00
Blitz.js Bot
630b04f932 (meta) added @meepdeew as contributor 2021-05-09 08:42:37 -04:00
Blitz.js Bot
1c023dc85d (meta) updated @abuuzayr contributions 2021-05-06 11:16:00 -04:00
Brandon Bayer
2df4323df7 fix tailwind recipe
(ignore)
2021-05-06 10:58:51 -04:00
Blitz.js Bot
57ea77ea05 (meta) added @adblanc as contributor 2021-05-05 17:39:21 -04:00
Blanc Adrien
4201cdd3c8 Add helpful message when request is missing the anti-csrf header (patch) (#2113)
Co-authored-by: Brandon Bayer <b@bayer.ws>
Co-authored-by: Mina Abadir <mina@abadir.email>
2021-05-05 17:39:16 -04:00
Brandon Bayer
2d487820ae improve recipe install log message
(patch)
2021-05-05 15:49:15 -04:00
Brandon Bayer
ba1643f3b0 bump recipe/example versions (ignore) 2021-05-05 15:47:21 -04:00
Brandon Bayer
162a0a48d2 v0.35.0-canary.5 2021-05-05 15:46:09 -04:00
Blitz.js Bot
4e20f06099 (meta) added @Anjianto as contributor 2021-05-05 15:44:49 -04:00
Anjianto
ce2c092b51 Adding JIT mode for Tailwind recipe (#2304)
(recipe)
2021-05-05 15:44:45 -04:00
Brandon Bayer
e44bafb101 fix can't install recipes (#2307)
(patch)
2021-05-05 15:17:55 -04:00
Brandon Bayer
16d04901d4 bump recipe/example versions (ignore) 2021-05-04 16:43:09 -04:00
Brandon Bayer
6b995be962 v0.35.0-canary.4 2021-05-04 16:41:45 -04:00
Brandon Bayer
72b9b09aba Fix inability to create new app from canary AND fix Cannot find module 'react-dom' error (#2296)
(patch)
2021-05-04 15:18:53 -04:00
Brandon Bayer
95ef4d0cdb fix recipe
(patch)
2021-05-04 13:22:37 -04:00
Blitz.js Bot
faa6add473 (meta) added @agustif as contributor 2021-05-04 12:48:28 -04:00
Agusti Fernandez
55ab9ac6fc Adds bumbag recipe (#2298) 2021-05-04 12:48:23 -04:00
Brandon Bayer
aa121eb818 Fix inability to install recipe (#2297)
* remove react dep from installer

* fix flake (patch)
2021-05-03 20:33:29 -04:00
Blitz.js Bot
92b1d72c88 (meta) added @kirakik as contributor 2021-05-03 18:38:21 -04:00
Kenza Iraki
09194d1b89 Fix optional catch-all handling in routes codegen (#2290)
Co-authored-by: Kenza Iraki <kirakik@gmail.com> (patch)
2021-05-03 18:38:17 -04:00
Blitz.js Bot
0e479e4e21 (meta) updated @ericvicenti contributions 2021-05-03 17:37:54 -04:00
Eric Vicenti
3bc114949b (newapp) Update TypeScript Default Config: Safety for indexAccess (#2291) 2021-05-03 17:37:50 -04:00
Vytenis
ada8e2d425 (newapp) Update global.d.ts to reference types from nextjs (#1995)
* Update types.d.ts

Just use reference to nextjs typings. It is already includes such things as `module.scss` and more

* Update packages/generator/templates/app/types.d.ts

Co-authored-by: Brandon Bayer <b@bayer.ws>

Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-04-30 17:30:09 -04:00
Blitz.js Bot
0a37ea4de8 (meta) added @dawnofmidnight as contributor 2021-04-30 11:17:10 -04:00
Brandon Bayer
bd803f7c24 bump recipe/example versions (ignore) 2021-04-29 18:40:08 -04:00
Brandon Bayer
ea2137b928 v0.35.0-canary.3 2021-04-29 18:39:02 -04:00
Brandon Bayer
fe483be831 git subrepo push nextjs
subrepo:
  subdir:   "nextjs"
  merged:   "f485e5670"
upstream:
  origin:   "git@github.com:blitz-js/next.js.git"
  branch:   "canary"
  commit:   "f485e5670"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"
2021-04-29 18:36:20 -04:00
Brandon Bayer
9e96eaf6e7 Update next.js to 10.2.0 (#2285)
(minor)
2021-04-29 18:35:45 -04:00
Brandon Bayer
b08084cf9c git subrepo push --force nextjs
subrepo:
  subdir:   "nextjs"
  merged:   "fc094e6cb"
upstream:
  origin:   "git@github.com:blitz-js/next.js.git"
  branch:   "canary"
  commit:   "fc094e6cb"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"
2021-04-29 16:05:17 -04:00
Brandon Bayer
0086a1f2fc Add support for blitz.config.ts (#2283)
(minor)
2021-04-29 15:32:42 -04:00
Jeremy Liberman
4bb6ded00c Fix generators not support string ids (#2267)
Co-authored-by: Brandon Bayer <b@bayer.ws> (patch)
2021-04-28 17:43:21 -04:00
Roshan Manuel
1d8f69df7e (newapp) Add a <Suspense> boundary to _app.tsx (#2277)
Co-authored-by: Roshan Manuel <Roshan,manuel@angelic-group.com>
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-04-27 17:24:06 -04:00
Jeremy Liberman
bece1d51b5 For building Recipes: New schema.prisma transform utilities (#2169)
Co-authored-by: Brandon Bayer <b@bayer.ws> (minor)
2021-04-27 17:08:19 -04:00
Blitz.js Bot
de70e1af00 (meta) updated @MrLeebo contributions 2021-04-27 16:59:53 -04:00
Blitz.js Bot
7cf85e2ec6 (meta) updated @mubaidr contributions 2021-04-27 16:59:01 -04:00
Brandon Bayer
aa26279fff bump recipe/example versions (ignore) 2021-04-27 15:50:49 -04:00
Brandon Bayer
b6b27166fb v0.35.0-canary.2 2021-04-27 15:49:25 -04:00
Brandon Bayer
6eb96a3190 bump recipe/example versions (ignore) 2021-04-27 15:46:50 -04:00
Brandon Bayer
03d3bef907 v0.35.0-canary.1 2021-04-26 15:11:45 -04:00
Blitz.js Bot
afd4e596d2 (meta) added @lumaxis as contributor 2021-04-26 15:08:34 -04:00
Lukas Spieß
de7361233e Fix formatting inconsistency in sponsors tables (#2275)
(meta)
2021-04-26 15:08:29 -04:00
Blitz.js Bot
a4b9005df3 (meta) added @mlabate as contributor 2021-04-25 14:00:24 -04:00
Blitz.js Bot
fa264b8d8c (meta) added @silicontwin as contributor 2021-04-24 18:00:35 -04:00
Nick Warren
e9e26653f3 Set Prettier as default formatter for VS Code users (#2266)
(newapp)
2021-04-24 18:00:31 -04:00
Blitz.js Bot
b007405648 (meta) added @mubaidr as contributor 2021-04-24 16:50:12 -04:00
Muhammad Ubaid Raza
92f769d344 Enable proxy support for cli/install (#2264)
Co-authored-by: Brandon Bayer <b@bayer.ws> (feat)
2021-04-24 16:50:07 -04:00
Brandon Bayer
b896a3c3e1 bump recipe/example versions (ignore) 2021-04-23 16:11:05 -04:00
Brandon Bayer
08afd85e7b v0.35.0-canary.0 2021-04-21 17:45:15 -04:00
Brandon Bayer
adcb08eb8f Add experimental.initServer hook for running code on server start (#2256)
* Add experimental.initServer hook for running code on server start

* fix ci (minor)
2021-04-21 16:17:20 -04:00
Brandon Bayer
6eeefcadb4 Add Typescript & esmodule support and hot reloading to custom servers (#2255)
(minor)
2021-04-21 15:44:50 -04:00
Brandon Bayer
cca9ba7ab7 bump recipe/example versions (ignore) 2021-04-21 12:23:00 -04:00
Brandon Bayer
ec3f871189 v0.34.3 2021-04-21 12:16:09 -04:00
Brandon Bayer
9cb37aac93 v0.34.2 2021-04-21 12:01:56 -04:00
Brandon Bayer
0222e1572d bump recipe/example versions (ignore) 2021-04-21 11:59:19 -04:00
Brandon Bayer
6ee30561e7 v0.34.2-canary.0 2021-04-21 11:58:01 -04:00
Robert Malko
958005c186 Fix blitz generate generating pages with bad links (#2245)
Co-authored-by: Brandon Bayer <b@bayer.ws> (patch)
2021-04-21 11:56:13 -04:00
Brandon Bayer
0a14acaea9 Update README.md
(ignore)
2021-04-21 11:09:43 -04:00
Brandon Bayer
df1d648c5b add RIT as bronze sponsor
(meta)
2021-04-21 11:07:37 -04:00
Brandon Bayer
1857eb830f fix blitz console queries & mutations not loading (#2252)
(patch)
2021-04-20 19:47:23 -04:00
Brandon Bayer
fcb2782b33 fix blitz console circular dependency issues (#2251)
(patch)
2021-04-20 18:38:36 -04:00
Brandon Bayer
57b9b88380 Update bug_report.yml 2021-04-20 17:41:03 -04:00
Brandon Bayer
ab10fd408a Update bug_report.yml 2021-04-20 17:38:48 -04:00
Brandon Bayer
1869b9c9f5 fix useQuery infinite loop after logout (#2249)
* fix useQuery infinite loop after logout

* auto retry example app tests

* fix test (patch)
2021-04-20 16:40:43 -04:00
Brandon Bayer
b546754dd1 remove beta warning from CLI because it makes people get the wrong impression (#2250)
(patch)
2021-04-20 16:40:29 -04:00
Brandon Bayer
3dde672b5c Fix npm/yarn version auditing (#2247)
(patch)
2021-04-20 14:59:00 -04:00
Blitz.js Bot
848d961e1c (meta) added @Mokshit06 as contributor 2021-04-20 11:02:22 -04:00
Mokshit Jain
2cf32ad352 Throw an error if using a query with useMutation or a mutation with useQuery (#2223)
(patch)
2021-04-20 11:02:16 -04:00
Brandon Bayer
f62360834d bump recipe/example versions (ignore) 2021-04-19 19:53:38 -04:00
Brandon Bayer
6a3c2fffeb v0.34.1 2021-04-19 19:52:29 -04:00
Brandon Bayer
df8434cd9b add integration test for no-suspense mode (#2241)
(meta)
2021-04-19 18:52:31 -04:00
JuanM04
b7abca29ab Export BlitzApiHandler type (#2239)
(patch)
2021-04-19 18:18:41 -04:00
Brandon Bayer
559496af6b add couple integration tests for authentication (#2240) 2021-04-19 18:16:10 -04:00
Brandon Bayer
d15226e770 fix CI on windows (#2236)
(ignore)
2021-04-19 17:15:06 -04:00
Brandon Bayer
a377e6b94f fix type issues with Routes manifest (#2238)
* fix type of Routes manifest to not include null | undefined for pathname

* remove unused keys from from route manifest types (patch)
2021-04-19 16:02:47 -04:00
JuanM04
177dccdcba Fix Routes manifest type error. Change to string to string | number (#2228)
Co-authored-by: Simon Knott <info@simonknott.de> (patch)
2021-04-19 15:29:30 -04:00
Blitz.js Bot
0b06288210 (meta) added @frontsideair as contributor 2021-04-19 12:43:15 -04:00
Blitz.js Bot
36211b9968 (meta) added @antonykamp as contributor 2021-04-17 11:28:31 -04:00
Blitz.js Bot
a0c5209a94 (meta) added @TommasoBruno99 as contributor 2021-04-16 18:53:49 -04:00
Brandon Bayer
39a720df63 bump recipe/example versions (ignore) 2021-04-16 15:43:44 -04:00
Brandon Bayer
c335a1d968 v0.34.0 2021-04-16 15:42:33 -04:00
Brandon Bayer
de286205b1 fix so objects don't break telementry
(ignore)
2021-04-16 15:35:12 -04:00
Brandon Bayer
c86c0527a4 update release script
(ignore)
2021-04-15 16:48:58 -04:00
Brandon Bayer
8cdd56fc40 bump recipe/example versions 2021-04-15 16:48:15 -04:00
Brandon Bayer
617ab8c564 v0.34.0-canary.5 2021-04-15 16:46:55 -04:00
Brandon Bayer
92b90ee49c adjust build script
(ignore)
2021-04-15 16:45:51 -04:00
Brandon Bayer
ea26d8ecb8 Fix vercel deployments for canary release (#2226)
(patch)
2021-04-15 16:44:04 -04:00
Brandon Bayer
a18c00dbc3 bump recipe/example versions 2021-04-15 13:03:05 -04:00
Brandon Bayer
fdab34bee4 v0.34.0-canary.4 2021-04-15 13:02:18 -04:00
Brandon Bayer
cf7d34764e Revert "v0.34.0-y.0"
This reverts commit b6d264c294.
2021-04-15 13:01:48 -04:00
Brandon Bayer
6f8d25438d Revert "bump recipe/example versions"
This reverts commit c301d296a5.
2021-04-15 13:01:43 -04:00
Brandon Bayer
c301d296a5 bump recipe/example versions 2021-04-15 12:54:44 -04:00
Brandon Bayer
b6d264c294 v0.34.0-y.0 2021-04-15 12:54:06 -04:00
Blitz.js Bot
61d11e4c89 (meta) updated @sakulstra contributions 2021-04-15 12:52:22 -04:00
Lukas Strassel
39e738c240 Fix useInfiniteQuery suspense bug in canary release by upgrading react-query to 3.13.9 (patch) (#2197)
Co-authored-by: Brandon Bayer <b@bayer.ws> (patch)
2021-04-15 12:52:17 -04:00
Brandon Bayer
d88fc0430f send anonymous analytics to to blitz collector instead of nextjs (#2224)
* send anonymous analytics to to blitz collector instead of nextjs

* turn off telementry in CI (patch)
2021-04-15 12:25:33 -04:00
Brandon Bayer
6bbe9b9720 remove aem as codeowner (retired maintainer)
(ignore)
2021-04-14 11:59:24 -04:00
Michael Ford
ec5cc08062 Fix crash when using Blitz inside iframes (#2219)
(patch)
2021-04-14 11:49:57 -04:00
0xflotus
fc216c283d fix: small errors in rfc docs (#2217)
(ignore)
2021-04-14 11:40:21 -04:00
Blitz.js Bot
03ebcb911d (meta) added @laubonghaudoi as contributor 2021-04-14 11:36:39 -04:00
Blitz.js Bot
2136ab7520 (meta) added @Dieman89 as contributor 2021-04-14 11:36:07 -04:00
Brandon Bayer
58b58d292c Add Kevin as L1 maintainer (was missing from here)
(ignore)
2021-04-14 11:21:09 -04:00
Brandon Bayer
f861dd6683 Retire a number of maintainers that haven't been active in long time
(meta)
2021-04-14 11:16:05 -04:00
Brandon Bayer
559d20d1a1 (patch) upgrade react-query to 3.13.6 (#2222) 2021-04-13 16:39:48 -04:00
Brandon Bayer
2ae313a43a Fix new app file logging and fix .npmrc not being generated in canary release (patch) (#2221)
(patch)
2021-04-13 15:35:18 -04:00
Blitz.js Bot
a8b3794a60 (meta) added @sean-brydon as contributor 2021-04-13 15:28:18 -04:00
Brandon Bayer
0bfd917b24 Fix "Failed to load config in getConfig" log message (#2220)
(patch)
2021-04-13 14:52:16 -04:00
Brandon Bayer
2e3116b58a fix blitz integration tests on CI
(ignore)
2021-04-13 11:09:04 -04:00
Brandon Bayer
b18fe2615c (newapp) Fix husky scripts to use npx for binaries instead of npm run (#2213) 2021-04-12 13:11:23 -04:00
Blitz.js Bot
8de82025d0 (meta) added @peterpalau as contributor 2021-04-12 12:42:56 -04:00
Pedro Enrique Palau Isaac
8822a38c60 (newapp) Rename types.d.ts to global.d.ts (#2205) 2021-04-12 12:42:52 -04:00
Brandon Bayer
3879ecde1f fix integration test types and fix nextjs pnpm test (#2212)
(meta)
2021-04-12 12:23:30 -04:00
Brandon Bayer
5b8dab3fb3 update PR template
(ignore)
2021-04-12 11:59:25 -04:00
Blitz.js Bot
e1276f93a0 (meta) added @Cristy94 as contributor 2021-04-11 07:22:40 -04:00
Buleandra Cristian
0c2abcb9de Fix userTrack sponsor link (#2204) 2021-04-11 07:22:35 -04:00
Brandon Bayer
3058d64dad bump recipe/example versions 2021-04-10 18:26:36 -04:00
Brandon Bayer
973c2384ec v0.34.0-canary.3 2021-04-10 18:24:00 -04:00
Brandon Bayer
0cba94dd2e Fix cannot find module 'next/constants' in 0.34.0-canary (#2203)
(patch)
2021-04-10 18:22:37 -04:00
Simon Knott
bf7eed62bd Add autogenerated Routes manifest for use with <Link> components (#2042)
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-04-10 16:22:58 -04:00
Blitz.js Bot
5fc813a64b (meta) added @simonelnahas as contributor 2021-04-10 16:05:38 -04:00
Brandon Bayer
9e78d1c7f6 add integration test for invalidateQuery (#2194)
(meta)
2021-04-08 19:13:57 -04:00
Brandon Bayer
fa8fd64921 add first blitz integration test for useQuery (#2193)
* add first blitz integration test for useQuery

* link to couple nextjs test files instead of duplicate

* CI name tweaks (meta)
2021-04-08 18:23:19 -04:00
Brandon Bayer
bc0c7287ec Add new integration test harness (#2189)
(meta)
2021-04-08 16:31:17 -04:00
Blitz.js Bot
3c3f10b201 (meta) added @jahredhope as contributor 2021-04-08 11:05:47 -04:00
Brandon Bayer
e1f7cf8bb4 bump recipe and example versions 2021-04-07 15:40:58 -04:00
Brandon Bayer
f3d0f7f79d v0.34.0-canary.2 2021-04-07 15:39:57 -04:00
Brandon Bayer
15ee721fc9 Upgrade our nextjs fork to 10.1.3 (#2186)
(minor)
2021-04-07 15:34:02 -04:00
Brandon Bayer
9a872ef14a update recipe/example blitz versions
(ignore)
2021-04-06 17:30:20 -04:00
Brandon Bayer
6df0db9b87 git subrepo push nextjs
subrepo:
  subdir:   "nextjs"
  merged:   "c5122c4c0"
upstream:
  origin:   "git@github.com:blitz-js/next.js.git"
  branch:   "canary"
  commit:   "c5122c4c0"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"
2021-04-06 16:50:13 -04:00
Brandon Bayer
48cca48e60 update next fork sync scripts
(ignore)
2021-04-06 16:49:25 -04:00
Brandon Bayer
65e67ffcc3 update deploy script
(ignore)
2021-04-06 16:48:29 -04:00
Brandon Bayer
4d42b462da v0.34.0-canary.1 2021-04-06 16:46:10 -04:00
Brandon Bayer
a17227d853 Prune unchanged nextjs packages from workspace & build (#2182)
(ignore)
2021-04-06 16:44:03 -04:00
Brandon Bayer
b3facfc9a5 fix dev script
(ignore)
2021-04-06 10:59:56 -04:00
Brandon Bayer
6527a14f28 Change Blitz to use our nextjs fork (no internal changes besides using our own build) (#2122)
(patch)
2021-04-06 10:52:34 -04:00
Brandon Bayer
5d473a2312 Update README.md
(ignore)
2021-04-05 18:49:43 -04:00
Brandon Bayer
0aa5280a0f Update README.md 2021-04-05 18:49:10 -04:00
Brandon Bayer
a3737aff3d (meta) add userTrack as seedling sponsor 2021-04-05 18:44:23 -04:00
Brandon Bayer
d8d12be249 v0.34.0-canary.0 2021-04-05 18:07:04 -04:00
Blitz.js Bot
af539332a1 (meta) updated @tundera contributions 2021-04-05 15:03:38 -04:00
Blitz.js Bot
563720bb57 (meta) updated @tundera contributions 2021-04-05 15:00:31 -04:00
tundera
d242056848 (major) Upgrade to React Query v3 (#2101)
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-04-05 15:00:27 -04:00
JuanM04
8f659f8b0b (newapp) Upgrade dependencies (#2176) 2021-04-05 14:12:01 -04:00
JuanM04
63af540c87 (newapp) Add .editorconfig and .vscode extension recomendations (#2142)
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-04-02 11:12:34 -04:00
Lukas Strassel
a26fdd8162 Fix shallow routing (#2173)
(patch)
2021-03-31 18:21:52 -04:00
JuanM04
04a157531f Fix query string spaces with useRouterQuery() (#2174)
(patch)
2021-03-31 18:17:35 -04:00
Jeremy Liberman
f099a88d38 Remove prisma 2.19 version upgrade from GQL recipe (#2167)
Redundant thanks to https://github.com/blitz-js/blitz/pull/2138 (recipe)
2021-03-31 18:16:11 -04:00
Roshan Manuel
f40c0f022e Fix quirrel install recipe (#2170)
Co-authored-by: Roshan Manuel <Roshan,manuel@angelic-group.com>
Co-authored-by: Brandon Bayer <b@bayer.ws> (recipe)
2021-03-31 18:12:14 -04:00
Blitz.js Bot
1d4695a17a (meta) updated @konradkalemba contributions 2021-03-31 18:09:43 -04:00
Justin Hall
a293d8bfa7 (meta) fix ultra scripts so they work on Windows (#2154)
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-03-29 16:53:57 -04:00
Kevin Langley Jr
18c1b9cb86 Switch to using @blitz/installer helper functions … (#2164)
(meta)
2021-03-29 16:52:43 -04:00
Justin Hall
32328b442d Update Emotion recipe to better leverage the installer package (#2156)
(meta)
2021-03-29 15:08:11 -04:00
Justin Hall
541b612fff Update findModuleExportsExpressions installer transform utility (#2155)
(meta)
2021-03-29 14:35:51 -04:00
Blitz.js Bot
cc7c72d1c1 (meta) added @andrearizzello as contributor 2021-03-28 17:19:20 -04:00
Brandon Bayer
46b6395870 git subrepo clone --force git@github.com:blitz-js/next.js.git nextjs
subrepo:
  subdir:   "nextjs"
  merged:   "ec12f1876"
upstream:
  origin:   "git@github.com:blitz-js/next.js.git"
  branch:   "canary"
  commit:   "ec12f1876"
git-subrepo:
  version:  "0.4.3"
  origin:   "https://github.com/ingydotnet/git-subrepo"
  commit:   "2f68596"
2021-03-27 12:29:37 -04:00
Brandon Bayer
9a13b4e361 v0.33.1 2021-03-27 11:16:18 -04:00
Blitz.js Bot
3147394f86 (meta) added @markhughes as contributor 2021-03-27 11:12:18 -04:00
Mark Hughes
59f6f158e2 Fix bug when db folder is not present (#2152)
(patch)
2021-03-27 11:12:14 -04:00
JuanM04
2c548fa875 (newapp) Update react/react-dom to 0.0.0-experimental-6a589ad71 (#2149) 2021-03-26 11:28:33 -04:00
Blitz.js Bot
fa14a92bcb (meta) updated @gstranger contributions 2021-03-26 11:27:31 -04:00
Blitz.js Bot
5ba52be9f5 (meta) added @gstranger as contributor 2021-03-26 11:25:54 -04:00
gstranger
006cae4288 (recipe) Update render recipe with SESSION_SECRET_KEY (#2148)
As noted in this PR: https://github.com/blitz-js/blitzjs.com/pull/421 blitz requires a SESSION_SECRET_KEY when deployed to prod. This change will make it easier for new devs to deploy instantly to render using this template.
2021-03-26 11:24:45 -04:00
Blitz.js Bot
2e15ba2e82 (meta) added @Maastrich as contributor 2021-03-25 16:20:00 -04:00
Mathis Pinsault
5d56db5928 (meta) update PR template (#2141)
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-03-25 16:19:56 -04:00
Blitz.js Bot
4baa37ba38 (meta) updated @JuanM04 contributions 2021-03-25 16:14:16 -04:00
JuanM04
03d9711983 Fix query parameter decoding (#2143)
(patch)
2021-03-25 16:14:11 -04:00
Brandon Bayer
54796b6afd fix digas logo 2021-03-24 10:57:08 -04:00
Brandon Bayer
e826deb503 update digsas svg
(ignore)
2021-03-24 10:08:44 -04:00
Brandon Bayer
ee5cceb9c8 add Digsas.com as seedling sponsor
(meta)
2021-03-24 10:06:02 -04:00
Blitz.js Bot
1a28e5b1c0 (meta) added @amdolan as contributor 2021-03-23 19:25:00 -04:00
Alex Dolan
a0b53dc149 Upgrade prisma to 2.19, remove --preview-feature from migrate (#2138)
Co-authored-by: Blitz.js CLI <noop@blitzjs.com> (newapp)
2021-03-23 19:24:56 -04:00
Brandon Bayer
006ef89fbe fix apollo recipe
(ignore)
2021-03-22 18:13:33 -04:00
Jeremy Liberman
44aac3bb3a Add blitz install graphql-apollo-server recipe to implement a GraphQL API endpoint (#2073)
(recipe)
2021-03-22 18:12:14 -04:00
Blitz.js Bot
d5872d9b51 (meta) added @ericvicenti as contributor 2021-03-22 17:37:59 -04:00
Blitz.js Bot
e35d17d6a3 (meta) added @FarazPatankar as contributor 2021-03-21 11:20:40 -04:00
Blitz.js Bot
70cc8777d6 (meta) added @franky47 as contributor 2021-03-19 17:22:07 -04:00
Brandon Bayer
6cc4fb6c59 Update nextjs fork to 10.0.9 (#2121)
(ignore)
2021-03-17 17:45:00 -04:00
Brandon Bayer
d299d50364 v0.33.0 2021-03-17 15:21:14 -04:00
Blitz.js Bot
7f7dcd381f (meta) updated @Roesh contributions 2021-03-17 15:12:25 -04:00
Roshan Manuel
12f533972d Fix typescript jest issue in forgotPassword.test.ts (#2110)
* don't throw an error if checkYarn is null or checkYarn.stdout is null or undefined

* make sure to check if this version is less than the latest version (newapp)

* fix forgotpassword test template, sync auth example tests

* revert to ensure monorepo tests work

* revert to original password and index tests

* remove merge reference

Co-authored-by: Roshan Manuel <Roshan,manuel@angelic-group.com>
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-03-17 15:12:21 -04:00
Blitz.js Bot
c574e28c1a (meta) updated @remjx contributions 2021-03-17 15:06:34 -04:00
Mark Jackson
9616836303 use decodeURIComponent for router.query.next during page authentication redirect (#2114)
* use decodeURIComponent to fix bug where slashes in url path were not being converted from hex

* handle decodeURIComponent(undefined) case (newapp)

* fix type error

Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-03-17 15:06:30 -04:00
Blitz.js Bot
22cd691758 (meta) added @tmcw as contributor 2021-03-17 14:11:46 -04:00
Blitz.js Bot
e6b34a7771 (meta) updated @kevinlangleyjr contributions 2021-03-17 12:33:50 -04:00
Brandon Bayer
3b6a2a2f68 (meta) revert to typescript 4.1 because of nextjs integration issues 2021-03-16 16:03:03 -04:00
depfu[bot]
08f0a87088 Upgrade next: 10.0.7 → 10.0.9 (patch) (#2119)
* Update next to version 10.0.9

* fixes

Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-03-16 15:10:16 -04:00
Brandon Bayer
cae123dfda Add @reo777 as a contributor 2021-03-16 14:34:49 -04:00
Brandon Bayer
c20b3a19f6 Add @pavestru as a contributor 2021-03-16 14:34:41 -04:00
Brandon Bayer
45b281acb6 Add @pbteja1998 as a contributor 2021-03-16 14:34:35 -04:00
Brandon Bayer
85fec4f386 Add @Flavyoo as a contributor 2021-03-16 14:34:25 -04:00
Simon Knott
bfe3f90d2a Add blitz export command (#2043)
* Proxy "blitz export" to "next export" (minor)

* Add "static" example

* Fix manifest missing

* fix tsc error

* Fix version of Blitz for static example

* Use preconstructs monorepo build tooling

* Add type that static example needs for compilation

* Run "next export" on ".next", not on ".blitz/build/"

* Remove forgotten console.log o.O

* Don't change type of nextBuild[manifest]

* Update static example Blitz version

Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-03-16 14:28:32 -04:00
Blitz.js Bot
8bc3a402bc (meta) added @the-red as contributor 2021-03-16 13:42:09 -04:00
Blitz.js Bot
fb27225445 (meta) added @skn0tt as contributor 2021-03-16 13:37:53 -04:00
Kevin Langley Jr
7617579d9c Fixing recipe TODOs (#2112)
(meta)
2021-03-15 19:39:12 -04:00
Kevin Langley Jr
09da51c544 Add blitz install logrocket recipe (#2111)
* Adding initial recipe for LogRocket (recipe)

* Remove NodePath import since it is not used. Simplifying call to LogRocket.identify to just pass in the userId as the first parameter and sessionData object as the second parameter.

* Add comment to LogRocket config

* Fixing copy/paste comment for transform files step in LogRocket recipe

* Removing check for useRouter in blitz import as we are no longer using it. Removing variable declaration node, that is unused.

* Changing directory for logrocket.ts helpers from utils to integrations.
2021-03-15 19:37:10 -04:00
JuanM04
720ee606bd Fix duplicated Set-Cookie header (#2109)
(patch)
2021-03-15 18:27:28 -04:00
Pavel Struhar
7022505a60 Fix -d shorthand for --dry-run missing in blitz new (#2104)
(patch)
2021-03-12 12:19:17 -05:00
Brandon Bayer
ca7cf26891 (newapp) Update auth mutations to trim whitespace from email & password (#2103) 2021-03-11 15:36:58 -05:00
Brandon Bayer
3812b907a4 v0.32.1 2021-03-10 12:34:18 -05:00
Brandon Bayer
2d4f70786f (patch) fix useRouterQuery to not parse values (leave as string) (#2102) 2021-03-10 12:31:38 -05:00
Jack Zhao
5883de88b2 (patch) fix another bug with queries/mutations when using basePath (#2100) 2021-03-10 12:31:28 -05:00
Simon Knott
3ac92528f5 Fix not being able to use await in blitz console for some users (#2077)
(patch)
2021-03-10 12:28:54 -05:00
Brandon Bayer
3b114e0b37 v0.32.0 2021-03-09 16:59:48 -05:00
allcontributors[bot]
c79bcae95b docs: add Roesh as a contributor (#2097)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-03-09 10:29:10 -03:00
allcontributors[bot]
31155ea360 docs: add bugzpodder as a contributor (#2095)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-03-09 10:28:34 -03:00
Brandon Bayer
e3ed233bc2 (patch) fix build build failure in a weird nextjs edgecase (#2094) 2021-03-09 00:54:30 +00:00
Jack Zhao
6a5df1e315 (patch) fix queries & mutations when using basePath (#2082)
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-03-08 19:43:46 -05:00
Brandon Bayer
47ca5b92da (patch) fix extraneous console errors during tests (#2092) 2021-03-08 18:06:17 -05:00
allcontributors[bot]
c7c7e050a8 docs: add james2406 as a contributor (#2093)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-03-08 19:57:10 -03:00
Brandon Bayer
ec5c7746d5 (patch) Fix node 14 global install by removing use of peer dependencies (#2091) 2021-03-08 21:32:36 +00:00
blitzjs-bot[bot]
626f9d968d Added @james2406 as contributor (#2090)
* updated .all-contributorsrc

* updated README.md

Co-authored-by: blitzjs-bot[bot] <64611671+blitzjs-bot[bot]@users.noreply.github.com>
2021-03-08 15:52:45 -05:00
James Moran
ee7acd4924 Allow the ctx to be accessed within passport strategies (#2058)
* allow the session to be accessed within the passport strategy

* add callback to test types

* add environments type file to auth example

* replace environments type file with inline types

Co-authored-by: Brandon Bayer <b@bayer.ws> (minor)
2021-03-08 15:51:52 -05:00
Kevin Langley Jr
2cd377e10f Recipe: Styled Components (#2087)
* Adding recipe for styled-components.

* Adding all changes to _app.tsx. Adding basic util/theme.ts file to hold the theme and global styles. Still need to finish codeshift changes to _document.tsx

* Adding changes to _document.tsx

* Fixing var name

* Incrementing version of styled-components recipe.

* Adding back try/catch and sheet.seal()

* Adding babel plugin for styled-components recipe.

* Solve TODOs

Co-authored-by: Simon Knott <info@simonknott.de>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-03-08 19:49:28 +00:00
blitzjs-bot[bot]
5d69e92082 Added @flybayer as contributor (#2081)
* updated .all-contributorsrc

* updated README.md

Co-authored-by: blitzjs-bot[bot] <64611671+blitzjs-bot[bot]@users.noreply.github.com>
2021-03-06 18:40:23 -05:00
Brandon Bayer
fa10972e5a (meta) Integrate our new next.js fork into the monorepo at ./nextjs (#2079) 2021-03-06 18:39:22 -05:00
Brandon Bayer
af6d81413f (meta) eslint config maintenance (#2078) 2021-03-06 17:20:16 -05:00
Brandon Bayer
c699d4f021 Update bug_report.yml
(ignore)
2021-03-06 11:09:52 -05:00
Brandon Bayer
e97ba82de8 Update bug_report.yml
(meta)
2021-03-06 11:09:16 -05:00
blitzjs-bot[bot]
7ff1d2d052 Added @flybayer as contributor (#2069)
* updated .all-contributorsrc

* updated README.md

Co-authored-by: blitzjs-bot[bot] <64611671+blitzjs-bot[bot]@users.noreply.github.com>
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-03-05 13:12:07 -05:00
Brandon Bayer
9568d1c56c update release patch
(ignore)
2021-03-05 13:09:08 -05:00
Brandon Bayer
ca7ad291e6 v0.31.1 2021-03-05 13:06:09 -05:00
Brandon Bayer
c21445a268 Fix deployments to vercel (#2068)
* fix config (patch)

* try to fix flaky cypress
2021-03-05 13:02:46 -05:00
blitzjs-bot[bot]
b38ab9b0f6 Added @Kosai106 as contributor (#2067)
* updated .all-contributorsrc 

* updated README.md

Co-authored-by: blitzjs-bot[bot] <64611671+blitzjs-bot[bot]@users.noreply.github.com>
2021-03-05 11:29:40 -05:00
Brandon Bayer
90b44ee54d (recipe) change render.com recipe to build app before running migration 2021-03-05 09:36:01 -05:00
JuanM04
be9d712437 Update @akbo as a contributor 2021-03-04 22:46:24 -03:00
JuanM04
cc8a10fa8c Add @sbappan as a contributor 2021-03-04 22:46:12 -03:00
JuanM04
e4cebb2974 Add @chenkie as a contributor 2021-03-04 22:45:50 -03:00
allcontributors[bot]
ae4ca3982f docs: add heavygabriel as a contributor (#2061)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-03-04 19:45:26 -05:00
Gabriel Picard
c1a72f7e8a Update LICENSE year (#2060)
Changed the license year to the current year (meta)
2021-03-04 19:43:25 -05:00
Brandon Bayer
0f9b19cbef v0.31.0 2021-03-04 16:40:53 -05:00
allcontributors[bot]
7250a27916 docs: add kevinlangleyjr as a contributor (#2059)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-03-04 15:13:56 -05:00
Kevin Langley Jr
31fada7325 (recipe) Add blitz install gh-action-yarn-mariadb GH action config for testing a mariadb or mysql database (#2056) 2021-03-04 15:13:43 -05:00
Brandon Bayer
4be4c5181e remove blitz test command because almost no-one uses it (#2057)
(major)
2021-03-04 14:55:24 -05:00
Brandon Bayer
66cd76643c Major internal refactor + add multiple entry points + change all imports to be from blitz + rename getSessionContext to getSession + other fixes (#2039) 2021-03-04 14:55:07 -05:00
JuanM04
eaef66ba0f (meta) added husky initialization in pre-commit (#2051) 2021-03-04 10:50:19 -05:00
Brandon Bayer
bcec41832d refactor jest preset (meta) (#2049)
* refactor jest preset (meta)

* fix

* fix deps (meta)

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-03-03 23:18:46 +00:00
Brandon Bayer
efcd1da39a fix deps (meta) 2021-03-03 18:04:12 -05:00
Brandon Bayer
2178f11210 v0.30.7 2021-03-03 17:34:23 -05:00
Simon Knott
3565c57fca Bind to 127.0.0.1 by default instead of 0.0.0.0 (for security) (#2045)
(patch)
2021-03-03 17:13:38 -05:00
Simon Knott
e41401c744 Fix invoke return type (#2044)
(patch)
2021-03-03 17:12:35 -05:00
Brandon Bayer
63387ab2ee fix db.$reset to not spew prisma logs (patch) (#2041) 2021-03-03 00:16:14 +00:00
Brandon Bayer
e4a8a8b5b2 (meta) use ultra for running monorepo workspace commands (#2035) 2021-03-01 18:14:08 -05:00
Jeremy Liberman
b347a7d999 fix: remove bit of test code
accidentally left this in the PR from when I was testing
2021-03-01 16:55:11 -06:00
Brandon Bayer
b34368c690 (meta) add manypkg, a linter for monorepo dependencies (#2034)
* (meta) add manypkg, a linter for monorepo dependencies

* add lint to gh action

* refactor
2021-03-01 17:16:36 -05:00
Brandon Bayer
fe87534109 (meta) upgrade husky to v5 (#2033) 2021-03-01 16:31:41 -05:00
Brandon Bayer
328035bf22 (meta) Remove need to build framework code during development 🎉 (#2032) 2021-03-01 16:22:58 -05:00
Jeremy Liberman
e8551a0991 Add blitz install secureheaders recipe for setting secure headers (#2019)
(recipe)
2021-03-01 14:21:59 -05:00
allcontributors[bot]
50c50097aa docs: add Roesh as a contributor (#2029)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-03-01 12:32:10 -05:00
Roshan Manuel
d2e5368b5c Fix Cannot read property 'toString' of null for blitz new (#2025)
(patch)
2021-03-01 12:31:50 -05:00
allcontributors[bot]
2fcd6d88b6 docs: add mitchazj as a contributor (#2028)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-03-01 12:25:30 -05:00
Mitchell Johnson
ec6455920c Update .npmrc (#2021) 2021-03-01 12:25:17 -05:00
Brandon Bayer
2880fbba30 Switch from tsdx to preconstruct for DX/perf improvements (meta) (#2013)
* switch to preconstruct - still some issues

* working!

* cleanup

* updates

* use preconstruct for blitz package

* most tests working

* fix tests

* cleanup

* fix build script

* remove lodash from core

* fix

* fix example tests

* cleanup lodash

* cleanup

* clenaup

* fix another way

* fix lint
2021-02-28 01:30:16 +00:00
Brandon Bayer
cf6a906fc1 v0.30.6 2021-02-27 17:16:27 -05:00
Brandon Bayer
4203d94169 (newapp) change template to use typescript 4.1 because 4.2 is broken (#2018) 2021-02-27 17:09:54 -05:00
Brandon Bayer
34f249d259 fix some issues with blitz start using wrong build folder (#2017) 2021-02-27 21:00:13 +00:00
allcontributors[bot]
d3254d11f8 docs: add matthieu994 as a contributor (#2008)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-02-25 14:11:22 -05:00
Brandon Bayer
14ac3d9f3f v0.30.5 2021-02-25 11:27:08 -05:00
allcontributors[bot]
4c85bce781 docs: add FDiskas as a contributor (#2007)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-02-25 11:21:04 -05:00
marina
1a078c54d4 fix "role" of PublicData was lost by $setPublicData (#2005)
(patch)
2021-02-25 10:54:24 -05:00
Brandon Bayer
47438c8ccf v0.30.4 2021-02-24 15:34:46 -05:00
Brandon Bayer
13b8f1239d Fix Error deserializing __BLITZ__DATA__ in jest tests (patch) (#2004) 2021-02-24 15:32:57 -05:00
Brandon Bayer
5ed0f11734 fix hot reload for queries/mutations (patch) (#2003)
* fix hot reload for queries/mutations (patch)

* cleanup
2021-02-24 15:29:40 -05:00
JuanM04
48383ef363 docs: add remjx and lewisblackburnas a contributor (#2001) 2021-02-24 14:59:26 -05:00
Brandon Bayer
11fc19fee2 v0.30.3 2021-02-23 16:43:30 -05:00
Brandon Bayer
fb4a63acba Improve error message for missing _document page (patch) (#2000) 2021-02-23 16:39:24 -05:00
Hiren Chauhan
c3f8c7d07d Fix blitz install when using npm (patch) (#1986)
Co-authored-by: Brandon Bayer <b@bayer.ws>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-02-23 16:20:58 -05:00
allcontributors[bot]
51519166ef docs: add hirenchauhan2 as a contributor (#1994)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-02-23 15:16:07 -05:00
depfu[bot]
113a3a04f3 Update superjson to version 1.7.2 (#1993)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-02-23 19:55:18 +00:00
depfu[bot]
eba2a8081d Update babel-plugin-superjson-next to version 0.2.2 (#1992)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
2021-02-23 17:27:08 +00:00
JuanM04
16d2cae5b8 Added @juanM04 as a L2 maintainer for website/docs (#1989)
(meta)
2021-02-23 12:07:20 -05:00
Brandon Bayer
c2bd242d46 Add @aditsachde as a contributor 2021-02-23 12:05:15 -05:00
Brandon Bayer
99966ab192 Add @andreadellacorte as a contributor 2021-02-22 16:48:59 -05:00
Brandon Bayer
387e6e420b add rob malko as seedling sponsor 2021-02-20 17:39:10 -05:00
Brandon Bayer
d39b461ddd v0.30.2 2021-02-20 15:39:25 -05:00
Brandon Bayer
0b7d463e7f fix error.statusCode missing in frontend (patch) (#1981) 2021-02-20 15:30:50 -05:00
Brandon Bayer
87c4ee058c fix blitz generate Windows Error: spawn prisma ENOENT (patch) (#1979) 2021-02-20 15:09:06 -05:00
allcontributors[bot]
177c2b0519 docs: add deniseyu as a contributor (#1975)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-02-19 15:56:57 -05:00
Denise Yu
31411baff5 Update bug_report.yml (#1974)
Fixes bug report YAML template
2021-02-19 15:56:48 -05:00
Brandon Bayer
2c4b803e7b v0.30.1 2021-02-18 21:14:34 -05:00
Brandon Bayer
117f0fda74 fix UnhandledPromiseRejectionWarning when renaming queries/mutations (patch) (#1967)
* fix UnhandledPromiseRejectionWarning when renaming queries/mutations

* log any watcher errors

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-02-19 01:35:27 +00:00
Brandon Bayer
f613e08866 fix blitz routes command interfering with the dev build (#1966) 2021-02-19 01:07:34 +00:00
Brandon Bayer
b696831e9f Try to fix windows EPERM issues (patch) (#1965)
* try to fix windows EPERM issue

* comment

* fix test

* bump test wait time

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-02-19 00:28:36 +00:00
Brandon Bayer
bd1781b99e Update @Mzaien as a contributor 2021-02-18 18:43:28 -05:00
depfu[bot]
9077397abe Upgrade next: 10.0.6 → 10.0.7 AND add isLocaleDomain to newapp template test/utils.ts (patch) (#1949)
* Update next to version 10.0.7

* fix

Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-02-18 23:37:24 +00:00
Cristian Granda
8e8fcffa2a Fix error if package.json doesn't have a "name" field (#1963) 2021-02-18 18:02:02 -05:00
allcontributors[bot]
364fb5e618 docs: add cristianbgp as a contributor (#1964)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-02-18 18:01:33 -05:00
Brandon Bayer
7678181bcf update issue template
(ignore)
2021-02-18 17:54:33 -05:00
Brandon Bayer
180d4cc4a1 update bug report 2021-02-18 17:52:19 -05:00
Brandon Bayer
2484b3a692 Update bug_report.yml
(ignore)
2021-02-18 17:50:33 -05:00
Brandon Bayer
f1e223cd47 add new issue form template
closes: #1704
(meta)
2021-02-18 17:47:51 -05:00
allcontributors[bot]
1a4dd4a2fe docs: add Immortalin as a contributor (#1962)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-02-18 17:18:35 -05:00
Immortalin
7f3fcf1489 Update gitignore (#1954)
(meta)
2021-02-18 17:18:25 -05:00
Brandon Bayer
219f069dba Add @gusgard as a contributor 2021-02-18 17:05:43 -05:00
Brandon Bayer
09bd6751fa Add @davetorbeck as a contributor 2021-02-18 16:50:59 -05:00
Brandon Bayer
f03fe566e5 Add @DecadentIpsum as a contributor 2021-02-17 13:12:18 -05:00
Brandon Bayer
4ed750a8f7 Add @oliverloops as a contributor 2021-02-17 13:10:46 -05:00
Brandon Bayer
39eb1cef9b Add @garytube as a contributor 2021-02-17 13:09:34 -05:00
Brandon Bayer
0a3c975b98 v0.30.0 2021-02-17 08:49:48 -05:00
Brandon Bayer
1b4119bb50 Update new app readme with latest file structure
(ignore)
2021-02-16 22:34:06 -05:00
Brandon Bayer
f0d880a4f2 v0.30.0-canary.15 2021-02-16 22:25:15 -05:00
Brandon Bayer
11a11be20b Update README.md
(ignore)
2021-02-16 21:38:27 -05:00
Brandon Bayer
0273e58749 Update README.md
(ignore)
2021-02-16 21:37:39 -05:00
Brandon Bayer
75c3dc635e tweak sponsors
(ignore)
2021-02-16 19:48:21 -05:00
Brandon Bayer
00e54948f2 fix reactbricks icon
(ignore)
2021-02-16 19:47:27 -05:00
Brandon Bayer
ffcd0b4243 fix error on blitz start for new project (patch) (#1952) 2021-02-16 11:35:53 -05:00
Brandon Bayer
6bc26128ee Upgrade prisma to 2.17 (patch) (#1951) 2021-02-16 10:55:25 -05:00
Brandon Bayer
f8b599aff4 v0.30.0-canary.14 2021-02-15 14:33:16 -05:00
Joe Edelman
fa09904d3a fix getQueryKey() to work on the server (patch) (#1624)
Co-authored-by: Brandon Bayer <b@bayer.ws>
2021-02-15 14:24:33 -05:00
allcontributors[bot]
7c6c7dfdb5 docs: add jxe as a contributor (#1946)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-02-15 14:24:18 -05:00
Brandon Bayer
ca850480ae fix blitz routes (#1945) 2021-02-15 18:56:28 +00:00
Brandon Bayer
f9006974bf fix blitz dev ENOENT error and mistaken console.log (patch) (#1942)
* fix `blitz dev` ENOENT error (patch)

* remove log
2021-02-15 13:01:37 -05:00
Brandon Bayer
5f6d296e37 Add @fmilani as a contributor 2021-02-15 12:54:38 -05:00
Brandon Bayer
5697173d5a Flavio retires from L1 maintainer (meta) 2021-02-15 12:52:23 -05:00
Brandon Bayer
69e5da6794 Fix type issue in blitz generate code (patch) (#1941) 2021-02-15 12:44:00 -05:00
Brandon Bayer
66e521e14b (newapp) add types.d.ts with type declarations for CSS/SCSS modules (#1929) 2021-02-15 12:41:15 -05:00
Brandon Bayer
2a25bab41c v0.30.0-canary.13 2021-02-13 21:25:08 -05:00
Brandon Bayer
c2fa1486df Fix file paths in blitz server logs to be the original path instead of compiled path (patch) (#1933) 2021-02-13 21:23:28 -05:00
Brandon Bayer
19cc7a1510 Hopefully fix Windows EPERM , EBUSY, ENOTEMPTY, ENOENT errors (patch) (#1931) 2021-02-13 18:39:28 -05:00
Brandon Bayer
b1ed61f96d Unify blitz build folder. Now .blitz/build is always used instead of .blitz/caches/dev or .blitz/caches/build (#1930)
(patch)
2021-02-13 16:48:18 -05:00
Brandon Bayer
a101964603 (newapp) remove browserslist from package.json because it only affects CSS (#1928)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-02-13 15:16:40 -05:00
Brandon Bayer
eeeab00f1b Add node 15 to CI test matrix (meta) (#1927) 2021-02-13 15:16:32 -05:00
Brandon Bayer
42bf665f44 Add @arenddeboer as a contributor 2021-02-13 15:07:53 -05:00
Brandon Bayer
abf4795395 remove all unneeded imports of React from templates (patch) (#1925)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-02-13 14:44:29 -05:00
Brandon Bayer
d48891a144 change blitz generate delete mutation to use db.deleteMany instead of db.delete (#1924) 2021-02-13 19:26:21 +00:00
Brandon Bayer
57f1e7d703 v0.30.0-canary.12 2021-02-12 14:10:31 -05:00
Brandon Bayer
2d3e46fd79 Fix query cache being deleted on login instead of being invalidated (#1917)
* fix querycache being deleted on login instead of being invalidated

* fix ci (patch)
2021-02-12 14:08:50 -05:00
Brandon Bayer
984de2cab1 v0.30.0-canary.11 2021-02-11 19:54:41 -05:00
Brandon Bayer
fca7791c47 Fix error name fields not being sent to the client (#1916)
(patch)
2021-02-11 19:51:51 -05:00
Brandon Bayer
c389a7ad6b fix useQuery hooks enabled flag not working (#1915)
(patch)
2021-02-11 18:49:05 -05:00
Brandon Bayer
a4320fd974 v0.30.0-canary.10 2021-02-11 17:17:22 -05:00
Brandon Bayer
157c397959 Fix to accept the previous, misspelled anti-csrf cookie for seamless transition for existing apps (#1914)
(patch)
2021-02-11 17:14:08 -05:00
Brandon Bayer
d7804089e1 Fix type of options for useQuery hooks (#1913)
(patch)
2021-02-11 17:07:48 -05:00
Brandon Bayer
04b0cd356c v0.30.0-canary.9 2021-02-11 15:56:49 -05:00
JuanM04
cd615f58bd Automatically clear console on blitz dev (can disable with cli.clearConsoleOnBlitzDev = false in blitz.config.js (#1909)
* Clear console

* Removed clearConsole on blitz start

* Moved no-clear-console to blitz.config.js

* Changed imports

* increase default jest timeout to 10000 for server env

Co-authored-by: Brandon Bayer <b@bayer.ws> (minor)
2021-02-11 15:54:03 -05:00
Brandon Bayer
c49da040b5 add useAuthenticatedSession() hook and fix publicData types for authenticated sessions (#1910)
(minor)
2021-02-11 15:50:52 -05:00
allcontributors[bot]
da6685cd2d docs: add JuanM04 as a contributor (#1912)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-02-11 15:49:04 -05:00
allcontributors[bot]
0f4de7761e docs: add JuanM04 as a contributor (#1911)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-02-11 15:41:32 -05:00
Brandon Bayer
3114e8bc4a fix error message grammar
(patch)
2021-02-11 14:32:21 -05:00
Brandon Bayer
e2383fbb5f v0.30.0-canary.8 2021-02-10 19:22:34 -05:00
Brandon Bayer
a4ea513a76 Change blitz generate default syntax from default[value] to default=value (#1906)
* change type:default[true] to type:default=true (major)

* update test

* update cli help
2021-02-10 19:20:11 -05:00
Brandon Bayer
9e1860d8b3 remove some old docs
(ignore)
2021-02-10 19:03:42 -05:00
Brandon Bayer
05673fbdb5 Create SECURITY.md
(ignore)
2021-02-10 19:02:29 -05:00
Brandon Bayer
a2cdcf4a74 Create codeql-analysis.yml
(ignore)
2021-02-10 19:01:06 -05:00
Kevin Østerkilde
9ff56beebf Remove requirement of publicData.roles, change new app to use publicData.role, and fix public data types (#1788)
Co-authored-by: Brandon Bayer <b@bayer.ws> (minor)
2021-02-10 18:25:59 -05:00
Brandon Bayer
b238bae52c Add @beerose as a contributor 2021-02-10 16:29:26 -05:00
Brandon Bayer
caf3d260c8 Fix page props not being copied to the Blitz wrapper from last PR (#1905)
(ignore)
2021-02-10 16:19:03 -05:00
Brandon Bayer
b108c5720f Add page.authenticate, page.redirectAuthenticatedTo, and page.suppressFirstRenderFlicker (#1901)
(minor)
2021-02-10 14:06:04 -05:00
depfu[bot]
8ccc744c5f Upgrade superjson: 1.6.0 → 1.6.2 (patch) (#1904)
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
2021-02-10 14:03:11 -05:00
Brandon Bayer
b0ed47e1b8 add useAuthorize and useRedirectAuthenticated hooks (#1900)
(minor)
2021-02-10 12:42:19 -05:00
Brian Liu
ae43a07b4d Fix useQuery hooks return type when enabled or suspense could be false (patch) (#1893)
Co-authored-by: Brandon Bayer <b@bayer.ws>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
2021-02-10 12:30:01 -05:00
allcontributors[bot]
0ba81b6474 docs: add LBrian as a contributor (#1903)
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2021-02-10 12:21:42 -05:00
Brandon Bayer
190bc65c53 fix newapp type issue in last PR
(ignore)
2021-02-10 12:20:12 -05:00
Brandon Bayer
85bd4ec286 (newapp) fix react-hook-form reset password page (#1902) 2021-02-10 16:37:16 +00:00
Brandon Bayer
1792cc6788 v0.30.0-canary.7 2021-02-09 19:36:42 -05:00
Michael Ford
dc88bc68d2 Change useSession to use suspense by default (#1888)
Co-authored-by: Brandon Bayer <b@bayer.ws> (major)
2021-02-09 19:21:09 -05:00
7493 changed files with 562238 additions and 17693 deletions

View File

@@ -20,7 +20,9 @@
"code",
"content",
"ideas",
"review"
"review",
"test",
"doc"
]
},
{
@@ -179,7 +181,8 @@
"contributions": [
"code",
"maintenance",
"test"
"test",
"doc"
]
},
{
@@ -365,7 +368,8 @@
"contributions": [
"code",
"test",
"maintenance"
"maintenance",
"doc"
]
},
{
@@ -527,7 +531,8 @@
"avatar_url": "https://avatars1.githubusercontent.com/u/19371989?v=4",
"profile": "https://builtforfifty.com",
"contributions": [
"code"
"code",
"doc"
]
},
{
@@ -1245,7 +1250,8 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/8682104?v=4",
"profile": "https://github.com/konradkalemba",
"contributions": [
"code"
"code",
"doc"
]
},
{
@@ -1587,7 +1593,8 @@
"avatar_url": "https://avatars3.githubusercontent.com/u/43112535?v=4",
"profile": "http://Dal.Design",
"contributions": [
"code"
"code",
"doc"
]
},
{
@@ -1605,7 +1612,8 @@
"avatar_url": "https://avatars3.githubusercontent.com/u/4396533?v=4",
"profile": "https://github.com/sakulstra",
"contributions": [
"code"
"code",
"test"
]
},
{
@@ -1659,7 +1667,9 @@
"avatar_url": "https://avatars0.githubusercontent.com/u/61833561?v=4",
"profile": "https://tundera.dev",
"contributions": [
"code"
"code",
"test",
"doc"
]
},
{
@@ -1907,7 +1917,8 @@
"avatar_url": "https://avatars.githubusercontent.com/u/1926271?v=4",
"profile": "https://github.com/akbo",
"contributions": [
"code"
"code",
"doc"
]
},
{
@@ -1975,8 +1986,762 @@
"contributions": [
"code"
]
},
{
"login": "LBrian",
"name": "Brian Liu",
"avatar_url": "https://avatars.githubusercontent.com/u/3888780?v=4",
"profile": "https://brianypliu.com",
"contributions": [
"code"
]
},
{
"login": "beerose",
"name": "Aleksandra Sikora",
"avatar_url": "https://avatars.githubusercontent.com/u/9019397?v=4",
"profile": "http://aleksandra.codes",
"contributions": [
"code"
]
},
{
"login": "JuanM04",
"name": "JuanM04",
"avatar_url": "https://avatars.githubusercontent.com/u/16712703?v=4",
"profile": "https://juanm04.com",
"contributions": [
"code",
"doc",
"test"
]
},
{
"login": "arenddeboer",
"name": "Arend de Boer",
"avatar_url": "https://avatars.githubusercontent.com/u/7022204?v=4",
"profile": "https://github.com/arenddeboer",
"contributions": [
"doc"
]
},
{
"login": "fmilani",
"name": "Felipe Milani",
"avatar_url": "https://avatars.githubusercontent.com/u/1580375?v=4",
"profile": "https://github.com/fmilani",
"contributions": [
"doc"
]
},
{
"login": "jxe",
"name": "Joe Edelman",
"avatar_url": "https://avatars.githubusercontent.com/u/13018?v=4",
"profile": "http://nxhx.org",
"contributions": [
"code"
]
},
{
"login": "garytube",
"name": "Gary",
"avatar_url": "https://avatars.githubusercontent.com/u/3823504?v=4",
"profile": "https://github.com/garytube",
"contributions": [
"doc"
]
},
{
"login": "oliverloops",
"name": "Oliver Lopez ",
"avatar_url": "https://avatars.githubusercontent.com/u/33361399?v=4",
"profile": "http://oliverloops.com",
"contributions": [
"doc"
]
},
{
"login": "DecadentIpsum",
"name": "Andreas Zaralis",
"avatar_url": "https://avatars.githubusercontent.com/u/32861532?v=4",
"profile": "https://decadentIpsum.me",
"contributions": [
"doc"
]
},
{
"login": "davetorbeck",
"name": "David Torbeck",
"avatar_url": "https://avatars.githubusercontent.com/u/5829885?v=4",
"profile": "https://github.com/davetorbeck",
"contributions": [
"doc"
]
},
{
"login": "gusgard",
"name": "Gustavo Gard",
"avatar_url": "https://avatars.githubusercontent.com/u/2577356?v=4",
"profile": "https://github.com/gusgard",
"contributions": [
"doc"
]
},
{
"login": "Immortalin",
"name": "Immortalin",
"avatar_url": "https://avatars.githubusercontent.com/u/7126128?v=4",
"profile": "https://narrationbox.com",
"contributions": [
"code"
]
},
{
"login": "cristianbgp",
"name": "Cristian Granda",
"avatar_url": "https://avatars.githubusercontent.com/u/8507974?v=4",
"profile": "https://cristianbgp.com",
"contributions": [
"code"
]
},
{
"login": "deniseyu",
"name": "Denise Yu",
"avatar_url": "https://avatars.githubusercontent.com/u/8420094?v=4",
"profile": "https://deniseyu.io",
"contributions": [
"code"
]
},
{
"login": "andreadellacorte",
"name": "Andrea Della Corte",
"avatar_url": "https://avatars.githubusercontent.com/u/295683?v=4",
"profile": "http://dellacorte.me",
"contributions": [
"doc"
]
},
{
"login": "aditsachde",
"name": "Adit Sachde",
"avatar_url": "https://avatars.githubusercontent.com/u/23707194?v=4",
"profile": "http://aditsachde.com",
"contributions": [
"doc"
]
},
{
"login": "hirenchauhan2",
"name": "Hiren Chauhan",
"avatar_url": "https://avatars.githubusercontent.com/u/8999668?v=4",
"profile": "https://github.com/hirenchauhan2",
"contributions": [
"code"
]
},
{
"login": "remjx",
"name": "Mark Jackson",
"avatar_url": "https://avatars.githubusercontent.com/u/35121685?v=4",
"profile": "http://remjx.com/",
"contributions": [
"doc",
"code"
]
},
{
"login": "lewisblackburn",
"name": "Lewis Blackburn",
"avatar_url": "https://avatars.githubusercontent.com/u/51877955?v=4",
"profile": "https://lewisb.cloud/",
"contributions": [
"doc"
]
},
{
"login": "FDiskas",
"name": "Vytenis",
"avatar_url": "https://avatars.githubusercontent.com/u/468006?v=4",
"profile": "https://github.com/FDiskas",
"contributions": [
"code"
]
},
{
"login": "matthieu994",
"name": "Matthieu",
"avatar_url": "https://avatars.githubusercontent.com/u/12969089?v=4",
"profile": "https://portfolio.matthieupetit.com",
"contributions": [
"code",
"test"
]
},
{
"login": "mitchazj",
"name": "Mitchell Johnson",
"avatar_url": "https://avatars.githubusercontent.com/u/15032956?v=4",
"profile": "https://github.com/mitchazj",
"contributions": [
"code"
]
},
{
"login": "Roesh",
"name": "Roshan Manuel",
"avatar_url": "https://avatars.githubusercontent.com/u/31125563?v=4",
"profile": "https://roshan.page/",
"contributions": [
"code",
"doc",
"test"
]
},
{
"login": "kevinlangleyjr",
"name": "Kevin Langley Jr.",
"avatar_url": "https://avatars.githubusercontent.com/u/877634?v=4",
"profile": "https://kevinlangleyjr.com",
"contributions": [
"code",
"doc"
]
},
{
"login": "heavygabriel",
"name": "Gabriel Picard",
"avatar_url": "https://avatars.githubusercontent.com/u/51029779?v=4",
"profile": "https://projet-test-99df0.firebaseapp.com/",
"contributions": [
"doc"
]
},
{
"login": "chenkie",
"name": "Ryan Chenkie",
"avatar_url": "https://avatars.githubusercontent.com/u/1847678?v=4",
"profile": "http://ryanchenkie.com/",
"contributions": [
"doc"
]
},
{
"login": "sbappan",
"name": "Santhosh B. Appan",
"avatar_url": "https://avatars.githubusercontent.com/u/12586088?v=4",
"profile": "https://github.com/sbappan",
"contributions": [
"doc"
]
},
{
"login": "james2406",
"name": "James Moran",
"avatar_url": "https://avatars.githubusercontent.com/u/10858584?v=4",
"profile": "http://stackoverflow.com/users/5207233/james-moran",
"contributions": [
"code",
"doc"
]
},
{
"login": "bugzpodder",
"name": "Jack Zhao",
"avatar_url": "https://avatars.githubusercontent.com/u/14841421?v=4",
"profile": "http://fb.me/yz",
"contributions": [
"code"
]
},
{
"login": "the-red",
"name": "Hisaki Akaza",
"avatar_url": "https://avatars.githubusercontent.com/u/4494300?v=4",
"profile": "https://github.com/the-red",
"contributions": [
"doc"
]
},
{
"login": "Flavyoo",
"name": "Flavio",
"avatar_url": "https://avatars.githubusercontent.com/u/14948074?v=4",
"profile": "http://flavioander.com/",
"contributions": [
"code"
]
},
{
"login": "pbteja1998",
"name": "Bhanu Teja Pachipulusu",
"avatar_url": "https://avatars.githubusercontent.com/u/17903466?v=4",
"profile": "https://bhanuteja.dev/",
"contributions": [
"code"
]
},
{
"login": "pavestru",
"name": "Pavel Struhar",
"avatar_url": "https://avatars.githubusercontent.com/u/10186479?v=4",
"profile": "https://twitter.com/pavestru",
"contributions": [
"code"
]
},
{
"login": "reo777",
"name": "Reo Ishiyama",
"avatar_url": "https://avatars.githubusercontent.com/u/42126368?v=4",
"profile": "https://in-thepink.com/",
"contributions": [
"code"
]
},
{
"login": "tmcw",
"name": "Tom MacWright",
"avatar_url": "https://avatars.githubusercontent.com/u/32314?v=4",
"profile": "https://macwright.com/",
"contributions": [
"doc"
]
},
{
"login": "franky47",
"name": "François Best",
"avatar_url": "https://avatars.githubusercontent.com/u/1174092?v=4",
"profile": "https://francoisbest.com",
"contributions": [
"code"
]
},
{
"login": "FarazPatankar",
"name": "Faraz Patankar",
"avatar_url": "https://avatars.githubusercontent.com/u/10681116?v=4",
"profile": "https://github.com/FarazPatankar",
"contributions": [
"doc"
]
},
{
"login": "ericvicenti",
"name": "Eric Vicenti",
"avatar_url": "https://avatars.githubusercontent.com/u/1483597?v=4",
"profile": "https://github.com/ericvicenti",
"contributions": [
"doc",
"code"
]
},
{
"login": "amdolan",
"name": "Alex Dolan",
"avatar_url": "https://avatars.githubusercontent.com/u/2552275?v=4",
"profile": "https://github.com/amdolan",
"contributions": [
"doc",
"code",
"test"
]
},
{
"login": "Maastrich",
"name": "Mathis Pinsault",
"avatar_url": "https://avatars.githubusercontent.com/u/58431775?v=4",
"profile": "https://github.com/Maastrich",
"contributions": [
"doc"
]
},
{
"login": "gstranger",
"name": "gstranger",
"avatar_url": "https://avatars.githubusercontent.com/u/36181416?v=4",
"profile": "https://github.com/gstranger",
"contributions": [
"code",
"doc"
]
},
{
"login": "markhughes",
"name": "Mark Hughes",
"avatar_url": "https://avatars.githubusercontent.com/u/1357323?v=4",
"profile": "http://twitter.com/_markeh",
"contributions": [
"code"
]
},
{
"login": "andrearizzello",
"name": "Andrea Rizzello",
"avatar_url": "https://avatars.githubusercontent.com/u/10348930?v=4",
"profile": "www.andrearizzello.work",
"contributions": [
"doc"
]
},
{
"login": "jahredhope",
"name": "Jahred Hope",
"avatar_url": "https://avatars.githubusercontent.com/u/13903378?v=4",
"profile": "jahred.com.au",
"contributions": [
"doc"
]
},
{
"login": "simonelnahas",
"name": "Simon El Nahas",
"avatar_url": "https://avatars.githubusercontent.com/u/29279201?v=4",
"profile": "simonelnahas.github.io/",
"contributions": [
"doc"
]
},
{
"login": "Cristy94",
"name": "Buleandra Cristian",
"avatar_url": "https://avatars.githubusercontent.com/u/1384885?v=4",
"profile": "www.usertrack.net",
"contributions": [
"doc"
]
},
{
"login": "peterpalau",
"name": "Pedro Enrique Palau Isaac",
"avatar_url": "https://avatars.githubusercontent.com/u/12257885?v=4",
"profile": "http://palauisaac.me/",
"contributions": [
"code"
]
},
{
"login": "sean-brydon",
"name": "sean-brydon",
"avatar_url": "https://avatars.githubusercontent.com/u/55134778?v=4",
"profile": "www.seanbrydon.me",
"contributions": [
"doc"
]
},
{
"login": "Dieman89",
"name": "Alessandro",
"avatar_url": "https://avatars.githubusercontent.com/u/28837891?v=4",
"profile": "buonerba.dev",
"contributions": [
"doc"
]
},
{
"login": "laubonghaudoi",
"name": "laubonghaudoi",
"avatar_url": "https://avatars.githubusercontent.com/u/11172180?v=4",
"profile": "www.jyutping.org",
"contributions": [
"doc"
]
},
{
"login": "TommasoBruno99",
"name": "Tommaso Bruno",
"avatar_url": "https://avatars.githubusercontent.com/u/61512591?v=4",
"profile": "https://github.com/TommasoBruno99",
"contributions": [
"doc"
]
},
{
"login": "antonykamp",
"name": "Antony",
"avatar_url": "https://avatars.githubusercontent.com/u/45163503?v=4",
"profile": "antonykamp.de",
"contributions": [
"doc"
]
},
{
"login": "frontsideair",
"name": "Fatih Altinok",
"avatar_url": "https://avatars.githubusercontent.com/u/868283?v=4",
"profile": "https://blog.6nok.org",
"contributions": [
"doc"
]
},
{
"login": "Mokshit06",
"name": "Mokshit Jain",
"avatar_url": "https://avatars.githubusercontent.com/u/50412128?v=4",
"profile": "https://mokshitjain.co/",
"contributions": [
"code"
]
},
{
"login": "mubaidr",
"name": "Muhammad Ubaid Raza",
"avatar_url": "https://avatars.githubusercontent.com/u/2222702?v=4",
"profile": "https://mubaidr.github.io",
"contributions": [
"code",
"doc"
]
},
{
"login": "silicontwin",
"name": "Nick Warren",
"avatar_url": "https://avatars.githubusercontent.com/u/121665?v=4",
"profile": "https://github.com/silicontwin",
"contributions": [
"code"
]
},
{
"login": "mlabate",
"name": "mlabate",
"avatar_url": "https://avatars.githubusercontent.com/u/17139676?v=4",
"profile": "https://github.com/mlabate",
"contributions": [
"doc"
]
},
{
"login": "lumaxis",
"name": "Lukas Spieß",
"avatar_url": "https://avatars.githubusercontent.com/u/406937?v=4",
"profile": "https://github.com/lumaxis",
"contributions": [
"doc"
]
},
{
"login": "dawnofmidnight",
"name": "DawnOfMidnight",
"avatar_url": "https://avatars.githubusercontent.com/u/78233879?v=4",
"profile": "https://dawnofmidnight.vercel.app",
"contributions": [
"doc"
]
},
{
"login": "kirakik",
"name": "Kenza Iraki",
"avatar_url": "https://avatars.githubusercontent.com/u/17203119?v=4",
"profile": "https://www.linkedin.com/in/kenzairaki/",
"contributions": [
"test",
"code"
]
},
{
"login": "agustif",
"name": "Agusti Fernandez",
"avatar_url": "https://avatars.githubusercontent.com/u/6601142?v=4",
"profile": "https://github.com/agustif",
"contributions": [
"code"
]
},
{
"login": "Anjianto",
"name": "Anjianto",
"avatar_url": "https://avatars.githubusercontent.com/u/61521141?v=4",
"profile": "https://github.com/Anjianto",
"contributions": [
"code"
]
},
{
"login": "adblanc",
"name": "Blanc Adrien",
"avatar_url": "https://avatars.githubusercontent.com/u/41756894?v=4",
"profile": "https://adrienblanc.com",
"contributions": [
"code"
]
},
{
"login": "meepdeew",
"name": "meepdeew",
"avatar_url": "https://avatars.githubusercontent.com/u/43303008?v=4",
"profile": "https://github.com/meepdeew",
"contributions": [
"doc"
]
},
{
"login": "Hardik3296",
"name": "Hardik Gaur",
"avatar_url": "https://avatars.githubusercontent.com/u/20360325?v=4",
"profile": "https://github.com/Hardik3296",
"contributions": [
"doc"
]
},
{
"login": "acornellier",
"name": "acornellier",
"avatar_url": "https://avatars.githubusercontent.com/u/8725423?v=4",
"profile": "https://github.com/acornellier",
"contributions": [
"code"
]
},
{
"login": "craigglennie",
"name": "craigglennie",
"avatar_url": "https://avatars.githubusercontent.com/u/149281?v=4",
"profile": "https://github.com/craigglennie",
"contributions": [
"doc"
]
},
{
"login": "fernvilla",
"name": "Fernando Villasenor",
"avatar_url": "https://avatars.githubusercontent.com/u/5857808?v=4",
"profile": "http://www.fernvillasenor.com",
"contributions": [
"code"
]
},
{
"login": "swiftgaruda",
"name": "swiftgaruda",
"avatar_url": "https://avatars.githubusercontent.com/u/16741392?v=4",
"profile": "https://github.com/swiftgaruda",
"contributions": [
"doc"
]
},
{
"login": "Patil2099",
"name": "Pankaj Patil",
"avatar_url": "https://avatars.githubusercontent.com/u/35653876?v=4",
"profile": "https://pplife.home.blog",
"contributions": [
"doc"
]
},
{
"login": "mabadir",
"name": "Mina Abadir",
"avatar_url": "https://avatars.githubusercontent.com/u/3389914?v=4",
"profile": "minaabadir.ca",
"contributions": [
"code",
"doc"
]
},
{
"login": "frankiesardo",
"name": "Francesco Sardo",
"avatar_url": "https://avatars.githubusercontent.com/u/1476561?v=4",
"profile": "https://github.com/frankiesardo",
"contributions": [
"doc"
]
},
{
"login": "enemycnt",
"name": "Nikolay",
"avatar_url": "https://avatars.githubusercontent.com/u/320313?v=4",
"profile": "https://github.com/enemycnt",
"contributions": [
"doc"
]
},
{
"login": "Dipeshwagle",
"name": "Dipesh Wagle",
"avatar_url": "https://avatars.githubusercontent.com/u/4191022?v=4",
"profile": "https://dipeshwagle.com",
"contributions": [
"code"
]
},
{
"login": "benbender",
"name": "Benjamin Bender",
"avatar_url": "https://avatars.githubusercontent.com/u/462455?v=4",
"profile": "https://codepoet.de",
"contributions": [
"code"
]
},
{
"login": "nimashoghi",
"name": "Nima Shoghi",
"avatar_url": "https://avatars.githubusercontent.com/u/3728170?v=4",
"profile": "https://nima.sh",
"contributions": [
"code"
]
},
{
"login": "chronark",
"name": "Andreas Thomas",
"avatar_url": "https://avatars.githubusercontent.com/u/18246773?v=4",
"profile": "https://github.com/chronark",
"contributions": [
"doc"
]
},
{
"login": "guoqqqi",
"name": "guoqqqi",
"avatar_url": "https://avatars.githubusercontent.com/u/72343596?v=4",
"profile": "https://github.com/guoqqqi",
"contributions": [
"doc"
]
},
{
"login": "timbooker",
"name": "Tim",
"avatar_url": "https://avatars.githubusercontent.com/u/612681?v=4",
"profile": "https://github.com/timbooker",
"contributions": [
"code",
"test"
]
},
{
"login": "ormarek",
"name": "Marek Orłowski",
"avatar_url": "https://avatars.githubusercontent.com/u/16357457?v=4",
"profile": "http://orlowski.me/",
"contributions": [
"doc"
]
},
{
"login": "AntoineGuestin",
"name": "Antoine G",
"avatar_url": "https://avatars.githubusercontent.com/u/70888750?v=4",
"profile": "https://github.com/AntoineGuestin",
"contributions": [
"code"
]
},
{
"login": "swinner2",
"name": "Sean Winner",
"avatar_url": "https://avatars.githubusercontent.com/u/6707308?v=4",
"profile": "https://github.com/swinner2",
"contributions": [
"code"
]
}
],
"contributorsPerLine": 7,
"skipCi": true
}
}

52
.eslintignore Normal file
View File

@@ -0,0 +1,52 @@
node_modules
reports
*.log
.nyc_output
**/coverage
tsconfig.tsbuildinfo
**/.blitz/**
**/.next/**
**/dist/**
**/.vercel/**
**/.test*
/examples/auth2
prettier.config.*
jest.config.*
jest.setup.*
babel.config.*
eslint.config.*
/__mocks__
/__fixturse
/assets
/patches
/rfc-docs
/scripts
/types
/recipes/*/templates
/packages/generator/templates
/packages/cli/lib
// COPIED FROM nextjs/.eslintignore
/nextjs/**/.next/**
/nextjs/**/_next/**
/nextjs/**/dist/**
/nextjs/examples/with-eslint/**
/nextjs/examples/with-typescript-eslint-jest/**
/nextjs/examples/with-kea/**
/nextjs/packages/next/bundles/webpack/packages/*.runtime.js
/nextjs/packages/next/compiled/**/*
/nextjs/packages/react-refresh-utils/**/*.js
/nextjs/packages/react-dev-overlay/lib/**
/nextjs/**/__tmp__/**
/nextjs/.github/actions/next-stats-action/.work
/nextjs/packages/next-codemod/transforms/__testfixtures__/**/*
/nextjs/packages/next-codemod/transforms/__tests__/**/*
/nextjs/packages/next-codemod/**/*.js
/nextjs/packages/next-codemod/**/*.d.ts
/nextjs/packages/next-env/**/*.d.ts
/nextjs/test/integration/async-modules/**
/nextjs/test/integration/eslint/**
/nextjs/test-timings.json

View File

@@ -1,14 +1,19 @@
module.exports = {
parser: "@typescript-eslint/parser",
parser: "babel-eslint",
env: {
browser: true,
commonjs: true,
es6: true,
node: true,
},
parserOptions: {
ecmaVersion: 6,
sourceType: "module",
ecmaFeatures: {
jsx: true,
},
project: `./tsconfig.json`,
},
plugins: ["@typescript-eslint", "import", "unicorn", "simple-import-sort"],
plugins: ["import", "unicorn", "simple-import-sort"],
extends: ["react-app"],
rules: {
"react/react-in-jsx-scope": "off", // React is always in scope with Blitz
@@ -23,13 +28,6 @@ module.exports = {
case: "kebabCase",
},
],
"@typescript-eslint/no-floating-promises": "error",
// note you must disable the base rule as it can report incorrect errors
"no-use-before-define": "off",
"@typescript-eslint/no-use-before-define": ["error"],
// note you must disable the base rule as it can report incorrect errors
"no-redeclare": "off",
"@typescript-eslint/no-redeclare": ["error"],
"simple-import-sort/imports": [
"warn",
{
@@ -51,20 +49,50 @@ module.exports = {
},
],
},
ignorePatterns: [
"packages/cli/",
"packages/generator/templates",
".eslintrc.js",
"recipes/*/templates",
],
overrides: [
{
files: ["examples/**", "packages/gui/**", "recipes/**"],
files: ["**/*.ts", "**/*.tsx"],
parser: "@typescript-eslint/parser",
parserOptions: {
ecmaVersion: 6,
sourceType: "module",
ecmaFeatures: {
jsx: true,
},
project: `./tsconfig.eslint.json`,
},
plugins: ["@typescript-eslint"],
rules: {
"@typescript-eslint/no-floating-promises": "error",
// note you must disable the base rule as it can report incorrect errors
"no-use-before-define": "off",
// "@typescript-eslint/no-use-before-define": ["error"],
// note you must disable the base rule as it can report incorrect errors
"no-redeclare": "off",
"@typescript-eslint/no-redeclare": ["error"],
},
},
{
files: ["examples/**", "recipes/**"],
rules: {
"import/no-default-export": "off",
"unicorn/filename-case": "off",
"@typescript-eslint/no-floating-promises": "off",
},
},
{
files: ["packages/cli/src/commands/**/*"],
rules: {
"require-await": "off",
},
},
{
files: ["test/**", "**/__fixtures__/**"],
rules: {
"import/no-default-export": "off",
"require-await": "off",
"unicorn/filename-case": "off",
},
},
],
}

6
.github/CODEOWNERS vendored
View File

@@ -2,7 +2,7 @@
* @flybayer
packages/cli/**/* @aem, @flybayer
packages/generator/**/* @aem @flybayer
# packages/cli/**/* @aem, @flybayer
# packages/generator/**/* @aem @flybayer
packages/generator/templates**/* @flybayer
packages/installer/**/* @aem @flybayer
# packages/installer/**/* @aem @flybayer

View File

@@ -1,23 +0,0 @@
---
name: Bug report
about: Something is not working right. Or error messages are unclear.
title: ''
labels: ''
assignees: ''
---
### What is the problem?
### Steps to Reproduce
1.
### Versions
```
output of `blitz --version --verbose`
```
### Other
Please include applicable logs and screenshots that show your problem.

48
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
name: Bug Report
description: Something is not working right. Or error messages are unclear.
labels: "kind/bug, status/triage"
body:
- type: markdown
attributes:
value: Thanks for taking the time to file a bug report! Please fill out this form as completely as possible.
- type: textarea
attributes:
label: What is the problem?
validations:
required: true
- type: textarea
attributes:
label: "Paste all your error logs here:"
value: |
```
PASTE_HERE (leave the ``` marks)
```
validations:
required: true
- type: textarea
attributes:
label: "Paste all relevant code snippets here:"
value: |
```
PASTE_HERE (leave the ``` marks)
```
validations:
required: true
- type: textarea
attributes:
label: What are detailed steps to reproduce this?
value: "1."
validations:
required: true
- type: textarea
attributes:
label: "Run `blitz -v` and paste the output here:"
value: |
```
PASTE_HERE (leave the ``` marks)
```
validations:
required: true
- type: textarea
attributes:
label: "Please include below any other applicable logs and screenshots that show your problem:"

View File

@@ -2,7 +2,7 @@
name: Feature/change request
about: Something new or better!
title: ""
labels: ""
labels: "status/triage"
assignees: ""
---

View File

@@ -1,10 +1,19 @@
Closes: ??
<!--
Thanks for opening a PR! Your contribution is much appreciated.
To make sure your PR is handled as smoothly as possible please:
- Link issue via "Closes #[issue_number]
- Choose & follow the right checklist for the change that you're making:
-->
Closes: ?
### What are the changes and their implications?
### Checklist
## Bug Checklist
- [ ] Changes covered by tests (tests added if needed)
- [ ] PR submitted to [blitzjs.com](https://github.com/blitz-js/blitzjs.com) for any user facing changes
- [ ] Integration test added (see [test docs](https://blitzjs.com/docs/contributing#running-tests) if needed)
<!-- IMPORTANT: Make sure to check the "Allow edits from maintainers" box below this window -->
## Feature Checklist
- [ ] Integration test added (see [test docs](https://blitzjs.com/docs/contributing#running-tests) if needed)
- [ ] Documentation added/updated (submit PR to [blitzjs.com repo](https://github.com/blitz-js/blitzjs.com))

View File

@@ -11,16 +11,8 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Use Node and Yarn
uses: actions/setup-node@v2
with:
node-version: "14"
- name: Install dependencies
run: |
yarn && yarn build
env:
CI: true
- name: Count size
uses: preactjs/compressed-size-action@v2
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
exclude: "{./nextjs/**}"

View File

@@ -1,14 +1,10 @@
# https://github.com/vercel/next.js/commits/canary/.github/workflows/build_test_deploy.yml
name: CI
on:
push:
branches:
- master
- canary
pull_request:
branches:
- master
- canary
types: [opened, synchronize]
jobs:
lint:
@@ -30,32 +26,42 @@ jobs:
path: |
${{ steps.yarn-cache-dir-path.outputs.dir }}
**/node_modules
/home/runner/.cache/Cypress
C:\Users\runneradmin\AppData\Local\Cypress\Cache
key: ${{ runner.os }}-${{ runner.node_version}}-yarn-v4-${{ hashFiles('yarn.lock') }}
key: ${{ runner.os }}-${{ runner.node_version}}-yarn-v8-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-${{ runner.node_version}}-yarn-v4-
${{ runner.os }}-${{ runner.node_version}}-yarn-v8-
- name: Install dependencies
run: yarn install --frozen-lockfile --silent
env:
CI: true
- name: manypkg lint
run: yarn manypkg check
env:
CI: true
- name: Build next.js
run: yarn build:nextjs
env:
CI: true
- name: yarn lint
run: yarn lint
env:
CI: true
build_and_test_pkgs:
name: Packages Tests
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node_version: [12, 14]
runs-on: ${{ matrix.os }}
build:
name: Build
runs-on: ubuntu-latest
env:
NEXT_TELEMETRY_DISABLED: 1
outputs:
docsChange: ${{ steps.docs-change.outputs.DOCS_CHANGE }}
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 25
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node_version }}
node-version: "14"
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
@@ -65,40 +71,65 @@ jobs:
with:
path: |
${{ steps.yarn-cache-dir-path.outputs.dir }}
/home/runner/.cache/Cypress
C:\Users\runneradmin\AppData\Local\Cypress\Cache
key: ${{ runner.os }}-${{ runner.node_version}}-yarn-v4-${{ hashFiles('yarn.lock') }}
**/node_modules
key: ${{ runner.os }}-${{ runner.node_version}}-yarn-v8-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-${{ runner.node_version}}-yarn-v4-
- name: Install dependencies
run: yarn install --frozen-lockfile --silent
env:
CI: true
${{ runner.os }}-${{ runner.node_version}}-yarn-v8-
- run: yarn install --frozen-lockfile --check-files
- name: Build Packages
run: yarn build
- run: node run-tests.js --timings --write-timings -g 1/1
working-directory: nextjs
- name: Check docs only change
working-directory: nextjs
run: echo ::set-output name=DOCS_CHANGE::$(node skip-docs-change.js echo 'not-docs-only-change')
id: docs-change
- run: echo ${{steps.docs-change.outputs.DOCS_CHANGE}}
- uses: actions/cache@v2
id: cache-build
with:
path: ./*
key: ${{ github.sha }}
testBlitzPackages:
name: Blitz - Test Packages
needs: build
runs-on: ubuntu-latest
env:
NEXT_TELEMETRY_DISABLED: 1
steps:
- uses: actions/cache@v2
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
id: restore-build
with:
path: ./*
key: ${{ github.sha }}
- name: Setup kernel to increase watchers
if: matrix.os == 'ubuntu-latest'
run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
- name: Build packages
run: yarn build
env:
CI: true
- name: Test Blitz Packages
run: yarn testonly:packages
env:
CI: true
build_and_test_examples:
testBlitzExamples:
timeout-minutes: 30
name: Example Apps Tests
name: Blitz - Test Example Apps
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node_version: [12, 14]
runs-on: ${{ matrix.os }}
env:
NEXT_TELEMETRY_DISABLED: 1
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 25
- name: Use Node.js
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node_version }}
node-version: "14"
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
@@ -108,23 +139,325 @@ jobs:
with:
path: |
${{ steps.yarn-cache-dir-path.outputs.dir }}
/home/runner/.cache/Cypress
C:\Users\runneradmin\AppData\Local\Cypress\Cache
key: ${{ runner.os }}-${{ runner.node_version}}-yarn-v4-${{ hashFiles('yarn.lock') }}
**/node_modules
key: ${{ runner.os }}-${{ runner.node_version}}-yarn-v8-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-${{ runner.node_version}}-yarn-v4-
- name: Install dependencies
run: yarn install --frozen-lockfile --silent
env:
CI: true
${{ runner.os }}-${{ runner.node_version}}-yarn-v8-
- run: yarn install --frozen-lockfile --check-files
# - run: yarn cpy node_modules/.blitz packages/core/node_modules/.blitz
# if: matrix.os == 'windows-latest'
- name: Build Packages
run: yarn build
# Needed to get cypress binary
- run: yarn cypress install
- name: Install sass
run: yarn install -W sass
- name: Setup kernel to increase watchers
if: matrix.os == 'ubuntu-latest'
run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
- name: Build packages
run: yarn build
env:
CI: true
- name: Test examples
run: yarn testonly:examples
env:
CI: true
checkPrecompiled:
name: Check Pre-compiled
defaults:
run:
working-directory: nextjs
runs-on: ubuntu-latest
needs: build
env:
NEXT_TELEMETRY_DISABLED: 1
steps:
- uses: actions/cache@v2
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
id: restore-build
with:
path: ./*
key: ${{ github.sha }}
- run: ./check-pre-compiled.sh
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
testUnit:
name: Nextjs - Test Unit
defaults:
run:
working-directory: nextjs
runs-on: ubuntu-latest
needs: build
env:
NEXT_TELEMETRY_DISABLED: 1
NEXT_TEST_JOB: 1
HEADLESS: true
steps:
- uses: actions/cache@v2
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
id: restore-build
with:
path: ./*
key: ${{ github.sha }}
- run: node run-tests.js --timings --type unit -g 1/1
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
testIntegrationBlitz:
name: Blitz - Test Integration
runs-on: ubuntu-latest
needs: build
env:
NEXT_TELEMETRY_DISABLED: 1
NEXT_TEST_JOB: 1
HEADLESS: true
strategy:
fail-fast: false
steps:
- run: echo ${{needs.build.outputs.docsChange}}
- uses: actions/cache@v2
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
id: restore-build
with:
path: ./*
key: ${{ github.sha }}
# TODO: remove after we fix watchpack watching too much
- run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
- run: xvfb-run node nextjs/run-tests.js -c 3
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
testIntegration:
name: Nextjs - Test Integration
defaults:
run:
working-directory: nextjs
runs-on: ubuntu-latest
needs: build
env:
NEXT_TELEMETRY_DISABLED: 1
NEXT_TEST_JOB: 1
HEADLESS: true
strategy:
fail-fast: false
matrix:
group: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
steps:
- run: echo ${{needs.build.outputs.docsChange}}
working-directory: ./
- uses: actions/cache@v2
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
id: restore-build
with:
path: ./*
key: ${{ github.sha }}
# TODO: remove after we fix watchpack watching too much
- run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
- run: xvfb-run node run-tests.js --timings -g ${{ matrix.group }}/10 -c 3
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
testElectron:
name: Nextjs - Test Electron
defaults:
run:
working-directory: nextjs
runs-on: ubuntu-latest
needs: build
env:
NEXT_TELEMETRY_DISABLED: 1
NEXT_TEST_JOB: 1
HEADLESS: true
TEST_ELECTRON: 1
steps:
- uses: actions/cache@v2
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
id: restore-build
with:
path: ./*
key: ${{ github.sha }}
# TODO: remove after we fix watchpack watching too much
- run: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
- run: cd test/integration/with-electron/app && yarn
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
- run: xvfb-run node run-tests.js test/integration/with-electron/test/index.test.js
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
testsPass:
name: thank you, next
runs-on: ubuntu-latest
needs:
[
checkPrecompiled,
testIntegration,
testIntegrationBlitz,
testUnit,
testBlitzPackages,
testBlitzExamples,
]
steps:
- run: exit 0
testFutureDependencies:
name: Nextjs - Webpack 5 (Basic, Production, Acceptance)
runs-on: ubuntu-latest
needs: build
env:
NEXT_TELEMETRY_DISABLED: 1
NEXT_TEST_JOB: 1
HEADLESS: true
NEXT_PRIVATE_TEST_WEBPACK5_MODE: 1
steps:
- uses: actions/cache@v2
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
id: restore-build
with:
path: ./*
key: ${{ github.sha }}
- run: xvfb-run node run-tests.js test/integration/{fallback-modules,link-ref,production,basic,async-modules,font-optimization,ssr-ctx}/test/index.test.js test/acceptance/*.test.js
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
working-directory: nextjs
testLegacyReact:
name: Nextjs - React 16 + Webpack 4 (Basic, Production, Acceptance)
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./
env:
NEXT_TELEMETRY_DISABLED: 1
NEXT_TEST_JOB: 1
HEADLESS: true
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 25
- run: echo ::set-output name=DOCS_CHANGE::$(node skip-docs-change.js echo 'not-docs-only-change')
id: docs-change
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
- run: cat package.json | jq '.resolutions.react = "^16.14.0"' > package.json.tmp && mv package.json.tmp package.json
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
- run: cat package.json | jq '.resolutions."react-dom" = "^16.14.0"' > package.json.tmp && mv package.json.tmp package.json
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
- name: Use Node.js
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
uses: actions/setup-node@v2
with:
node-version: "14"
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
- name: Get yarn cache directory path
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Cache node_modules
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
id: yarn-cache
uses: actions/cache@v2
with:
path: |
${{ steps.yarn-cache-dir-path.outputs.dir }}
**/node_modules
/home/runner/.cache/Cypress
C:\Users\runneradmin\AppData\Local\Cypress\Cache
key: ${{ runner.os }}-${{ runner.node_version}}-yarn-v8-${{ hashFiles('yarn.lock') }}
restore-keys: |
${{ runner.os }}-${{ runner.node_version}}-yarn-v8-
- run: yarn install --check-files
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
- run: yarn list react react-dom
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
- run: yarn build:nextjs
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
- run: xvfb-run node run-tests.js test/integration/{link-ref,production,basic,async-modules,font-optimization,ssr-ctx,worker-loader}/test/index.test.js test/acceptance/*.test.js
if: ${{ steps.docs-change.outputs.DOCS_CHANGE != 'docs only change' }}
working-directory: nextjs
testFirefox:
name: Nextjs - Test Firefox (production)
defaults:
run:
working-directory: nextjs
runs-on: ubuntu-latest
needs: build
env:
HEADLESS: true
BROWSERNAME: "firefox"
NEXT_TELEMETRY_DISABLED: 1
steps:
- uses: actions/cache@v2
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
id: restore-build
with:
path: ./*
key: ${{ github.sha }}
- run: node run-tests.js test/integration/production/test/index.test.js
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
testSafari:
name: Nextjs - Test Safari (production)
defaults:
run:
working-directory: nextjs
runs-on: ubuntu-latest
needs: build
env:
BROWSERSTACK: true
BROWSERNAME: "safari"
NEXT_TELEMETRY_DISABLED: 1
SKIP_LOCAL_SELENIUM_SERVER: true
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
steps:
- uses: actions/cache@v2
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
id: restore-build
with:
path: ./*
key: ${{ github.sha }}
- run: '[[ -z "$BROWSERSTACK_ACCESS_KEY" ]] && echo "Skipping for PR" || node run-tests.js test/integration/production/test/index.test.js'
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
testSafariOld:
name: Nextjs - Test Safari 10.1 (nav)
defaults:
run:
working-directory: nextjs
runs-on: ubuntu-latest
needs: [build, testSafari]
env:
BROWSERSTACK: true
LEGACY_SAFARI: true
BROWSERNAME: "safari"
NEXT_TELEMETRY_DISABLED: 1
SKIP_LOCAL_SELENIUM_SERVER: true
BROWSERSTACK_USERNAME: ${{ secrets.BROWSERSTACK_USERNAME }}
BROWSERSTACK_ACCESS_KEY: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
steps:
- uses: actions/cache@v2
if: ${{needs.build.outputs.docsChange != 'docs only change'}}
id: restore-build
with:
path: ./*
key: ${{ github.sha }}
- run: '[[ -z "$BROWSERSTACK_ACCESS_KEY" ]] && echo "Skipping for PR" || node run-tests.js test/integration/production-nav/test/index.test.js'
if: ${{needs.build.outputs.docsChange != 'docs only change'}}

7
.gitignore vendored
View File

@@ -2,7 +2,6 @@
.DS_Store
.idea
.jest-*
lib
node_modules
reports
*.log
@@ -25,3 +24,9 @@ dist
.tsbuildinfo
.nvmrc
**/.test*
examples/auth2
.idea
.ultra.cache.json
db.sqlite-journal
test/integration/**/db.json
test/**/*/out

1
.husky/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
_

5
.husky/pre-commit Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn lint-staged
yarn pretty-quick --staged

View File

@@ -4,7 +4,7 @@
.log
.DS_Store
.jest-*
lib
packages/cli/lib
node_modules
reports
*.log
@@ -19,3 +19,4 @@ bin
!packages/blitz/src/bin
packages/generator/templates/**
.github/ISSUE_TEMPLATE/bug_report.md
nextjs/packages/next/compiled/**

View File

@@ -1,3 +1,28 @@
# Contributing
[Read the Contributing Guide at Blitzjs.com](https://blitzjs.com/docs/contributing)
## Notes For Core Team
### Syncing Next.js Fork
1. Run `yarn push-nextjs`
- If it fails with an error of `git-subrepo: Can't commit: 'subrepo/nextjs' doesn't contain upstream HEAD:`, then run `yarn push-nextjs --force` (see https://github.com/ingydotnet/git-subrepo/issues/530)
2. Create new git branch for the upgrade
3. In the forked repo (https://github.com/blitz-js/next.js), run:
1. `git pull`
2. `git fetch --all`
3. `git merge v10.2.0` (change the version to be the version you are updating to)
4. Resolve all merge conflicts and complete merge
5. `git push`
4. Run `yarn pull next-nextjs`
- If it fails, run `git subrepo clean nextjs` and try again
5. Run `yarn`
6. Run `yarn manypkg check` and optionally `yarn manypkg fix` to fix any issues
7. Under `nextjs/`, run `./check-pre-compiled.sh` and commit the changes
8. Run `yarn build:nextjs`
9. Run `yarn lint` - fix any issues
10. Run `yarn build` - fix any issues
11. Run `yarn test:nextjs-size` and update tests if there are any failures
12. Open PR and fix any failing tests
13. Any doc updates?

3
CONTRIBUTOR_STATS.md Normal file
View File

@@ -0,0 +1,3 @@
# Contributor over time
[![Contributor over time](https://contributor-graph-api.apiseven.com/contributors-svg?chart=contributorOverTime&repo=blitz-js/blitz)](https://www.apiseven.com/en/contributor-graph?chart=contributorOverTime&repo=blitz-js/blitz)

View File

@@ -1,11 +0,0 @@
# Blitz.js Governance
_From Brandon Bayer (@flybayer), the creator:_
Currently at this very early stage it's basically a [BDFL situation](https://opensource.guide/leadership-and-governance/#what-are-some-of-the-common-governance-structures-for-open-source-projects), with me having the final say in decisions.
However we will move away from BDFL to something that looks more like Ember.js. It's extremely important to me (Brandon) that Blitz.js is a long-term, sustainable, and community-run project.
I would love some mentorship from people with experience in large open-source projects on making this transition.
Also, it's possible I will create one or more business around Blitz, perhaps similar to how Taylor Otwell has around Laravel, but Blitz itself will always remain a separate community-run project.

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2020 Brandon Bayer
Copyright (c) 2021 Brandon Bayer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1 +0,0 @@
This document has moved here: https://blitzjs.com/docs/maintainers

View File

@@ -1,3 +0,0 @@
# Manifesto
[The Manifesto has been moved to Blitzjs.com](https://blitzjs.com/docs/manifesto)

236
README.md
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-209-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-291-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">
@@ -22,15 +22,15 @@
<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">Makes you far more productive than you ever dreamed was possible 😉</h3>
<h3 align="center"><a href="https://blitzjs.com" 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.
Includes everything you need for production apps. **Everything end-to-end from the database to the frontend.**
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.
Blitz brings back the **simplicity and conventions** of server-rendered frameworks like Ruby on Rails while preserving everything we love about React and client-side rendering!
<br>
@@ -49,7 +49,7 @@ _You can alternatively use [`npx`](https://www.npmjs.com/package/npx)_
1. `blitz new myAppName`
2. `cd myAppName`
3. `blitz dev`
4. View your baby app at http://localhost:3000
4. View your brand new app at http://localhost:3000
<br><br>
@@ -57,32 +57,10 @@ _You can alternatively use [`npx`](https://www.npmjs.com/package/npx)_
<img alt="Bytes Newsletter" src="https://files-8wtskjofb.vercel.app/smarter-16x1.jpg">
</a>
<br><br>
![Architecture diagram](https://blitzjs.now.sh/img/architecture-diagram.png)
<br><br>
**Features:**<br>
⚡️ Built on Next.js<br>
⚡️ Don't have to build an API for client-side rendering<br>
⚡️ Client-side rendering, Server-side rendering, and fully static pages all in the same app<br>
⚡️ Full TypeScript support with static, end-to-end typing (no code generation step needed like with GraphQL)<br>
⚡️ React Concurrent Mode enabled<br>
⚡️ Database/ORM agnostic, but Prisma 2 is default<br>
⚡️ CLI with code scaffolding, Rails-style console REPL, etc<br>
⚡️ GraphQL Ready<br>
⚡️ Deploy serverless or serverful<br>
⚡️ Highly secure authentication <br>
⚡️ Authorization you can use on both server and client<br>
⚡️ Recipes for easily adding libraries like Tailwind, CSS-in-JS, etc.<br>
**Other key features coming:**<br>
⚡️ Model validation you can use on both server and client<br>
⚡️ React native support<br>
⚡️ GUI so you don't have to use the CLI<br>
<br>
### The Foundational Principles
@@ -127,36 +105,57 @@ Your financial contributions help ensure Blitz continues to be developed and mai
### 🌱 Seedling Sponsors
<a aria-label="React Bricks" href="https://reactbricks.com/?utm_source=blitzjs&utm_medium=sponsorship&utm_campaign=blitzjs_sponsorship">
<img alt="" src="https://reactbricks.com/reactbricks_icon.svg" width="30px"/>
</a>
<a aria-label="Andreas Asprou" href="https://andreas.fyi">
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/canary/assets/andreas.jpg" width="30px"/>
</a>
<table>
<tr>
<td><a aria-label="React Bricks" href="https://reactbricks.com/?utm_source=blitzjs&utm_medium=sponsorship&utm_campaign=blitzjs_sponsorship">
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/canary/assets/reactbricks_icon.svg" width="40px"/>
</a></td>
<td><a aria-label="Andreas Asprou" href="https://andreas.fyi">
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/canary/assets/andreas.jpg" width="40px"/>
</a></td>
<td><a aria-label="Robert Malko" href="https://github.com/malkomalko">
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/canary/assets/rob_blitz.jpg" width="40px"/>
</a></td>
<td><a aria-label="Digas" href="https://digsas.com">
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/canary/assets/digsas.svg" width="40px"/>
</a></td>
<td><a aria-label="userTrack" href="https://www.usertrack.net/?ref=blitzjs">
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/canary/assets/usertrack.png" width="40px"/>
</a></td>
</tr>
</table>
### 🥉 Bronze Sponsors
<a aria-label="Render.com" href="https://render.com?utm_source=BlitzJS&utm_medium=sponsorship&utm_campaign=BlitzJS_Sponsorship_2020">
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/canary/assets/render-logo-color2.png" width="110px">
</a>
<table>
<tr>
<td><a aria-label="Render.com" href="https://render.com?utm_source=BlitzJS&utm_medium=sponsorship&utm_campaign=BlitzJS_Sponsorship_2020">
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/canary/assets/render-logo-color2.png" width="200px">
</a></td>
<td><a aria-label="RIT" href="https://rit-inc.co.jp/?utm_source=BlitzJS&utm_medium=sponsorship&utm_campaign=BlitzJS_Sponsorship_2021">
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/canary/assets/rit_logo.png" width="200px">
</a></td>
</tr>
</table>
### 🥈 Silver Sponsors
<a aria-label="Fauna" href="https://dashboard.fauna.com/accounts/register?utm_source=BlitzJS&utm_medium=sponsorship&utm_campaign=BlitzJS_Sponsorship_2020">
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/canary/assets/Fauna_Logo_Blue.png" width="200px">
<img alt="" src="https://raw.githubusercontent.com/blitz-js/blitz/canary/assets/Fauna_Logo_Blue.png" width="300px">
</a>
### 🏆 Gold Sponsors
<a aria-label="Your Company" href="#">
<img alt="" src="https://dummyimage.com/1000x330/efe8ff/000000.png&text=Your+Logo+Here" width="300px">
<img alt="" src="https://dummyimage.com/1000x330/efe8ff/000000.png&text=Your+Logo+Here" width="400px">
</a>
### 💎 Diamond Sponsors
<a aria-label="Your Company" href="#">
<img alt="" src="https://dummyimage.com/1000x330/efe8ff/000000.png&text=Your+Logo+Here" width="400px">
<img alt="" src="https://dummyimage.com/1000x330/efe8ff/000000.png&text=Your+Logo+Here" width="500px">
</a>
<br>
@@ -177,15 +176,15 @@ Your financial contributions help ensure Blitz continues to be developed and mai
## Maintainers (Level 2) ✨
_Code ownership, pull request approvals and merging, etc_ (see [MAINTAINERS.md](./MAINTAINERS.md))
_Code ownership, pull request approvals and merging, etc_ (see [Maintainers L2](https://blitzjs.com/docs/maintainers#level-2-maintainers))
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://github.com/aem"><img src="https://avatars0.githubusercontent.com/u/1909883?v=4" width="100px;" alt=""/><br /><sub><b>Adam Markon</b></sub></a><br />CLI</td>
<td align="center"><a href="http://robdrosenberg.com"><img src="https://avatars0.githubusercontent.com/u/20813991?v=4" width="100px;" alt=""/><br /><sub><b>Robert Rosenberg</b></sub></a><br />Website/Docs</td>
<td align="center"><a href="http://simonknott.de"><img src="https://avatars1.githubusercontent.com/u/14912729?v=4" width="100px;" alt=""/><br /><sub><b>Simon Knott</b></sub></a><br />SuperJSON</td>
<td align="center"><a href="https://juanm04.com"><img src="https://avatars0.githubusercontent.com/u/16712703?v=4" width="100px;" alt=""/><br /><sub><b>Juan Martín Seery</b></sub></a><br />Website/Docs</td>
</tr>
</table>
<!-- markdownlint-enable -->
@@ -195,27 +194,42 @@ _Code ownership, pull request approvals and merging, etc_ (see [MAINTAINERS.md](
## Maintainers (Level 1) ✨
_Issue triage, pull request triage, community encouragement and moderation, etc_ (see [MAINTAINERS.md](./MAINTAINERS.md))
_Issue triage, pull request triage, community encouragement and moderation, etc_ (see [Maintainers L1](https://blitzjs.com/docs/maintainers#level-1-maintainers))
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://corey-brown.com"><img src="https://avatars1.githubusercontent.com/u/12791148?v=4" width="100px;" alt=""/><br /><sub><b>Corey Brown</b></sub></a></td>
<td align="center"><a href="http://jeremyliberman.com/"><img src="https://avatars3.githubusercontent.com/u/2754163?v=4" width="100px;" alt=""/><br /><sub><b>Jeremy Liberman</b></td>
<td align="center"><a href="http://jagascript.com"><img src="https://avatars0.githubusercontent.com/u/4562878?v=4" width="100px;" alt=""/><br /><sub><b>Jaga Santagostino</b></sub></a></td>
<td align="center"><a href="https://twitter.com/nitaking_"><img src="https://avatars2.githubusercontent.com/u/10850034?v=4" width="100px;" alt=""/><br /><sub><b>Satoshi Nitawaki</b></sub></a></td>
<td align="center"><a href="https://twitter.com/sandulat"><img src="https://avatars2.githubusercontent.com/u/7345874?v=4" width="100px;" alt=""/><br /><sub><b>Alexandru Stratulat</b></sub></a></td>
<td align="center"><a href="https://github.com/engelkes-finstreet"><img src="https://avatars0.githubusercontent.com/u/36962022?s=460&u=34cfc4a3d6da0a87026f6068c371779c68daa3a2&v=4" width="100px;" alt=""/><br /><sub><b>Patrick Engelkes</b></sub></a></td>
</tr>
<tr>
<td align="center"><a href="https://twitter.com/jdavenport97"><img src="https://avatars2.githubusercontent.com/u/1329874?v=4" width="100px;" alt=""/><br /><sub><b>Jamie Davenport</b></sub></a></td>
<td align="center"><a href="https://twitter.com/myrondavis"><img src="https://avatars2.githubusercontent.com/u/1430136?v=4" width="100px;" alt=""/><br /><sub><b>Myron Davis</b></sub></a></td>
<td align="center"><a href="https://flavioander.com/"><img src="https://avatars2.githubusercontent.com/u/14948074?s=460&u=31d7ea58b5c5cd9f724d684ed578f68896c4af71&v=4" width="100px;" alt=""/><br /><sub><b>Flavio Andrade</b></sub></a></td>
<td align="center"><a href="https://twitter.com/NaReto1125_"><img src="https://avatars.githubusercontent.com/reo777" width="100px;" alt=""/><br /><sub><b>Reo Ishiyama</b></sub></a></td>
<td align="center"><a href="https://github.com/malkomalko"><img src="https://avatars.githubusercontent.com/malkomalko" width="100px;" alt=""/><br /><sub><b>Robert Malko</b></sub></a></td>
</tr>
<tr>
<td align="center">
<a href="https://kevinlangleyjr.com">
<img
src="https://avatars.githubusercontent.com/u/877634?v=4"
width="100px;"
alt=""
/><br />
<sub>
<b>Kevin Langley Jr.</b>
</sub>
</a>
</td>
<td align="center">
<a href="https://mina.ca">
<img src="https://avatars.githubusercontent.com/mabadir" width="100px;" alt="Mina Abadir avatar" /><br />
<sub>
<b>Mina Abadir</b>
</sub>
</a>
</td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
@@ -232,7 +246,7 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
<!-- markdownlint-disable -->
<table>
<tr>
<td align="center"><a href="https://twitter.com/flybayer"><img src="https://avatars3.githubusercontent.com/u/8813276?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brandon Bayer</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=flybayer" title="Code">💻</a> <a href="#content-flybayer" title="Content">🖋</a> <a href="#ideas-flybayer" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/blitz-js/blitz/pulls?q=is%3Apr+reviewed-by%3Aflybayer" title="Reviewed Pull Requests">👀</a></td>
<td align="center"><a href="https://twitter.com/flybayer"><img src="https://avatars3.githubusercontent.com/u/8813276?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brandon Bayer</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=flybayer" title="Code">💻</a> <a href="#content-flybayer" title="Content">🖋</a> <a href="#ideas-flybayer" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/blitz-js/blitz/pulls?q=is%3Apr+reviewed-by%3Aflybayer" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/blitz-js/blitz/commits?author=flybayer" title="Tests">⚠️</a> <a href="https://github.com/blitz-js/blitz/commits?author=flybayer" title="Documentation">📖</a></td>
<td align="center"><a href="https://medium.com/@ryardley"><img src="https://avatars0.githubusercontent.com/u/1256409?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rudi Yardley</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=ryardley" title="Code">💻</a> <a href="#ideas-ryardley" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/blitz-js/blitz/pulls?q=is%3Apr+reviewed-by%3Aryardley" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/blitz-js/blitz/commits?author=ryardley" title="Tests">⚠️</a></td>
<td align="center"><a href="https://merelinguist.me"><img src="https://avatars3.githubusercontent.com/u/24858006?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dylan Brookes</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=merelinguist" title="Code">💻</a> <a href="#ideas-merelinguist" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/blitz-js/blitz/pulls?q=is%3Apr+reviewed-by%3Amerelinguist" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/blitz-js/blitz/commits?author=merelinguist" title="Tests">⚠️</a> <a href="https://github.com/blitz-js/blitz/commits?author=merelinguist" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/aem"><img src="https://avatars0.githubusercontent.com/u/1909883?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Adam Markon</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=aem" title="Code">💻</a> <a href="#ideas-aem" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/blitz-js/blitz/pulls?q=is%3Apr+reviewed-by%3Aaem" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/blitz-js/blitz/commits?author=aem" title="Tests">⚠️</a> <a href="#maintenance-aem" title="Maintenance">🚧</a></td>
@@ -251,7 +265,7 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
</tr>
<tr>
<td align="center"><a href="http://gielcobben.com"><img src="https://avatars0.githubusercontent.com/u/2663212?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Giel</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=gielcobben" title="Code">💻</a></td>
<td align="center"><a href="http://jeremyliberman.com/"><img src="https://avatars3.githubusercontent.com/u/2754163?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jeremy Liberman</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=MrLeebo" title="Code">💻</a> <a href="#maintenance-MrLeebo" title="Maintenance">🚧</a> <a href="https://github.com/blitz-js/blitz/commits?author=MrLeebo" title="Tests">⚠️</a></td>
<td align="center"><a href="http://jeremyliberman.com/"><img src="https://avatars3.githubusercontent.com/u/2754163?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jeremy Liberman</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=MrLeebo" title="Code">💻</a> <a href="#maintenance-MrLeebo" title="Maintenance">🚧</a> <a href="https://github.com/blitz-js/blitz/commits?author=MrLeebo" title="Tests">⚠️</a> <a href="https://github.com/blitz-js/blitz/commits?author=MrLeebo" title="Documentation">📖</a></td>
<td align="center"><a href="https://jimthedev.com"><img src="https://avatars0.githubusercontent.com/u/108938?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jim Cummins</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=jimthedev" title="Code">💻</a></td>
<td align="center"><a href="http://kristinamatuska.com/"><img src="https://media-exp1.licdn.com/dms/image/C5603AQHVPAjV21gw9g/profile-displayphoto-shrink_200_200/0?e=1591228800&v=beta&t=0MlbmiYhNvGv1xjLD_fOhOFjVDZ7ltNwfGNeJ4DHedQ?s=100" width="100px;" alt=""/><br /><sub><b>Kristina Matuška</b></sub></a><br /><a href="#design" title="Design">🎨</a></td>
<td align="center"><a href="https://github.com/jasonblalock"><img src="https://avatars0.githubusercontent.com/u/5899929?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jason Blalock</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=jasonblalock" title="Code">💻</a></td>
@@ -277,7 +291,7 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
<td align="center"><a href="https://github.com/ntgussoni"><img src="https://avatars0.githubusercontent.com/u/10161067?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nicolas Torres</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=ntgussoni" title="Tests">⚠️</a> <a href="https://github.com/blitz-js/blitz/commits?author=ntgussoni" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/pulls?q=is%3Apr+reviewed-by%3Antgussoni" title="Reviewed Pull Requests">👀</a></td>
</tr>
<tr>
<td align="center"><a href="http://simonknott.de"><img src="https://avatars1.githubusercontent.com/u/14912729?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Simon Knott</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Skn0tt" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=Skn0tt" title="Tests">⚠️</a> <a href="#maintenance-Skn0tt" title="Maintenance">🚧</a></td>
<td align="center"><a href="http://simonknott.de"><img src="https://avatars1.githubusercontent.com/u/14912729?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Simon Knott</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Skn0tt" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=Skn0tt" title="Tests">⚠️</a> <a href="#maintenance-Skn0tt" title="Maintenance">🚧</a> <a href="https://github.com/blitz-js/blitz/commits?author=Skn0tt" title="Documentation">📖</a></td>
<td align="center"><a href="http://jagascript.com"><img src="https://avatars0.githubusercontent.com/u/4562878?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jaga Santagostino</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=kandros" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=kandros" title="Documentation">📖</a> <a href="#maintenance-kandros" title="Maintenance">🚧</a></td>
<td align="center"><a href="http://www.joaoportela.com"><img src="https://avatars0.githubusercontent.com/u/1010018?v=4?s=100" width="100px;" alt=""/><br /><sub><b>João Portela</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=jportela" title="Code">💻</a></td>
<td align="center"><a href="http://dajin.dev"><img src="https://avatars0.githubusercontent.com/u/7122182?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Da-Jin Chu</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=dajinchu" title="Code">💻</a></td>
@@ -298,7 +312,7 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
<td align="center"><a href="https://www.dwightwatson.com"><img src="https://avatars3.githubusercontent.com/u/1100408?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dwight Watson</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=dwightwatson" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=dwightwatson" title="Documentation">📖</a></td>
<td align="center"><a href="http://is2ei.com/"><img src="https://avatars3.githubusercontent.com/u/3948353?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Horie Issei</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=is2ei" title="Code">💻</a></td>
<td align="center"><a href="https://twitter.com/lednhatkhanh"><img src="https://avatars2.githubusercontent.com/u/9303093?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nhat Khanh</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=lednhatkhanh" title="Code">💻</a></td>
<td align="center"><a href="https://builtforfifty.com"><img src="https://avatars1.githubusercontent.com/u/19371989?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Abu Uzayr</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=abuuzayr" title="Code">💻</a></td>
<td align="center"><a href="https://builtforfifty.com"><img src="https://avatars1.githubusercontent.com/u/19371989?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Abu Uzayr</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=abuuzayr" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=abuuzayr" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/nabi009"><img src="https://avatars0.githubusercontent.com/u/3170831?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nabiullah elham</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=nabi009" title="Code">💻</a></td>
<td align="center"><a href="https://lachlanjc.com"><img src="https://avatars1.githubusercontent.com/u/5074763?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lachlan Campbell</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=lachlanjc" title="Code">💻</a></td>
<td align="center"><a href="http://enzoferey.com"><img src="https://avatars1.githubusercontent.com/u/10673347?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Enzo Ferey</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=enzoferey" title="Code">💻</a></td>
@@ -397,7 +411,7 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
<td align="center"><a href="https://github.com/phillippschmedt"><img src="https://avatars0.githubusercontent.com/u/16028406?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Phillipp Schmedt</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=phillippschmedt" title="Code">💻</a></td>
<td align="center"><a href="https://haspar.us"><img src="https://avatars0.githubusercontent.com/u/15332326?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Piotr Monwid-Olechnowicz</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=hasparus" title="Code">💻</a></td>
<td align="center"><a href="https://mizchi.dev"><img src="https://avatars2.githubusercontent.com/u/73962?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kotaro Chikuba</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=mizchi" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=mizchi" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/konradkalemba"><img src="https://avatars0.githubusercontent.com/u/8682104?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Konrad Kalemba</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=konradkalemba" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/konradkalemba"><img src="https://avatars0.githubusercontent.com/u/8682104?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Konrad Kalemba</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=konradkalemba" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=konradkalemba" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Alucard17"><img src="https://avatars1.githubusercontent.com/u/26205172?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alucard17</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Alucard17" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Dohxis"><img src="https://avatars2.githubusercontent.com/u/8768909?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Domantas Mauruča</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Dohxis" title="Tests">⚠️</a> <a href="https://github.com/blitz-js/blitz/commits?author=Dohxis" title="Code">💻</a></td>
<td align="center"><a href="https://sandulat.com/"><img src="https://avatars0.githubusercontent.com/u/7345874?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Stratulat Alexandru</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=sandulat" title="Code">💻</a> <a href="#maintenance-sandulat" title="Maintenance">🚧</a></td>
@@ -444,17 +458,17 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
<td align="center"><a href="http://kattcorp.com"><img src="https://avatars1.githubusercontent.com/u/459267?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alex Johansson</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=KATT" title="Code">💻</a></td>
<td align="center"><a href="http://davidmazza.com"><img src="https://avatars0.githubusercontent.com/u/120893?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David Mazza</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=dmzza" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/rayandrews"><img src="https://avatars1.githubusercontent.com/u/4437323?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ray Andrew</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=rayandrews" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=rayandrews" title="Documentation">📖</a></td>
<td align="center"><a href="http://Dal.Design"><img src="https://avatars3.githubusercontent.com/u/43112535?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Abdullah Mzaien</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Mzaien" title="Code">💻</a></td>
<td align="center"><a href="http://Dal.Design"><img src="https://avatars3.githubusercontent.com/u/43112535?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Abdullah Mzaien</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Mzaien" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=Mzaien" title="Documentation">📖</a></td>
<td align="center"><a href="http://kwao.io"><img src="https://avatars2.githubusercontent.com/u/8839514?v=4?s=100" width="100px;" alt=""/><br /><sub><b>William Kwao</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=williamkwao" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/sakulstra"><img src="https://avatars3.githubusercontent.com/u/4396533?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lukas Strassel</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=sakulstra" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/sakulstra"><img src="https://avatars3.githubusercontent.com/u/4396533?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lukas Strassel</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=sakulstra" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=sakulstra" title="Tests">⚠️</a></td>
<td align="center"><a href="https://thibpat.com"><img src="https://avatars3.githubusercontent.com/u/494686?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Thibaut Patel</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=tpatel" title="Code">💻</a></td>
<td align="center"><a href="http://jonstuebe.com"><img src="https://avatars0.githubusercontent.com/u/156722?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jon Stuebe</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=jonstuebe" title="Code">💻</a></td>
<td align="center"><a href="https://ugogo.dev"><img src="https://avatars2.githubusercontent.com/u/5040476?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ugo Onali</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=ugogo" title="Documentation">📖</a></td>
<td align="center"><a href="https://saintmalik.me"><img src="https://avatars1.githubusercontent.com/u/37118134?v=4?s=100" width="100px;" alt=""/><br /><sub><b>SaintMalik</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=saintmalik" title="Documentation">📖</a></td>
<td align="center"><a href="https://khaledgarbaya.net"><img src="https://avatars1.githubusercontent.com/u/1156093?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Khaled Garbaya</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Khaledgarbaya" title="Code">💻</a></td>
<td align="center"><a href="https://tundera.dev"><img src="https://avatars0.githubusercontent.com/u/61833561?v=4?s=100" width="100px;" alt=""/><br /><sub><b>tundera</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=tundera" title="Code">💻</a></td>
<td align="center"><a href="https://tundera.dev"><img src="https://avatars0.githubusercontent.com/u/61833561?v=4?s=100" width="100px;" alt=""/><br /><sub><b>tundera</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=tundera" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=tundera" title="Tests">⚠️</a> <a href="https://github.com/blitz-js/blitz/commits?author=tundera" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/markylaing"><img src="https://avatars2.githubusercontent.com/u/41469221?v=4?s=100" width="100px;" alt=""/><br /><sub><b>markylaing</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=markylaing" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=markylaing" title="Documentation">📖</a></td>
@@ -489,7 +503,7 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
<td align="center"><a href="https://github.com/rince"><img src="https://avatars.githubusercontent.com/u/933895?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kazuma Suzuki</b></sub></a><br /><a href="#design-rince" title="Design">🎨</a> <a href="https://github.com/blitz-js/blitz/commits?author=rince" title="Code">💻</a></td>
<td align="center"><a href="http://queq1890.info"><img src="https://avatars.githubusercontent.com/u/32263803?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Yuji Matsumoto</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=queq1890" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/Gim3l"><img src="https://avatars.githubusercontent.com/u/46765702?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gimel Dick</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Gim3l" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/akbo"><img src="https://avatars.githubusercontent.com/u/1926271?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andreas Bollig</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=akbo" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/akbo"><img src="https://avatars.githubusercontent.com/u/1926271?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andreas Bollig</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=akbo" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=akbo" title="Documentation">📖</a></td>
<td align="center"><a href="https://ajm.codes"><img src="https://avatars.githubusercontent.com/u/66390428?v=4?s=100" width="100px;" alt=""/><br /><sub><b>AJ Markow</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=ajmarkow" title="Tests">⚠️</a> <a href="https://github.com/blitz-js/blitz/commits?author=ajmarkow" title="Code">💻</a></td>
</tr>
<tr>
@@ -499,6 +513,112 @@ Thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/e
<td align="center"><a href="https://alistair.cloud"><img src="https://avatars.githubusercontent.com/u/25351731?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alistair Smith</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=alii" title="Code">💻</a></td>
<td align="center"><a href="https://rodrigoehlers.com"><img src="https://avatars.githubusercontent.com/u/19683042?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rodrigo Ehlers</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=rodrigoehlers" title="Code">💻</a></td>
<td align="center"><a href="https://www.builtopen.com/"><img src="https://avatars.githubusercontent.com/u/1734057?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Ford</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=mtford90" title="Code">💻</a></td>
<td align="center"><a href="https://brianypliu.com"><img src="https://avatars.githubusercontent.com/u/3888780?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Brian Liu</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=LBrian" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="http://aleksandra.codes"><img src="https://avatars.githubusercontent.com/u/9019397?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Aleksandra Sikora</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=beerose" title="Code">💻</a></td>
<td align="center"><a href="https://juanm04.com"><img src="https://avatars.githubusercontent.com/u/16712703?v=4?s=100" width="100px;" alt=""/><br /><sub><b>JuanM04</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=JuanM04" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=JuanM04" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=JuanM04" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/arenddeboer"><img src="https://avatars.githubusercontent.com/u/7022204?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Arend de Boer</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=arenddeboer" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/fmilani"><img src="https://avatars.githubusercontent.com/u/1580375?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Felipe Milani</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=fmilani" title="Documentation">📖</a></td>
<td align="center"><a href="http://nxhx.org"><img src="https://avatars.githubusercontent.com/u/13018?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Joe Edelman</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=jxe" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/garytube"><img src="https://avatars.githubusercontent.com/u/3823504?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gary</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=garytube" title="Documentation">📖</a></td>
<td align="center"><a href="http://oliverloops.com"><img src="https://avatars.githubusercontent.com/u/33361399?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Oliver Lopez </b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=oliverloops" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://decadentIpsum.me"><img src="https://avatars.githubusercontent.com/u/32861532?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andreas Zaralis</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=DecadentIpsum" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/davetorbeck"><img src="https://avatars.githubusercontent.com/u/5829885?v=4?s=100" width="100px;" alt=""/><br /><sub><b>David Torbeck</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=davetorbeck" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/gusgard"><img src="https://avatars.githubusercontent.com/u/2577356?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gustavo Gard</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=gusgard" title="Documentation">📖</a></td>
<td align="center"><a href="https://narrationbox.com"><img src="https://avatars.githubusercontent.com/u/7126128?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Immortalin</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Immortalin" title="Code">💻</a></td>
<td align="center"><a href="https://cristianbgp.com"><img src="https://avatars.githubusercontent.com/u/8507974?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cristian Granda</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=cristianbgp" title="Code">💻</a></td>
<td align="center"><a href="https://deniseyu.io"><img src="https://avatars.githubusercontent.com/u/8420094?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Denise Yu</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=deniseyu" title="Code">💻</a></td>
<td align="center"><a href="http://dellacorte.me"><img src="https://avatars.githubusercontent.com/u/295683?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andrea Della Corte</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=andreadellacorte" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="http://aditsachde.com"><img src="https://avatars.githubusercontent.com/u/23707194?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Adit Sachde</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=aditsachde" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/hirenchauhan2"><img src="https://avatars.githubusercontent.com/u/8999668?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hiren Chauhan</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=hirenchauhan2" title="Code">💻</a></td>
<td align="center"><a href="http://remjx.com/"><img src="https://avatars.githubusercontent.com/u/35121685?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mark Jackson</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=remjx" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=remjx" title="Code">💻</a></td>
<td align="center"><a href="https://lewisb.cloud/"><img src="https://avatars.githubusercontent.com/u/51877955?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lewis Blackburn</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=lewisblackburn" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/FDiskas"><img src="https://avatars.githubusercontent.com/u/468006?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vytenis</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=FDiskas" title="Code">💻</a></td>
<td align="center"><a href="https://portfolio.matthieupetit.com"><img src="https://avatars.githubusercontent.com/u/12969089?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Matthieu</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=matthieu994" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=matthieu994" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/mitchazj"><img src="https://avatars.githubusercontent.com/u/15032956?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mitchell Johnson</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=mitchazj" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://roshan.page/"><img src="https://avatars.githubusercontent.com/u/31125563?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Roshan Manuel</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Roesh" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=Roesh" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=Roesh" title="Tests">⚠️</a></td>
<td align="center"><a href="https://kevinlangleyjr.com"><img src="https://avatars.githubusercontent.com/u/877634?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kevin Langley Jr.</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=kevinlangleyjr" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=kevinlangleyjr" title="Documentation">📖</a></td>
<td align="center"><a href="https://projet-test-99df0.firebaseapp.com/"><img src="https://avatars.githubusercontent.com/u/51029779?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gabriel Picard</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=heavygabriel" title="Documentation">📖</a></td>
<td align="center"><a href="http://ryanchenkie.com/"><img src="https://avatars.githubusercontent.com/u/1847678?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ryan Chenkie</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=chenkie" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/sbappan"><img src="https://avatars.githubusercontent.com/u/12586088?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Santhosh B. Appan</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=sbappan" title="Documentation">📖</a></td>
<td align="center"><a href="http://stackoverflow.com/users/5207233/james-moran"><img src="https://avatars.githubusercontent.com/u/10858584?v=4?s=100" width="100px;" alt=""/><br /><sub><b>James Moran</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=james2406" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=james2406" title="Documentation">📖</a></td>
<td align="center"><a href="http://fb.me/yz"><img src="https://avatars.githubusercontent.com/u/14841421?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jack Zhao</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=bugzpodder" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/the-red"><img src="https://avatars.githubusercontent.com/u/4494300?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hisaki Akaza</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=the-red" title="Documentation">📖</a></td>
<td align="center"><a href="http://flavioander.com/"><img src="https://avatars.githubusercontent.com/u/14948074?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Flavio</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Flavyoo" title="Code">💻</a></td>
<td align="center"><a href="https://bhanuteja.dev/"><img src="https://avatars.githubusercontent.com/u/17903466?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Bhanu Teja Pachipulusu</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=pbteja1998" title="Code">💻</a></td>
<td align="center"><a href="https://twitter.com/pavestru"><img src="https://avatars.githubusercontent.com/u/10186479?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pavel Struhar</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=pavestru" title="Code">💻</a></td>
<td align="center"><a href="https://in-thepink.com/"><img src="https://avatars.githubusercontent.com/u/42126368?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Reo Ishiyama</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=reo777" title="Code">💻</a></td>
<td align="center"><a href="https://macwright.com/"><img src="https://avatars.githubusercontent.com/u/32314?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tom MacWright</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=tmcw" title="Documentation">📖</a></td>
<td align="center"><a href="https://francoisbest.com"><img src="https://avatars.githubusercontent.com/u/1174092?v=4?s=100" width="100px;" alt=""/><br /><sub><b>François Best</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=franky47" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/FarazPatankar"><img src="https://avatars.githubusercontent.com/u/10681116?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Faraz Patankar</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=FarazPatankar" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/ericvicenti"><img src="https://avatars.githubusercontent.com/u/1483597?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Eric Vicenti</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=ericvicenti" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=ericvicenti" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/amdolan"><img src="https://avatars.githubusercontent.com/u/2552275?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alex Dolan</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=amdolan" title="Documentation">📖</a> <a href="https://github.com/blitz-js/blitz/commits?author=amdolan" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=amdolan" title="Tests">⚠️</a></td>
<td align="center"><a href="https://github.com/Maastrich"><img src="https://avatars.githubusercontent.com/u/58431775?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mathis Pinsault</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Maastrich" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/gstranger"><img src="https://avatars.githubusercontent.com/u/36181416?v=4?s=100" width="100px;" alt=""/><br /><sub><b>gstranger</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=gstranger" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=gstranger" title="Documentation">📖</a></td>
<td align="center"><a href="http://twitter.com/_markeh"><img src="https://avatars.githubusercontent.com/u/1357323?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mark Hughes</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=markhughes" title="Code">💻</a></td>
<td align="center"><a href="www.andrearizzello.work"><img src="https://avatars.githubusercontent.com/u/10348930?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andrea Rizzello</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=andrearizzello" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="jahred.com.au"><img src="https://avatars.githubusercontent.com/u/13903378?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jahred Hope</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=jahredhope" title="Documentation">📖</a></td>
<td align="center"><a href="simonelnahas.github.io/"><img src="https://avatars.githubusercontent.com/u/29279201?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Simon El Nahas</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=simonelnahas" title="Documentation">📖</a></td>
<td align="center"><a href="www.usertrack.net"><img src="https://avatars.githubusercontent.com/u/1384885?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Buleandra Cristian</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Cristy94" title="Documentation">📖</a></td>
<td align="center"><a href="http://palauisaac.me/"><img src="https://avatars.githubusercontent.com/u/12257885?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pedro Enrique Palau Isaac</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=peterpalau" title="Code">💻</a></td>
<td align="center"><a href="www.seanbrydon.me"><img src="https://avatars.githubusercontent.com/u/55134778?v=4?s=100" width="100px;" alt=""/><br /><sub><b>sean-brydon</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=sean-brydon" title="Documentation">📖</a></td>
<td align="center"><a href="buonerba.dev"><img src="https://avatars.githubusercontent.com/u/28837891?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alessandro</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Dieman89" title="Documentation">📖</a></td>
<td align="center"><a href="www.jyutping.org"><img src="https://avatars.githubusercontent.com/u/11172180?v=4?s=100" width="100px;" alt=""/><br /><sub><b>laubonghaudoi</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=laubonghaudoi" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/TommasoBruno99"><img src="https://avatars.githubusercontent.com/u/61512591?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tommaso Bruno</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=TommasoBruno99" title="Documentation">📖</a></td>
<td align="center"><a href="antonykamp.de"><img src="https://avatars.githubusercontent.com/u/45163503?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Antony</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=antonykamp" title="Documentation">📖</a></td>
<td align="center"><a href="https://blog.6nok.org"><img src="https://avatars.githubusercontent.com/u/868283?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Fatih Altinok</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=frontsideair" title="Documentation">📖</a></td>
<td align="center"><a href="https://mokshitjain.co/"><img src="https://avatars.githubusercontent.com/u/50412128?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mokshit Jain</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Mokshit06" title="Code">💻</a></td>
<td align="center"><a href="https://mubaidr.github.io"><img src="https://avatars.githubusercontent.com/u/2222702?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Muhammad Ubaid Raza</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=mubaidr" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=mubaidr" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/silicontwin"><img src="https://avatars.githubusercontent.com/u/121665?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nick Warren</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=silicontwin" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/mlabate"><img src="https://avatars.githubusercontent.com/u/17139676?v=4?s=100" width="100px;" alt=""/><br /><sub><b>mlabate</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=mlabate" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/lumaxis"><img src="https://avatars.githubusercontent.com/u/406937?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Lukas Spieß</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=lumaxis" title="Documentation">📖</a></td>
<td align="center"><a href="https://dawnofmidnight.vercel.app"><img src="https://avatars.githubusercontent.com/u/78233879?v=4?s=100" width="100px;" alt=""/><br /><sub><b>DawnOfMidnight</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=dawnofmidnight" title="Documentation">📖</a></td>
<td align="center"><a href="https://www.linkedin.com/in/kenzairaki/"><img src="https://avatars.githubusercontent.com/u/17203119?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kenza Iraki</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=kirakik" title="Tests">⚠️</a> <a href="https://github.com/blitz-js/blitz/commits?author=kirakik" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/agustif"><img src="https://avatars.githubusercontent.com/u/6601142?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Agusti Fernandez</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=agustif" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Anjianto"><img src="https://avatars.githubusercontent.com/u/61521141?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anjianto</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Anjianto" title="Code">💻</a></td>
<td align="center"><a href="https://adrienblanc.com"><img src="https://avatars.githubusercontent.com/u/41756894?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Blanc Adrien</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=adblanc" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/meepdeew"><img src="https://avatars.githubusercontent.com/u/43303008?v=4?s=100" width="100px;" alt=""/><br /><sub><b>meepdeew</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=meepdeew" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Hardik3296"><img src="https://avatars.githubusercontent.com/u/20360325?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Hardik Gaur</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Hardik3296" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/acornellier"><img src="https://avatars.githubusercontent.com/u/8725423?v=4?s=100" width="100px;" alt=""/><br /><sub><b>acornellier</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=acornellier" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/craigglennie"><img src="https://avatars.githubusercontent.com/u/149281?v=4?s=100" width="100px;" alt=""/><br /><sub><b>craigglennie</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=craigglennie" title="Documentation">📖</a></td>
<td align="center"><a href="http://www.fernvillasenor.com"><img src="https://avatars.githubusercontent.com/u/5857808?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Fernando Villasenor</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=fernvilla" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/swiftgaruda"><img src="https://avatars.githubusercontent.com/u/16741392?v=4?s=100" width="100px;" alt=""/><br /><sub><b>swiftgaruda</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=swiftgaruda" title="Documentation">📖</a></td>
<td align="center"><a href="https://pplife.home.blog"><img src="https://avatars.githubusercontent.com/u/35653876?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pankaj Patil</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Patil2099" title="Documentation">📖</a></td>
<td align="center"><a href="minaabadir.ca"><img src="https://avatars.githubusercontent.com/u/3389914?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Mina Abadir</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=mabadir" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=mabadir" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/frankiesardo"><img src="https://avatars.githubusercontent.com/u/1476561?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Francesco Sardo</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=frankiesardo" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/enemycnt"><img src="https://avatars.githubusercontent.com/u/320313?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nikolay</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=enemycnt" title="Documentation">📖</a></td>
<td align="center"><a href="https://dipeshwagle.com"><img src="https://avatars.githubusercontent.com/u/4191022?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dipesh Wagle</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=Dipeshwagle" title="Code">💻</a></td>
<td align="center"><a href="https://codepoet.de"><img src="https://avatars.githubusercontent.com/u/462455?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Benjamin Bender</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=benbender" title="Code">💻</a></td>
<td align="center"><a href="https://nima.sh"><img src="https://avatars.githubusercontent.com/u/3728170?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nima Shoghi</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=nimashoghi" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/chronark"><img src="https://avatars.githubusercontent.com/u/18246773?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andreas Thomas</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=chronark" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/guoqqqi"><img src="https://avatars.githubusercontent.com/u/72343596?v=4?s=100" width="100px;" alt=""/><br /><sub><b>guoqqqi</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=guoqqqi" title="Documentation">📖</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/timbooker"><img src="https://avatars.githubusercontent.com/u/612681?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Tim</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=timbooker" title="Code">💻</a> <a href="https://github.com/blitz-js/blitz/commits?author=timbooker" title="Tests">⚠️</a></td>
<td align="center"><a href="http://orlowski.me/"><img src="https://avatars.githubusercontent.com/u/16357457?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Marek Orłowski</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=ormarek" title="Documentation">📖</a></td>
<td align="center"><a href="https://github.com/AntoineGuestin"><img src="https://avatars.githubusercontent.com/u/70888750?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Antoine G</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=AntoineGuestin" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/swinner2"><img src="https://avatars.githubusercontent.com/u/6707308?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sean Winner</b></sub></a><br /><a href="https://github.com/blitz-js/blitz/commits?author=swinner2" title="Code">💻</a></td>
</tr>
</table>

10
SECURITY.md Normal file
View File

@@ -0,0 +1,10 @@
# Security Policy
## Supported Versions
TODO
## Reporting a Vulnerability
Email Brandon Bayer at b@bayer.ws to report a vulnerablity, and he will follow up with you asap.

24
assets/digsas.svg Normal file
View File

@@ -0,0 +1,24 @@
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M79.4831 1.95572C70.2813 -0.81923 55.2811 -0.617415 46.1549 2.4098L18.6125 11.5167C9.48627 14.5313 9.38542 19.7784 18.3856 23.1588L49.9743 35.028C58.9744 38.4084 73.6217 38.194 82.5084 34.5487L110.883 22.9192C119.782 19.2739 119.53 14.0267 110.316 11.2518L79.4831 1.95572Z" fill="url(#paint0_linear)"/>
<path d="M84.235 38.6101C75.3357 42.2554 68.0625 53.1029 68.0625 62.727V113.635C68.0625 123.259 74.9071 127.245 83.2644 122.489L109.282 107.706C117.639 102.951 124.912 91.208 125.442 81.6092L127.837 37.8281C128.366 28.2167 121.509 23.3479 112.609 26.9932L84.235 38.6101Z" fill="url(#paint1_linear)"/>
<path d="M0.0071345 37.8409C-0.257575 28.2295 6.877 23.1211 15.8771 26.5015L47.4658 38.3707C56.466 41.7511 63.8274 52.3842 63.8274 62.0082V112.916C63.8274 122.54 56.882 126.715 48.386 122.212L17.0998 105.6C8.60392 101.085 1.44415 89.5306 1.16683 79.9192L0.0071345 37.8409Z" fill="url(#paint2_linear)"/>
</g>
<defs>
<linearGradient id="paint0_linear" x1="63.9326" y1="0" x2="63.9326" y2="124.497" gradientUnits="userSpaceOnUse">
<stop stop-color="#036EB8"/>
<stop offset="1" stop-color="#469196"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="63.9326" y1="0" x2="63.9326" y2="124.497" gradientUnits="userSpaceOnUse">
<stop stop-color="#036EB8"/>
<stop offset="1" stop-color="#469196"/>
</linearGradient>
<linearGradient id="paint2_linear" x1="63.9326" y1="0" x2="63.9326" y2="124.497" gradientUnits="userSpaceOnUse">
<stop stop-color="#036EB8"/>
<stop offset="1" stop-color="#469196"/>
</linearGradient>
<clipPath id="clip0">
<rect width="128" height="128" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 980 979.97"><path d="M139.38,0c-185.82-3.54-185.82,277,0,273.46H251.44C437.25,277,437.25-3.5,251.44,0ZM729.25,353.24c-184.92-2.62-184.92,276.1,0,273.48H841.31c184.92,2.62,184.92-276.1,0-273.48ZM138.69,706.46c-184.92-2.61-184.92,276.1,0,273.49H250.75c184.91,2.61,184.91-276.1,0-273.49Z" fill="#b43278"/><path d="M583.47,0c-185.82-3.54-185.82,277,0,273.46H840.61c185.81,3.54,185.81-277,0-273.46ZM138.7,353.24c-184.92-2.62-184.92,276.1,0,273.48H395.85c184.92,2.62,184.92-276.1,0-273.48ZM584.13,706.46c-184.91-2.61-184.91,276.1,0,273.49H841.3c184.92,2.61,184.92-276.1,0-273.49Z" fill="#f65a8e"/></svg>

After

Width:  |  Height:  |  Size: 650 B

BIN
assets/rit_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
assets/rob_blitz.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

BIN
assets/usertrack.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

64
babel.config.js Normal file
View File

@@ -0,0 +1,64 @@
module.exports = {
presets: [
"@babel/preset-typescript",
"@babel/preset-react",
[
"@babel/preset-env",
{
modules: false,
loose: true,
exclude: [
"@babel/plugin-transform-async-to-generator",
"@babel/plugin-transform-regenerator",
],
},
],
],
plugins: [
"babel-plugin-annotate-pure-calls",
"babel-plugin-dev-expression",
["@babel/plugin-proposal-class-properties", {loose: true}],
"babel-plugin-macros",
[
"transform-inline-environment-variables",
{
include: ["BLITZ_PROD_BUILD"],
},
],
],
overrides: [
{
test: "./test/**/*",
presets: [
[
"@babel/preset-env",
{
modules: false,
exclude: [
"@babel/plugin-transform-async-to-generator",
"@babel/plugin-transform-regenerator",
],
},
],
"blitz/babel",
],
plugins: [],
},
{
test: "./nextjs/test/**/*",
presets: [
[
"@babel/preset-env",
{
modules: false,
exclude: [
"@babel/plugin-transform-async-to-generator",
"@babel/plugin-transform-regenerator",
],
},
],
"blitz/babel",
],
},
],
}

View File

@@ -14,7 +14,7 @@ model Project {
2. DB migrate
```
blitz prisma migrate dev --preview-feature
blitz prisma migrate dev
```
3. Start the dev server

View File

@@ -22,14 +22,14 @@ assert(process.env.AUTH0_DOMAIN, "You must provide the AUTH0_DOMAIN env variable
assert(process.env.AUTH0_CLIENT_ID, "You must provide the AUTH0_CLIENT_ID env variable")
assert(process.env.AUTH0_CLIENT_SECRET, "You must provide the AUTH0_CLIENT_SECRET env variable")
export default passportAuth({
export default passportAuth((ctx) => ({
successRedirectUrl: "/",
strategies: [
{
strategy: new TwitterStrategy(
{
consumerKey: process.env.TWITTER_CONSUMER_KEY,
consumerSecret: process.env.TWITTER_CONSUMER_SECRET,
consumerKey: process.env.TWITTER_CONSUMER_KEY as string,
consumerSecret: process.env.TWITTER_CONSUMER_SECRET as string,
callbackURL:
process.env.NODE_ENV === "production"
? "https://auth-example-flybayer.blitzjs.vercel.app/api/auth/twitter/callback"
@@ -44,6 +44,8 @@ export default passportAuth({
return done(new Error("Twitter OAuth response doesn't have email."))
}
console.log(ctx.session.userId)
const user = await db.user.upsert({
where: {email},
create: {
@@ -53,7 +55,7 @@ export default passportAuth({
update: {email},
})
const publicData = {userId: user.id, roles: [user.role], source: "twitter"}
const publicData = {userId: user.id, role: user.role, source: "twitter"}
done(null, {publicData})
},
),
@@ -61,8 +63,8 @@ export default passportAuth({
{
strategy: new GitHubStrategy(
{
clientID: process.env.GITHUB_CLIENT_ID,
clientSecret: process.env.GITHUB_CLIENT_SECRET,
clientID: process.env.GITHUB_CLIENT_ID as string,
clientSecret: process.env.GITHUB_CLIENT_SECRET as string,
callbackURL:
process.env.NODE_ENV === "production"
? "https://auth-example-flybayer.blitzjs.vercel.app/api/auth/github/callback"
@@ -92,7 +94,7 @@ export default passportAuth({
const publicData = {
userId: user.id,
roles: [user.role as Role],
role: user.role as Role,
source: "github",
githubUsername: profile.username,
}
@@ -104,9 +106,9 @@ export default passportAuth({
authenticateOptions: {scope: "openid email profile"},
strategy: new Auth0Strategy(
{
domain: process.env.AUTH0_DOMAIN,
clientID: process.env.AUTH0_CLIENT_ID,
clientSecret: process.env.AUTH0_CLIENT_SECRET,
domain: process.env.AUTH0_DOMAIN as string,
clientID: process.env.AUTH0_CLIENT_ID as string,
clientSecret: process.env.AUTH0_CLIENT_SECRET as string,
callbackURL:
process.env.NODE_ENV === "production"
? "https://auth-example-flybayer.blitzjs.vercel.app/api/auth/auth0/callback"
@@ -131,7 +133,7 @@ export default passportAuth({
const publicData = {
userId: user.id,
roles: [user.role],
role: user.role,
source: "auth0",
githubUsername: profile.username,
}
@@ -140,4 +142,4 @@ export default passportAuth({
),
},
],
})
}))

View File

@@ -4,6 +4,8 @@ import {Form, FORM_ERROR} from "app/core/components/Form"
import login from "app/auth/mutations/login"
import {Login} from "app/auth/validations"
import {Routes} from ".blitz"
type LoginFormProps = {
onSuccess?: () => void
}
@@ -38,14 +40,14 @@ export const LoginForm = (props: LoginFormProps) => {
<LabeledTextField name="email" label="Email" placeholder="Email" />
<LabeledTextField name="password" label="Password" placeholder="Password" type="password" />
<div>
<Link href="/forgot-password">
<Link href={Routes.ForgotPasswordPage()}>
<a>Forgot your password?</a>
</Link>
</div>
</Form>
<div style={{marginTop: "1rem"}}>
Or <Link href="/signup">Sign Up</Link>
Or <Link href={Routes.SignupPage()}>Sign Up</Link>
</div>
</div>
)

View File

@@ -8,8 +8,8 @@ beforeEach(async () => {
})
const generatedToken = "plain-token"
jest.mock("blitz", () => ({
...jest.requireActual("blitz")!,
jest.mock("@blitzjs/core/server", () => ({
...jest.requireActual<object>("@blitzjs/core/server")!,
generateToken: () => generatedToken,
}))
jest.mock("preview-email", () => jest.fn())

View File

@@ -23,7 +23,15 @@ export default resolver.pipe(resolver.zod(Login), async ({email, password}, ctx)
// This throws an error if credentials are invalid
const user = await authenticateUser(email, password)
await ctx.session.$create({userId: user.id, roles: [user.role as Role]})
await ctx.session.$create({userId: user.id, role: user.role as Role})
return user
})
export const config = {
api: {
bodyParser: {
sizeLimit: "2mb",
},
},
}

View File

@@ -10,6 +10,6 @@ export default resolver.pipe(resolver.zod(Signup), async ({email, password}, ctx
select: {id: true, name: true, email: true, role: true},
})
await ctx.session.$create({userId: user.id, roles: [user.role as Role]})
await ctx.session.$create({userId: user.id, role: user.role as Role})
return user
})

View File

@@ -2,17 +2,24 @@ import React from "react"
import {useRouter, BlitzPage} from "blitz"
import Layout from "app/core/layouts/Layout"
import {LoginForm} from "app/auth/components/LoginForm"
import {Routes} from ".blitz"
const LoginPage: BlitzPage = () => {
const router = useRouter()
return (
<div>
<LoginForm onSuccess={() => router.push("/")} />
<LoginForm
onSuccess={() => {
const next = router.query.next ? decodeURIComponent(router.query.next as string) : "/"
router.push(next)
}}
/>
</div>
)
}
LoginPage.redirectAuthenticatedTo = Routes.Home().pathname
LoginPage.getLayout = (page) => <Layout title="Log In">{page}</Layout>
export default LoginPage

View File

@@ -5,6 +5,8 @@ import {Form, FORM_ERROR} from "app/core/components/Form"
import {ResetPassword} from "app/auth/validations"
import resetPassword from "app/auth/mutations/resetPassword"
import {Routes} from ".blitz"
const ResetPasswordPage: BlitzPage = () => {
const query = useRouterQuery()
const [resetPasswordMutation, {isSuccess}] = useMutation(resetPassword)
@@ -17,7 +19,7 @@ const ResetPasswordPage: BlitzPage = () => {
<div>
<h2>Password Reset Successfully</h2>
<p>
Go to the <Link href="/">homepage</Link>
Go to the <Link href={Routes.Home()}>homepage</Link>
</p>
</div>
) : (

View File

@@ -1,7 +1,5 @@
import {Head, useRouter, BlitzPage, useMutation} from "blitz"
import {useRouter, BlitzPage} from "blitz"
import Layout from "app/core/layouts/Layout"
import {Form, FORM_ERROR} from "app/core/components/Form"
import {LabeledTextField} from "app/core/components/LabeledTextField"
import {SignupForm} from "app/auth/components/SignupForm"
const SignupPage: BlitzPage = () => {

View File

@@ -1,4 +1,4 @@
import * as z from "zod"
import {z} from "zod"
const password = z.string().min(10).max(100)

View File

@@ -1,6 +1,6 @@
import React, {ReactNode, PropsWithoutRef} from "react"
import {Form as FinalForm, FormProps as FinalFormProps} from "react-final-form"
import * as z from "zod"
import {z} from "zod"
export {FORM_ERROR} from "final-form"
export interface FormProps<S extends z.ZodType<any, any>>

View File

@@ -2,7 +2,7 @@ import {useSession, useRouter, useMutation, Head} from "blitz"
import logout from "app/auth/mutations/logout"
export default function Layout({title, children}: {title?: string; children: React.ReactNode}) {
const session = useSession()
const session = useSession({suspense: false})
const router = useRouter()
const [logoutMutation] = useMutation(logout)
return (

View File

@@ -1,13 +0,0 @@
import {resolver} from "blitz"
import db from "db"
import * as z from "zod"
const __Name__ = z
.object({
id: z.number(),
})
.nonstrict()
export default resolver.pipe(resolver.zod(__Name__), resolver.authorize(), async (input) => {
// Do your stuff :)
})

View File

@@ -1,32 +1,32 @@
import {
withBlitzAppRoot,
AppProps,
ErrorComponent,
useRouter,
AuthenticationError,
AuthorizationError,
ErrorFallbackProps,
useQueryErrorResetBoundary,
} from "blitz"
import {ErrorBoundary} from "react-error-boundary"
import {queryCache} from "react-query"
import LoginForm from "app/auth/components/LoginForm"
import {ReactQueryDevtools} from "react-query/devtools"
export default function App({Component, pageProps}: AppProps) {
const getLayout = Component.getLayout || ((page) => page)
const router = useRouter()
const {reset} = useQueryErrorResetBoundary()
return (
<ErrorBoundary
FallbackComponent={RootErrorFallback}
resetKeys={[router.asPath]}
onReset={() => {
// This ensures the Blitz useQuery hooks will automatically refetch
// data any time you reset the error boundary
queryCache.resetErrorBoundaries()
}}
>
{getLayout(<Component {...pageProps} />)}
</ErrorBoundary>
<>
<ErrorBoundary
FallbackComponent={RootErrorFallback}
resetKeys={[router.asPath]}
onReset={reset}
>
{getLayout(<Component {...pageProps} />)}
</ErrorBoundary>
<ReactQueryDevtools />
</>
)
}
@@ -42,7 +42,10 @@ function RootErrorFallback({error, resetErrorBoundary}: ErrorFallbackProps) {
)
} else {
return (
<ErrorComponent statusCode={error.statusCode || 400} title={error.message || error.name} />
<ErrorComponent
statusCode={(error as any)?.statusCode || 400}
title={error.message || error.name}
/>
)
}
}

View File

@@ -1,10 +1,17 @@
import {render} from "test/utils"
import Home from "./index"
import {useCurrentUser} from "app/core/hooks/useCurrentUser"
jest.mock("app/core/hooks/useCurrentUser")
const mockUseCurrentUser = useCurrentUser as jest.MockedFunction<typeof useCurrentUser>
jest.mock("@blitzjs/core", () => ({
...jest.requireActual<object>("@blitzjs/core")!,
useQuery: () => [
{
id: 1,
name: "User",
email: "user@email.com",
role: "user",
},
],
}))
test("renders blitz documentation link", () => {
// This is an example of how to ensure a specific item is in the document
@@ -12,15 +19,9 @@ test("renders blitz documentation link", () => {
// when you remove the the default content from the page
// This is an example on how to mock api hooks when testing
mockUseCurrentUser.mockReturnValue({
id: 1,
name: "User",
email: "user@email.com",
role: "user",
})
const {getByText} = render(<Home />)
const element = getByText(/powered by blitz/i)
// @ts-ignore
expect(element).toBeInTheDocument()
})
})

View File

@@ -1,39 +1,41 @@
import {Suspense} from "react"
import {Head, Link, useSession, useRouterQuery, useMutation, invoke} from "blitz"
import {
Head,
Link,
useSession,
useRouterQuery,
useMutation,
invoke,
useQuery,
BlitzPage,
} from "blitz"
import getUser from "app/users/queries/getUser"
import trackView from "app/users/mutations/trackView"
import Layout from "app/core/layouts/Layout"
import {useCurrentUser} from "app/core/hooks/useCurrentUser"
// import getUsers from "app/users/queries/getUsers"
import {Routes} from ".blitz"
const CurrentUserInfo = () => {
const currentUser = useCurrentUser()
const session = useSession()
const [currentUser] = useQuery(getUser, {where: {id: session.userId!}})
return <pre>{JSON.stringify(currentUser, null, 2)}</pre>
}
// const Users = () => {
// const [users] = useQuery(getUsers, {})
//
// return <pre style={{maxWidth: "30rem"}}>{JSON.stringify(users, null, 2)}</pre>
// }
const UserStuff = () => {
const session = useSession()
const query = useRouterQuery()
const [trackViewMutation] = useMutation(trackView)
if (session.isLoading) return <div>Loading...</div>
return (
<div>
{!session.userId && (
<>
<div style={{marginTop: "1rem"}}>
<Link href="/signup">Sign Up</Link>
<Link href={Routes.SignupPage()}>Sign Up</Link>
</div>
<div>
<Link href="/login">Login</Link>
<Link href={Routes.LoginPage()}>Login</Link>
</div>
<a href="/api/auth/twitter" style={{display: "block"}}>
Login with Twitter
@@ -48,11 +50,6 @@ const UserStuff = () => {
<Suspense fallback="Loading...">
<CurrentUserInfo />
</Suspense>
{/*
<Suspense fallback="Loading...">
<Users />
</Suspense>
*/}
<button
onClick={async () => {
try {
@@ -81,7 +78,7 @@ const UserStuff = () => {
)
}
const Home = () => (
const Home: BlitzPage = () => (
<Layout>
<div className="container">
<Head>
@@ -94,7 +91,9 @@ const Home = () => (
<img src="/logo.png" alt="blitz.js" />
</div>
<UserStuff />
<Suspense fallback={"Loading..."}>
<UserStuff />
</Suspense>
</main>
<footer>
@@ -238,4 +237,6 @@ const Home = () => (
</Layout>
)
Home.suppressFirstRenderFlicker = true
export default Home

View File

@@ -4,12 +4,16 @@ import Layout from "app/core/layouts/Layout"
import getProject from "app/projects/queries/getProject"
import deleteProject from "app/projects/mutations/deleteProject"
import {Routes} from ".blitz"
export const Project = () => {
const router = useRouter()
const projectId = useParam("projectId", "number")
const [deleteProjectMutation, {isSuccess}] = useMutation(deleteProject)
const [project] = useQuery(getProject, {id: projectId}, {enabled: !isSuccess})
if (!project) return null
return (
<>
<Head>
@@ -20,7 +24,7 @@ export const Project = () => {
<h1>Project {project.id}</h1>
<pre>{JSON.stringify(project, null, 2)}</pre>
<Link href={`/projects/${project.id}/edit`}>
<Link href={Routes.EditProjectPage({projectId: project.id})}>
<a>Edit</a>
</Link>
@@ -45,7 +49,7 @@ const ShowProjectPage: BlitzPage = () => {
return (
<div>
<p>
<Link href="/projects">
<Link href={Routes.ProjectsPage()}>
<a>Projects</a>
</Link>
</p>
@@ -57,6 +61,7 @@ const ShowProjectPage: BlitzPage = () => {
)
}
ShowProjectPage.authenticate = true
ShowProjectPage.getLayout = (page) => <Layout>{page}</Layout>
export default ShowProjectPage

View File

@@ -5,6 +5,8 @@ import getProject from "app/projects/queries/getProject"
import updateProject from "app/projects/mutations/updateProject"
import {ProjectForm, FORM_ERROR} from "app/projects/components/ProjectForm"
import {Routes} from ".blitz"
export const EditProject = () => {
const router = useRouter()
const projectId = useParam("projectId", "number")
@@ -57,7 +59,7 @@ const EditProjectPage: BlitzPage = () => {
</Suspense>
<p>
<Link href="/projects">
<Link href={Routes.ProjectsPage()}>
<a>Projects</a>
</Link>
</p>
@@ -65,6 +67,7 @@ const EditProjectPage: BlitzPage = () => {
)
}
EditProjectPage.authenticate = true
EditProjectPage.getLayout = (page) => <Layout>{page}</Layout>
export default EditProjectPage

View File

@@ -3,6 +3,8 @@ import {Head, Link, usePaginatedQuery, useRouter, BlitzPage} from "blitz"
import Layout from "app/core/layouts/Layout"
import getProjects from "app/projects/queries/getProjects"
import {Routes} from ".blitz"
const ITEMS_PER_PAGE = 100
export const ProjectsList = () => {
@@ -22,7 +24,7 @@ export const ProjectsList = () => {
<ul>
{projects.map((project) => (
<li key={project.id}>
<Link href={`/projects/${project.id}`}>
<Link href={Routes.ShowProjectPage({projectId: project.id})}>
<a>{project.name}</a>
</Link>
</li>
@@ -48,7 +50,7 @@ const ProjectsPage: BlitzPage = () => {
<div>
<p>
<Link href="/projects/new">
<Link href={Routes.NewProjectPage()}>
<a>Create Project</a>
</Link>
</p>
@@ -61,6 +63,7 @@ const ProjectsPage: BlitzPage = () => {
)
}
ProjectsPage.authenticate = {redirectTo: "/login"}
ProjectsPage.getLayout = (page) => <Layout>{page}</Layout>
export default ProjectsPage

View File

@@ -3,6 +3,8 @@ import Layout from "app/core/layouts/Layout"
import createProject from "app/projects/mutations/createProject"
import {ProjectForm, FORM_ERROR} from "app/projects/components/ProjectForm"
import {Routes} from ".blitz"
const NewProjectPage: BlitzPage = () => {
const router = useRouter()
const [createProjectMutation] = useMutation(createProject)
@@ -32,7 +34,7 @@ const NewProjectPage: BlitzPage = () => {
/>
<p>
<Link href="/projects">
<Link href={Routes.ProjectsPage()}>
<a>Projects</a>
</Link>
</p>
@@ -40,6 +42,7 @@ const NewProjectPage: BlitzPage = () => {
)
}
NewProjectPage.authenticate = true
NewProjectPage.getLayout = (page) => <Layout title={"Create New Project"}>{page}</Layout>
export default NewProjectPage

View File

@@ -1,28 +1,20 @@
import {FC} from "react"
import {getSessionContext} from "@blitzjs/server"
import {
getSession,
invokeWithMiddleware,
useRouter,
GetServerSideProps,
PromiseReturnType,
ErrorComponent as ErrorPage,
useMutation,
AuthenticationError,
AuthorizationError,
GetServerSideProps,
InferGetServerSidePropsType,
BlitzPage,
} from "blitz"
import getUser from "app/users/queries/getUser"
import logout from "app/auth/mutations/logout"
import path from "path"
type PageProps = {
user?: PromiseReturnType<typeof getUser>
error?: {
statusCode: number
message: string
}
}
export const getServerSideProps: GetServerSideProps<PageProps> = async ({req, res}) => {
export const getServerSideProps: GetServerSideProps = async ({req, res}) => {
// Ensure these files are not eliminated by trace-based tree-shaking (like Vercel)
// https://github.com/blitz-js/blitz/issues/794
path.resolve("next.config.js")
@@ -30,7 +22,7 @@ export const getServerSideProps: GetServerSideProps<PageProps> = async ({req, re
path.resolve(".next/blitz/db.js")
// End anti-tree-shaking
const session = await getSessionContext(req, res)
const session = await getSession(req, res)
console.log("Session id:", session.userId)
try {
const user = await invokeWithMiddleware(
@@ -62,7 +54,7 @@ export const getServerSideProps: GetServerSideProps<PageProps> = async ({req, re
}
}
const Test: FC<PageProps> = ({user, error}: PageProps) => {
const Test: BlitzPage<InferGetServerSidePropsType<typeof getServerSideProps>> = ({user, error}) => {
const router = useRouter()
const [logoutMutation] = useMutation(logout)

View File

@@ -0,0 +1,13 @@
import {useRouter} from "next/router"
import React from "react"
export default function Test() {
const {replace} = useRouter()
const handleChange = (event: any) => {
// replace({ query }, undefined, { shallow: true })
replace(`/test?p=${event.target.value}`)
}
return <input onChange={handleChange} />
}

View File

@@ -1,9 +1,9 @@
import {Form, FormProps} from "app/core/components/Form"
import {LabeledTextField} from "app/core/components/LabeledTextField"
import * as z from "zod"
import {ZodType} from "zod"
export {FORM_ERROR} from "app/core/components/Form"
export function ProjectForm<S extends z.ZodType<any, any>>(props: FormProps<S>) {
export function ProjectForm<S extends ZodType<any, any>>(props: FormProps<S>) {
return (
<Form<S> {...props}>
<LabeledTextField name="name" label="Name" placeholder="Name" />

View File

@@ -1,12 +1,10 @@
import {resolver} from "blitz"
import db from "db"
import * as z from "zod"
import {z} from "zod"
const CreateProject = z
.object({
name: z.string(),
})
.nonstrict()
const CreateProject = z.object({
name: z.string(),
})
export default resolver.pipe(resolver.zod(CreateProject), resolver.authorize(), async (input) => {
// TODO: in multi-tenant app, you must add validation to ensure correct tenant

View File

@@ -1,12 +1,10 @@
import {resolver} from "blitz"
import db from "db"
import * as z from "zod"
import {z} from "zod"
const DeleteProject = z
.object({
id: z.number(),
})
.nonstrict()
const DeleteProject = z.object({
id: z.number(),
})
export default resolver.pipe(resolver.zod(DeleteProject), resolver.authorize(), async ({id}) => {
// TODO: in multi-tenant app, you must add validation to ensure correct tenant

View File

@@ -1,13 +1,11 @@
import {resolver} from "blitz"
import db from "db"
import * as z from "zod"
import {z} from "zod"
const UpdateProject = z
.object({
id: z.number(),
name: z.string(),
})
.nonstrict()
const UpdateProject = z.object({
id: z.number(),
name: z.string(),
})
export default resolver.pipe(
resolver.zod(UpdateProject),

View File

@@ -1,6 +1,6 @@
import {resolver, NotFoundError} from "blitz"
import db from "db"
import * as z from "zod"
import {z} from "zod"
const GetProject = z.object({
// This accepts type of undefined, but is required at runtime

View File

@@ -6,7 +6,7 @@ type GetUserInput = {
}
export default async function getUser({where}: GetUserInput, ctx: Ctx) {
ctx.session.$authorize()
if (!ctx.session.userId) return null
const user = await db.user.findFirst({where})

View File

@@ -1,4 +1,5 @@
const {sessionMiddleware, simpleRolesIsAuthorized} = require("@blitzjs/server")
import {sessionMiddleware, simpleRolesIsAuthorized} from "blitz"
import db from "db"
const withBundleAnalyzer = require("@next/bundle-analyzer")({
enabled: process.env.ANALYZE === "true",
})
@@ -6,15 +7,22 @@ const withBundleAnalyzer = require("@next/bundle-analyzer")({
module.exports = withBundleAnalyzer({
middleware: [
sessionMiddleware({
cookiePrefix: "blitz-auth-example",
isAuthorized: simpleRolesIsAuthorized,
// sessionExpiryMinutes: 4,
getSession: (handle) => db.session.findFirst({where: {handle}}),
}),
],
cli: {
clearConsoleOnBlitzDev: false,
},
log: {
// level: "trace",
},
experimental: {
isomorphicResolverImports: false,
initServer() {
console.log("Hello world from initServer")
},
},
/*
webpack: (config, {buildId, dev, isServer, defaultLoaders, webpack}) => {

View File

@@ -1,6 +1,9 @@
{
"baseUrl": "http://localhost:3099",
"defaultCommandTimeout": 10000,
"retries": {
"runMode": 1
},
"video": false,
"chromeWebSecurity": false
}

View File

@@ -19,6 +19,7 @@ describe("index page", () => {
const user = createRandomUser()
cy.signup(user)
cy.wait(1000)
cy.location("pathname").should("equal", "/")
cy.contains("button", "Logout")
@@ -28,9 +29,10 @@ describe("index page", () => {
const user = createRandomUser()
cy.signup(user)
cy.wait(1000)
cy.wait(500)
cy.contains("button", "Logout").click()
cy.wait(1000)
cy.contains("a", /login/i).click()
cy.contains("Email").find("input").type(user.email)
@@ -38,7 +40,7 @@ describe("index page", () => {
cy.contains("button", /login/i).click()
cy.location("pathname").should("equal", "/")
cy.wait(500)
cy.wait(1000)
cy.contains("button", "Logout")
})
@@ -46,10 +48,12 @@ describe("index page", () => {
const user = createRandomUser()
cy.signup(user)
cy.wait(1000)
cy.contains("button", "Logout").click()
cy.location("pathname").should("equal", "/")
cy.wait(1000)
cy.contains("a", /login/i)
})
@@ -59,10 +63,13 @@ describe("index page", () => {
const user = createRandomUser()
cy.contains("button", "Track view").click()
cy.wait(500)
cy.contains("button", "Track view").click()
cy.wait(1000)
cy.contains('"views": 2')
cy.signup(user)
cy.wait(1000)
cy.contains('"views": 2')
})

View File

@@ -1,6 +1,6 @@
{
"name": "@examples/auth",
"version": "0.30.0-canary.6",
"version": "0.34.0-canary.0",
"scripts": {
"dev": "blitz dev",
"build": "blitz build",
@@ -9,10 +9,10 @@
"lint": "eslint --ignore-path .gitignore --ext .js,.ts,.tsx .",
"analyze": "cross-env ANALYZE=true blitz build",
"cy:open": "cypress open",
"cy:run": "cypress run || cypress run",
"test": "prisma generate && yarn test:jest && yarn test:e2e",
"cy:run": "cypress run --browser chrome",
"test": "prisma generate && blitz codegen && yarn test:jest && yarn test:e2e",
"test:jest": "jest",
"test:server": "blitz prisma migrate deploy --preview-feature && blitz build && blitz start -p 3099",
"test:server": "cross-env NODE_ENV=test blitz prisma migrate deploy && blitz build && cross-env NODE_ENV=test blitz start -p 3099",
"test:e2e": "cross-env NODE_ENV=test start-server-and-test test:server http://localhost:3099 cy:run"
},
"browserslist": [
@@ -27,51 +27,40 @@
"bracketSpacing": false,
"trailingComma": "all"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged && pretty-quick --staged",
"pre-push": "blitz test"
}
},
"lint-staged": {
"*.{js,ts,tsx}": [
"eslint --fix"
]
},
"dependencies": {
"@prisma/client": "2.16.0",
"blitz": "0.30.0-canary.6",
"@prisma/client": "2.19.0",
"blitz": "0.36.3",
"final-form": "4.20.1",
"passport-auth0": "1.4.0",
"passport-github2": "0.1.12",
"passport-twitter": "1.0.4",
"prisma": "2.16.0",
"react": "0.0.0-experimental-3310209d0",
"react-dom": "0.0.0-experimental-3310209d0",
"react-error-boundary": "3.1.0",
"prisma": "2.19.0",
"react": "0.0.0-experimental-6a589ad71",
"react-dom": "0.0.0-experimental-6a589ad71",
"react-error-boundary": "3.1.1",
"react-final-form": "6.5.2",
"zod": "1.11.11"
"zod": "3.0.2"
},
"devDependencies": {
"@cypress/skip-test": "2.6.0",
"@next/bundle-analyzer": "^10.0.6",
"@testing-library/react": "11.2.3",
"@testing-library/react-hooks": "4.0.1",
"@testing-library/react": "11.2.5",
"@testing-library/react-hooks": "^4.0.1",
"@types/passport-auth0": "1.0.4",
"@types/passport-github2": "1.2.4",
"@types/passport-twitter": "1.0.36",
"@types/preview-email": "2.0.0",
"@types/react": "17.0.0",
"@types/react": "17.0.2",
"cross-env": "7.0.3",
"cypress": "6.2.1",
"eslint": "7.18.0",
"husky": "4.3.8",
"lint-staged": "10.5.3",
"eslint": "7.21.0",
"husky": "5.1.2",
"lint-staged": "10.5.4",
"prettier": "2.2.1",
"pretty-quick": "3.1.0",
"preview-email": "3.0.3",
"start-server-and-test": "1.11.7",
"typescript": "4.1.3"
"typescript": "4.1.5"
},
"private": true
}

View File

@@ -1,5 +1,4 @@
import React from "react"
import {RouterContext, BlitzRouter} from "blitz"
import {RouterContext, BlitzRouter, BlitzProvider} from "blitz"
import {render as defaultRender} from "@testing-library/react"
import {renderHook as defaultRenderHook} from "@testing-library/react-hooks"
@@ -25,11 +24,18 @@ export * from "@testing-library/react"
// router: { pathname: '/my-custom-pathname' },
// });
// --------------------------------------------------
export function render(ui: RenderUI, {wrapper, router, ...options}: RenderOptions = {}) {
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}) => (
<RouterContext.Provider value={{...mockRouter, ...router}}>{children}</RouterContext.Provider>
<BlitzProvider dehydratedState={dehydratedState}>
<RouterContext.Provider value={{...mockRouter, ...router}}>
{children}
</RouterContext.Provider>
</BlitzProvider>
)
}
return defaultRender(ui, {wrapper, ...options})
@@ -48,12 +54,16 @@ export function render(ui: RenderUI, {wrapper, router, ...options}: RenderOption
// --------------------------------------------------
export function renderHook(
hook: RenderHook,
{wrapper, router, ...options}: RenderHookOptions = {},
{wrapper, router, dehydratedState, ...options}: RenderHookOptions = {},
) {
if (!wrapper) {
// Add a default context wrapper if one isn't supplied from the test
wrapper = ({children}) => (
<RouterContext.Provider value={{...mockRouter, ...router}}>{children}</RouterContext.Provider>
<BlitzProvider dehydratedState={dehydratedState}>
<RouterContext.Provider value={{...mockRouter, ...router}}>
{children}
</RouterContext.Provider>
</BlitzProvider>
)
}
return defaultRenderHook(hook, {wrapper, ...options})
@@ -67,6 +77,8 @@ export const mockRouter: BlitzRouter = {
params: {},
query: {},
isReady: true,
isLocaleDomain: false,
isPreview: false,
push: jest.fn(),
replace: jest.fn(),
reload: jest.fn(),
@@ -83,8 +95,14 @@ export const mockRouter: BlitzRouter = {
type DefaultParams = Parameters<typeof defaultRender>
type RenderUI = DefaultParams[0]
type RenderOptions = DefaultParams[1] & {router?: Partial<BlitzRouter>}
type RenderOptions = DefaultParams[1] & {
router?: Partial<BlitzRouter>
dehydratedState?: unknown
}
type DefaultHookParams = Parameters<typeof defaultRenderHook>
type RenderHook = DefaultHookParams[0]
type RenderHookOptions = DefaultHookParams[1] & {router?: Partial<BlitzRouter>}
type RenderHookOptions = DefaultHookParams[1] & {
router?: Partial<BlitzRouter>
dehydratedState?: unknown
}

View File

@@ -14,8 +14,9 @@
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"downlevelIteration": true,
"jsx": "preserve"
},
"exclude": ["node_modules", "cypress"],
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"]
"include": ["**/*.ts", "**/*.tsx"]
}

1
examples/auth/types Symbolic link
View File

@@ -0,0 +1 @@
../../types

View File

@@ -1,5 +1,4 @@
import {DefaultCtx, SessionContext} from "blitz"
import {SimpleRolesIsAuthorized} from "@blitzjs/server"
import {DefaultCtx, SessionContext, SimpleRolesIsAuthorized} from "blitz"
import {User} from "db"
export type Role = "ADMIN" | "USER"
@@ -12,8 +11,16 @@ declare module "blitz" {
isAuthorized: SimpleRolesIsAuthorized<Role>
PublicData: {
userId: User["id"]
roles: Role[]
role: Role
views?: number
}
}
}
// This should not be needed. Usually it isn't but for some reason in this example it is
declare module "react" {
interface StyleHTMLAttributes<T> extends React.HTMLAttributes<T> {
jsx?: boolean
global?: boolean
}
}

View File

@@ -8,7 +8,7 @@
```
2. Migrate
```sh
blitz prisma migrate dev --preview-feature
blitz prisma migrate dev
```
3. Start the dev server

View File

@@ -9,7 +9,7 @@ export default async function login(input: LoginInputType, {session}: Ctx) {
// This throws an error if credentials are invalid
const user = await authenticateUser(email, password)
await session.$create({userId: user.id, roles: [user.role]})
await session.$create({userId: user.id})
return user
}

View File

@@ -13,7 +13,7 @@ export default async function signup(input: SignupInputType, {session}: Ctx) {
select: {id: true, name: true, email: true, role: true},
})
await session.$create({userId: user.id, roles: [user.role]})
await session.$create({userId: user.id})
return user
}

View File

@@ -1,4 +1,4 @@
import * as z from "zod"
import {z} from "zod"
export const SignupInput = z.object({
email: z.string().email(),

View File

@@ -1,6 +1,6 @@
import React, {ReactNode, PropsWithoutRef} from "react"
import {Form as FinalForm, FormProps as FinalFormProps} from "react-final-form"
import * as z from "zod"
import {z} from "zod"
export {FORM_ERROR} from "final-form"
type FormProps<S extends z.ZodType<any, any>> = {

View File

@@ -1,21 +1,24 @@
import {AppProps, ErrorComponent, useRouter, AuthenticationError, AuthorizationError} from "blitz"
import {
AppProps,
ErrorComponent,
useRouter,
AuthenticationError,
AuthorizationError,
useQueryErrorResetBoundary,
} from "blitz"
import {ErrorBoundary, FallbackProps} from "react-error-boundary"
import {queryCache} from "react-query"
import LoginForm from "app/auth/components/LoginForm"
export default function App({Component, pageProps}: AppProps) {
const getLayout = Component.getLayout || ((page) => page)
const router = useRouter()
const {reset} = useQueryErrorResetBoundary()
return (
<ErrorBoundary
FallbackComponent={RootErrorFallback}
resetKeys={[router.asPath]}
onReset={() => {
// This ensures the Blitz useQuery hooks will automatically refetch
// data any time you reset the error boundary
queryCache.resetErrorBoundaries()
}}
onReset={reset}
>
{getLayout(<Component {...pageProps} />)}
</ErrorBoundary>

View File

@@ -1,26 +0,0 @@
import React from "react"
import {render} from "test/utils"
import Home from "./index"
import {useCurrentUser} from "app/hooks/useCurrentUser"
jest.mock("app/hooks/useCurrentUser")
const mockUseCurrentUser = useCurrentUser as jest.MockedFunction<typeof useCurrentUser>
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 the default content from the page
// This is an example on how to mock api hooks when testing
mockUseCurrentUser.mockReturnValue({
id: 1,
name: "User",
email: "user@email.com",
role: "user",
})
const {getByText} = render(<Home />)
const linkElement = getByText(/Documentation/i)
expect(linkElement).toBeInTheDocument()
})

View File

@@ -74,7 +74,7 @@ const Home: BlitzPage = () => {
<code>blitz generate all project name:string</code>
</pre>
<pre>
<code>blitz prisma migrate dev --preview-feature</code>
<code>blitz prisma migrate dev</code>
</pre>
<div>
<p>

View File

@@ -1,8 +1,9 @@
const {sessionMiddleware, simpleRolesIsAuthorized} = require("@blitzjs/server")
const {sessionMiddleware, simpleRolesIsAuthorized} = require("blitz")
module.exports = {
middleware: [
sessionMiddleware({
cookiePrefix: "blitz-custom-server-example",
isAuthorized: simpleRolesIsAuthorized,
}),
],

View File

@@ -30,11 +30,13 @@ describe("index page", () => {
cy.signup(user)
cy.contains("button", "Logout").click()
cy.wait(500)
cy.contains("a", /login/i).click()
cy.contains("Email").find("input").type(user.email)
cy.contains("Password").find("input").type(user.password)
cy.contains("button", /login/i).click()
cy.wait(500)
cy.location("pathname").should("equal", "/")
cy.contains("button", "Logout")

View File

@@ -1,8 +1,8 @@
{
"name": "@examples/custom-server",
"version": "0.30.0-canary.6",
"version": "0.34.0-canary.0",
"scripts": {
"dev": "nodemon --watch server.js --exec 'blitz dev'",
"dev": "blitz dev",
"build": "blitz build",
"start": "blitz start",
"studio": "blitz prisma studio",
@@ -10,10 +10,11 @@
"test-watch": "jest --watch",
"cy-open": "cypress open",
"cy-run": "cypress run",
"test:migrate": "prisma generate && blitz prisma migrate deploy --preview-feature",
"test:jest": "jest",
"test:migrate": "prisma generate && blitz prisma migrate deploy",
"test:jest": "jest --passWithNoTests",
"test-server": "blitz build && blitz start",
"test:e2e": "cross-env NODE_ENV=test PORT=3099 start-server-and-test test-server http://localhost:3099 cy-run",
"test-run-e2e": "cross-env NODE_ENV=test PORT=3099 start-server-and-test test-server http://localhost:3099 cy-run",
"test:e2e": "yarn test-run-e2e || yarn test-run-e2e",
"test": "run-s test:*"
},
"browserslist": [
@@ -28,62 +29,34 @@
"bracketSpacing": false,
"trailingComma": "all"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged && pretty-quick --staged",
"pre-push": "tsc && npm run lint && npm run test"
}
},
"lint-staged": {
"*.{js,ts,tsx}": [
"eslint --fix"
]
},
"dependencies": {
"@prisma/client": "2.16.0",
"blitz": "0.30.0-canary.6",
"@prisma/client": "2.19.0",
"blitz": "0.36.3",
"final-form": "4.20.1",
"prisma": "2.16.0",
"react": "0.0.0-experimental-3310209d0",
"react-dom": "0.0.0-experimental-3310209d0",
"react-error-boundary": "2.3.2",
"prisma": "2.19.0",
"react": "0.0.0-experimental-6a589ad71",
"react-dom": "0.0.0-experimental-6a589ad71",
"react-error-boundary": "3.1.1",
"react-final-form": "6.5.2",
"secure-password": "4.0.0",
"typescript": "4.1.3",
"zod": "1.11.11"
"typescript": "4.1.5",
"zod": "3.0.2"
},
"devDependencies": {
"@cypress/skip-test": "2.6.0",
"@testing-library/jest-dom": "5.11.9",
"@testing-library/react": "11.2.3",
"@testing-library/react-hooks": "4.0.1",
"@types/jest": "26.0.20",
"@types/react": "16.14.1",
"@testing-library/react": "11.2.5",
"@testing-library/react-hooks": "^4.0.1",
"@types/react": "17.0.2",
"@types/secure-password": "3.1.0",
"@typescript-eslint/eslint-plugin": "4.12.0",
"@typescript-eslint/parser": "4.12.0",
"babel-eslint": "10.1.0",
"cypress": "6.2.1",
"eslint": "7.18.0",
"eslint-config-react-app": "5.2.1",
"eslint-plugin-cypress": "2.11.1",
"eslint-plugin-flowtype": "5.2.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jsx-a11y": "6.4.1",
"eslint-plugin-react": "7.21.5",
"eslint-plugin-react-hooks": "4.2.0",
"husky": "4.3.8",
"jest": "26.6.3",
"jest-environment-jsdom-fourteen": "1.0.1",
"jest-watch-typeahead": "0.6.1",
"lint-staged": "10.5.1",
"eslint": "7.21.0",
"husky": "5.1.2",
"lint-staged": "10.5.4",
"nodemon": "2.0.7",
"npm-run-all": "4.1.5",
"prettier": "2.2.0",
"prettier": "2.2.1",
"pretty-quick": "3.1.0",
"react-test-renderer": "16.14.0",
"start-server-and-test": "1.11.2",
"ts-jest": "26.5.0"
"start-server-and-test": "1.11.7"
},
"private": true
}

View File

@@ -1,7 +1,7 @@
const {createServer} = require("http")
const {parse} = require("url")
const blitz = require("@blitzjs/server")
const {log} = require("@blitzjs/display")
import blitz from "blitz/custom-server"
import {createServer} from "http"
import {parse} from "url"
import {log} from "@blitzjs/display"
const {PORT = "3000"} = process.env
const dev = process.env.NODE_ENV !== "production"
@@ -10,7 +10,7 @@ const handle = app.getRequestHandler()
app.prepare().then(() => {
createServer((req, res) => {
const parsedUrl = parse(req.url, true)
const parsedUrl = parse(req.url!, true)
const {pathname} = parsedUrl
if (pathname === "/hello") {

View File

@@ -1,5 +1,5 @@
import React from "react"
import {RouterContext, BlitzRouter} from "blitz"
import {RouterContext, BlitzRouter, BlitzProvider} from "blitz"
import {render as defaultRender} from "@testing-library/react"
import {renderHook as defaultRenderHook} from "@testing-library/react-hooks"
@@ -25,11 +25,18 @@ export * from "@testing-library/react"
// router: { pathname: '/my-custom-pathname' },
// });
// --------------------------------------------------
export function render(ui: RenderUI, {wrapper, router, ...options}: RenderOptions = {}) {
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}) => (
<RouterContext.Provider value={{...mockRouter, ...router}}>{children}</RouterContext.Provider>
<BlitzProvider dehydratedState={dehydratedState}>
<RouterContext.Provider value={{...mockRouter, ...router}}>
{children}
</RouterContext.Provider>
</BlitzProvider>
)
}
return defaultRender(ui, {wrapper, ...options})
@@ -48,12 +55,16 @@ export function render(ui: RenderUI, {wrapper, router, ...options}: RenderOption
// --------------------------------------------------
export function renderHook(
hook: RenderHook,
{wrapper, router, ...options}: RenderHookOptions = {},
{wrapper, router, dehydratedState, ...options}: RenderHookOptions = {},
) {
if (!wrapper) {
// Add a default context wrapper if one isn't supplied from the test
wrapper = ({children}) => (
<RouterContext.Provider value={{...mockRouter, ...router}}>{children}</RouterContext.Provider>
<BlitzProvider dehydratedState={dehydratedState}>
<RouterContext.Provider value={{...mockRouter, ...router}}>
{children}
</RouterContext.Provider>
</BlitzProvider>
)
}
return defaultRenderHook(hook, {wrapper, ...options})
@@ -67,6 +78,8 @@ export const mockRouter: BlitzRouter = {
params: {},
query: {},
isReady: true,
isLocaleDomain: false,
isPreview: false,
push: jest.fn(),
replace: jest.fn(),
reload: jest.fn(),
@@ -83,8 +96,14 @@ export const mockRouter: BlitzRouter = {
type DefaultParams = Parameters<typeof defaultRender>
type RenderUI = DefaultParams[0]
type RenderOptions = DefaultParams[1] & {router?: Partial<BlitzRouter>}
type RenderOptions = DefaultParams[1] & {
router?: Partial<BlitzRouter>
dehydratedState?: unknown
}
type DefaultHookParams = Parameters<typeof defaultRenderHook>
type RenderHook = DefaultHookParams[0]
type RenderHookOptions = DefaultHookParams[1] & {router?: Partial<BlitzRouter>}
type RenderHookOptions = DefaultHookParams[1] & {
router?: Partial<BlitzRouter>
dehydratedState?: unknown
}

View File

@@ -0,0 +1 @@
../../types

View File

@@ -1,5 +1,4 @@
import {DefaultCtx, SessionContext} from "blitz"
import {simpleRolesIsAuthorized} from "@blitzjs/server"
import {DefaultCtx, SessionContext, SimpleRolesIsAuthorized} from "blitz"
import React from "react"
declare module "blitz" {
@@ -7,10 +6,9 @@ declare module "blitz" {
session: SessionContext
}
export interface Session {
isAuthorized: typeof simpleRolesIsAuthorized
isAuthorized: SimpleRolesIsAuthorized
PublicData: {
userId: number
roles: string[]
}
}
}

View File

@@ -1 +1,2 @@
save-exact=true
legacy-peer-deps=true

View File

@@ -9,7 +9,7 @@ export default async function login(input: LoginInputType, { session }: Ctx) {
// This throws an error if credentials are invalid
const user = await authenticateUser(email, password)
await session.$create({ userId: user.id, roles: [user.role] })
await session.$create({ userId: user.id })
return user
}

View File

@@ -23,7 +23,7 @@ export default async function signup(input: SignupInputType, { session }: Ctx) {
)
console.log("Create user result:", user)
await session.$create({ userId: user.id, roles: [user.role] })
await session.$create({ userId: user.id })
return user
}

View File

@@ -1,4 +1,4 @@
import * as z from "zod"
import { z } from "zod"
export const SignupInput = z.object({
email: z.string().email(),

View File

@@ -1,6 +1,6 @@
import { ReactNode, PropsWithoutRef } from "react"
import { Form as FinalForm, FormProps as FinalFormProps } from "react-final-form"
import * as z from "zod"
import { z } from "zod"
export { FORM_ERROR } from "final-form"
type FormProps<S extends z.ZodType<any, any>> = {

View File

@@ -1,21 +1,17 @@
import { AppProps, ErrorComponent, useRouter } from "blitz"
import { AppProps, ErrorComponent, useRouter, useQueryErrorResetBoundary } from "blitz"
import { ErrorBoundary, FallbackProps } from "react-error-boundary"
import { queryCache } from "react-query"
import LoginForm from "app/auth/components/LoginForm"
export default function App({ Component, pageProps }: AppProps) {
const getLayout = Component.getLayout || ((page) => page)
const router = useRouter()
const { reset } = useQueryErrorResetBoundary()
return (
<ErrorBoundary
FallbackComponent={RootErrorFallback}
resetKeys={[router.asPath]}
onReset={() => {
// This ensures the Blitz useQuery hooks will automatically refetch
// data any time you reset the error boundary
queryCache.resetErrorBoundaries()
}}
onReset={reset}
>
{getLayout(<Component {...pageProps} />)}
</ErrorBoundary>

View File

@@ -1,4 +1,4 @@
const { sessionMiddleware, simpleRolesIsAuthorized } = require("@blitzjs/server")
const { sessionMiddleware, simpleRolesIsAuthorized } = require("blitz")
const { GraphQLClient, gql } = require("graphql-request")
const graphQLClient = new GraphQLClient("https://graphql.fauna.com/graphql", {
@@ -20,6 +20,7 @@ const normalizeSession = (faunaSession) => {
module.exports = {
middleware: [
sessionMiddleware({
cookiePrefix: "blitz-fauna-example",
isAuthorized: simpleRolesIsAuthorized,
getSession: async (handle) => {
const { findSessionByHandle: session } = await graphQLClient.request(

View File

@@ -1,6 +1,6 @@
{
"name": "@examples/fauna",
"version": "0.30.0-canary.6",
"version": "0.34.0-canary.0",
"scripts": {
"dev": "blitz dev",
"build": "blitz build",
@@ -28,44 +28,33 @@
]
},
"dependencies": {
"blitz": "0.30.0-canary.6",
"blitz": "0.36.3",
"final-form": "4.20.1",
"graphql": "15.5.0",
"graphql-request": "3.4.0",
"react": "0.0.0-experimental-3310209d0",
"react-dom": "0.0.0-experimental-3310209d0",
"react-error-boundary": "3.1.0",
"react": "0.0.0-experimental-6a589ad71",
"react-dom": "0.0.0-experimental-6a589ad71",
"react-error-boundary": "3.1.1",
"react-final-form": "6.5.2",
"secure-password": "4.0.0",
"zod": "1.11.11"
"zod": "3.0.2"
},
"devDependencies": {
"@testing-library/jest-dom": "5.11.9",
"@testing-library/react": "11.2.3",
"@testing-library/react-hooks": "4.0.1",
"@types/jest": "26.0.20",
"@types/react": "17.0.0",
"@testing-library/react": "11.2.5",
"@testing-library/react-hooks": "^4.0.1",
"@types/react": "17.0.2",
"@types/secure-password": "3.1.0",
"@typescript-eslint/eslint-plugin": "4.12.0",
"@typescript-eslint/parser": "4.12.0",
"babel-eslint": "10.1.0",
"eslint": "7.18.0",
"eslint-config-react-app": "6.0.0",
"eslint-plugin-flowtype": "5.2.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jsx-a11y": "6.4.1",
"eslint-plugin-react": "7.22.0",
"eslint-plugin-react-hooks": "4.2.0",
"husky": "4.3.8",
"jest": "26.6.3",
"jest-environment-jsdom-fourteen": "1.0.1",
"jest-watch-typeahead": "0.6.1",
"lint-staged": "10.5.3",
"prettier": "2.2.1",
"pretty-quick": "3.1.0",
"babel-eslint": "~10.1.0",
"eslint": "7.21.0",
"eslint-config-react-app": "~6.0.0",
"eslint-plugin-flowtype": "~5.2.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsx-a11y": "~6.4.1",
"eslint-plugin-react": "^7.23.1",
"eslint-plugin-react-hooks": "^4.2.0",
"husky": "5.1.2",
"start-server-and-test": "1.11.7",
"ts-jest": "26.5.0",
"typescript": "4.1.3"
"typescript": "4.1.5"
},
"private": true
}

View File

@@ -1,4 +1,4 @@
import { RouterContext, BlitzRouter } from "blitz"
import { RouterContext, BlitzRouter, BlitzProvider } from "blitz"
import { render as defaultRender } from "@testing-library/react"
import { renderHook as defaultRenderHook } from "@testing-library/react-hooks"
@@ -15,11 +15,17 @@ export * from "@testing-library/react"
type DefaultParams = Parameters<typeof defaultRender>
type RenderUI = DefaultParams[0]
type RenderOptions = DefaultParams[1] & { router?: Partial<BlitzRouter> }
type RenderOptions = DefaultParams[1] & {
router?: Partial<BlitzRouter>
dehydratedState?: unknown
}
type DefaultHookParams = Parameters<typeof defaultRenderHook>
type RenderHook = DefaultHookParams[0]
type RenderHookOptions = DefaultHookParams[1] & { router?: Partial<BlitzRouter> }
type RenderHookOptions = DefaultHookParams[1] & {
router?: Partial<BlitzRouter>
dehydratedState?: unknown
}
// --------------------------------------------------
// render()
@@ -32,13 +38,18 @@ type RenderHookOptions = DefaultHookParams[1] & { router?: Partial<BlitzRouter>
// router: { pathname: '/my-custom-pathname' },
// });
// --------------------------------------------------
export function render(ui: RenderUI, { wrapper, router, ...options }: RenderOptions = {}) {
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 }) => (
<RouterContext.Provider value={{ ...mockRouter, ...router }}>
{children}
</RouterContext.Provider>
<BlitzProvider dehydratedState={dehydratedState}>
<RouterContext.Provider value={{ ...mockRouter, ...router }}>
{children}
</RouterContext.Provider>
</BlitzProvider>
)
}
return defaultRender(ui, { wrapper, ...options })
@@ -57,14 +68,16 @@ export function render(ui: RenderUI, { wrapper, router, ...options }: RenderOpti
// --------------------------------------------------
export function renderHook(
hook: RenderHook,
{ wrapper, router, ...options }: RenderHookOptions = {}
{ wrapper, router, dehydratedState, ...options }: RenderHookOptions = {}
) {
if (!wrapper) {
// Add a default context wrapper if one isn't supplied from the test
wrapper = ({ children }) => (
<RouterContext.Provider value={{ ...mockRouter, ...router }}>
{children}
</RouterContext.Provider>
<BlitzProvider dehydratedState={dehydratedState}>
<RouterContext.Provider value={{ ...mockRouter, ...router }}>
{children}
</RouterContext.Provider>
</BlitzProvider>
)
}
return defaultRenderHook(hook, { wrapper, ...options })
@@ -78,6 +91,8 @@ export const mockRouter: BlitzRouter = {
params: {},
query: {},
isReady: true,
isLocaleDomain: false,
isPreview: false,
push: jest.fn(),
replace: jest.fn(),
reload: jest.fn(),

1
examples/fauna/types Symbolic link
View File

@@ -0,0 +1 @@
../../types

View File

@@ -1,15 +1,13 @@
import { DefaultCtx, SessionContext } from "blitz"
import { simpleRolesIsAuthorized } from "@blitzjs/server"
import { DefaultCtx, SessionContext, SimpleRolesIsAuthorized } from "blitz"
declare module "blitz" {
export interface Ctx extends DefaultCtx {
session: SessionContext
}
export interface Session {
isAuthorized: typeof simpleRolesIsAuthorized
isAuthorized: SimpleRolesIsAuthorized
PublicData: {
userId: string
roles: string[]
}
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "no-prisma",
"version": "0.30.0-canary.6",
"name": "@examples/no-prisma",
"version": "0.34.0-canary.0",
"scripts": {
"dev": "blitz dev",
"build": "blitz build",
@@ -17,8 +17,7 @@
},
"husky": {
"hooks": {
"pre-commit": "lint-staged && pretty-quick --staged",
"pre-push": "blitz test"
"pre-commit": "lint-staged && pretty-quick --staged"
}
},
"lint-staged": {
@@ -27,29 +26,27 @@
]
},
"dependencies": {
"blitz": "0.30.0-canary.6",
"blitz": "0.36.3",
"knex": "0.21.16",
"react": "0.0.0-experimental-3310209d0",
"react-dom": "0.0.0-experimental-3310209d0",
"sqlite3": "5.0.0"
"react": "0.0.0-experimental-6a589ad71",
"react-dom": "0.0.0-experimental-6a589ad71",
"sqlite3": "5.0.2"
},
"devDependencies": {
"@types/react": "17.0.0",
"@typescript-eslint/eslint-plugin": "4.12.0",
"@typescript-eslint/parser": "4.12.0",
"babel-eslint": "10.1.0",
"eslint": "7.18.0",
"eslint-config-react-app": "6.0.0",
"eslint-plugin-flowtype": "5.2.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jsx-a11y": "6.4.1",
"eslint-plugin-react": "7.22.0",
"eslint-plugin-react-hooks": "4.2.0",
"husky": "4.3.8",
"lint-staged": "10.5.3",
"@types/react": "17.0.2",
"babel-eslint": "~10.1.0",
"eslint": "7.21.0",
"eslint-config-react-app": "~6.0.0",
"eslint-plugin-flowtype": "~5.2.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsx-a11y": "~6.4.1",
"eslint-plugin-react": "^7.23.1",
"eslint-plugin-react-hooks": "^4.2.0",
"husky": "5.1.2",
"lint-staged": "10.5.4",
"prettier": "2.2.1",
"pretty-quick": "3.1.0",
"typescript": "4.1.3"
"typescript": "4.1.5"
},
"private": true
}

1
examples/no-prisma/types Symbolic link
View File

@@ -0,0 +1 @@
../../types

View File

@@ -14,7 +14,7 @@ model Project {
2. DB migrate
```
blitz prisma migrate dev --preview-feature
blitz prisma migrate dev
```
3. Start the dev server

View File

@@ -3,7 +3,7 @@ const modelSnippet = `model Project {
id Int @default(autoincrement()) @id
name String
}`
const migrateSnippet = `$ blitz prisma migrate dev --preview-feature
const migrateSnippet = `$ blitz prisma migrate dev
$ blitz generate all project`
const Home = () => (

View File

@@ -1,9 +1,9 @@
{
"name": "@examples/plain-js",
"version": "0.30.0-canary.6",
"version": "0.34.0-canary.0",
"scripts": {
"dev": "blitz dev",
"build": "blitz prisma migrate deploy --preview-feature && blitz build",
"build": "blitz prisma migrate deploy && blitz build",
"start": "blitz start",
"lint": "eslint --ignore-path .gitignore --ext .js,.ts,.tsx .",
"test": "echo \"DISABLED\""
@@ -11,6 +11,9 @@
"browserslist": [
"defaults"
],
"prisma": {
"schema": "db/schema.prisma"
},
"prettier": {
"semi": false,
"printWidth": 100,
@@ -19,8 +22,7 @@
},
"husky": {
"hooks": {
"pre-commit": "lint-staged && pretty-quick --staged",
"pre-push": "blitz test"
"pre-commit": "lint-staged && pretty-quick --staged"
}
},
"lint-staged": {
@@ -30,28 +32,26 @@
]
},
"dependencies": {
"@prisma/client": "2.16.0",
"blitz": "0.30.0-canary.6",
"prisma": "2.16.0",
"react": "0.0.0-experimental-3310209d0",
"react-dom": "0.0.0-experimental-3310209d0"
"@prisma/client": "2.19.0",
"blitz": "0.36.3",
"prisma": "2.19.0",
"react": "0.0.0-experimental-6a589ad71",
"react-dom": "0.0.0-experimental-6a589ad71"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "4.12.0",
"@typescript-eslint/parser": "4.12.0",
"babel-eslint": "10.1.0",
"eslint": "7.18.0",
"eslint-config-react-app": "6.0.0",
"eslint-plugin-flowtype": "5.2.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jsx-a11y": "6.4.1",
"eslint-plugin-react": "7.22.0",
"eslint-plugin-react-hooks": "4.2.0",
"husky": "4.3.8",
"lint-staged": "10.5.3",
"babel-eslint": "~10.1.0",
"eslint": "7.21.0",
"eslint-config-react-app": "~6.0.0",
"eslint-plugin-flowtype": "~5.2.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jsx-a11y": "~6.4.1",
"eslint-plugin-react": "^7.23.1",
"eslint-plugin-react-hooks": "^4.2.0",
"husky": "5.1.2",
"lint-staged": "10.5.4",
"prettier": "2.2.1",
"pretty-quick": "3.1.0",
"typescript": "4.1.3"
"typescript": "4.1.5"
},
"private": true
}

File diff suppressed because it is too large Load Diff

3
examples/static/.env Normal file
View File

@@ -0,0 +1,3 @@
# This env file should be checked into source control
# This is the place for default values for all environments
# Values in `.env.local` and `.env.production` will override these values

View File

@@ -0,0 +1,3 @@
module.exports = {
extends: ["blitz"],
}

52
examples/static/.gitignore vendored Normal file
View File

@@ -0,0 +1,52 @@
# dependencies
node_modules
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.pnp.*
.npm
web_modules/
# blitz
/.blitz/
/.next/
*.sqlite
.now
.blitz-console-history
blitz-log.log
# misc
.DS_Store
# local env files
.env.local
.env.*.local
.envrc
# Logs
logs
*.log
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Testing
.coverage
*.lcov
.nyc_output
lib-cov
# Caches
*.tsbuildinfo
.eslintcache
.node_repl_history
.yarn-integrity
# Serverless directories
.serverless/
# Stores VSCode versions used for testing VSCode extensions
.vscode-test

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