1
0
mirror of synced 2026-02-07 03:00:10 -05:00

Compare commits

...

19 Commits

Author SHA1 Message Date
beerose
99205f52d5 alpha.12 2022-04-29 20:10:31 +02:00
Aleksandra
d03a1165d7 Use alpha version for blitz dependency, fix package manager selection (#3327) 2022-04-29 20:08:10 +02:00
beerose
d87288a2e9 alpha.11 2022-04-29 16:00:15 +02:00
beerose
fdff45a592 Update isInBlitzMonorepo check in postinstall script 2022-04-29 15:58:48 +02:00
beerose
469f55a429 Fix pre-publish script to build packages after
changeset version
2022-04-29 15:47:01 +02:00
Dillon Raphael
e6c31704ed added postinstall script to blitz/next package json 2022-04-29 09:41:57 -04:00
Dillon Raphael
35a070ad7d alpha.10 2022-04-28 19:37:39 -04:00
Dillon Raphael
9674efc0bf alpha.9 2022-04-28 19:07:56 -04:00
Dillon Raphael
666a3ae3e6 fix cli versioning 2022-04-28 17:35:54 -04:00
Dillon Raphael
c9cf7adc33 alpha.7 changeset 2022-04-28 17:18:04 -04:00
Dillon Raphael
f4c2234c4d add index.cjs to blitz externals 2022-04-28 17:12:55 -04:00
Dillon Raphael
82916b21c2 remove config from changeset 2022-04-28 15:19:52 -04:00
Dillon Raphael
bf1b2c8244 add alpha.6 changeset 2022-04-28 15:07:05 -04:00
Dillon Raphael
043c3498d0 Add routes manifest (#3317)
* Export routes from @blitzjs/next

* change to setupBlitzClient & setupBlitzServer in integrationtests

* update README

* a+d fixing stuff
2022-04-28 10:33:58 -04:00
Aleksandra
a2ebdbe7d6 make blitz CMD run the associated .bin file (#3310) 2022-04-27 11:38:55 +02:00
Dillon Raphael
de4e8084ef Fix generated blitz rpc api route in app generator 2022-04-26 12:45:27 -04:00
Dillon Raphael
bb9eaed520 remove withBundleAnalyzer 2022-04-26 12:15:10 -04:00
Dillon Raphael
ffe85b5ab6 fix toolkit-app example 2022-04-26 12:08:45 -04:00
Dillon Raphael
6edeed7c5a Change export to db instead of prisma in login mutation for app template 2022-04-26 12:02:19 -04:00
63 changed files with 1047 additions and 365 deletions

View File

@@ -0,0 +1,6 @@
---
"blitz": patch
"@blitzjs/generator": patch
---
Use alpha version for blitz dependency, fix package manager selection

View File

@@ -0,0 +1,9 @@
---
"blitz": patch
"@blitzjs/next": patch
"@blitzjs/auth": patch
"@blitzjs/rpc": patch
"@blitzjs/generator": patch
---
fix route manifest codegen

View File

@@ -0,0 +1,5 @@
---
"blitz": patch
---
fix broken cli versioning

View File

@@ -16,10 +16,17 @@
"toolkit-app": "1.0.0"
},
"changesets": [
"dirty-monkeys-greet",
"great-months-train",
"lovely-colts-share",
"nine-onions-admire",
"ninety-pets-heal",
"poor-peas-lick",
"quiet-feet-travel",
"silent-colts-reply",
"swift-drinks-dress",
"ten-rivers-burn",
"thirty-countries-build",
"twenty-beans-pump"
]
}

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/generator": patch
---
fix source path for templates

View File

@@ -0,0 +1,5 @@
---
"blitz": patch
---
added index.cjs to blitz externals

View File

@@ -0,0 +1,5 @@
---
"@blitzjs/next": patch
---
Fix postinstall script not being found

View File

@@ -0,0 +1,5 @@
---
"blitz": patch
---
add @blitzjs/generator as external

1
.gitignore vendored
View File

@@ -62,6 +62,7 @@ examples/auth2
.idea
.ultra.cache.json
db.sqlite-journal
**/db/db.sqlite
test/integration/**/db.json
test/**/*/out
test/**/blitz-env.d.ts

View File

@@ -174,6 +174,7 @@ Your financial contributions help ensure Blitz continues to be developed and mai
<tr>
<td align="center"><a href="https://twitter.com/flybayer"><img src="https://avatars3.githubusercontent.com/u/8813276?v=4" width="100px;" alt=""/><br /><sub><b>Brandon Bayer</b></sub></a><br />Creator</td>
<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 />Lead Maintainer</td>
<td align="center"><a href="http://twitter.com/dillonraphael"><img src="https://avatars.githubusercontent.com/u/3496193?v=4" width="100px;" alt=""/><br /><sub><b>Dillon Raphael</b></sub></a><br />Senior Maintainer</td>
</tr>
</table>

View File

@@ -1 +1 @@
module.exports = require("@blitzjs/config/eslint")
module.exports = require("@blitzjs/next/eslint")

View File

@@ -1,5 +1,81 @@
# toolkit-app
## 1.0.1-alpha.7
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.12
- @blitzjs/auth@2.0.0-alpha.12
- @blitzjs/next@2.0.0-alpha.12
- @blitzjs/rpc@2.0.0-alpha.12
- @blitzjs/config@2.0.0-alpha.12
## 1.0.1-alpha.6
### Patch Changes
- Updated dependencies
- @blitzjs/next@2.0.0-alpha.11
- @blitzjs/auth@2.0.0-alpha.11
- @blitzjs/rpc@2.0.0-alpha.11
- @blitzjs/config@2.0.0-alpha.11
- blitz@2.0.0-alpha.11
## 1.0.1-alpha.5
### Patch Changes
- blitz@2.0.0-alpha.10
- @blitzjs/auth@2.0.0-alpha.10
- @blitzjs/next@2.0.0-alpha.10
- @blitzjs/rpc@2.0.0-alpha.10
- @blitzjs/config@2.0.0-alpha.10
## 1.0.1-alpha.4
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.9
- @blitzjs/auth@2.0.0-alpha.9
- @blitzjs/next@2.0.0-alpha.9
- @blitzjs/rpc@2.0.0-alpha.9
- @blitzjs/config@2.0.0-alpha.9
## 1.0.1-alpha.3
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.8
- @blitzjs/auth@2.0.0-alpha.8
- @blitzjs/next@2.0.0-alpha.8
- @blitzjs/rpc@2.0.0-alpha.8
- @blitzjs/config@2.0.0-alpha.8
## 1.0.1-alpha.2
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.7
- @blitzjs/auth@2.0.0-alpha.7
- @blitzjs/next@2.0.0-alpha.7
- @blitzjs/rpc@2.0.0-alpha.7
- @blitzjs/config@2.0.0-alpha.7
## 1.0.1-alpha.1
### Patch Changes
- Updated dependencies
- @blitzjs/next@2.0.0-alpha.6
- blitz@2.0.0-alpha.6
- @blitzjs/auth@2.0.0-alpha.6
- @blitzjs/rpc@2.0.0-alpha.6
- @blitzjs/config@2.0.0-alpha.6
## 1.0.1-alpha.0
### Patch Changes

View File

@@ -1,5 +1,5 @@
import { NotFoundError } from "blitz"
import { prisma as db } from "db"
import { db } from "db"
import { authenticateUser } from "./login"
import { ChangePassword } from "../validations"
import { resolver } from "@blitzjs/rpc"

View File

@@ -1,6 +1,6 @@
import { generateToken, hash256 } from "@blitzjs/auth"
import { resolver } from "@blitzjs/rpc"
import { prisma as db } from "db"
import { db } from "db"
import { forgotPasswordMailer } from "mailers/forgotPasswordMailer"
import { ForgotPassword } from "../validations"

View File

@@ -1,7 +1,7 @@
import { SecurePassword } from "@blitzjs/auth"
import { resolver } from "@blitzjs/rpc"
import { AuthenticationError } from "blitz"
import { prisma as db, User } from "db"
import { db } from "db"
import { Role } from "types"
import { Login } from "../validations"

View File

@@ -1,5 +1,5 @@
import { SecurePassword, hash256 } from "@blitzjs/auth"
import { prisma } from "db"
import { db } from "db"
import { ResetPassword } from "../validations"
import login from "./login"
@@ -12,7 +12,7 @@ export default async function resetPassword(input, ctx) {
ResetPassword.parse(input)
// 1. Try to find this token in the database
const hashedToken = hash256(input.token)
const possibleToken = await prisma.token.findFirst({
const possibleToken = await db.token.findFirst({
where: { hashedToken, type: "RESET_PASSWORD" },
include: { user: true },
})
@@ -24,7 +24,7 @@ export default async function resetPassword(input, ctx) {
const savedToken = possibleToken
// 3. Delete token so it can't be used again
await prisma.token.delete({ where: { id: savedToken.id } })
await db.token.delete({ where: { id: savedToken.id } })
// 4. If token has expired, error
if (savedToken.expiresAt < new Date()) {
@@ -33,13 +33,13 @@ export default async function resetPassword(input, ctx) {
// 5. Since token is valid, now we can update the user's password
const hashedPassword = await SecurePassword.hash(input.password.trim())
const user = await prisma.user.update({
const user = await db.user.update({
where: { id: savedToken.userId },
data: { hashedPassword },
})
// 6. Revoke all existing login sessions for this user
await prisma.session.deleteMany({ where: { userId: user.id } })
await db.session.deleteMany({ where: { userId: user.id } })
// 7. Now log the user in with the new credentials
await login({ email: user.email, password: input.password }, ctx)

View File

@@ -1,4 +1,4 @@
import { prisma } from "db"
import { db } from "db"
import { SecurePassword } from "@blitzjs/auth"
export default async function signup(input, ctx) {
@@ -6,7 +6,7 @@ export default async function signup(input, ctx) {
const hashedPassword = await SecurePassword.hash((input.password as string) || "test-password")
const email = (input.email as string) || "test" + Math.random() + "@test.com"
const user = await prisma.user.create({
const user = await db.user.create({
data: { email, hashedPassword, role: "user" },
select: { id: true, name: true, email: true, role: true },
})

View File

@@ -1,8 +1,8 @@
import { AuthClientPlugin } from "@blitzjs/auth"
import { setupClient } from "@blitzjs/next"
import { setupBlitzClient } from "@blitzjs/next"
import { BlitzRpcPlugin } from "@blitzjs/rpc"
const { withBlitz } = setupClient({
export const { withBlitz } = setupBlitzClient({
plugins: [
AuthClientPlugin({
cookiePrefix: "web-cookie-prefix",
@@ -16,5 +16,3 @@ const { withBlitz } = setupClient({
}),
],
})
export { withBlitz }

View File

@@ -1,9 +1,9 @@
import { setupBlitz } from "@blitzjs/next"
import { setupBlitzServer } from "@blitzjs/next"
import { AuthServerPlugin, PrismaStorage } from "@blitzjs/auth"
import { prisma as db } from "../db/index"
import { db } from "db"
import { simpleRolesIsAuthorized } from "@blitzjs/auth"
const { gSSP, gSP, api } = setupBlitz({
const { gSSP, gSP, api } = setupBlitzServer({
plugins: [
AuthServerPlugin({
cookiePrefix: "web-cookie-prefix",

View File

@@ -1,10 +1,10 @@
import { Ctx } from "blitz"
import { prisma } from "db"
import { db } from "db"
export default async function getCurrentUser(_ = null, { session }: Ctx) {
if (!session.userId) return null
const user = await prisma.user.findFirst({
const user = await db.user.findFirst({
where: { id: session.userId as number },
select: { id: true, name: true, email: true, role: true },
})

View File

@@ -4,5 +4,5 @@ import { PrismaClient } from "@prisma/client"
const EnhancedPrisma = enhancePrisma(PrismaClient)
export * from "@prisma/client"
const prisma = new EnhancedPrisma()
export { prisma }
const db = new EnhancedPrisma()
export { db }

View File

@@ -1,6 +1,6 @@
{
"name": "toolkit-app",
"version": "1.0.1-alpha.0",
"version": "1.0.1-alpha.7",
"scripts": {
"start:dev": "pnpm run prisma:start && next dev",
"buildapp": "prisma generate && next build",
@@ -29,7 +29,7 @@
"@blitzjs/rpc": "workspace:*",
"@hookform/resolvers": "2.8.8",
"@prisma/client": "3.9.0",
"blitz": "workspace:2.0.0-alpha.5",
"blitz": "workspace:2.0.0-alpha.12",
"next": "12.1.1",
"prisma": "3.9.0",
"react": "18.0.0",

View File

@@ -1,8 +1,8 @@
import {AuthClientPlugin} from "@blitzjs/auth"
import {setupClient} from "@blitzjs/next"
import {setupBlitzClient} from "@blitzjs/next"
import {BlitzRpcPlugin} from "@blitzjs/rpc"
const {withBlitz} = setupClient({
const {withBlitz} = setupBlitzClient({
plugins: [
AuthClientPlugin({
cookiePrefix: "webapp-cookie-prefix",

View File

@@ -1,9 +1,9 @@
import {setupBlitz} from "@blitzjs/next"
import {setupBlitzServer} from "@blitzjs/next"
import {AuthServerPlugin, PrismaStorage} from "@blitzjs/auth"
import {prisma as db} from "../prisma/index"
import {simpleRolesIsAuthorized} from "@blitzjs/auth"
const {gSSP, gSP, api} = setupBlitz({
const {gSSP, gSP, api} = setupBlitzServer({
plugins: [
AuthServerPlugin({
cookiePrefix: "webapp-cookie-prefix",

View File

@@ -1,7 +1,7 @@
import {AuthClientPlugin} from "@blitzjs/auth"
import {setupClient} from "@blitzjs/next"
import {setupBlitzClient} from "@blitzjs/next"
const {withBlitz} = setupClient({
const {withBlitz} = setupBlitzClient({
plugins: [
AuthClientPlugin({
cookiePrefix: "auth-tests-cookie-prefix",

View File

@@ -1,9 +1,9 @@
import {setupBlitz} from "@blitzjs/next"
import {setupBlitzServer} from "@blitzjs/next"
import {AuthServerPlugin, PrismaStorage} from "@blitzjs/auth"
import {simpleRolesIsAuthorized} from "@blitzjs/auth"
import {prisma as db} from "../prisma/index"
const {gSSP, gSP, api} = setupBlitz({
const {gSSP, gSP, api} = setupBlitzServer({
plugins: [
AuthServerPlugin({
cookiePrefix: "auth-tests-cookie-prefix",

View File

@@ -17,7 +17,7 @@
"test": "turbo run test",
"clean": "turbo run clean && rm -rf node_modules",
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
"pre-publish": "pnpm i && pnpm build && changeset add && changeset version && git add . && git commit -v",
"pre-publish": "pnpm i && changeset add && changeset version && pnpm build && git add . && git commit -v",
"publish-release": "changeset publish && git push --follow-tags"
},
"dependencies": {

View File

@@ -1,5 +1,53 @@
# @blitzjs/auth
## 2.0.0-alpha.12
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.12
## 2.0.0-alpha.11
### Patch Changes
- blitz@2.0.0-alpha.11
## 2.0.0-alpha.10
### Patch Changes
- blitz@2.0.0-alpha.10
## 2.0.0-alpha.9
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.9
## 2.0.0-alpha.8
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.8
## 2.0.0-alpha.7
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.7
## 2.0.0-alpha.6
### Patch Changes
- fix route manifest codegen
- Updated dependencies
- blitz@2.0.0-alpha.6
## 2.0.0-alpha.5
### Patch Changes

View File

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

View File

@@ -1,5 +1,50 @@
# @blitzjs/next
## 2.0.0-alpha.12
### Patch Changes
- @blitzjs/rpc@2.0.0-alpha.12
## 2.0.0-alpha.11
### Patch Changes
- Fix postinstall script not being found
- @blitzjs/rpc@2.0.0-alpha.11
## 2.0.0-alpha.10
### Patch Changes
- @blitzjs/rpc@2.0.0-alpha.10
## 2.0.0-alpha.9
### Patch Changes
- @blitzjs/rpc@2.0.0-alpha.9
## 2.0.0-alpha.8
### Patch Changes
- @blitzjs/rpc@2.0.0-alpha.8
## 2.0.0-alpha.7
### Patch Changes
- @blitzjs/rpc@2.0.0-alpha.7
## 2.0.0-alpha.6
### Patch Changes
- fix route manifest codegen
- Updated dependencies
- @blitzjs/rpc@2.0.0-alpha.6
## 2.0.0-alpha.5
### Patch Changes

View File

@@ -2,7 +2,7 @@ import {BuildConfig} from "unbuild"
const config: BuildConfig = {
entries: ["./src/index-browser", "./src/index-server"],
externals: ["index-browser.cjs", "index-browser.mjs", "blitz"],
externals: ["index-browser.cjs", "index-browser.mjs", "blitz", ".blitz"],
declaration: true,
rollup: {
emitCJS: true,

View File

@@ -1,6 +1,6 @@
{
"name": "@blitzjs/next",
"version": "2.0.0-alpha.5",
"version": "2.0.0-alpha.12",
"scripts": {
"build": "unbuild",
"dev": "pnpm predev && pnpm watch unbuild src --wait=0.2",
@@ -8,7 +8,8 @@
"lint": "eslint . --fix",
"test": "vitest run",
"test-watch": "vitest",
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
"postinstall": "node scripts/postinstall.js"
},
"main": "./dist/index-server.cjs",
"module": "./dist/index-server.mjs",
@@ -18,16 +19,17 @@
"license": "MIT",
"files": [
"dist/**",
"scripts/**",
"eslint.js"
],
"dependencies": {
"@blitzjs/rpc": "2.0.0-alpha.5",
"@blitzjs/rpc": "2.0.0-alpha.12",
"debug": "4.3.3",
"fs-extra": "10.0.1",
"react-query": "3.21.1"
},
"devDependencies": {
"@blitzjs/config": "2.0.0-alpha.5",
"@blitzjs/config": "workspace:2.0.0-alpha.12",
"@testing-library/dom": "8.13.0",
"@testing-library/jest-dom": "5.16.3",
"@testing-library/react": "13.0.0",
@@ -38,11 +40,14 @@
"@types/react": "17.0.43",
"@types/react-dom": "17.0.14",
"@types/testing-library__react-hooks": "4.0.0",
"blitz": "2.0.0-alpha.5",
"blitz": "2.0.0-alpha.12",
"cross-spawn": "7.0.3",
"find-up": "4.1.0",
"lodash.frompairs": "4.0.1",
"next": "12.1.1",
"react": "18.0.0",
"react-dom": "18.0.0",
"resolve-from": "5.0.0",
"ts-jest": "27.1.4",
"typescript": "^4.5.3",
"unbuild": "0.6.9",

View File

@@ -0,0 +1,3 @@
exports.Routes = {
ThisFileHasNotYetBeenGeneratedPleaseRunBlitzCodeGen: (query) => ({pathname: "⚡️", query}),
}

View File

@@ -0,0 +1,6 @@
import type {ParsedUrlQueryInput} from "querystring"
import type {UrlObject} from "url"
export const Routes: {
ThisFileHasNotYetBeenGeneratedPleaseRunBlitzCodeGen(query?: ParsedUrlQueryInput): UrlObject
}

View File

@@ -0,0 +1,3 @@
exports.Routes = {
ThisFileHasNotYetBeenGeneratedPleaseRunBlitzCodeGen: (query) => ({pathname: "⚡️", query}),
}

View File

@@ -0,0 +1,328 @@
const childProcess = require("cross-spawn")
const {promisify} = require("util")
const fs = require("fs")
const path = require("path")
const resolveFrom = require("resolve-from")
const findUp = require("find-up")
const copyFile = promisify(fs.copyFile)
const mkdir = promisify(fs.mkdir)
const stat = promisify(fs.stat)
const debug = require("debug")("blitz:postinstall")
const isInBlitzMonorepo = fs.existsSync(path.join(__dirname, "../../blitz-next"))
let isInstalledGlobally = isInBlitzMonorepo ? false : true // default
try {
const maybeGlobalBlitzPath = resolveFrom(__dirname, "blitz")
const localBlitzPath = resolveFrom.silent(process.cwd(), "blitz/dist/index.cjs")
isInstalledGlobally = maybeGlobalBlitzPath !== localBlitzPath
} catch (error) {
// noop
}
// todo: we should reuse `findNodeModulesRoot` from /nextjs/packages/next/build/routes.ts
async function findNodeModulesRoot(src) {
let root
if (isInBlitzMonorepo) {
root = path.join(src, "node_modules")
} else {
const blitzPkgLocation = path.dirname(
(await findUp("package.json", {
cwd: resolveFrom(src, "blitz"),
})) || "",
)
if (!blitzPkgLocation) {
throw new Error("Internal Blitz Error: unable to find 'blitz' package location")
}
root = path.join(blitzPkgLocation, "../")
}
return path.join(root, ".blitz")
}
/*
Adapted from https://github.com/prisma/prisma/blob/974cbeff4a7f616137ce540d0ec88a2a86365892/src/packages/client/scripts/postinstall.js
*/
function codegen() {
async function main() {
if (process.env.INIT_CWD) {
process.chdir(process.env.INIT_CWD) // necessary, because npm chooses __dirname as process.cwd()
// in the postinstall hook
}
await ensureEmptyDotBlitz()
const localPath = getLocalPackagePath()
// Only execute if !localpath
const installedGlobally = localPath ? undefined : await isInstalledGlobally()
debug({
localPath,
installedGlobally,
init_cwd: process.env.INIT_CWD,
})
try {
if (localPath) {
await run("node", [
localPath,
"codegen",
"--postinstall",
doubleQuote(getPostInstallTrigger()),
])
return
}
if (installedGlobally) {
await run("blitz", ["codegen", "--postinstall", doubleQuote(getPostInstallTrigger())])
return
}
} catch (e) {
// if exit code = 1 do not print
if (e && e !== 1) {
console.error(e)
}
debug(e)
}
if (!localPath && !installedGlobally) {
console.error(`Please install Blitz CLI. You can install it with "npm add -D blitz".`)
}
}
function getLocalPackagePath() {
try {
const packagePath = require.resolve("blitz/package.json")
if (packagePath) {
const blitzPkg = require.resolve("blitz/dist/index.cjs")
return path.join(blitzPkg)
}
} catch (e) {
//
}
return null
}
async function isInstalledGlobally() {
try {
await run("blitz", ["-v"], process.cwd(), ["ignore"])
return true
} catch (e) {
return false
}
}
if (!process.env.BLITZ_SKIP_POSTINSTALL_GENERATE) {
main()
.catch((e) => {
console.error(e)
process.exit(0)
})
.finally(() => {
debug(`postinstall trigger: ${getPostInstallTrigger()}`)
})
}
function run(cmd, params, cwd = process.cwd(), stdio = ["pipe", "inherit", "inherit"]) {
const child = childProcess.spawn(cmd, params, {
stdio,
cwd,
})
return new Promise((resolve, reject) => {
child.on("close", () => {
resolve()
})
child.on("exit", (code) => {
if (code === 0) {
resolve()
} else {
reject(code)
}
})
child.on("error", () => {
reject()
})
})
}
async function ensureEmptyDotBlitz() {
try {
const dotBlitzDir = isInBlitzMonorepo
? path.join(process.cwd(), "node_modules/.blitz")
: await findNodeModulesRoot(__dirname)
await makeDir(dotBlitzDir)
const defaultIndexJsPath = path.join(dotBlitzDir, "index.js")
const defaultIndexBrowserJSPath = path.join(dotBlitzDir, "index-browser.js")
const defaultIndexDTSPath = path.join(dotBlitzDir, "index.d.ts")
if (!fs.existsSync(defaultIndexJsPath)) {
await copyFile(path.join(__dirname, "default-index.js"), defaultIndexJsPath)
}
if (!fs.existsSync(defaultIndexBrowserJSPath)) {
await copyFile(path.join(__dirname, "default-index-browser.js"), defaultIndexBrowserJSPath)
}
if (!fs.existsSync(defaultIndexDTSPath)) {
await copyFile(path.join(__dirname, "default-index.d.ts"), defaultIndexDTSPath)
}
} catch (e) {
console.error(e)
}
}
async function makeDir(input) {
const make = async (pth) => {
try {
await mkdir(pth)
return pth
} catch (error) {
if (error.code === "EPERM") {
throw error
}
if (error.code === "ENOENT") {
if (path.dirname(pth) === pth) {
throw new Error(`operation not permitted, mkdir '${pth}'`)
}
if (error.message.includes("null bytes")) {
throw error
}
await make(path.dirname(pth))
return make(pth)
}
try {
const stats = await stat(pth)
if (!stats.isDirectory()) {
throw new Error("The path is not a directory")
}
} catch (_) {
throw error
}
return pth
}
}
return await make(path.resolve(input))
}
/**
* Get the command that triggered this postinstall script being run. If there is
* an error while attempting to get this value then the string constant
* 'ERROR_WHILE_FINDING_POSTINSTALL_TRIGGER' is returned.
* This information is just necessary for telemetry.
* This get's passed in to Generate, which then automatically get's propagated to telemetry.
*/
function getPostInstallTrigger() {
/*
npm_config_argv` is not officially documented so here are our (Prisma's) research notes
`npm_config_argv` is available to the postinstall script when the containing package has been installed by npm into some project.
An example of its value:
```
npm_config_argv: '{"remain":["../test"],"cooked":["add","../test"],"original":["add","../test"]}',
```
We are interesting in the data contained in the "original" field.
Trivia/Note: `npm_config_argv` is not available when running e.g. `npm install` on the containing package itself (e.g. when working on it)
Yarn mimics this data and environment variable. Here is an example following `yarn add` for the same package:
```
npm_config_argv: '{"remain":[],"cooked":["add"],"original":["add","../test"]}'
```
Other package managers like `pnpm` have not been tested.
*/
const maybe_npm_config_argv_string = process.env.npm_config_argv
if (maybe_npm_config_argv_string === undefined) {
return UNABLE_TO_FIND_POSTINSTALL_TRIGGER__ENVAR_MISSING
}
let npm_config_argv
try {
npm_config_argv = JSON.parse(maybe_npm_config_argv_string)
} catch (e) {
return `${UNABLE_TO_FIND_POSTINSTALL_TRIGGER_JSON_PARSE_ERROR}: ${maybe_npm_config_argv_string}`
}
if (typeof npm_config_argv !== "object" || npm_config_argv === null) {
return `${UNABLE_TO_FIND_POSTINSTALL_TRIGGER_JSON_SCHEMA_ERROR}: ${maybe_npm_config_argv_string}`
}
const npm_config_arv_original_arr = npm_config_argv.original
if (!Array.isArray(npm_config_arv_original_arr)) {
return `${UNABLE_TO_FIND_POSTINSTALL_TRIGGER_JSON_SCHEMA_ERROR}: ${maybe_npm_config_argv_string}`
}
const npm_config_arv_original = npm_config_arv_original_arr
.filter((arg) => arg !== "")
.join(" ")
const command =
npm_config_arv_original === ""
? getPackageManagerName()
: [getPackageManagerName(), npm_config_arv_original].join(" ")
return command
}
/**
* Wrap double quotes around the given string.
*/
function doubleQuote(x) {
return `"${x}"`
}
/**
* Get the package manager name currently being used. If parsing fails, then the following pattern is returned:
* UNKNOWN_NPM_CONFIG_USER_AGENT(<string received>).
*/
function getPackageManagerName() {
const userAgent = process.env.npm_config_user_agent
if (!userAgent) return "MISSING_NPM_CONFIG_USER_AGENT"
const name = parsePackageManagerName(userAgent)
if (!name) return `UNKNOWN_NPM_CONFIG_USER_AGENT(${userAgent})`
return name
}
/**
* Parse package manager name from useragent. If parsing fails, `null` is returned.
*/
function parsePackageManagerName(userAgent) {
let packageManager = null
// example: 'yarn/1.22.4 npm/? node/v13.11.0 darwin x64'
// References:
// - https://pnpm.js.org/en/3.6/only-allow-pnpm
// - https://github.com/cameronhunter/npm-config-user-agent-parser
if (userAgent) {
const matchResult = userAgent.match(/^([^/]+)\/.+/)
if (matchResult) {
packageManager = matchResult[1].trim()
}
}
return packageManager
}
// prettier-ignore
const UNABLE_TO_FIND_POSTINSTALL_TRIGGER__ENVAR_MISSING = 'UNABLE_TO_FIND_POSTINSTALL_TRIGGER__ENVAR_MISSING'
// prettier-ignore
const UNABLE_TO_FIND_POSTINSTALL_TRIGGER_JSON_PARSE_ERROR = 'UNABLE_TO_FIND_POSTINSTALL_TRIGGER_JSON_PARSE_ERROR'
// prettier-ignore
const UNABLE_TO_FIND_POSTINSTALL_TRIGGER_JSON_SCHEMA_ERROR = 'UNABLE_TO_FIND_POSTINSTALL_TRIGGER_JSON_SCHEMA_ERROR'
}
if (!isInstalledGlobally) {
codegen()
}

View File

@@ -13,6 +13,7 @@ import {Hydrate, HydrateOptions} from "react-query/hydration"
export * from "./error-boundary"
export * from "./error-component"
export {Routes} from ".blitz"
const compose =
(...rest: BlitzProviderType[]) =>

View File

@@ -1,5 +1,60 @@
# @blitzjs/rpc
## 2.0.0-alpha.12
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.12
- @blitzjs/auth@2.0.0-alpha.12
## 2.0.0-alpha.11
### Patch Changes
- @blitzjs/auth@2.0.0-alpha.11
- blitz@2.0.0-alpha.11
## 2.0.0-alpha.10
### Patch Changes
- blitz@2.0.0-alpha.10
- @blitzjs/auth@2.0.0-alpha.10
## 2.0.0-alpha.9
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.9
- @blitzjs/auth@2.0.0-alpha.9
## 2.0.0-alpha.8
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.8
- @blitzjs/auth@2.0.0-alpha.8
## 2.0.0-alpha.7
### Patch Changes
- Updated dependencies
- blitz@2.0.0-alpha.7
- @blitzjs/auth@2.0.0-alpha.7
## 2.0.0-alpha.6
### Patch Changes
- fix route manifest codegen
- Updated dependencies
- blitz@2.0.0-alpha.6
- @blitzjs/auth@2.0.0-alpha.6
## 2.0.0-alpha.5
### Patch Changes

View File

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

View File

@@ -1,5 +1,55 @@
# blitz
## 2.0.0-alpha.12
### Patch Changes
- Use alpha version for blitz dependency, fix package manager selection
- Updated dependencies
- @blitzjs/generator@2.0.0-alpha.12
## 2.0.0-alpha.11
### Patch Changes
- @blitzjs/generator@2.0.0-alpha.11
## 2.0.0-alpha.10
### Patch Changes
- Updated dependencies
- @blitzjs/generator@2.0.0-alpha.10
## 2.0.0-alpha.9
### Patch Changes
- add @blitzjs/generator as external
- @blitzjs/generator@2.0.0-alpha.9
## 2.0.0-alpha.8
### Patch Changes
- fix broken cli versioning
- @blitzjs/generator@2.0.0-alpha.8
## 2.0.0-alpha.7
### Patch Changes
- added index.cjs to blitz externals
- @blitzjs/generator@2.0.0-alpha.7
## 2.0.0-alpha.6
### Patch Changes
- fix route manifest codegen
- Updated dependencies
- @blitzjs/generator@2.0.0-alpha.6
## 2.0.0-alpha.5
### Patch Changes

View File

@@ -2,7 +2,7 @@ import {BuildConfig} from "unbuild"
const config: BuildConfig = {
entries: ["./src/index-browser", "./src/index-server", "./src/cli/index"],
externals: ["index-browser.cjs", "index-browser.mjs", "zod"],
externals: ["index-browser.cjs", "index-browser.mjs", "index.cjs", "zod"],
declaration: true,
rollup: {
emitCJS: true,

View File

@@ -1,6 +1,6 @@
{
"name": "blitz",
"version": "2.0.0-alpha.5",
"version": "2.0.0-alpha.12",
"scripts": {
"build": "unbuild",
"dev": "watch unbuild src --wait=0.2",
@@ -23,7 +23,7 @@
"blitz": "bin/blitz"
},
"dependencies": {
"@blitzjs/generator": "2.0.0-alpha.5",
"@blitzjs/generator": "2.0.0-alpha.12",
"arg": "5.0.1",
"chalk": "^4.1.0",
"console-table-printer": "2.10.0",
@@ -33,6 +33,7 @@
"dotenv": "16.0.0",
"dotenv-expand": "8.0.3",
"esbuild": "0.14.34",
"find-up": "4.1.0",
"fs-extra": "10.0.1",
"hasbin": "1.2.3",
"npm-which": "3.0.1",
@@ -41,11 +42,12 @@
"pkg-dir": "5.0.0",
"prompts": "2.4.2",
"resolve-cwd": "3.0.0",
"resolve-from": "5.0.0",
"superjson": "1.8.0",
"tslog": "3.3.1"
},
"devDependencies": {
"@blitzjs/config": "2.0.0-alpha.5",
"@blitzjs/config": "workspace:2.0.0-alpha.12",
"@types/cookie": "0.4.1",
"@types/cross-spawn": "6.0.2",
"@types/debug": "4.1.7",

View File

@@ -199,6 +199,7 @@ const determinePkgManagerToInstallDeps = async () => {
{title: "skip"},
],
})
projectPkgManger = res.pkgManager
if (res.pkgManager === "skip") {
shouldInstallDeps = false

View File

@@ -1,5 +1,5 @@
import {Readable} from "stream"
import {getPrismaBin} from "../utils/config"
import {getCommandBin} from "../utils/config"
import {CliCommand} from "../index"
import arg from "arg"
@@ -8,7 +8,7 @@ let prismaBin: string
export const runPrisma = async (args: string[], silent = false) => {
if (!prismaBin) {
try {
prismaBin = await getPrismaBin(process.cwd())
prismaBin = await getCommandBin("prisma")
} catch (err) {
throw err
}

View File

@@ -2,6 +2,8 @@ import {NON_STANDARD_NODE_ENV} from "./utils/constants"
import arg from "arg"
import packageJson from "../../package.json"
import {loadEnvConfig} from "../env-utils"
import {getCommandBin} from "./utils/config"
import spawn from "cross-spawn"
const commonArgs = {
// Types
@@ -22,17 +24,9 @@ const commands: {[command: string]: () => Promise<CliCommand>} = {
dev: () => import("./commands/next/dev").then((i) => i.dev),
build: () => import("./commands/next/build").then((i) => i.build),
start: () => import("./commands/next/start").then((i) => i.start),
next: async () => (argv) => {
if (argv?.[0] && ["dev", "start", "build"].includes(argv[0])) {
const command = argv[0] as "dev" | "start" | "build"
return import("./commands/next").then((i) => i[command]())
}
console.error(`Invalid command provided: "blitz next ${argv?.[0]}".`)
},
new: () => import("./commands/new").then((i) => i.newApp),
generate: () => import("./commands/generate").then((i) => i.generate),
codegen: () => import("./commands/codegen").then((i) => i.codegen),
prisma: () => import("./commands/prisma").then((i) => i.prisma),
}
const args = arg(commonArgs, {
@@ -53,36 +47,17 @@ if (args["--version"]) {
const foundCommand = Boolean(commands[args._[0] as string])
if (!foundCommand && args["--help"]) {
console.log(`
Usage
$ blitz <command>
Available commands
${Object.keys(commands).join(", ")}
Options
--env, -e App environment name
--version, -v Version number
--help, -h Displays this message
For more information run a command with the --help flag
$ blitz build --help
`)
process.exit(0)
}
const command = foundCommand ? (args._[0] as string) : defaultCommand
const forwardedArgs = foundCommand ? args._.slice(1) : args._
if (args["--help"]) {
forwardedArgs.push("--help")
}
if (args["--env"]) {
process.env.APP_ENV = args["--env"]
}
if (args["--help"]) {
forwardedArgs.push("--help")
}
const defaultEnv = command === "dev" ? "development" : "production"
const standardEnv = ["production", "development", "test"]
@@ -95,15 +70,56 @@ if (process.env.NODE_ENV && !standardEnv.includes(process.env.NODE_ENV)) {
process.on("SIGTERM", () => process.exit(0))
process.on("SIGINT", () => process.exit(0))
commands[command]?.()
.then((exec: any) => exec(forwardedArgs))
.then(() => {
if (command === "build") {
// ensure process exits after build completes so open handles/connections
// don't cause process to hang
process.exit(0)
}
})
.catch((err) => {
console.log(err)
})
if (foundCommand) {
commands[command]?.()
.then((exec: any) => exec(forwardedArgs))
.then(() => {
if (command === "build") {
// ensure process exits after build completes so open handles/connections
// don't cause process to hang
process.exit(0)
}
})
.catch((err) => {
console.log(err)
})
} else {
if (args["--help"] && args._.length === 0) {
console.log(`
Usage
$ blitz <command>
Available commands
${Object.keys(commands).join(", ")}
Options
--env, -e App environment name
--version, -v Version number
--help, -h Displays this message
For more information run a command with the --help flag
$ blitz build --help
`)
process.exit(0)
} else {
// If the command is not found, we assume it is a command from the bin
void runCommandFromBin()
}
}
async function runCommandFromBin() {
const command = args._[0] as string
let commandBin: string | null = null
try {
commandBin = await getCommandBin(command)
} catch (e: any) {
console.error(`Error: ${e.message}`)
}
if (!commandBin) {
process.exit(1)
}
const result = spawn.sync(commandBin, process.argv.slice(3), {stdio: "inherit"})
process.exit(result.status || 0)
}

View File

@@ -83,24 +83,17 @@ export async function normalize(config: ServerConfig): Promise<NormalizedConfig>
watch: config.watch ?? env === "dev",
clean: config.clean,
// -
nextBin: await getNextBin(rootFolder, env === "dev"),
nextBin: await getCommandBin("next", rootFolder, env === "dev"),
}
}
async function getNextBin(rootFolder: string, _usePatched: boolean = false): Promise<string> {
const nextBinPkg = "next"
const nextBin = await resolveBinAsync(nextBinPkg)
return resolve(rootFolder, nextBin)
}
export async function getPrismaBin(
rootFolder: string,
export async function getCommandBin(
command: string,
rootFolder: string = process.cwd(),
_usePatched: boolean = false,
): Promise<string> {
const prismaBinPkg = "prisma"
const prismaBin = await resolveBinAsync(prismaBinPkg)
return resolve(rootFolder, prismaBin)
const bin = await resolveBinAsync(command)
return resolve(rootFolder, bin)
}
async function getIsTypeScript(rootFolder: string): Promise<boolean> {

View File

@@ -1,8 +1,10 @@
import {join, dirname} from "path"
import os from "os"
import {readdirSync, promises} from "fs"
import {promises} from "fs"
const readFile = promises.readFile
import {outputFile} from "fs-extra"
import findUp from "find-up"
import resolveFrom from "resolve-from"
export const CONFIG_FILE = ".blitz.config.compiled.js"
export const NEXT_CONFIG_FILE = "next.config.js"
@@ -495,7 +497,7 @@ export async function generateManifest() {
const {declaration, implementation} = setupManifest(routes)
const dotBlitz = join(process.cwd(), ".blitz")
const dotBlitz = join(await findNodeModulesRoot(process.cwd()), ".blitz")
await outputFile(join(dotBlitz, "index.js"), implementation, {
encoding: "utf-8",
@@ -507,9 +509,37 @@ export async function generateManifest() {
encoding: "utf-8",
})
}
// export const findBlitzConfigDirectory = () => {
// let blitzDir = readdirSync(join(process.cwd(), ".blitz"))
// if (blitzDir.length) {
// return join(process.cwd(), ".blitz/index.js")
// }
// }
export const isInternalBlitzMonorepoDevelopment = __dirname.match(
/[\\/]packages[\\/]blitz[\\/]dist[\\/]chunks$/,
)
async function findNodeModulesRoot(src: string) {
/*
* Because of our package structure, and because of how things like pnpm link modules,
* we must first find blitz package, and then find `next` and then
* the root of `next`
*
* This is because we import from `.blitz` inside `next/stdlib`.
* If that changes, then this logic here will need to change
*/
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")
}
root = join(blitzPkgLocation, "../")
}
return root
}

View File

@@ -1,5 +1,23 @@
# @blitzjs/config
## 2.0.0-alpha.12
## 2.0.0-alpha.11
## 2.0.0-alpha.10
## 2.0.0-alpha.9
## 2.0.0-alpha.8
## 2.0.0-alpha.7
## 2.0.0-alpha.6
### Patch Changes
- fix route manifest codegen
## 2.0.0-alpha.5
### Patch Changes

View File

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

View File

@@ -1,5 +1,31 @@
# @blitzjs/generator
## 2.0.0-alpha.12
### Patch Changes
- Use alpha version for blitz dependency, fix package manager selection
## 2.0.0-alpha.11
## 2.0.0-alpha.10
### Patch Changes
- fix source path for templates
## 2.0.0-alpha.9
## 2.0.0-alpha.8
## 2.0.0-alpha.7
## 2.0.0-alpha.6
### Patch Changes
- fix route manifest codegen
## 2.0.0-alpha.5
### Patch Changes

View File

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

View File

@@ -302,7 +302,7 @@ export abstract class Generator<
return path.join(
__dirname,
"..",
process.env.NODE_ENV === "test" ? "../templates" : "./templates",
process.env.NODE_ENV === "test" ? "../templates" : "./dist/templates",
this.sourceRoot.path,
...paths,
)

View File

@@ -78,7 +78,7 @@ export class AppGenerator extends Generator<AppGeneratorOptions> {
)
this.fs.move(
this.destinationPath(`pages/api/rpc/blitzrpcroute.${this.options.useTs ? "ts" : "js"}`),
this.destinationPath(`pages/api/rpc/[...blitz].${this.options.useTs ? "ts" : "js"}`),
this.destinationPath(`pages/api/rpc/[[...blitz]].${this.options.useTs ? "ts" : "js"}`),
)
if (!this.options.template.skipForms) {
@@ -111,7 +111,7 @@ export class AppGenerator extends Generator<AppGeneratorOptions> {
const [
{value: newDependencies, isFallback: dependenciesUsedFallback},
{value: newDevDependencies, isFallback: devDependenciesUsedFallback},
{value: blitzDependencyVersion, isFallback: blitzUsedFallback},
{value: blitzDependencyVersion},
] = await Promise.all([
fetchLatestVersionsFor(pkg.dependencies),
fetchLatestVersionsFor(pkg.devDependencies),
@@ -122,8 +122,7 @@ export class AppGenerator extends Generator<AppGeneratorOptions> {
pkg.devDependencies = newDevDependencies
pkg.dependencies.blitz = blitzDependencyVersion
const fallbackUsed =
dependenciesUsedFallback || devDependenciesUsedFallback || blitzUsedFallback
const fallbackUsed = dependenciesUsedFallback || devDependenciesUsedFallback
await writeJson(pkgJsonLocation, pkg, {spaces: 2})

View File

@@ -1,4 +1,4 @@
export interface Fallbackable<T> {
value: T
isFallback: boolean
isFallback?: boolean
}

View File

@@ -6,16 +6,16 @@ export const getBlitzDependencyVersion = async (
cliVersion: string,
): Promise<Fallbackable<string>> => {
try {
const {latest, canary} = await fetchDistTags("blitz")
const {alpha} = await fetchDistTags("blitz")
if (cliVersion.includes("canary")) {
return {value: canary, isFallback: false}
if (cliVersion.includes("alpha")) {
return {value: alpha}
}
return {value: latest, isFallback: false}
logFailedVersionFetch("blitz")
return {value: ""}
} catch (error) {
const fallback = "latest"
logFailedVersionFetch("blitz", fallback)
return {value: fallback, isFallback: true}
logFailedVersionFetch("blitz")
return {value: ""}
}
}

View File

@@ -2,12 +2,10 @@ import chalk from "chalk"
import {Fallbackable} from "./fallbackable"
import {fetchAllVersions, fetchLatestDistVersion} from "./npm-fetch"
export const logFailedVersionFetch = (dependency: string, fallback: string) => {
// log.clearLine()
export const logFailedVersionFetch = (dependency: string, fallback?: string) => {
console.warn(
`Failed to fetch latest version of '${chalk.bold(dependency)}', falling back to '${chalk.bold(
fallback,
)}'.`,
`Failed to fetch latest version of '${chalk.bold(dependency)}'`,
fallback ? `Falling back to '${chalk.bold(fallback)}'` : "",
)
}

View File

@@ -12,7 +12,7 @@ export const fetchAllVersions = async (dependency: string) => {
return Object.keys(res.versions)
}
type NpmDistTagsResponse = {latest: string; canary: string}
type NpmDistTagsResponse = {latest: string; canary: string; alpha: string}
export const fetchDistTags = async (dependency: string) => {
const res = await got(`https://registry.npmjs.org/-/package/${dependency}/dist-tags`, {

View File

@@ -1,7 +1,7 @@
import { SecurePassword } from "@blitzjs/auth"
import { resolver } from "@blitzjs/rpc"
import { AuthenticationError } from "blitz"
import { prisma as db, User } from "db"
import { db} from "db"
import { Role } from "types"
import { Login } from "../validations"

View File

@@ -7,7 +7,6 @@ export const { gSSP, gSP, api } = setupBlitzServer({
plugins: [
AuthServerPlugin({
cookiePrefix: "__safeNameSlug__-cookie-prefix",
// TODO fix type
storage: PrismaStorage(db as any),
isAuthorized: simpleRolesIsAuthorized,
}),

View File

@@ -1,10 +1,3 @@
const withBundleAnalyzer = require("@next/bundle-analyzer")({
enabled: process.env.ANALYZE === "true",
})
const {withBlitz} = require("@blitzjs/next")
module.exports = withBlitz(
withBundleAnalyzer({
reactStrictMode: true,
}),
)
module.exports = withBlitz()

View File

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

370
pnpm-lock.yaml generated
View File

@@ -50,7 +50,7 @@ importers:
"@types/node": 17.0.16
"@types/preview-email": 2.0.1
"@types/react": 17.0.43
blitz: workspace:2.0.0-alpha.5
blitz: workspace:2.0.0-alpha.11
eslint: 7.32.0
husky: 7.0.4
jest: 27.5.1
@@ -263,8 +263,8 @@ importers:
packages/blitz:
specifiers:
"@blitzjs/config": 2.0.0-alpha.5
"@blitzjs/generator": 2.0.0-alpha.5
"@blitzjs/config": workspace:2.0.0-alpha.11
"@blitzjs/generator": 2.0.0-alpha.11
"@types/cookie": 0.4.1
"@types/cross-spawn": 6.0.2
"@types/debug": 4.1.7
@@ -288,6 +288,7 @@ importers:
dotenv-expand: 8.0.3
esbuild: 0.14.34
express: 4.17.3
find-up: 4.1.0
fs-extra: 10.0.1
hasbin: 1.2.3
node-fetch: 3.2.3
@@ -298,6 +299,7 @@ importers:
prompts: 2.4.2
react: 18.0.0
resolve-cwd: 3.0.0
resolve-from: 5.0.0
superjson: 1.8.0
test-listen: 1.1.0
tslog: 3.3.1
@@ -316,6 +318,7 @@ importers:
dotenv: 16.0.0
dotenv-expand: 8.0.3
esbuild: 0.14.34
find-up: 4.1.0
fs-extra: 10.0.1
hasbin: 1.2.3
npm-which: 3.0.1
@@ -324,6 +327,7 @@ importers:
pkg-dir: 5.0.0
prompts: 2.4.2
resolve-cwd: 3.0.0
resolve-from: 5.0.0
superjson: 1.8.0
tslog: 3.3.1
devDependencies:
@@ -352,7 +356,7 @@ importers:
packages/blitz-auth:
specifiers:
"@blitzjs/config": 2.0.0-alpha.5
"@blitzjs/config": workspace:2.0.0-alpha.11
"@testing-library/react": 13.0.0
"@testing-library/react-hooks": 7.0.2
"@types/b64-lite": 1.3.0
@@ -364,7 +368,7 @@ importers:
"@types/secure-password": 3.1.1
b64-lite: 1.4.0
bad-behavior: 1.0.1
blitz: 2.0.0-alpha.5
blitz: 2.0.0-alpha.11
cookie: 0.4.1
debug: 4.3.3
http: 0.0.1-security
@@ -409,8 +413,8 @@ importers:
packages/blitz-next:
specifiers:
"@blitzjs/config": 2.0.0-alpha.5
"@blitzjs/rpc": 2.0.0-alpha.5
"@blitzjs/config": workspace:2.0.0-alpha.11
"@blitzjs/rpc": 2.0.0-alpha.11
"@testing-library/dom": 8.13.0
"@testing-library/jest-dom": 5.16.3
"@testing-library/react": 13.0.0
@@ -421,14 +425,17 @@ importers:
"@types/react": 17.0.43
"@types/react-dom": 17.0.14
"@types/testing-library__react-hooks": 4.0.0
blitz: 2.0.0-alpha.5
blitz: 2.0.0-alpha.11
cross-spawn: 7.0.3
debug: 4.3.3
find-up: 4.1.0
fs-extra: 10.0.1
lodash.frompairs: 4.0.1
next: 12.1.1
react: 18.0.0
react-dom: 18.0.0
react-query: 3.21.1
resolve-from: 5.0.0
ts-jest: 27.1.4
typescript: ^4.5.3
unbuild: 0.6.9
@@ -451,10 +458,13 @@ importers:
"@types/react-dom": 17.0.14
"@types/testing-library__react-hooks": 4.0.0_react-dom@18.0.0+react@18.0.0
blitz: link:../blitz
cross-spawn: 7.0.3
find-up: 4.1.0
lodash.frompairs: 4.0.1
next: 12.1.1_react-dom@18.0.0+react@18.0.0
react: 18.0.0
react-dom: 18.0.0_react@18.0.0
resolve-from: 5.0.0
ts-jest: 27.1.4_typescript@4.6.3
typescript: 4.6.3
unbuild: 0.6.9
@@ -462,14 +472,14 @@ importers:
packages/blitz-rpc:
specifiers:
"@blitzjs/auth": 2.0.0-alpha.5
"@blitzjs/config": 2.0.0-alpha.5
"@blitzjs/auth": 2.0.0-alpha.11
"@blitzjs/config": workspace:2.0.0-alpha.11
"@types/debug": 4.1.7
"@types/react": 17.0.43
"@types/react-dom": 17.0.14
b64-lite: 1.4.0
bad-behavior: 1.0.1
blitz: 2.0.0-alpha.5
blitz: 2.0.0-alpha.11
chalk: ^4.1.0
debug: 4.3.3
next: 12.1.1
@@ -511,10 +521,10 @@ importers:
eslint-config-prettier: 8.3.0
typescript: ^4.5.3
dependencies:
"@typescript-eslint/eslint-plugin": 5.9.1_ceaf00bd57d7914f6a37d6473774bd86
"@typescript-eslint/parser": 5.9.1_typescript@4.6.3
eslint-config-next: 12.0.7_typescript@4.6.3
eslint-config-prettier: 8.3.0
"@typescript-eslint/eslint-plugin": 5.9.1_8d4b52c6a654d64d1d8b695e9b6b2fe5
"@typescript-eslint/parser": 5.9.1_eslint@7.32.0+typescript@4.6.3
eslint-config-next: 12.0.7_f066dc8242e0fb1833636efd615b2015
eslint-config-prettier: 8.3.0_eslint@7.32.0
devDependencies:
typescript: 4.6.3
@@ -524,7 +534,7 @@ importers:
"@babel/plugin-transform-typescript": 7.12.1
"@babel/preset-env": 7.12.10
"@babel/types": 7.12.10
"@blitzjs/config": 2.0.0-alpha.5
"@blitzjs/config": 2.0.0-alpha.11
"@juanm04/cpx": 2.0.1
"@mrleebo/prisma-ast": 0.2.6
"@types/babel__core": 7.1.19
@@ -615,7 +625,7 @@ importers:
packages/pkg-template:
specifiers:
"@blitzjs/config": 2.0.0-alpha.5
"@blitzjs/config": 2.0.0-alpha.11
"@types/react": 17.0.43
"@types/react-dom": 17.0.14
"@typescript-eslint/eslint-plugin": 5.9.1
@@ -625,8 +635,8 @@ importers:
unbuild: 0.6.9
watch: 1.0.2
dependencies:
"@typescript-eslint/eslint-plugin": 5.9.1_ceaf00bd57d7914f6a37d6473774bd86
"@typescript-eslint/parser": 5.9.1_typescript@4.6.3
"@typescript-eslint/eslint-plugin": 5.9.1_8d4b52c6a654d64d1d8b695e9b6b2fe5
"@typescript-eslint/parser": 5.9.1_eslint@7.32.0+typescript@4.6.3
devDependencies:
"@blitzjs/config": link:../config
"@types/react": 17.0.43
@@ -637,14 +647,15 @@ importers:
watch: 1.0.2
packages:
/@ampproject/remapping/2.1.2:
/@ampproject/remapping/2.2.0:
resolution:
{
integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==,
integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==,
}
engines: {node: ">=6.0.0"}
dependencies:
"@jridgewell/trace-mapping": 0.3.8
"@jridgewell/gen-mapping": 0.1.1
"@jridgewell/trace-mapping": 0.3.9
/@babel/code-frame/7.12.11:
resolution:
@@ -704,7 +715,7 @@ packages:
}
engines: {node: ">=6.9.0"}
dependencies:
"@ampproject/remapping": 2.1.2
"@ampproject/remapping": 2.2.0
"@babel/code-frame": 7.16.7
"@babel/generator": 7.17.9
"@babel/helper-compilation-targets": 7.17.7_@babel+core@7.17.9
@@ -766,7 +777,7 @@ packages:
"@babel/compat-data": 7.17.7
"@babel/core": 7.12.10
"@babel/helper-validator-option": 7.16.7
browserslist: 4.20.2
browserslist: 4.20.3
semver: 6.3.0
dev: false
@@ -782,7 +793,7 @@ packages:
"@babel/compat-data": 7.17.7
"@babel/core": 7.17.9
"@babel/helper-validator-option": 7.16.7
browserslist: 4.20.2
browserslist: 4.20.3
semver: 6.3.0
/@babel/helper-create-class-features-plugin/7.17.9_@babel+core@7.12.10:
@@ -2200,7 +2211,7 @@ packages:
"@babel/plugin-transform-unicode-regex": 7.16.7_@babel+core@7.12.10
"@babel/preset-modules": 0.1.5_@babel+core@7.12.10
"@babel/types": 7.12.10
core-js-compat: 3.22.1
core-js-compat: 3.22.3
semver: 5.7.1
transitivePeerDependencies:
- supports-color
@@ -2278,7 +2289,7 @@ packages:
}
engines: {node: ">=6.9.0"}
dependencies:
core-js-pure: 3.22.1
core-js-pure: 3.22.3
regenerator-runtime: 0.13.9
dev: false
@@ -2942,10 +2953,27 @@ packages:
"@types/yargs": 16.0.4
chalk: 4.1.2
/@jridgewell/resolve-uri/3.0.5:
/@jridgewell/gen-mapping/0.1.1:
resolution:
{
integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==,
integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==,
}
engines: {node: ">=6.0.0"}
dependencies:
"@jridgewell/set-array": 1.1.0
"@jridgewell/sourcemap-codec": 1.4.11
/@jridgewell/resolve-uri/3.0.6:
resolution:
{
integrity: sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==,
}
engines: {node: ">=6.0.0"}
/@jridgewell/set-array/1.1.0:
resolution:
{
integrity: sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==,
}
engines: {node: ">=6.0.0"}
@@ -2955,13 +2983,13 @@ packages:
integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==,
}
/@jridgewell/trace-mapping/0.3.8:
/@jridgewell/trace-mapping/0.3.9:
resolution:
{
integrity: sha512-zdpaWDz5IEyHlu1EO+B+qRHmJkSxMVV6SXngDry9n1ZqslLXFH9Dw6lRqDidm/sOJAWdRltJsmZ1SK28/uZKsw==,
integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==,
}
dependencies:
"@jridgewell/resolve-uri": 3.0.5
"@jridgewell/resolve-uri": 3.0.6
"@jridgewell/sourcemap-codec": 1.4.11
/@juanm04/cpx/2.0.1:
@@ -2995,7 +3023,7 @@ packages:
}
dependencies:
"@babel/runtime": 7.17.9
"@types/node": 12.20.48
"@types/node": 12.20.50
find-up: 4.1.0
fs-extra: 8.1.0
dev: false
@@ -3486,7 +3514,7 @@ packages:
"@types/aria-query": 4.2.2
aria-query: 5.0.0
chalk: 4.1.2
dom-accessibility-api: 0.5.13
dom-accessibility-api: 0.5.14
lz-string: 1.4.4
pretty-format: 27.5.1
dev: true
@@ -3504,7 +3532,7 @@ packages:
chalk: 3.0.0
css: 3.0.0
css.escape: 1.5.1
dom-accessibility-api: 0.5.13
dom-accessibility-api: 0.5.14
lodash: 4.17.21
redent: 3.0.0
dev: true
@@ -3631,7 +3659,7 @@ packages:
"@babel/types": 7.12.10
"@types/babel__generator": 7.6.4
"@types/babel__template": 7.4.1
"@types/babel__traverse": 7.17.0
"@types/babel__traverse": 7.17.1
/@types/babel__generator/7.6.4:
resolution:
@@ -3650,10 +3678,10 @@ packages:
"@babel/parser": 7.17.9
"@babel/types": 7.12.10
/@types/babel__traverse/7.17.0:
/@types/babel__traverse/7.17.1:
resolution:
{
integrity: sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA==,
integrity: sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==,
}
dependencies:
"@babel/types": 7.12.10
@@ -3997,10 +4025,10 @@ packages:
form-data: 3.0.1
dev: true
/@types/node/12.20.48:
/@types/node/12.20.50:
resolution:
{
integrity: sha512-4kxzqkrpwYtn6okJUcb2lfUu9ilnb3yhUOH6qX3nug8D2DupZ2drIkff2yJzYcNJVl3begnlcaBJ7tqiTTzjnQ==,
integrity: sha512-+9axpWx2b2JCVovr7Ilgt96uc6C1zBKOQMpGtRbWT9IoR/8ue32GGMfGA4woP8QyP2gBs6GQWEVM3tCybGCxDA==,
}
dev: false
@@ -4299,36 +4327,6 @@ packages:
typescript: 4.6.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/eslint-plugin/5.9.1_ceaf00bd57d7914f6a37d6473774bd86:
resolution:
{
integrity: sha512-Xv9tkFlyD4MQGpJgTo6wqDqGvHIRmRgah/2Sjz1PUnJTawjHWIwBivUE9x0QtU2WVii9baYgavo/bHjrZJkqTw==,
}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
"@typescript-eslint/parser": ^5.0.0
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
typescript: "*"
peerDependenciesMeta:
typescript:
optional: true
dependencies:
"@typescript-eslint/experimental-utils": 5.9.1_typescript@4.6.3
"@typescript-eslint/parser": 5.9.1_typescript@4.6.3
"@typescript-eslint/scope-manager": 5.9.1
"@typescript-eslint/type-utils": 5.9.1_typescript@4.6.3
debug: 4.3.4
functional-red-black-tree: 1.0.1
ignore: 5.2.0
regexpp: 3.2.0
semver: 7.3.7
tsutils: 3.21.0_typescript@4.6.3
typescript: 4.6.3
transitivePeerDependencies:
- supports-color
dev: false
/@typescript-eslint/experimental-utils/5.9.1_eslint@7.32.0+typescript@4.6.3:
resolution:
@@ -4349,27 +4347,6 @@ packages:
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/@typescript-eslint/experimental-utils/5.9.1_typescript@4.6.3:
resolution:
{
integrity: sha512-cb1Njyss0mLL9kLXgS/eEY53SZQ9sT519wpX3i+U457l2UXRDuo87hgKfgRazmu9/tQb0x2sr3Y0yrU+Zz0y+w==,
}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
"@types/json-schema": 7.0.11
"@typescript-eslint/scope-manager": 5.9.1
"@typescript-eslint/types": 5.9.1
"@typescript-eslint/typescript-estree": 5.9.1_typescript@4.6.3
eslint-scope: 5.1.1
eslint-utils: 3.0.0
transitivePeerDependencies:
- supports-color
- typescript
dev: false
/@typescript-eslint/parser/5.9.1_eslint@7.32.0+typescript@4.6.3:
resolution:
@@ -4392,29 +4369,6 @@ packages:
typescript: 4.6.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/parser/5.9.1_typescript@4.6.3:
resolution:
{
integrity: sha512-PLYO0AmwD6s6n0ZQB5kqPgfvh73p0+VqopQQLuNfi7Lm0EpfKyDalchpVwkE+81k5HeiRrTV/9w1aNHzjD7C4g==,
}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
typescript: "*"
peerDependenciesMeta:
typescript:
optional: true
dependencies:
"@typescript-eslint/scope-manager": 5.9.1
"@typescript-eslint/types": 5.9.1
"@typescript-eslint/typescript-estree": 5.9.1_typescript@4.6.3
debug: 4.3.4
typescript: 4.6.3
transitivePeerDependencies:
- supports-color
dev: false
/@typescript-eslint/scope-manager/5.9.1:
resolution:
@@ -4446,28 +4400,6 @@ packages:
typescript: 4.6.3
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/type-utils/5.9.1_typescript@4.6.3:
resolution:
{
integrity: sha512-tRSpdBnPRssjlUh35rE9ug5HrUvaB9ntREy7gPXXKwmIx61TNN7+l5YKgi1hMKxo5NvqZCfYhA5FvyuJG6X6vg==,
}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: "*"
typescript: "*"
peerDependenciesMeta:
typescript:
optional: true
dependencies:
"@typescript-eslint/experimental-utils": 5.9.1_typescript@4.6.3
debug: 4.3.4
tsutils: 3.21.0_typescript@4.6.3
typescript: 4.6.3
transitivePeerDependencies:
- supports-color
dev: false
/@typescript-eslint/types/5.9.1:
resolution:
@@ -4574,10 +4506,10 @@ packages:
engines: {node: ">=0.4.0"}
hasBin: true
/acorn/8.7.0:
/acorn/8.7.1:
resolution:
{
integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==,
integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==,
}
engines: {node: ">=0.4.0"}
hasBin: true
@@ -4894,7 +4826,7 @@ packages:
}
engines: {node: ">=4"}
dependencies:
tslib: 2.3.1
tslib: 2.4.0
/astral-regex/2.0.0:
resolution:
@@ -5044,7 +4976,7 @@ packages:
"@babel/template": 7.16.7
"@babel/types": 7.17.0
"@types/babel__core": 7.1.19
"@types/babel__traverse": 7.17.0
"@types/babel__traverse": 7.17.1
/babel-preset-current-node-syntax/1.0.1_@babel+core@7.17.9:
resolution:
@@ -5281,18 +5213,18 @@ packages:
integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==,
}
/browserslist/4.20.2:
/browserslist/4.20.3:
resolution:
{
integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==,
integrity: sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==,
}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
caniuse-lite: 1.0.30001332
electron-to-chromium: 1.4.114
caniuse-lite: 1.0.30001334
electron-to-chromium: 1.4.124
escalade: 3.1.1
node-releases: 2.0.3
node-releases: 2.0.4
picocolors: 1.0.0
/bs-logger/0.2.6:
@@ -5461,10 +5393,10 @@ packages:
}
engines: {node: ">=10"}
/caniuse-lite/1.0.30001332:
/caniuse-lite/1.0.30001334:
resolution:
{
integrity: sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==,
integrity: sha512-kbaCEBRRVSoeNs74sCuq92MJyGrMtjWVfhltoHUCW4t4pXFvGjUBrfo47weBRViHkiV3eBYyIsfl956NtHGazw==,
}
/chai/4.3.6:
@@ -5920,20 +5852,20 @@ packages:
engines: {node: ">=0.10.0"}
dev: false
/core-js-compat/3.22.1:
/core-js-compat/3.22.3:
resolution:
{
integrity: sha512-CWbNqTluLMvZg1cjsQUbGiCM91dobSHKfDIyCoxuqxthdjGuUlaMbCsSehP3CBiVvG0C7P6UIrC1v0hgFE75jw==,
integrity: sha512-wliMbvPI2idgFWpFe7UEyHMvu6HWgW8WA+HnDRtgzoSDYvXFMpoGX1H3tPDDXrcfUSyXafCLDd7hOeMQHEZxGw==,
}
dependencies:
browserslist: 4.20.2
browserslist: 4.20.3
semver: 7.0.0
dev: false
/core-js-pure/3.22.1:
/core-js-pure/3.22.3:
resolution:
{
integrity: sha512-TChjCtgcMDc8t12RiwAsThjqrS/VpBlEvDgL009ot4HESzBo3h2FSZNa6ZS1nWKZEPDoulnszxUll9n0/spflQ==,
integrity: sha512-oN88zz7nmKROMy8GOjs+LN+0LedIvbMdnB5XsTlhcOg1WGARt9l0LFg0zohdoFmCsEZ1h2ZbSQ6azj3M+vhzwQ==,
}
requiresBuild: true
dev: false
@@ -6094,16 +6026,16 @@ packages:
whatwg-mimetype: 2.3.0
whatwg-url: 8.7.0
/data-urls/3.0.1:
/data-urls/3.0.2:
resolution:
{
integrity: sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==,
integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==,
}
engines: {node: ">=12"}
dependencies:
abab: 2.0.6
whatwg-mimetype: 3.0.0
whatwg-url: 10.0.0
whatwg-url: 11.0.0
dev: false
/dayjs/1.11.1:
@@ -6466,10 +6398,10 @@ packages:
resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=}
dev: true
/dom-accessibility-api/0.5.13:
/dom-accessibility-api/0.5.14:
resolution:
{
integrity: sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw==,
integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==,
}
dev: true
@@ -6588,10 +6520,10 @@ packages:
jake: 10.8.5
dev: false
/electron-to-chromium/1.4.114:
/electron-to-chromium/1.4.124:
resolution:
{
integrity: sha512-gRwLpVYWHGbERPU6o8pKfR168V6enWEXzZc6zQNNXbgJ7UJna+9qzAIHY94+9KOv71D/CH+QebLA9pChD2q8zA==,
integrity: sha512-VhaE9VUYU6d2eIb+4xf83CATD+T+3bTzvxvlADkQE+c2hisiw3sZmvEDtsW704+Zky9WZGhBuQXijDVqSriQLA==,
}
/emittery/0.8.1:
@@ -6683,7 +6615,7 @@ packages:
object.assign: 4.1.2
string.prototype.trimend: 1.0.4
string.prototype.trimstart: 1.0.4
unbox-primitive: 1.0.1
unbox-primitive: 1.0.2
dev: false
/es-module-lexer/0.9.3:
@@ -7493,7 +7425,7 @@ packages:
optionalDependencies:
source-map: 0.6.1
/eslint-config-next/12.0.7_typescript@4.6.3:
/eslint-config-next/12.0.7_f066dc8242e0fb1833636efd615b2015:
resolution:
{
integrity: sha512-kWOaym5qjyzR190zFKkZMaHetmiRORmzJiKML7Kr9CL213S6SwkrHHCEL58TRdpx0NA+HzrsFR9zgcV2pvV2Yg==,
@@ -7508,19 +7440,21 @@ packages:
dependencies:
"@next/eslint-plugin-next": 12.0.7
"@rushstack/eslint-patch": 1.1.3
"@typescript-eslint/parser": 5.9.1_typescript@4.6.3
"@typescript-eslint/parser": 5.9.1_eslint@7.32.0+typescript@4.6.3
eslint: 7.32.0
eslint-import-resolver-node: 0.3.6
eslint-import-resolver-typescript: 2.7.1_eslint-plugin-import@2.26.0
eslint-plugin-import: 2.26.0
eslint-plugin-jsx-a11y: 6.5.1
eslint-plugin-react: 7.29.4
eslint-plugin-react-hooks: 4.4.0
eslint-import-resolver-typescript: 2.7.1_3bd94fa9be989baab6ef2e6b5dec3766
eslint-plugin-import: 2.26.0_eslint@7.32.0
eslint-plugin-jsx-a11y: 6.5.1_eslint@7.32.0
eslint-plugin-react: 7.29.4_eslint@7.32.0
eslint-plugin-react-hooks: 4.5.0_eslint@7.32.0
next: 12.1.1
typescript: 4.6.3
transitivePeerDependencies:
- supports-color
dev: false
/eslint-config-prettier/8.3.0:
/eslint-config-prettier/8.3.0_eslint@7.32.0:
resolution:
{
integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==,
@@ -7528,6 +7462,8 @@ packages:
hasBin: true
peerDependencies:
eslint: ">=7.0.0"
dependencies:
eslint: 7.32.0
dev: false
/eslint-import-resolver-node/0.3.6:
@@ -7540,7 +7476,7 @@ packages:
resolve: 1.22.0
dev: false
/eslint-import-resolver-typescript/2.7.1_eslint-plugin-import@2.26.0:
/eslint-import-resolver-typescript/2.7.1_3bd94fa9be989baab6ef2e6b5dec3766:
resolution:
{
integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==,
@@ -7551,7 +7487,8 @@ packages:
eslint-plugin-import: "*"
dependencies:
debug: 4.3.4
eslint-plugin-import: 2.26.0
eslint: 7.32.0
eslint-plugin-import: 2.26.0_eslint@7.32.0
glob: 7.2.0
is-glob: 4.0.3
resolve: 1.22.0
@@ -7571,7 +7508,7 @@ packages:
find-up: 2.1.0
dev: false
/eslint-plugin-import/2.26.0:
/eslint-plugin-import/2.26.0_eslint@7.32.0:
resolution:
{
integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==,
@@ -7584,6 +7521,7 @@ packages:
array.prototype.flat: 1.3.0
debug: 2.6.9
doctrine: 2.1.0
eslint: 7.32.0
eslint-import-resolver-node: 0.3.6
eslint-module-utils: 2.7.3
has: 1.0.3
@@ -7595,7 +7533,7 @@ packages:
tsconfig-paths: 3.14.1
dev: false
/eslint-plugin-jsx-a11y/6.5.1:
/eslint-plugin-jsx-a11y/6.5.1_eslint@7.32.0:
resolution:
{
integrity: sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==,
@@ -7612,23 +7550,26 @@ packages:
axobject-query: 2.2.0
damerau-levenshtein: 1.0.8
emoji-regex: 9.2.2
eslint: 7.32.0
has: 1.0.3
jsx-ast-utils: 3.2.2
language-tags: 1.0.5
minimatch: 3.1.2
dev: false
/eslint-plugin-react-hooks/4.4.0:
/eslint-plugin-react-hooks/4.5.0_eslint@7.32.0:
resolution:
{
integrity: sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==,
integrity: sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==,
}
engines: {node: ">=10"}
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
dependencies:
eslint: 7.32.0
dev: false
/eslint-plugin-react/7.29.4:
/eslint-plugin-react/7.29.4_eslint@7.32.0:
resolution:
{
integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==,
@@ -7640,6 +7581,7 @@ packages:
array-includes: 3.1.4
array.prototype.flatmap: 1.3.0
doctrine: 2.1.0
eslint: 7.32.0
estraverse: 5.3.0
jsx-ast-utils: 3.2.2
minimatch: 3.1.2
@@ -7672,18 +7614,6 @@ packages:
dependencies:
eslint-visitor-keys: 1.3.0
/eslint-utils/3.0.0:
resolution:
{
integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==,
}
engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
peerDependencies:
eslint: ">=5"
dependencies:
eslint-visitor-keys: 2.1.0
dev: false
/eslint-utils/3.0.0_eslint@7.32.0:
resolution:
{
@@ -7695,7 +7625,6 @@ packages:
dependencies:
eslint: 7.32.0
eslint-visitor-keys: 2.1.0
dev: true
/eslint-visitor-keys/1.3.0:
resolution:
@@ -8266,10 +8195,10 @@ packages:
integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==,
}
/flow-parser/0.176.2:
/flow-parser/0.176.3:
resolution:
{
integrity: sha512-unqoh60i18C67h2rvK0SCFUBac/waUcx7CF1a5E4D0Cwj1NErTP42RF7yb7+dy25Tpyzt7uwVtXw13Wr17VzWA==,
integrity: sha512-KDzHEoEtc/kbW7NzujhfFkcTCdNi6VK91UpcdT3tc3yEAQdh4JXAEY/0TVJKipjRuVm8E2FxX/3B5Xpm3EFWXA==,
}
engines: {node: ">=0.4.0"}
dev: false
@@ -10050,7 +9979,7 @@ packages:
"@babel/types": 7.17.0
"@jest/transform": 27.5.1
"@jest/types": 27.5.1
"@types/babel__traverse": 7.17.0
"@types/babel__traverse": 7.17.1
"@types/prettier": 2.6.0
babel-preset-current-node-syntax: 1.0.1_@babel+core@7.17.9
chalk: 4.1.2
@@ -10222,7 +10151,7 @@ packages:
"@babel/register": 7.17.7_@babel+core@7.17.9
babel-core: 7.0.0-bridge.0_@babel+core@7.17.9
colors: 1.4.0
flow-parser: 0.176.2
flow-parser: 0.176.3
graceful-fs: 4.2.10
micromatch: 3.1.10
neo-async: 2.6.2
@@ -10247,7 +10176,7 @@ packages:
optional: true
dependencies:
abab: 2.0.6
acorn: 8.7.0
acorn: 8.7.1
acorn-globals: 6.0.0
cssom: 0.4.4
cssstyle: 2.3.0
@@ -10291,11 +10220,11 @@ packages:
optional: true
dependencies:
abab: 2.0.6
acorn: 8.7.0
acorn: 8.7.1
acorn-globals: 6.0.0
cssom: 0.5.0
cssstyle: 2.3.0
data-urls: 3.0.1
data-urls: 3.0.2
decimal.js: 10.3.1
domexception: 4.0.0
escodegen: 2.0.0
@@ -11468,7 +11397,7 @@ packages:
optional: true
dependencies:
"@next/env": 12.1.1
caniuse-lite: 1.0.30001332
caniuse-lite: 1.0.30001334
postcss: 8.4.5
styled-jsx: 5.0.1
use-subscription: 1.5.1
@@ -11512,7 +11441,7 @@ packages:
optional: true
dependencies:
"@next/env": 12.1.1
caniuse-lite: 1.0.30001332
caniuse-lite: 1.0.30001334
postcss: 8.4.5
react: 18.0.0
react-dom: 18.0.0_react@18.0.0
@@ -11580,10 +11509,10 @@ packages:
/node-int64/0.4.0:
resolution: {integrity: sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=}
/node-releases/2.0.3:
/node-releases/2.0.4:
resolution:
{
integrity: sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==,
integrity: sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==,
}
/nodemailer/6.7.0:
@@ -12940,7 +12869,7 @@ packages:
ast-types: 0.14.2
esprima: 4.0.1
source-map: 0.6.1
tslib: 2.3.1
tslib: 2.4.0
/redent/3.0.0:
resolution:
@@ -13319,7 +13248,7 @@ packages:
integrity: sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==,
}
dependencies:
tslib: 2.3.1
tslib: 2.4.0
/safe-buffer/5.1.2:
resolution:
@@ -14268,10 +14197,10 @@ packages:
readable-stream: 3.6.0
dev: false
/tinypool/0.1.2:
/tinypool/0.1.3:
resolution:
{
integrity: sha512-fvtYGXoui2RpeMILfkvGIgOVkzJEGediv8UJt7TxdAOY8pnvUkFg/fkvqTfXG9Acc9S17Cnn1S4osDc2164guA==,
integrity: sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ==,
}
engines: {node: ">=14.0.0"}
dev: false
@@ -14491,7 +14420,7 @@ packages:
"@tsconfig/node14": 1.0.1
"@tsconfig/node16": 1.0.2
"@types/node": 17.0.16
acorn: 8.7.0
acorn: 8.7.1
acorn-walk: 8.2.0
arg: 4.1.3
create-require: 1.1.1
@@ -14524,7 +14453,7 @@ packages:
"@tsconfig/node12": 1.0.9
"@tsconfig/node14": 1.0.1
"@tsconfig/node16": 1.0.2
acorn: 8.7.0
acorn: 8.7.1
acorn-walk: 8.2.0
arg: 4.1.3
create-require: 1.1.1
@@ -14553,10 +14482,10 @@ packages:
integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==,
}
/tslib/2.3.1:
/tslib/2.4.0:
resolution:
{
integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==,
integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==,
}
/tslog/3.3.1:
@@ -14846,13 +14775,13 @@ packages:
}
dev: true
/unbox-primitive/1.0.1:
/unbox-primitive/1.0.2:
resolution:
{
integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==,
integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==,
}
dependencies:
function-bind: 1.1.1
call-bind: 1.0.2
has-bigints: 1.0.2
has-symbols: 1.0.3
which-boxed-primitive: 1.0.2
@@ -15152,10 +15081,10 @@ packages:
replace-ext: 1.0.1
dev: false
/vite/2.9.5:
/vite/2.9.6:
resolution:
{
integrity: sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==,
integrity: sha512-3IffdrByHW95Yjv0a13TQOQfJs7L5dVlSPuTt432XLbRMriWbThqJN2k/IS6kXn5WY4xBLhK9XoaWay1B8VzUw==,
}
engines: {node: ">=12.2.0"}
hasBin: true
@@ -15206,9 +15135,9 @@ packages:
chai: 4.3.6
jsdom: 19.0.0
local-pkg: 0.4.1
tinypool: 0.1.2
tinypool: 0.1.3
tinyspy: 0.3.2
vite: 2.9.5
vite: 2.9.6
transitivePeerDependencies:
- less
- sass
@@ -15325,7 +15254,7 @@ packages:
engines: {node: ">= 10.13.0"}
hasBin: true
dependencies:
acorn: 8.7.0
acorn: 8.7.1
acorn-walk: 8.2.0
chalk: 4.1.2
commander: 6.2.1
@@ -15382,6 +15311,17 @@ packages:
webidl-conversions: 7.0.0
dev: false
/whatwg-url/11.0.0:
resolution:
{
integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==,
}
engines: {node: ">=12"}
dependencies:
tr46: 3.0.0
webidl-conversions: 7.0.0
dev: false
/whatwg-url/8.7.0:
resolution:
{