Compare commits
5 Commits
@blitzjs/a
...
@blitzjs/a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d73b1d76ab | ||
|
|
78fd5c489b | ||
|
|
60de057477 | ||
|
|
0a8b0cb350 | ||
|
|
5476139375 |
5
.changeset/chilly-nails-nail.md
Normal file
5
.changeset/chilly-nails-nail.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
Remove unnecessary `as number` assertions from new app templates
|
||||
5
.changeset/honest-comics-vanish.md
Normal file
5
.changeset/honest-comics-vanish.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Fix Blitz Install issue that gets stuck on "Generating file diff"
|
||||
5
.changeset/lemon-pillows-switch.md
Normal file
5
.changeset/lemon-pillows-switch.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@blitzjs/generator": patch
|
||||
---
|
||||
|
||||
Fix reset token being undefined when passed to the resetPassword mutation
|
||||
5
.changeset/moody-spoons-rhyme.md
Normal file
5
.changeset/moody-spoons-rhyme.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"blitz": patch
|
||||
---
|
||||
|
||||
Fix Custom Server TS error - add `es6` target config to esbuild
|
||||
@@ -61,6 +61,7 @@
|
||||
"calm-nails-wait",
|
||||
"calm-tomatoes-drive",
|
||||
"chilled-carrots-own",
|
||||
"chilly-nails-nail",
|
||||
"clean-hats-pump",
|
||||
"clean-walls-wink",
|
||||
"clever-radios-lie",
|
||||
@@ -119,6 +120,7 @@
|
||||
"hip-buttons-dance",
|
||||
"honest-candles-yawn",
|
||||
"honest-cherries-push",
|
||||
"honest-comics-vanish",
|
||||
"hot-cups-rhyme",
|
||||
"hot-drinks-approve",
|
||||
"hungry-baboons-swim",
|
||||
@@ -130,6 +132,7 @@
|
||||
"late-steaks-give",
|
||||
"lazy-maps-sort",
|
||||
"lemon-games-press",
|
||||
"lemon-pillows-switch",
|
||||
"lemon-seas-push",
|
||||
"light-donkeys-double",
|
||||
"little-pears-ring",
|
||||
@@ -145,6 +148,7 @@
|
||||
"modern-cameras-pull",
|
||||
"modern-ligers-behave",
|
||||
"moody-bags-walk",
|
||||
"moody-spoons-rhyme",
|
||||
"moody-squids-cheer",
|
||||
"nasty-suns-wash",
|
||||
"nervous-beds-travel",
|
||||
|
||||
@@ -9,7 +9,7 @@ export default resolver.pipe(
|
||||
resolver.zod(ChangePassword),
|
||||
resolver.authorize(),
|
||||
async ({ currentPassword, newPassword }, ctx) => {
|
||||
const user = await db.user.findFirst({ where: { id: ctx.session.userId as number } })
|
||||
const user = await db.user.findFirst({ where: { id: ctx.session.userId } })
|
||||
if (!user) throw new NotFoundError()
|
||||
|
||||
await authenticateUser(user.email, currentPassword)
|
||||
|
||||
@@ -5,7 +5,7 @@ export default async function getCurrentUser(_ = null, { session }: Ctx) {
|
||||
if (!session.userId) return null
|
||||
|
||||
const user = await db.user.findFirst({
|
||||
where: { id: session.userId as number },
|
||||
where: { id: session.userId },
|
||||
select: { id: true, name: true, email: true, role: true },
|
||||
})
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"@blitzjs/rpc": "workspace:*",
|
||||
"@hookform/resolvers": "2.8.8",
|
||||
"@prisma/client": "4.0.0",
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "workspace:2.0.0-beta.14",
|
||||
"next": "12.2.5",
|
||||
"openid-client": "5.1.8",
|
||||
"prisma": "4.0.0",
|
||||
|
||||
@@ -9,7 +9,7 @@ export default resolver.pipe(
|
||||
resolver.zod(ChangePassword),
|
||||
resolver.authorize(),
|
||||
async ({ currentPassword, newPassword }, ctx) => {
|
||||
const user = await db.user.findFirst({ where: { id: ctx.session.userId as number } })
|
||||
const user = await db.user.findFirst({ where: { id: ctx.session.userId } })
|
||||
if (!user) throw new NotFoundError()
|
||||
|
||||
await authenticateUser(user.email, currentPassword)
|
||||
|
||||
@@ -5,7 +5,7 @@ export default async function getCurrentUser(_ = null, { session }: Ctx) {
|
||||
if (!session.userId) return null
|
||||
|
||||
const user = await db.user.findFirst({
|
||||
where: { id: session.userId as number },
|
||||
where: { id: session.userId },
|
||||
select: { id: true, name: true, email: true, role: true },
|
||||
})
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"@blitzjs/rpc": "workspace:*",
|
||||
"@hookform/resolvers": "2.8.8",
|
||||
"@prisma/client": "4.0.0",
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "workspace:2.0.0-beta.14",
|
||||
"next": "12.2.5",
|
||||
"prisma": "4.0.0",
|
||||
"react": "18.2.0",
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { useEffect, useState } from "react"
|
||||
import Layout from "app/core/layouts/Layout"
|
||||
import { LabeledTextField } from "app/core/components/LabeledTextField"
|
||||
import { Form, FORM_ERROR } from "app/core/components/Form"
|
||||
@@ -9,9 +10,14 @@ import { useMutation } from "@blitzjs/rpc"
|
||||
import Link from "next/link"
|
||||
|
||||
const ResetPasswordPage: BlitzPage = () => {
|
||||
const [token, setToken] = useState("")
|
||||
const router = useRouter()
|
||||
const [resetPasswordMutation, { isSuccess }] = useMutation(resetPassword)
|
||||
|
||||
useEffect(() => {
|
||||
setToken(router.query.token as string)
|
||||
}, [router.isReady])
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h1>Set a New Password</h1>
|
||||
@@ -30,11 +36,11 @@ const ResetPasswordPage: BlitzPage = () => {
|
||||
initialValues={{
|
||||
password: "",
|
||||
passwordConfirmation: "",
|
||||
token: router.query.token as string,
|
||||
token,
|
||||
}}
|
||||
onSubmit={async (values) => {
|
||||
try {
|
||||
await resetPasswordMutation(values)
|
||||
await resetPasswordMutation({ ...values, token })
|
||||
} catch (error: any) {
|
||||
if (error.name === "ResetPasswordError") {
|
||||
return {
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"@blitzjs/config": "workspace:*",
|
||||
"@blitzjs/next": "workspace:*",
|
||||
"@prisma/client": "4.0.0",
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "workspace:2.0.0-beta.14",
|
||||
"lowdb": "3.0.0",
|
||||
"next": "12.2.5",
|
||||
"prisma": "4.0.0",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# @blitzjs/auth
|
||||
|
||||
## 2.0.0-beta.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [78fd5c48]
|
||||
- Updated dependencies [0a8b0cb3]
|
||||
- blitz@2.0.0-beta.14
|
||||
|
||||
## 2.0.0-beta.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/auth",
|
||||
"version": "2.0.0-beta.13",
|
||||
"version": "2.0.0-beta.14",
|
||||
"scripts": {
|
||||
"build": "unbuild",
|
||||
"predev": "wait-on -d 250 ../blitz/dist/index-server.d.ts",
|
||||
@@ -26,7 +26,7 @@
|
||||
"@types/secure-password": "3.1.1",
|
||||
"b64-lite": "1.4.0",
|
||||
"bad-behavior": "1.0.1",
|
||||
"blitz": "2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"cookie": "0.4.1",
|
||||
"cookie-session": "2.0.0",
|
||||
"debug": "4.3.3",
|
||||
@@ -40,7 +40,7 @@
|
||||
"url": "0.11.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.13",
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.14",
|
||||
"@testing-library/react": "13.0.0",
|
||||
"@testing-library/react-hooks": "7.0.2",
|
||||
"@types/cookie": "0.4.1",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @blitzjs/next
|
||||
|
||||
## 2.0.0-beta.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @blitzjs/rpc@2.0.0-beta.14
|
||||
|
||||
## 2.0.0-beta.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/next",
|
||||
"version": "2.0.0-beta.13",
|
||||
"version": "2.0.0-beta.14",
|
||||
"scripts": {
|
||||
"build": "unbuild",
|
||||
"dev": "pnpm predev && pnpm watch unbuild src --wait=0.2",
|
||||
@@ -24,7 +24,7 @@
|
||||
"eslint.js"
|
||||
],
|
||||
"dependencies": {
|
||||
"@blitzjs/rpc": "2.0.0-beta.13",
|
||||
"@blitzjs/rpc": "2.0.0-beta.14",
|
||||
"@tanstack/react-query": "4.0.10",
|
||||
"@types/hoist-non-react-statics": "3.3.1",
|
||||
"debug": "4.3.3",
|
||||
@@ -34,7 +34,7 @@
|
||||
"supports-color": "8.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.13",
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.14",
|
||||
"@testing-library/dom": "8.13.0",
|
||||
"@testing-library/jest-dom": "5.16.3",
|
||||
"@testing-library/react": "13.0.0",
|
||||
@@ -44,7 +44,7 @@
|
||||
"@types/react": "18.0.17",
|
||||
"@types/react-dom": "17.0.14",
|
||||
"@types/testing-library__react-hooks": "4.0.0",
|
||||
"blitz": "2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"cross-spawn": "7.0.3",
|
||||
"find-up": "4.1.0",
|
||||
"next": "12.2.5",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @blitzjs/rpc
|
||||
|
||||
## 2.0.0-beta.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- @blitzjs/auth@2.0.0-beta.14
|
||||
|
||||
## 2.0.0-beta.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/rpc",
|
||||
"version": "2.0.0-beta.13",
|
||||
"version": "2.0.0-beta.14",
|
||||
"scripts": {
|
||||
"build": "unbuild",
|
||||
"predev": "wait-on -d 400 ../blitz/dist/index-server.d.ts && wait-on -d 400 ../blitz-auth/dist/index-browser.d.ts",
|
||||
@@ -20,7 +20,7 @@
|
||||
"dist/**"
|
||||
],
|
||||
"dependencies": {
|
||||
"@blitzjs/auth": "2.0.0-beta.13",
|
||||
"@blitzjs/auth": "2.0.0-beta.14",
|
||||
"@tanstack/react-query": "4.0.10",
|
||||
"b64-lite": "1.4.0",
|
||||
"bad-behavior": "1.0.1",
|
||||
@@ -30,11 +30,11 @@
|
||||
"supports-color": "8.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.13",
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.14",
|
||||
"@types/debug": "4.1.7",
|
||||
"@types/react": "18.0.17",
|
||||
"@types/react-dom": "17.0.14",
|
||||
"blitz": "2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"next": "12.2.5",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# blitz
|
||||
|
||||
## 2.0.0-beta.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 78fd5c48: Fix Blitz Install issue that gets stuck on "Generating file diff"
|
||||
- 0a8b0cb3: Fix Custom Server TS error - add `es6` target config to esbuild
|
||||
- Updated dependencies [54761393]
|
||||
- Updated dependencies [60de0574]
|
||||
- @blitzjs/generator@2.0.0-beta.14
|
||||
|
||||
## 2.0.0-beta.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "blitz",
|
||||
"version": "2.0.0-beta.13",
|
||||
"version": "2.0.0-beta.14",
|
||||
"scripts": {
|
||||
"build": "unbuild",
|
||||
"dev": "pnpm run predev && watch unbuild src --wait=0.2",
|
||||
@@ -25,7 +25,7 @@
|
||||
"blitz": "bin/blitz"
|
||||
},
|
||||
"dependencies": {
|
||||
"@blitzjs/generator": "2.0.0-beta.13",
|
||||
"@blitzjs/generator": "2.0.0-beta.14",
|
||||
"@mrleebo/prisma-ast": "0.2.6",
|
||||
"@types/global-agent": "2.1.1",
|
||||
"arg": "5.0.1",
|
||||
@@ -63,6 +63,7 @@
|
||||
"recast": "0.20.5",
|
||||
"resolve-cwd": "3.0.0",
|
||||
"resolve-from": "5.0.0",
|
||||
"rimraf": "3.0.2",
|
||||
"superjson": "1.9.1",
|
||||
"supports-color": "8.1.1",
|
||||
"tar": "6.1.11",
|
||||
@@ -72,7 +73,7 @@
|
||||
"watchpack": "2.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.13",
|
||||
"@blitzjs/config": "workspace:2.0.0-beta.14",
|
||||
"@types/cookie": "0.4.1",
|
||||
"@types/cross-spawn": "6.0.2",
|
||||
"@types/debug": "4.1.7",
|
||||
|
||||
@@ -4,11 +4,14 @@ import prompts from "prompts"
|
||||
import {bootstrap} from "global-agent"
|
||||
import {baseLogger, log} from "../../logging"
|
||||
const debug = require("debug")("blitz:cli")
|
||||
import {join, resolve} from "path"
|
||||
import {join, resolve, dirname} from "path"
|
||||
import {Stream} from "stream"
|
||||
import {promisify} from "util"
|
||||
import {RecipeCLIFlags, RecipeExecutor} from "../../installer"
|
||||
import {setupTsnode} from "../utils/setup-ts-node"
|
||||
import {isInternalBlitzMonorepoDevelopment} from "../utils/helpers"
|
||||
import findUp from "find-up"
|
||||
import resolveFrom from "resolve-from"
|
||||
|
||||
interface GlobalAgent {
|
||||
HTTP_PROXY?: string
|
||||
@@ -62,8 +65,9 @@ const requireJSON = (file: string) => {
|
||||
return JSON.parse(require("fs-extra").readFileSync(file).toString("utf-8"))
|
||||
}
|
||||
|
||||
const checkLockFileExists = (filename: string) => {
|
||||
return require("fs-extra").existsSync(resolve(filename))
|
||||
const checkLockFileExists = async (filename: string) => {
|
||||
const dotBlitz = join(await findNodeModulesRoot(process.cwd()), ".blitz")
|
||||
return require("fs-extra").existsSync(resolve(join(dotBlitz, "..", "..", filename)))
|
||||
}
|
||||
|
||||
const GH_ROOT = "https://github.com/"
|
||||
@@ -153,13 +157,39 @@ const normalizeRecipePath = (recipeArg: string): RecipeMeta => {
|
||||
}
|
||||
}
|
||||
|
||||
async function findNodeModulesRoot(src: string) {
|
||||
let root: string
|
||||
if (isInternalBlitzMonorepoDevelopment) {
|
||||
root = join(__dirname, "..", "..", "..", "..", "/node_modules")
|
||||
} else {
|
||||
const blitzPkgLocation = dirname(
|
||||
(await findUp("package.json", {
|
||||
cwd: resolveFrom(src, "blitz"),
|
||||
})) ?? "",
|
||||
)
|
||||
|
||||
if (!blitzPkgLocation) {
|
||||
throw new Error("Internal Blitz Error: unable to find 'blitz' package location")
|
||||
}
|
||||
|
||||
if (blitzPkgLocation.includes(".pnpm")) {
|
||||
root = join(blitzPkgLocation, "../../../../")
|
||||
} else {
|
||||
root = join(blitzPkgLocation, "../")
|
||||
}
|
||||
}
|
||||
|
||||
return root
|
||||
}
|
||||
|
||||
const cloneRepo = async (
|
||||
repoFullName: string,
|
||||
defaultBranch: string,
|
||||
subdirectory?: string,
|
||||
): Promise<string> => {
|
||||
debug("[cloneRepo] starting...")
|
||||
const recipeDir = join(process.cwd(), ".blitz", "recipe-install")
|
||||
const dotBlitz = join(await findNodeModulesRoot(process.cwd()), ".blitz")
|
||||
const recipeDir = join(dotBlitz, "..", "..", "recipe-install")
|
||||
// clean up from previous run in case of error
|
||||
require("rimraf").sync(recipeDir)
|
||||
require("fs-extra").mkdirsSync(recipeDir)
|
||||
@@ -206,7 +236,6 @@ const setupProxySupport = async () => {
|
||||
|
||||
const install: CliCommand = async () => {
|
||||
setupTsnode()
|
||||
|
||||
let selectedRecipe: string | null = args._[1] ? `${args._[1]}` : null
|
||||
await setupProxySupport()
|
||||
|
||||
@@ -281,10 +310,10 @@ ${chalk.dim("- Available recipes listed at https://github.com/blitz-js/blitz/tre
|
||||
let pkgManager = "npm"
|
||||
let installArgs = ["install", "--legacy-peer-deps", "--ignore-scripts"]
|
||||
|
||||
if (checkLockFileExists("yarn.lock")) {
|
||||
if (await checkLockFileExists("yarn.lock")) {
|
||||
pkgManager = "yarn"
|
||||
installArgs = ["install", "--ignore-scripts"]
|
||||
} else if (checkLockFileExists("pnpm-lock.yaml")) {
|
||||
} else if (await checkLockFileExists("pnpm-lock.yaml")) {
|
||||
pkgManager = "pnpm"
|
||||
installArgs = ["install", "--ignore-scripts"]
|
||||
}
|
||||
@@ -297,7 +326,7 @@ ${chalk.dim("- Available recipes listed at https://github.com/blitz-js/blitz/tre
|
||||
|
||||
const recipePackageMain = requireJSON("./package.json").main
|
||||
const recipeEntry = resolve(recipePackageMain)
|
||||
process.chdir(process.cwd())
|
||||
process.chdir(join(process.cwd(), ".."))
|
||||
|
||||
await installRecipeAtPath(recipeEntry, cliArgs, cliFlags)
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@ const getEsbuildOptions = (): esbuild.BuildOptions => {
|
||||
entryPoints: [getCustomServerPath()],
|
||||
outfile: getCustomServerBuildPath(),
|
||||
format: "cjs",
|
||||
target: "es6",
|
||||
bundle: true,
|
||||
platform: "node",
|
||||
external: [
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @blitzjs/codemod
|
||||
|
||||
## 2.0.0-beta.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [54761393]
|
||||
- Updated dependencies [78fd5c48]
|
||||
- Updated dependencies [60de0574]
|
||||
- Updated dependencies [0a8b0cb3]
|
||||
- @blitzjs/generator@2.0.0-beta.14
|
||||
- blitz@2.0.0-beta.14
|
||||
|
||||
## 2.0.0-beta.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/codemod",
|
||||
"version": "2.0.0-beta.13",
|
||||
"version": "2.0.0-beta.14",
|
||||
"scripts": {
|
||||
"build": "unbuild",
|
||||
"dev": "watch unbuild src --wait=0.2",
|
||||
@@ -25,9 +25,9 @@
|
||||
"@babel/plugin-proposal-class-properties": "7.17.12",
|
||||
"@babel/plugin-syntax-jsx": "7.17.12",
|
||||
"@babel/plugin-syntax-typescript": "7.17.12",
|
||||
"@blitzjs/generator": "2.0.0-beta.13",
|
||||
"@blitzjs/generator": "2.0.0-beta.14",
|
||||
"arg": "5.0.1",
|
||||
"blitz": "2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"chalk": "^4.1.0",
|
||||
"cross-spawn": "7.0.3",
|
||||
"debug": "4.3.3",
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# @blitzjs/config
|
||||
|
||||
## 2.0.0-beta.14
|
||||
|
||||
## 2.0.0-beta.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@blitzjs/config",
|
||||
"private": true,
|
||||
"version": "2.0.0-beta.13",
|
||||
"version": "2.0.0-beta.14",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "5.9.1",
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @blitzjs/generator
|
||||
|
||||
## 2.0.0-beta.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- 54761393: Remove unnecessary `as number` assertions from new app templates
|
||||
- 60de0574: Fix reset token being undefined when passed to the resetPassword mutation
|
||||
|
||||
## 2.0.0-beta.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@blitzjs/generator",
|
||||
"version": "2.0.0-beta.13",
|
||||
"version": "2.0.0-beta.14",
|
||||
"scripts": {
|
||||
"dev": "watch unbuild src --wait=0.2",
|
||||
"build": "unbuild && pnpm build:templates",
|
||||
@@ -46,7 +46,7 @@
|
||||
"vinyl": "2.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.0-beta.13",
|
||||
"@blitzjs/config": "2.0.0-beta.14",
|
||||
"@juanm04/cpx": "2.0.1",
|
||||
"@types/babel__core": "7.1.19",
|
||||
"@types/diff": "5.0.2",
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
import { NotFoundError, AuthenticationError } from "blitz"
|
||||
import { resolver } from "@blitzjs/rpc"
|
||||
import { SecurePassword } from "@blitzjs/auth"
|
||||
import db from "db"
|
||||
import { authenticateUser } from "./login"
|
||||
import { ChangePassword } from "../validations"
|
||||
import { NotFoundError, AuthenticationError } from 'blitz'
|
||||
import { resolver } from '@blitzjs/rpc'
|
||||
import { SecurePassword } from '@blitzjs/auth'
|
||||
import db from 'db'
|
||||
import { authenticateUser } from './login'
|
||||
import { ChangePassword } from '../validations'
|
||||
|
||||
export default resolver.pipe(
|
||||
resolver.zod(ChangePassword),
|
||||
resolver.authorize(),
|
||||
async ({ currentPassword, newPassword }, ctx) => {
|
||||
const user = await db.user.findFirst({ where: { id: ctx.session.userId as number } })
|
||||
const user = await db.user.findFirst({ where: { id: ctx.session.userId } })
|
||||
if (!user) throw new NotFoundError()
|
||||
|
||||
try {
|
||||
try {
|
||||
await authenticateUser(user.email, currentPassword)
|
||||
} catch (error: any) {
|
||||
} catch (error) {
|
||||
if (error instanceof AuthenticationError) {
|
||||
throw new Error("Invalid Password")
|
||||
throw new Error('Invalid Password')
|
||||
}
|
||||
throw error
|
||||
}
|
||||
@@ -28,5 +28,5 @@ export default resolver.pipe(
|
||||
})
|
||||
|
||||
return true
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { Ctx } from "blitz"
|
||||
import db from "db"
|
||||
import { Ctx } from 'blitz'
|
||||
import db from 'db'
|
||||
|
||||
export default async function getCurrentUser(_ = null, { session }: Ctx) {
|
||||
if (!session.userId) return null
|
||||
|
||||
const user = await db.user.findFirst({
|
||||
where: { id: session.userId as number },
|
||||
where: { id: session.userId },
|
||||
select: { id: true, name: true, email: true, role: true },
|
||||
})
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { useEffect, useState } from "react"
|
||||
import Layout from "app/core/layouts/Layout"
|
||||
import { LabeledTextField } from "app/core/components/LabeledTextField"
|
||||
import { Form, FORM_ERROR } from "app/core/components/Form"
|
||||
@@ -9,9 +10,14 @@ import { useMutation } from "@blitzjs/rpc"
|
||||
import Link from "next/link"
|
||||
|
||||
const ResetPasswordPage: BlitzPage = () => {
|
||||
const [token, setToken] = useState("")
|
||||
const router = useRouter()
|
||||
const [resetPasswordMutation, { isSuccess }] = useMutation(resetPassword)
|
||||
|
||||
useEffect(() => {
|
||||
setToken(router.query.token as string)
|
||||
}, [router.isReady])
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h1>Set a New Password</h1>
|
||||
@@ -27,10 +33,14 @@ const ResetPasswordPage: BlitzPage = () => {
|
||||
<Form
|
||||
submitText="Reset Password"
|
||||
schema={ResetPassword}
|
||||
initialValues={{ password: "", passwordConfirmation: "", token: router.query.token as string }}
|
||||
initialValues={{
|
||||
password: "",
|
||||
passwordConfirmation: "",
|
||||
token,
|
||||
}}
|
||||
onSubmit={async (values) => {
|
||||
try {
|
||||
await resetPasswordMutation(values)
|
||||
await resetPasswordMutation({...values, token})
|
||||
} catch (error: any) {
|
||||
if (error.name === "ResetPasswordError") {
|
||||
return {
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"@typescript-eslint/parser": "5.9.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@blitzjs/config": "2.0.0-beta.13",
|
||||
"@blitzjs/config": "2.0.0-beta.14",
|
||||
"@types/react": "18.0.17",
|
||||
"@types/react-dom": "17.0.14",
|
||||
"react": "18.2.0",
|
||||
|
||||
90
pnpm-lock.yaml
generated
90
pnpm-lock.yaml
generated
@@ -49,7 +49,7 @@ importers:
|
||||
"@types/preview-email": 2.0.1
|
||||
"@types/react": 18.0.17
|
||||
"@typescript-eslint/eslint-plugin": 5.9.1
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: workspace:2.0.0-beta.13
|
||||
eslint: 7.32.0
|
||||
eslint-config-next: 12.3.1
|
||||
eslint-config-prettier: 8.5.0
|
||||
@@ -120,7 +120,7 @@ importers:
|
||||
"@types/preview-email": 2.0.1
|
||||
"@types/react": 18.0.17
|
||||
"@typescript-eslint/eslint-plugin": 5.9.1
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: workspace:2.0.0-beta.13
|
||||
eslint: 7.32.0
|
||||
eslint-config-next: 12.3.1
|
||||
eslint-config-prettier: 8.5.0
|
||||
@@ -235,7 +235,7 @@ importers:
|
||||
"@types/node-fetch": 2.6.1
|
||||
"@types/react": 18.0.17
|
||||
b64-lite: 1.4.0
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: workspace:2.0.0-beta.13
|
||||
eslint: 7.32.0
|
||||
fs-extra: 10.0.1
|
||||
get-port: 6.1.2
|
||||
@@ -650,8 +650,8 @@ importers:
|
||||
|
||||
packages/blitz:
|
||||
specifiers:
|
||||
"@blitzjs/config": workspace:2.0.0-beta.12
|
||||
"@blitzjs/generator": 2.0.0-beta.12
|
||||
"@blitzjs/config": workspace:2.0.0-beta.13
|
||||
"@blitzjs/generator": 2.0.0-beta.13
|
||||
"@mrleebo/prisma-ast": 0.2.6
|
||||
"@types/cookie": 0.4.1
|
||||
"@types/cross-spawn": 6.0.2
|
||||
@@ -708,6 +708,7 @@ importers:
|
||||
recast: 0.20.5
|
||||
resolve-cwd: 3.0.0
|
||||
resolve-from: 5.0.0
|
||||
rimraf: 3.0.2
|
||||
superjson: 1.9.1
|
||||
supports-color: 8.1.1
|
||||
tar: 6.1.11
|
||||
@@ -759,6 +760,7 @@ importers:
|
||||
recast: 0.20.5
|
||||
resolve-cwd: 3.0.0
|
||||
resolve-from: 5.0.0
|
||||
rimraf: 3.0.2
|
||||
superjson: 1.9.1
|
||||
supports-color: 8.1.1
|
||||
tar: 6.1.11
|
||||
@@ -795,7 +797,7 @@ importers:
|
||||
|
||||
packages/blitz-auth:
|
||||
specifiers:
|
||||
"@blitzjs/config": workspace:2.0.0-beta.12
|
||||
"@blitzjs/config": workspace:2.0.0-beta.13
|
||||
"@testing-library/react": 13.0.0
|
||||
"@testing-library/react-hooks": 7.0.2
|
||||
"@types/b64-lite": 1.3.0
|
||||
@@ -809,7 +811,7 @@ importers:
|
||||
"@types/secure-password": 3.1.1
|
||||
b64-lite: 1.4.0
|
||||
bad-behavior: 1.0.1
|
||||
blitz: 2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
cookie: 0.4.1
|
||||
cookie-session: 2.0.0
|
||||
debug: 4.3.3
|
||||
@@ -862,8 +864,8 @@ importers:
|
||||
|
||||
packages/blitz-next:
|
||||
specifiers:
|
||||
"@blitzjs/config": workspace:2.0.0-beta.12
|
||||
"@blitzjs/rpc": 2.0.0-beta.12
|
||||
"@blitzjs/config": workspace:2.0.0-beta.13
|
||||
"@blitzjs/rpc": 2.0.0-beta.13
|
||||
"@tanstack/react-query": 4.0.10
|
||||
"@testing-library/dom": 8.13.0
|
||||
"@testing-library/jest-dom": 5.16.3
|
||||
@@ -875,7 +877,7 @@ importers:
|
||||
"@types/react": 18.0.17
|
||||
"@types/react-dom": 17.0.14
|
||||
"@types/testing-library__react-hooks": 4.0.0
|
||||
blitz: 2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
cross-spawn: 7.0.3
|
||||
debug: 4.3.3
|
||||
find-up: 4.1.0
|
||||
@@ -925,15 +927,15 @@ importers:
|
||||
|
||||
packages/blitz-rpc:
|
||||
specifiers:
|
||||
"@blitzjs/auth": 2.0.0-beta.12
|
||||
"@blitzjs/config": workspace:2.0.0-beta.12
|
||||
"@blitzjs/auth": 2.0.0-beta.13
|
||||
"@blitzjs/config": workspace:2.0.0-beta.13
|
||||
"@tanstack/react-query": 4.0.10
|
||||
"@types/debug": 4.1.7
|
||||
"@types/react": 18.0.17
|
||||
"@types/react-dom": 17.0.14
|
||||
b64-lite: 1.4.0
|
||||
bad-behavior: 1.0.1
|
||||
blitz: 2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
chalk: ^4.1.0
|
||||
debug: 4.3.3
|
||||
next: 12.2.5
|
||||
@@ -976,12 +978,12 @@ importers:
|
||||
"@babel/plugin-syntax-typescript": 7.17.12
|
||||
"@babel/preset-env": 7.12.10
|
||||
"@blitzjs/config": workspace:*
|
||||
"@blitzjs/generator": 2.0.0-beta.12
|
||||
"@blitzjs/generator": 2.0.0-beta.13
|
||||
"@types/jscodeshift": 0.11.2
|
||||
"@types/node": 17.0.16
|
||||
arg: 5.0.1
|
||||
ast-types: 0.14.2
|
||||
blitz: 2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
chalk: ^4.1.0
|
||||
cross-spawn: 7.0.3
|
||||
debug: 4.3.3
|
||||
@@ -1036,7 +1038,7 @@ importers:
|
||||
"@babel/plugin-transform-typescript": 7.12.1
|
||||
"@babel/preset-env": 7.12.10
|
||||
"@babel/types": 7.12.10
|
||||
"@blitzjs/config": 2.0.0-beta.12
|
||||
"@blitzjs/config": 2.0.0-beta.13
|
||||
"@juanm04/cpx": 2.0.1
|
||||
"@mrleebo/prisma-ast": 0.4.1
|
||||
"@types/babel__core": 7.1.19
|
||||
@@ -1129,7 +1131,7 @@ importers:
|
||||
|
||||
packages/pkg-template:
|
||||
specifiers:
|
||||
"@blitzjs/config": 2.0.0-beta.12
|
||||
"@blitzjs/config": 2.0.0-beta.13
|
||||
"@types/react": 18.0.17
|
||||
"@types/react-dom": 17.0.14
|
||||
"@typescript-eslint/eslint-plugin": 5.9.1
|
||||
@@ -1153,7 +1155,7 @@ importers:
|
||||
recipes/base-web:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1164,7 +1166,7 @@ importers:
|
||||
recipes/bulma:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1176,7 +1178,7 @@ importers:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
ast-types: 0.14.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1189,7 +1191,7 @@ importers:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
ast-types: 0.14.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1201,7 +1203,7 @@ importers:
|
||||
recipes/emotion:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1211,20 +1213,20 @@ importers:
|
||||
|
||||
recipes/gh-action-yarn-mariadb:
|
||||
specifiers:
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
|
||||
recipes/gh-action-yarn-postgres:
|
||||
specifiers:
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
|
||||
recipes/ghost:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1235,7 +1237,7 @@ importers:
|
||||
recipes/graphql-apollo-server:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
uuid: ^8.3.1
|
||||
dependencies:
|
||||
@@ -1247,14 +1249,19 @@ importers:
|
||||
|
||||
recipes/logrocket:
|
||||
specifiers:
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
"@types/jscodeshift": 0.11.2
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
jscodeshift: 0.13.0
|
||||
devDependencies:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
|
||||
recipes/material-ui:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1266,7 +1273,7 @@ importers:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
ast-types: 0.14.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1277,13 +1284,13 @@ importers:
|
||||
|
||||
recipes/passenger:
|
||||
specifiers:
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
|
||||
recipes/quirrel:
|
||||
specifiers:
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
|
||||
@@ -1291,7 +1298,7 @@ importers:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
ast-types: 0.14.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1302,14 +1309,14 @@ importers:
|
||||
|
||||
recipes/render:
|
||||
specifiers:
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
|
||||
recipes/secureheaders:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
uuid: ^8.3.1
|
||||
dependencies:
|
||||
@@ -1322,7 +1329,7 @@ importers:
|
||||
recipes/stitches:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1334,7 +1341,7 @@ importers:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
ast-types: 0.14.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1346,7 +1353,7 @@ importers:
|
||||
recipes/tailwind:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1358,7 +1365,7 @@ importers:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
ast-types: 0.14.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -1370,7 +1377,7 @@ importers:
|
||||
recipes/vanilla-extract:
|
||||
specifiers:
|
||||
"@types/jscodeshift": 0.11.2
|
||||
blitz: workspace:2.0.0-beta.12
|
||||
blitz: 2.0.0-beta.13
|
||||
jscodeshift: 0.13.0
|
||||
dependencies:
|
||||
blitz: link:../../packages/blitz
|
||||
@@ -12857,7 +12864,7 @@ packages:
|
||||
pretty-format: 27.5.1
|
||||
slash: 3.0.0
|
||||
strip-json-comments: 3.1.1
|
||||
ts-node: 10.7.0_6sxvnwysvlo53egjnie7htsx5a
|
||||
ts-node: 10.7.0_typescript@4.6.3
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
- canvas
|
||||
@@ -18364,6 +18371,7 @@ packages:
|
||||
typescript: 4.7.4
|
||||
v8-compile-cache-lib: 3.0.1
|
||||
yn: 3.1.1
|
||||
dev: false
|
||||
|
||||
/ts-node/10.7.0_fxg3r7oju3tntkxsvleuiot4fa:
|
||||
resolution:
|
||||
@@ -18397,7 +18405,6 @@ packages:
|
||||
typescript: 4.6.3
|
||||
v8-compile-cache-lib: 3.0.1
|
||||
yn: 3.1.1
|
||||
dev: false
|
||||
|
||||
/ts-node/10.7.0_typescript@4.6.3:
|
||||
resolution:
|
||||
@@ -18430,7 +18437,6 @@ packages:
|
||||
typescript: 4.6.3
|
||||
v8-compile-cache-lib: 3.0.1
|
||||
yn: 3.1.1
|
||||
dev: false
|
||||
|
||||
/ts-node/10.9.1_kakyiqi62sfonxvjmz3ft5vt7y:
|
||||
resolution:
|
||||
|
||||
@@ -12,9 +12,11 @@ export default RecipeBuilder()
|
||||
stepName: "Add dependencies",
|
||||
explanation: `Add 'baseui' and Styletron as a dependency too -- it's a toolkit for CSS in JS styling which Base Web relies on.`,
|
||||
packages: [
|
||||
{name: "baseui", version: "10.x"},
|
||||
{name: "styletron-engine-atomic", version: "1.x"},
|
||||
{name: "styletron-react", version: "6.x"},
|
||||
{name: "baseui", version: "^10.5.0"},
|
||||
{name: "styletron-engine-atomic", version: "^1.4.8"},
|
||||
{name: "styletron-react", version: "^6.0.2"},
|
||||
{name: "@types/styletron-engine-atomic", version: "^1.1.1"},
|
||||
{name: "@types/styletron-react", version: "^5.0.3"},
|
||||
],
|
||||
})
|
||||
.addNewFilesStep({
|
||||
@@ -54,43 +56,40 @@ export default RecipeBuilder()
|
||||
addImport(program, themeAndBaseProviderImport)
|
||||
|
||||
program
|
||||
.find(j.JSXElement)
|
||||
.filter(
|
||||
(path) =>
|
||||
path.parent?.parent?.parent?.value?.id?.name === "App" &&
|
||||
path.parent?.value.type === j.ReturnStatement.toString(),
|
||||
)
|
||||
.find(j.FunctionDeclaration, (node) => node.id.name === "MyApp")
|
||||
.forEach((path) => {
|
||||
const {node} = path
|
||||
path.replace(
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("StyletronProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("value"),
|
||||
j.jsxExpressionContainer(j.identifier("styletron")),
|
||||
),
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("debug"),
|
||||
j.jsxExpressionContainer(j.identifier("debug")),
|
||||
),
|
||||
j.jsxAttribute(j.jsxIdentifier("debugAfterHydration")),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("StyletronProvider")),
|
||||
[
|
||||
j.literal("\n"),
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("BaseProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("theme"),
|
||||
j.jsxExpressionContainer(j.identifier("LightTheme")),
|
||||
),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("BaseProvider")),
|
||||
[j.literal("\n"), node, j.literal("\n")],
|
||||
),
|
||||
j.literal("\n"),
|
||||
],
|
||||
),
|
||||
const statement = path.value.body.body.filter(
|
||||
(b) => b.type === "ReturnStatement",
|
||||
)[0] as j.ReturnStatement
|
||||
const argument = statement?.argument as j.JSXElement
|
||||
|
||||
statement.argument = j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("StyletronProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("value"),
|
||||
j.jsxExpressionContainer(j.identifier("styletron")),
|
||||
),
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("debug"),
|
||||
j.jsxExpressionContainer(j.identifier("debug")),
|
||||
),
|
||||
j.jsxAttribute(j.jsxIdentifier("debugAfterHydration")),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("StyletronProvider")),
|
||||
[
|
||||
j.literal("\n"),
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("BaseProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("theme"),
|
||||
j.jsxExpressionContainer(j.identifier("LightTheme")),
|
||||
),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("BaseProvider")),
|
||||
[j.literal("\n"), argument, j.literal("\n")],
|
||||
),
|
||||
j.literal("\n"),
|
||||
],
|
||||
)
|
||||
})
|
||||
|
||||
@@ -109,7 +108,7 @@ export default RecipeBuilder()
|
||||
)
|
||||
|
||||
const styletronServerAndSheetImport = j.importDeclaration(
|
||||
[j.importSpecifier(j.identifier("Sheet"))],
|
||||
[j.importSpecifier(j.identifier("Server")), j.importSpecifier(j.identifier("Sheet"))],
|
||||
j.literal("styletron-engine-atomic"),
|
||||
)
|
||||
|
||||
@@ -122,16 +121,18 @@ export default RecipeBuilder()
|
||||
addImport(program, styletronServerAndSheetImport)
|
||||
addImport(program, styletronImport)
|
||||
|
||||
program.find(j.ImportDeclaration, {source: {value: "blitz"}}).forEach((blitzImportPath) => {
|
||||
let specifiers = blitzImportPath.value.specifiers || []
|
||||
if (
|
||||
!specifiers
|
||||
.filter((spec) => j.ImportSpecifier.check(spec))
|
||||
.some((node) => (node as j.ImportSpecifier)?.imported?.name === "DocumentContext")
|
||||
) {
|
||||
specifiers.push(j.importSpecifier(j.identifier("DocumentContext")))
|
||||
}
|
||||
})
|
||||
program
|
||||
.find(j.ImportDeclaration, {source: {value: "next/document"}})
|
||||
.forEach((nextDocumentImportPath) => {
|
||||
let specifiers = nextDocumentImportPath.value.specifiers || []
|
||||
if (
|
||||
!specifiers
|
||||
.filter((spec) => j.ImportSpecifier.check(spec))
|
||||
.some((node) => (node as j.ImportSpecifier)?.imported?.name === "DocumentContext")
|
||||
) {
|
||||
specifiers.push(j.importSpecifier(j.identifier("DocumentContext")))
|
||||
}
|
||||
})
|
||||
|
||||
program.find(j.ClassDeclaration).forEach((path) => {
|
||||
const props = j.typeAlias(
|
||||
@@ -233,7 +234,15 @@ export default RecipeBuilder()
|
||||
j.logicalExpression(
|
||||
"||",
|
||||
j.callExpression(
|
||||
j.memberExpression(j.identifier("styletron"), j.identifier("getStylesheets")),
|
||||
j.memberExpression(
|
||||
j.parenthesizedExpression(
|
||||
j.tsAsExpression(
|
||||
j.identifier("styletron"),
|
||||
j.tsTypeReference(j.identifier("Server")),
|
||||
),
|
||||
),
|
||||
j.identifier("getStylesheets"),
|
||||
),
|
||||
[],
|
||||
),
|
||||
j.arrayExpression([]),
|
||||
@@ -263,93 +272,82 @@ export default RecipeBuilder()
|
||||
node.body.splice(0, 0, getInitialPropsMethod)
|
||||
})
|
||||
|
||||
program
|
||||
.find(j.JSXElement, {openingElement: {name: {name: "DocumentHead"}}})
|
||||
.forEach((path) => {
|
||||
const {node} = path
|
||||
path.replace(
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("DocumentHead")),
|
||||
j.jsxClosingElement(j.jsxIdentifier("DocumentHead")),
|
||||
[
|
||||
...(node.children || []),
|
||||
j.literal("\n"),
|
||||
j.jsxExpressionContainer(
|
||||
j.callExpression(
|
||||
program.find(j.JSXElement, {openingElement: {name: {name: "Head"}}}).forEach((path) => {
|
||||
const {node} = path
|
||||
path.replace(
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("Head")),
|
||||
j.jsxClosingElement(j.jsxIdentifier("Head")),
|
||||
[
|
||||
...(node.children || []),
|
||||
j.literal("\n"),
|
||||
j.jsxExpressionContainer(
|
||||
j.callExpression(
|
||||
j.memberExpression(
|
||||
j.memberExpression(
|
||||
j.memberExpression(
|
||||
j.memberExpression(j.thisExpression(), j.identifier("props")),
|
||||
j.identifier("stylesheets"),
|
||||
),
|
||||
j.identifier("map"),
|
||||
j.memberExpression(j.thisExpression(), j.identifier("props")),
|
||||
j.identifier("stylesheets"),
|
||||
),
|
||||
[
|
||||
j.arrowFunctionExpression(
|
||||
[j.identifier("sheet"), j.identifier("i")],
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(
|
||||
j.jsxIdentifier("style"),
|
||||
[
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("className"),
|
||||
j.literal("_styletron_hydrate_"),
|
||||
),
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("dangerouslySetInnerHTML"),
|
||||
j.jsxExpressionContainer(
|
||||
j.objectExpression([
|
||||
j.objectProperty(
|
||||
j.identifier("__html"),
|
||||
j.memberExpression(
|
||||
j.identifier("sheet"),
|
||||
j.identifier("css"),
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
),
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("media"),
|
||||
j.jsxExpressionContainer(
|
||||
j.memberExpression(
|
||||
j.memberExpression(
|
||||
j.identifier("sheet"),
|
||||
j.identifier("attrs"),
|
||||
),
|
||||
j.identifier("media"),
|
||||
j.identifier("map"),
|
||||
),
|
||||
[
|
||||
j.arrowFunctionExpression(
|
||||
[j.identifier("sheet"), j.identifier("i")],
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(
|
||||
j.jsxIdentifier("style"),
|
||||
[
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("className"),
|
||||
j.literal("_styletron_hydrate_"),
|
||||
),
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("dangerouslySetInnerHTML"),
|
||||
j.jsxExpressionContainer(
|
||||
j.objectExpression([
|
||||
j.objectProperty(
|
||||
j.identifier("__html"),
|
||||
j.memberExpression(j.identifier("sheet"), j.identifier("css")),
|
||||
),
|
||||
]),
|
||||
),
|
||||
),
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("media"),
|
||||
j.jsxExpressionContainer(
|
||||
j.memberExpression(
|
||||
j.memberExpression(j.identifier("sheet"), j.identifier("attrs")),
|
||||
j.identifier("media"),
|
||||
),
|
||||
),
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("data-hydrate"),
|
||||
j.jsxExpressionContainer(
|
||||
j.memberExpression(
|
||||
j.memberExpression(
|
||||
j.identifier("sheet"),
|
||||
j.identifier("attrs"),
|
||||
),
|
||||
j.stringLiteral("data-hydrate"),
|
||||
true,
|
||||
),
|
||||
),
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("data-hydrate"),
|
||||
j.jsxExpressionContainer(
|
||||
j.memberExpression(
|
||||
j.memberExpression(j.identifier("sheet"), j.identifier("attrs")),
|
||||
j.stringLiteral("data-hydrate"),
|
||||
true,
|
||||
),
|
||||
),
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("key"),
|
||||
j.jsxExpressionContainer(j.jsxIdentifier("i")),
|
||||
),
|
||||
],
|
||||
true,
|
||||
),
|
||||
),
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("key"),
|
||||
j.jsxExpressionContainer(j.jsxIdentifier("i")),
|
||||
),
|
||||
],
|
||||
true,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
j.literal("\n"),
|
||||
],
|
||||
),
|
||||
)
|
||||
})
|
||||
),
|
||||
j.literal("\n"),
|
||||
],
|
||||
),
|
||||
)
|
||||
})
|
||||
|
||||
return program
|
||||
},
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import {Client, Server} from "styletron-engine-atomic"
|
||||
import {DebugEngine} from "styletron-react"
|
||||
|
||||
const getHydrateClass = () => document.getElementsByClassName("_styletron_hydrate_")
|
||||
const getHydrateClass = () =>
|
||||
document.getElementsByClassName("_styletron_hydrate_") as HTMLCollectionOf<HTMLStyleElement>
|
||||
|
||||
export const styletron =
|
||||
typeof window === "undefined"
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -4,21 +4,18 @@ import j from "jscodeshift"
|
||||
|
||||
function wrapComponentWithBumbagProvider(program: Program) {
|
||||
program
|
||||
.find(j.JSXElement)
|
||||
.filter(
|
||||
(path) =>
|
||||
path.parent?.parent?.parent?.value?.id?.name === "App" &&
|
||||
path.parent?.value.type === j.ReturnStatement.toString(),
|
||||
)
|
||||
.forEach((path: NodePath) => {
|
||||
const {node} = path
|
||||
.find(j.FunctionDeclaration, (node) => node.id.name === "MyApp")
|
||||
.forEach((path) => {
|
||||
const statement = path.value.body.body.filter(
|
||||
(b) => b.type === "ReturnStatement",
|
||||
)[0] as j.ReturnStatement
|
||||
const argument = statement?.argument as j.JSXElement
|
||||
|
||||
try {
|
||||
path.replace(
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("BumbagProvider isSSR")),
|
||||
j.jsxClosingElement(j.jsxIdentifier("BumbagProvider")),
|
||||
[j.jsxText("\n"), node, j.jsxText("\n")],
|
||||
),
|
||||
statement.argument = j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("BumbagProvider isSSR")),
|
||||
j.jsxClosingElement(j.jsxIdentifier("BumbagProvider")),
|
||||
[j.jsxText("\n"), argument, j.jsxText("\n")],
|
||||
)
|
||||
} catch {
|
||||
console.error("Already installed recipe")
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -24,6 +24,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13"
|
||||
"blitz": "2.0.0-beta.14"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13"
|
||||
"blitz": "2.0.0-beta.14"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0",
|
||||
"uuid": "^8.3.1"
|
||||
},
|
||||
|
||||
@@ -30,17 +30,11 @@ export default RecipeBuilder()
|
||||
explanation: `We will add logic to initialize the LogRocket session and upon login, identify the user within LogRocket`,
|
||||
singleFileSearch: paths.app(),
|
||||
transform(program) {
|
||||
// Ensure useSession is in the blitz imports.
|
||||
program.find(j.ImportDeclaration, {source: {value: "blitz"}}).forEach((blitzImportPath) => {
|
||||
let specifiers = blitzImportPath.value.specifiers || []
|
||||
if (
|
||||
!specifiers
|
||||
.filter((spec) => j.ImportSpecifier.check(spec))
|
||||
.some((node) => (node as j.ImportSpecifier)?.imported?.name === "useSession")
|
||||
) {
|
||||
specifiers.splice(0, 0, j.importSpecifier(j.identifier("useSession")))
|
||||
}
|
||||
})
|
||||
const useSessionImport = j.importDeclaration(
|
||||
[j.importSpecifier(j.identifier("useSession"))],
|
||||
j.literal("@blitzjs/auth"),
|
||||
)
|
||||
addImport(program, useSessionImport)
|
||||
|
||||
const logrocketImport = j.importDeclaration(
|
||||
[j.importDefaultSpecifier(j.identifier("* as LogRocket"))],
|
||||
@@ -52,21 +46,23 @@ export default RecipeBuilder()
|
||||
let isReactImported = false
|
||||
|
||||
// Ensure useEffect is in the react import.
|
||||
program.find(j.ImportDeclaration, {source: "react"}).forEach((path) => {
|
||||
// check if React is already imported
|
||||
// if yes then we can skip importing it
|
||||
// since we need it for useEffect
|
||||
isReactImported = true
|
||||
program
|
||||
.find(j.ImportDeclaration, (node) => node.source.value === "react")
|
||||
.forEach((path) => {
|
||||
// check if React is already imported
|
||||
// if yes then we can skip importing it
|
||||
// since we need it for useEffect
|
||||
isReactImported = true
|
||||
|
||||
// currently, we only check if the default export is there
|
||||
// because we use the hook as React.useEffect
|
||||
// if not then add the default export
|
||||
let specifiers = path.value.specifiers || []
|
||||
// currently, we only check if the default export is there
|
||||
// because we use the hook as React.useEffect
|
||||
// if not then add the default export
|
||||
let specifiers = path.value.specifiers || []
|
||||
|
||||
if (!specifiers.some((node) => j.ImportDefaultSpecifier.check(node))) {
|
||||
specifiers.splice(0, 0, j.importDefaultSpecifier(j.identifier("React")))
|
||||
}
|
||||
})
|
||||
if (!specifiers.some((node) => j.ImportDefaultSpecifier.check(node))) {
|
||||
specifiers.splice(0, 0, j.importDefaultSpecifier(j.identifier("React")))
|
||||
}
|
||||
})
|
||||
|
||||
// import React if it wasn't already imported
|
||||
if (!isReactImported) {
|
||||
@@ -79,33 +75,33 @@ export default RecipeBuilder()
|
||||
|
||||
const isSessionDeclared = program.findVariableDeclarators("session")
|
||||
|
||||
program.find(j.FunctionDeclaration, {id: {name: "App"}}).forEach((path) => {
|
||||
// Declare router and/or session if not declared.
|
||||
if (!isSessionDeclared.length) {
|
||||
path
|
||||
.get("body")
|
||||
.get("body")
|
||||
.value.unshift(
|
||||
j.variableDeclaration("const", [
|
||||
j.variableDeclarator(
|
||||
j.identifier("session"),
|
||||
j.callExpression(j.identifier("useSession"), [
|
||||
j.objectExpression([
|
||||
j.objectProperty(j.identifier("suspense"), j.booleanLiteral(false)),
|
||||
program
|
||||
.find(j.FunctionDeclaration, (node) => node.id.name === "MyApp")
|
||||
.forEach((path) => {
|
||||
// Declare router and/or session if not declared.
|
||||
if (!isSessionDeclared.length) {
|
||||
path
|
||||
.get("body")
|
||||
.get("body")
|
||||
.value.unshift(
|
||||
j.variableDeclaration("const", [
|
||||
j.variableDeclarator(
|
||||
j.identifier("session"),
|
||||
j.callExpression(j.identifier("useSession"), [
|
||||
j.objectExpression([
|
||||
j.objectProperty(j.identifier("suspense"), j.booleanLiteral(false)),
|
||||
]),
|
||||
]),
|
||||
]),
|
||||
),
|
||||
]),
|
||||
)
|
||||
}
|
||||
})
|
||||
),
|
||||
]),
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
const returnStm = program.find(j.ReturnStatement).filter((path) => {
|
||||
return (
|
||||
path.parent?.parent?.parent?.value?.declaration?.id?.name === "App" &&
|
||||
path.parent?.parent?.parent?.value?.type === j.ExportDefaultDeclaration.toString()
|
||||
)
|
||||
})
|
||||
const returnStm = program.find(
|
||||
j.ReturnStatement,
|
||||
(node) => node.argument.openingElement.name.name === "ErrorBoundary",
|
||||
)
|
||||
|
||||
if (returnStm) {
|
||||
returnStm.insertBefore(
|
||||
|
||||
@@ -23,6 +23,10 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13"
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jscodeshift": "0.11.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {addImport, paths, RecipeBuilder, withComments, withTypeAnnotation} from "blitz/installer"
|
||||
import {addImport, paths, RecipeBuilder, withTypeAnnotation} from "blitz/installer"
|
||||
import j from "jscodeshift"
|
||||
import {join} from "path"
|
||||
|
||||
@@ -57,26 +57,30 @@ export default RecipeBuilder()
|
||||
),
|
||||
)
|
||||
|
||||
// import theme from 'app/core/styles/theme'
|
||||
// import theme from 'app/styles/theme'
|
||||
addImport(
|
||||
program,
|
||||
j.importDeclaration(
|
||||
[j.importDefaultSpecifier(j.identifier("theme"))],
|
||||
j.literal("app/core/styles/theme"),
|
||||
j.literal("app/styles/theme"),
|
||||
),
|
||||
)
|
||||
|
||||
// import createEmotionCache from 'app/core/utils/createEmotionCache'
|
||||
// import createEmotionCache from 'app/utils/createEmotionCache'
|
||||
addImport(
|
||||
program,
|
||||
j.importDeclaration(
|
||||
[j.importDefaultSpecifier(j.identifier("createEmotionCache"))],
|
||||
j.literal("app/core/utils/createEmotionCache"),
|
||||
j.literal("app/utils/createEmotionCache"),
|
||||
),
|
||||
)
|
||||
|
||||
program.find(j.ExportDefaultDeclaration).forEach((path) => {
|
||||
path.insertBefore(
|
||||
program.find(j.ImportDeclaration).forEach((i, idx, path) => {
|
||||
if (idx !== path.length - 1) {
|
||||
return
|
||||
}
|
||||
|
||||
path[path.length - 1]?.insertAfter(
|
||||
j.interfaceDeclaration(
|
||||
j.identifier("MyAppProps"),
|
||||
j.objectTypeAnnotation([
|
||||
@@ -90,26 +94,19 @@ export default RecipeBuilder()
|
||||
),
|
||||
)
|
||||
|
||||
path.insertBefore(
|
||||
withComments(
|
||||
j.variableDeclaration("const", [
|
||||
j.variableDeclarator(
|
||||
j.identifier("clientSideEmotionCache"),
|
||||
j.callExpression(j.identifier("createEmotionCache"), []),
|
||||
),
|
||||
]),
|
||||
[
|
||||
j.commentLine(
|
||||
" Client-side cache, shared for the whole session of the user in the browser.",
|
||||
),
|
||||
],
|
||||
),
|
||||
path[path.length - 1]?.insertAfter(
|
||||
j.variableDeclaration("const", [
|
||||
j.variableDeclarator(
|
||||
j.identifier("clientSideEmotionCache"),
|
||||
j.callExpression(j.identifier("createEmotionCache"), []),
|
||||
),
|
||||
]),
|
||||
)
|
||||
})
|
||||
|
||||
program
|
||||
.find(j.FunctionDeclaration)
|
||||
.filter((path) => path.value?.id?.name === "App")
|
||||
.filter((path) => path.value?.id?.name === "MyApp")
|
||||
.forEach((path) => {
|
||||
let objProps = [
|
||||
j.property("init", j.identifier("Component"), j.identifier("Component")),
|
||||
@@ -136,44 +133,41 @@ export default RecipeBuilder()
|
||||
})
|
||||
|
||||
program
|
||||
.find(j.JSXElement)
|
||||
.filter(
|
||||
(path) =>
|
||||
path.parent?.parent?.parent?.value?.id?.name === "App" &&
|
||||
path.parent?.value.type === j.ReturnStatement.toString(),
|
||||
)
|
||||
.find(j.FunctionDeclaration, (node) => node.id.name === "MyApp")
|
||||
.forEach((path) => {
|
||||
const {node} = path
|
||||
path.replace(
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("CacheProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("value"),
|
||||
j.jsxExpressionContainer(j.identifier("emotionCache")),
|
||||
),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("CacheProvider")),
|
||||
[
|
||||
j.literal("\n"),
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("ThemeProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("theme"),
|
||||
j.jsxExpressionContainer(j.identifier("theme")),
|
||||
),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("ThemeProvider")),
|
||||
[
|
||||
j.literal("\n"),
|
||||
j.jsxElement(j.jsxOpeningElement(j.jsxIdentifier("CssBaseline"), [], true)),
|
||||
j.literal("\n"),
|
||||
node,
|
||||
j.literal("\n"),
|
||||
],
|
||||
),
|
||||
j.literal("\n"),
|
||||
],
|
||||
),
|
||||
const statement = path.value.body.body.filter(
|
||||
(b) => b.type === "ReturnStatement",
|
||||
)[0] as j.ReturnStatement
|
||||
const argument = statement?.argument as j.JSXElement
|
||||
|
||||
statement.argument = j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("CacheProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("value"),
|
||||
j.jsxExpressionContainer(j.identifier("emotionCache")),
|
||||
),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("CacheProvider")),
|
||||
[
|
||||
j.literal("\n"),
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("ThemeProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("theme"),
|
||||
j.jsxExpressionContainer(j.identifier("theme")),
|
||||
),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("ThemeProvider")),
|
||||
[
|
||||
j.literal("\n"),
|
||||
j.jsxElement(j.jsxOpeningElement(j.jsxIdentifier("CssBaseline"), [], true)),
|
||||
j.literal("\n"),
|
||||
argument,
|
||||
j.literal("\n"),
|
||||
],
|
||||
),
|
||||
j.literal("\n"),
|
||||
],
|
||||
)
|
||||
})
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
import {
|
||||
import Document, {
|
||||
NextScript,
|
||||
Document,
|
||||
DocumentContext,
|
||||
DocumentHead,
|
||||
Head,
|
||||
DocumentInitialProps,
|
||||
Html,
|
||||
Main,
|
||||
} from "next/document"
|
||||
import {Children} from "react"
|
||||
import createEmotionServer from "@emotion/server/create-instance"
|
||||
import theme from "app/core/styles/theme"
|
||||
import createEmotionCache from "app/core/utils/createEmotionCache"
|
||||
import theme from "app/styles/theme"
|
||||
import createEmotionCache from "app/utils/createEmotionCache"
|
||||
|
||||
export default class MyDocument extends Document {
|
||||
static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {
|
||||
@@ -73,7 +72,7 @@ export default class MyDocument extends Document {
|
||||
render() {
|
||||
return (
|
||||
<Html lang="en">
|
||||
<DocumentHead>
|
||||
<Head>
|
||||
{/* PWA primary color */}
|
||||
<meta name="theme-color" content={theme.palette.primary.main} />
|
||||
<link
|
||||
@@ -81,7 +80,7 @@ export default class MyDocument extends Document {
|
||||
href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"
|
||||
/>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />
|
||||
</DocumentHead>
|
||||
</Head>
|
||||
<body>
|
||||
<Main />
|
||||
<NextScript />
|
||||
|
||||
@@ -5,20 +5,17 @@ import j, {JSXIdentifier} from "jscodeshift"
|
||||
// Copied from https://github.com/blitz-js/legacy-framework/pull/805, let's add this to the blitz
|
||||
function wrapComponentWithChakraProvider(program: Program) {
|
||||
program
|
||||
.find(j.JSXElement)
|
||||
.filter(
|
||||
(path) =>
|
||||
path.parent?.parent?.parent?.value?.id?.name === "App" &&
|
||||
path.parent?.value.type === j.ReturnStatement.toString(),
|
||||
)
|
||||
.find(j.FunctionDeclaration, (node) => node.id.name === "MyApp")
|
||||
.forEach((path: NodePath) => {
|
||||
const {node} = path
|
||||
path.replace(
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("NextUIProvider")),
|
||||
j.jsxClosingElement(j.jsxIdentifier("NextUIProvider")),
|
||||
[j.jsxText("\n"), node, j.jsxText("\n")],
|
||||
),
|
||||
const statement = path.value.body.body.filter(
|
||||
(b) => b.type === "ReturnStatement",
|
||||
)[0] as j.ReturnStatement
|
||||
const argument = statement?.argument as j.JSXElement
|
||||
|
||||
statement.argument = j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("NextUIProvider")),
|
||||
j.jsxClosingElement(j.jsxIdentifier("NextUIProvider")),
|
||||
[j.jsxText("\n"), argument, j.jsxText("\n")],
|
||||
)
|
||||
})
|
||||
return program
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -23,6 +23,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13"
|
||||
"blitz": "2.0.0-beta.14"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// Run `blitz build` before starting
|
||||
const path = require("path")
|
||||
|
||||
const blitzPath = path.join(__dirname, "node_modules", "next", "dist", "bin", "next")
|
||||
const blitzPath = path.join(__dirname, "node_modules", "blitz", "bin", "blitz")
|
||||
|
||||
process.argv.length = 1
|
||||
process.argv.push(blitzPath, "start")
|
||||
|
||||
@@ -34,11 +34,19 @@ export default RecipeBuilder()
|
||||
},
|
||||
})
|
||||
.addNewFilesStep({
|
||||
stepId: "addExamples",
|
||||
stepName: "Add example files",
|
||||
stepId: "addExamplesMutations",
|
||||
stepName: "Add example Mutation files",
|
||||
explanation: "Create one example Queue and CronJob that illustrate Quirrel usage.",
|
||||
targetDirectory: "app",
|
||||
templatePath: path.join(__dirname, "templates", "app"),
|
||||
templateValues: {},
|
||||
})
|
||||
.addNewFilesStep({
|
||||
stepId: "addExamplesApi",
|
||||
stepName: "Add example API files",
|
||||
explanation: "Create one example Queue and CronJob that illustrate Quirrel usage.",
|
||||
targetDirectory: "pages",
|
||||
templatePath: path.join(__dirname, "templates", "pages"),
|
||||
templateValues: {},
|
||||
})
|
||||
.build()
|
||||
|
||||
@@ -22,6 +22,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13"
|
||||
"blitz": "2.0.0-beta.14"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import greetingsQueue from "app/api/greetingsQueue"
|
||||
import greetingsQueue from "pages/api/greetingsQueue"
|
||||
|
||||
export default async function enqueueGreeting() {
|
||||
await greetingsQueue.enqueue({
|
||||
|
||||
@@ -5,25 +5,19 @@ import {join} from "path"
|
||||
|
||||
function wrapComponentWithThemeProvider(program: Program) {
|
||||
program
|
||||
.find(j.JSXElement)
|
||||
.filter(
|
||||
(path) =>
|
||||
path.parent?.parent?.parent?.value?.id?.name === "App" &&
|
||||
path.parent?.value.type === j.ReturnStatement.toString(),
|
||||
)
|
||||
.find(j.FunctionDeclaration, (node) => node.id.name === "MyApp")
|
||||
.forEach((path: NodePath) => {
|
||||
const {node} = path
|
||||
path.replace(
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("ThemeProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("theme"),
|
||||
j.jsxExpressionContainer(j.identifier("theme")),
|
||||
),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("ThemeProvider")),
|
||||
[j.jsxText("\n"), node, j.jsxText("\n")],
|
||||
),
|
||||
const statement = path.value.body.body.filter(
|
||||
(b) => b.type === "ReturnStatement",
|
||||
)[0] as j.ReturnStatement
|
||||
const argument = statement?.argument as j.JSXElement
|
||||
|
||||
statement.argument = j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("ThemeProvider"), [
|
||||
j.jsxAttribute(j.jsxIdentifier("theme"), j.jsxExpressionContainer(j.identifier("theme"))),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("ThemeProvider")),
|
||||
[j.jsxText("\n"), argument, j.jsxText("\n")],
|
||||
)
|
||||
})
|
||||
|
||||
@@ -107,6 +101,14 @@ export default RecipeBuilder()
|
||||
return injectInitializeColorMode(program)
|
||||
},
|
||||
})
|
||||
.addNewFilesStep({
|
||||
stepId: "create babel file",
|
||||
stepName: "Create babel file",
|
||||
explanation: `Adding default babel file.`,
|
||||
targetDirectory: "./babel.config.js",
|
||||
templatePath: join(__dirname, "templates", "babel.config.js"),
|
||||
templateValues: {},
|
||||
})
|
||||
.addTransformFilesStep({
|
||||
stepId: "updateBabelConfig",
|
||||
stepName: "Add Babel preset",
|
||||
@@ -116,7 +118,7 @@ export default RecipeBuilder()
|
||||
|
||||
transform(program) {
|
||||
return addBabelPreset(program, [
|
||||
"blitz/babel",
|
||||
"next/babel",
|
||||
{
|
||||
"preset-react": {
|
||||
runtime: "automatic",
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
4
recipes/reflexjs/templates/babel.config.js
Normal file
4
recipes/reflexjs/templates/babel.config.js
Normal file
@@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
presets: [],
|
||||
plugins: [],
|
||||
}
|
||||
@@ -22,6 +22,6 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13"
|
||||
"blitz": "2.0.0-beta.14"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,11 +37,11 @@ export default RecipeBuilder()
|
||||
addImport(program, secureHeadersImport)
|
||||
}
|
||||
|
||||
program.findJSXElements("DocumentHead").forEach((path) => {
|
||||
program.findJSXElements("Head").forEach((path) => {
|
||||
path.replace(
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("DocumentHead")),
|
||||
j.jsxClosingElement(j.jsxIdentifier("DocumentHead")),
|
||||
j.jsxOpeningElement(j.jsxIdentifier("Head")),
|
||||
j.jsxClosingElement(j.jsxIdentifier("Head")),
|
||||
[
|
||||
...addHttpMetaTag(
|
||||
"Content-Security-Policy",
|
||||
@@ -137,7 +137,7 @@ const addHttpHeaders = (program: Program, headers: Array<{name: string; value: s
|
||||
)
|
||||
headersFunction.async = true
|
||||
const headersCollection = transformNextConfig(program).configObj.find(
|
||||
(value) =>
|
||||
(value: {type: string; key: {type: string; name: string}}) =>
|
||||
value.type === "ObjectProperty" &&
|
||||
value.key.type === "Identifier" &&
|
||||
value.key.name === "headers",
|
||||
@@ -152,7 +152,7 @@ const addHttpHeaders = (program: Program, headers: Array<{name: string; value: s
|
||||
}
|
||||
|
||||
const poweredByProp = transformNextConfig(program).configObj.find(
|
||||
(value) =>
|
||||
(value: {type: string; key: {type: string; name: string}}) =>
|
||||
value.type === "ObjectProperty" &&
|
||||
value.key.type === "Identifier" &&
|
||||
value.key.name === "poweredByHeader",
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0",
|
||||
"uuid": "^8.3.1"
|
||||
},
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -5,32 +5,29 @@ import {join} from "path"
|
||||
|
||||
function wrapComponentWithStyledComponentsThemeProvider(program: Program) {
|
||||
program
|
||||
.find(j.JSXElement)
|
||||
.filter(
|
||||
(path) =>
|
||||
path.parent?.parent?.parent?.value?.id?.name === "App" &&
|
||||
path.parent?.value.type === j.ReturnStatement.toString(),
|
||||
)
|
||||
.find(j.FunctionDeclaration, (node) => node.id.name === "MyApp")
|
||||
.forEach((path: NodePath) => {
|
||||
const {node} = path
|
||||
path.replace(
|
||||
j.jsxFragment(j.jsxOpeningFragment(), j.jsxClosingFragment(), [
|
||||
j.jsxText("\n"),
|
||||
j.jsxElement(j.jsxOpeningElement(j.jsxIdentifier("GlobalStyle"), [], true)),
|
||||
j.jsxText("\n"),
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("ThemeProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("theme"),
|
||||
j.jsxExpressionContainer(j.identifier("theme")),
|
||||
),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("ThemeProvider")),
|
||||
[j.jsxText("\n"), node, j.jsxText("\n")],
|
||||
),
|
||||
j.jsxText("\n"),
|
||||
]),
|
||||
)
|
||||
const statement = path.value.body.body.filter(
|
||||
(b) => b.type === "ReturnStatement",
|
||||
)[0] as j.ReturnStatement
|
||||
const argument = statement?.argument as j.JSXElement
|
||||
|
||||
statement.argument = j.jsxFragment(j.jsxOpeningFragment(), j.jsxClosingFragment(), [
|
||||
j.jsxText("\n"),
|
||||
j.jsxElement(j.jsxOpeningElement(j.jsxIdentifier("GlobalStyle"), [], true)),
|
||||
j.jsxText("\n"),
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("ThemeProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("theme"),
|
||||
j.jsxExpressionContainer(j.identifier("theme")),
|
||||
),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("ThemeProvider")),
|
||||
[j.jsxText("\n"), argument, j.jsxText("\n")],
|
||||
),
|
||||
j.jsxText("\n"),
|
||||
])
|
||||
})
|
||||
return program
|
||||
}
|
||||
@@ -72,16 +69,18 @@ export default RecipeBuilder()
|
||||
)
|
||||
|
||||
// Ensure DocumentContext is in the blitz imports.
|
||||
program.find(j.ImportDeclaration, {source: {value: "blitz"}}).forEach((blitzImportPath) => {
|
||||
let specifiers = blitzImportPath.value.specifiers || []
|
||||
if (
|
||||
!specifiers
|
||||
.filter((spec) => j.ImportSpecifier.check(spec))
|
||||
.some((node) => (node as j.ImportSpecifier)?.imported?.name === "DocumentContext")
|
||||
) {
|
||||
specifiers.splice(0, 0, j.importSpecifier(j.identifier("DocumentContext")))
|
||||
}
|
||||
})
|
||||
program
|
||||
.find(j.ImportDeclaration, {source: {value: "next/document"}})
|
||||
.forEach((blitzImportPath) => {
|
||||
let specifiers = blitzImportPath.value.specifiers || []
|
||||
if (
|
||||
!specifiers
|
||||
.filter((spec) => j.ImportSpecifier.check(spec))
|
||||
.some((node) => (node as j.ImportSpecifier)?.imported?.name === "DocumentContext")
|
||||
) {
|
||||
specifiers.splice(0, 0, j.importSpecifier(j.identifier("DocumentContext")))
|
||||
}
|
||||
})
|
||||
program.find(j.ClassBody).forEach((path) => {
|
||||
const {node} = path
|
||||
|
||||
@@ -234,6 +233,14 @@ export default RecipeBuilder()
|
||||
return wrapComponentWithStyledComponentsThemeProvider(program)
|
||||
},
|
||||
})
|
||||
.addNewFilesStep({
|
||||
stepId: "create babel file",
|
||||
stepName: "Create babel file",
|
||||
explanation: `Adding default babel file.`,
|
||||
targetDirectory: "./babel.config.js",
|
||||
templatePath: join(__dirname, "templates", "babel.config.js"),
|
||||
templateValues: {},
|
||||
})
|
||||
.addTransformFilesStep({
|
||||
stepId: "updateBabelConfig",
|
||||
stepName: "Add Babel plugin and preset",
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
4
recipes/styled-components/templates/babel.config.js
Normal file
4
recipes/styled-components/templates/babel.config.js
Normal file
@@ -0,0 +1,4 @@
|
||||
module.exports = {
|
||||
presets: [],
|
||||
plugins: [],
|
||||
}
|
||||
@@ -22,7 +22,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -15,6 +15,13 @@ const NEXT_MDX_PLUGIN_MODULE = "@next/mdx"
|
||||
const NEXT_MDX_PLUGIN_NAME = "withMDX"
|
||||
const NEXT_MDX_PLUGIN_OPTIONS = [
|
||||
j.property("init", j.identifier("extension"), j.literal(RegExp("mdx?$", ""))),
|
||||
j.property(
|
||||
"init",
|
||||
j.identifier("options"),
|
||||
j.objectExpression([
|
||||
j.property("init", j.identifier("providerImportSource"), j.literal("@mdx-js/react")),
|
||||
]),
|
||||
),
|
||||
]
|
||||
|
||||
function initializePlugin(program: Program, statement: j.Statement) {
|
||||
@@ -36,29 +43,32 @@ function initializePlugin(program: Program, statement: j.Statement) {
|
||||
// Copied from https://github.com/blitz-js/legacy-framework/pull/805, let's add this to the blitz
|
||||
function wrapComponentWithThemeProvider(program: Program) {
|
||||
program
|
||||
.find(j.JSXElement)
|
||||
.filter(
|
||||
(path) =>
|
||||
path.parent?.parent?.parent?.value?.id?.name === "App" &&
|
||||
path.parent?.value.type === j.ReturnStatement.toString(),
|
||||
)
|
||||
.find(j.FunctionDeclaration, (node) => node.id.name === "MyApp")
|
||||
.forEach((path: NodePath) => {
|
||||
const {node} = path
|
||||
path.replace(
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("ThemeProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("theme"),
|
||||
j.jsxExpressionContainer(j.identifier("theme")),
|
||||
),
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("components"),
|
||||
j.jsxExpressionContainer(j.identifier("components")),
|
||||
),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("ThemeProvider")),
|
||||
[j.jsxText("\n"), node, j.jsxText("\n")],
|
||||
),
|
||||
const statement = path.value.body.body.filter(
|
||||
(b) => b.type === "ReturnStatement",
|
||||
)[0] as j.ReturnStatement
|
||||
const argument = statement?.argument as j.JSXElement
|
||||
|
||||
statement.argument = j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("ThemeProvider"), [
|
||||
j.jsxAttribute(j.jsxIdentifier("theme"), j.jsxExpressionContainer(j.identifier("theme"))),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("ThemeProvider")),
|
||||
[
|
||||
j.jsxText("\n"),
|
||||
j.jsxElement(
|
||||
j.jsxOpeningElement(j.jsxIdentifier("MDXProvider"), [
|
||||
j.jsxAttribute(
|
||||
j.jsxIdentifier("components"),
|
||||
j.jsxExpressionContainer(j.identifier("components")),
|
||||
),
|
||||
]),
|
||||
j.jsxClosingElement(j.jsxIdentifier("MDXProvider")),
|
||||
[j.jsxText("\n"), argument, j.jsxText("\n")],
|
||||
),
|
||||
j.jsxText("\n"),
|
||||
],
|
||||
)
|
||||
})
|
||||
|
||||
@@ -98,6 +108,7 @@ export default RecipeBuilder()
|
||||
{name: "@theme-ui/prism", version: "0.x"},
|
||||
{name: NEXT_MDX_PLUGIN_MODULE, version: "11.x"},
|
||||
{name: "@mdx-js/loader", version: "1.x"},
|
||||
{name: "@mdx-js/react", version: "1.x"},
|
||||
],
|
||||
})
|
||||
.addTransformFilesStep({
|
||||
@@ -179,9 +190,15 @@ export default RecipeBuilder()
|
||||
j.literal("app/core/theme/components"),
|
||||
)
|
||||
|
||||
const mdxReact = j.importDeclaration(
|
||||
[j.importSpecifier(j.identifier("MDXProvider"))],
|
||||
j.literal("@mdx-js/react"),
|
||||
)
|
||||
|
||||
addImport(program, providerImport)
|
||||
addImport(program, baseThemeImport)
|
||||
addImport(program, mdxComponentsImport)
|
||||
addImport(program, mdxReact)
|
||||
return wrapComponentWithThemeProvider(program)
|
||||
},
|
||||
})
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -45,7 +45,7 @@ export default RecipeBuilder()
|
||||
})
|
||||
.addTransformFilesStep({
|
||||
stepId: "modifyBlitzConfig",
|
||||
stepName: "Add the '@vanilla-extract/next-plugin' plugin to the blitz config file",
|
||||
stepName: "Add the '@vanilla-extract/next-plugin' plugin to the next config file",
|
||||
explanation: `Now we have to update our blitz config to support vanilla-extract`,
|
||||
singleFileSearch: paths.nextConfig(),
|
||||
async transform(program) {
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
},
|
||||
"homepage": "https://github.com/blitz-js/blitz#readme",
|
||||
"dependencies": {
|
||||
"blitz": "workspace:2.0.0-beta.13",
|
||||
"blitz": "2.0.0-beta.14",
|
||||
"jscodeshift": "0.13.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
Reference in New Issue
Block a user