From c6fa712b10a1c4295caeeb2ceaf6bb5f0aa45286 Mon Sep 17 00:00:00 2001 From: Alex Johansson Date: Thu, 2 Sep 2021 17:20:36 +0200 Subject: [PATCH] add `yarn dx` for easier local development (#553) --- .env.example | 6 +- README.md | 15 +++ docker-compose.yml | 16 ++++ package.json | 11 ++- scripts/seed.ts | 115 +++++++++++++++++++++++ yarn.lock | 227 +++++++++++++++++++++++++++++++++------------ 6 files changed, 325 insertions(+), 65 deletions(-) create mode 100644 docker-compose.yml create mode 100644 scripts/seed.ts diff --git a/.env.example b/.env.example index d39a44d088..ed0977341b 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,6 @@ -DATABASE_URL='postgresql://:@:/' +# DATABASE_URL='postgresql://:@:/' +DATABASE_URL="postgresql://postgres:@localhost:5432/calendso?schema=public" + GOOGLE_API_CREDENTIALS='secret' BASE_URL='http://localhost:3000' @@ -37,4 +39,4 @@ CRON_API_KEY='0cc0e6c35519bba620c9360cfe3e68d0' # Application Key for symmetric encryption and decryption # must be 32 bytes for AES256 encryption algorithm -CALENDSO_ENCRYPTION_KEY= \ No newline at end of file +CALENDSO_ENCRYPTION_KEY= diff --git a/README.md b/README.md index 364dd6c382..7222ca9187 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,21 @@ You will also need Google API credentials. You can get this from the [Google API ### Development Setup +#### Quick start with `yarn dx` + +> - **Requires Docker to be installed** +> - Will start a local Postgres instance with a few test users - the credentials will be logged in the console + + +```bash +git clone git@github.com:calendso/calendso.git +cd calendso +yarn +yarn dx +``` + +#### Manual + 1. Clone the repo ```sh git clone https://github.com/calendso/calendso.git diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000..ec8a69d553 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,16 @@ +# this file is a helper to run calendso locally +# starts a postgres instance on port 5450 to use as a local db +version: "3.6" +services: + postgres: + image: postgres:13 + ports: + - "5450:5432" # expose pg on port 5450 to not collide with pg from elswhere + restart: always + volumes: + - db_data:/var/lib/postgresql/data + environment: + POSTGRES_PASSWORD: "" + POSTGRES_HOST_AUTH_METHOD: trust +volumes: + db_data: diff --git a/package.json b/package.json index 8d8dc255e1..59e02dd00c 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,15 @@ "private": true, "scripts": { "dev": "next dev", + "db-up": "docker-compose up -d", + "db-migrate": "yarn prisma migrate dev", + "db-seed": "yarn ts-node scripts/seed.ts", + "db-nuke": "docker-compose down --volumes --remove-orphans", + "dx": "DATABASE_URL=postgresql://postgres:@localhost:5450/calendso eval 'yarn db-up && yarn prisma migrate dev && yarn db-seed && yarn dev'", "test": "node node_modules/.bin/jest", "build": "next build", "start": "next start", + "ts-node": "ts-node --compiler-options \"{\\\"module\\\":\\\"commonjs\\\"}\"", "postinstall": "prisma generate", "pre-commit": "lint-staged", "lint": "eslint . --ext .ts,.js,.tsx,.jsx", @@ -19,7 +25,7 @@ "@headlessui/react": "^1.4.0", "@heroicons/react": "^1.0.4", "@jitsu/sdk-js": "^2.2.4", - "@prisma/client": "^2.29.1", + "@prisma/client": "^2.30.2", "@radix-ui/react-avatar": "^0.0.15", "@radix-ui/react-collapsible": "^0.0.17", "@radix-ui/react-dialog": "^0.0.20", @@ -81,8 +87,9 @@ "mockdate": "^3.0.5", "postcss": "^8.3.6", "prettier": "^2.3.2", - "prisma": "^2.29.1", + "prisma": "^2.30.2", "tailwindcss": "^2.2.7", + "ts-node": "^10.2.1", "typescript": "^4.3.5" }, "lint-staged": { diff --git a/scripts/seed.ts b/scripts/seed.ts new file mode 100644 index 0000000000..00c89420ea --- /dev/null +++ b/scripts/seed.ts @@ -0,0 +1,115 @@ +import { hashPassword } from "../lib/auth"; +import { Prisma, PrismaClient } from "@prisma/client"; +const prisma = new PrismaClient(); + +let idx = 0; +async function createUserAndEventType(opts: { + user: Omit & { password: string; email: string }; + eventTypes: Array; +}) { + const userData: Prisma.UserCreateArgs["data"] = { + ...opts.user, + password: await hashPassword(opts.user.password), + emailVerified: new Date(), + }; + const user = await prisma.user.upsert({ + where: { email: opts.user.email }, + update: userData, + create: userData, + }); + + console.log( + `šŸ‘¤ Created '${opts.user.username}' with email "${opts.user.email}" & password "${opts.user.password}". Booking page šŸ‘‰ http://localhost:3000/${opts.user.username}` + ); + for (const rawData of opts.eventTypes) { + const id = ++idx; + const eventTypeData: Prisma.EventTypeCreateArgs["data"] = { ...rawData }; + eventTypeData.userId = user.id; + eventTypeData.id = id; + await prisma.eventType.upsert({ + where: { + id, + }, + update: eventTypeData, + create: eventTypeData, + }); + console.log( + `\tšŸ“† Event type ${eventTypeData.slug}, length ${eventTypeData.length}: http://localhost:3000/${user.username}/${eventTypeData.slug}` + ); + } +} + +async function main() { + await createUserAndEventType({ + user: { + email: "free@example.com", + password: "free", + username: "free", + // plan: "FREE", + }, + eventTypes: [ + { + title: "30min", + slug: "30min", + length: 30, + }, + { + title: "60min", + slug: "60min", + length: 30, + }, + ], + }); + await createUserAndEventType({ + user: { + email: "pro@example.com", + password: "pro", + username: "pro", + // plan: "PRO", + }, + + eventTypes: [ + { + title: "30min", + slug: "30min", + length: 30, + }, + { + title: "60min", + slug: "60min", + length: 60, + }, + ], + }); + await createUserAndEventType({ + user: { + email: "trial@example.com", + password: "trial", + username: "trial", + // plan: "TRIAL", + }, + eventTypes: [ + { + title: "30min", + slug: "30min", + length: 30, + }, + { + title: "60min", + slug: "60min", + length: 60, + }, + ], + }); + + await prisma.$disconnect(); +} + +main() + .then(() => { + console.log("šŸŒ± Seeded db"); + }) + .catch((e) => { + console.error(e); + process.exit(1); + }); diff --git a/yarn.lock b/yarn.lock index 0b121bc1b7..fb14403dbb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -191,7 +191,8 @@ "@babel/plugin-syntax-jsx@7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" + integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" @@ -274,6 +275,7 @@ "@babel/types@7.15.0", "@babel/types@^7.0.0", "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.15.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.15.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" + integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== dependencies: "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" @@ -282,6 +284,18 @@ version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" +"@cspotcode/source-map-consumer@0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" + integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== + +"@cspotcode/source-map-support@0.6.1": + version "0.6.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz#118511f316e2e87ee4294761868e254d3da47960" + integrity sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg== + dependencies: + "@cspotcode/source-map-consumer" "0.8.0" + "@emotion/cache@^11.4.0": version "11.4.0" resolved "https://registry.npmjs.org/@emotion/cache/-/cache-11.4.0.tgz#293fc9d9a7a38b9aad8e9337e5014366c3b09ac0" @@ -567,7 +581,8 @@ "@napi-rs/triples@^1.0.3": version "1.0.3" - resolved "https://registry.yarnpkg.com/@napi-rs/triples/-/triples-1.0.3.tgz#76d6d0c3f4d16013c61e45dfca5ff1e6c31ae53c" + resolved "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz#76d6d0c3f4d16013c61e45dfca5ff1e6c31ae53c" + integrity sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA== "@next-auth/prisma-legacy-adapter@0.0.1-canary.127": version "0.0.1-canary.127" @@ -583,17 +598,20 @@ require_optional "^1.0.1" typeorm "^0.2.30" -"@next/env@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/env/-/env-11.1.1.tgz#d403282accbe8795aa2341f0e02c2e8bfc92bfb0" +"@next/env@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@next/env/-/env-11.1.2.tgz#27996efbbc54c5f949f5e8c0a156e3aa48369b99" + integrity sha512-+fteyVdQ7C/OoulfcF6vd1Yk0FEli4453gr8kSFbU8sKseNSizYq6df5MKz/AjwLptsxrUeIkgBdAzbziyJ3mA== -"@next/polyfill-module@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-11.1.1.tgz#89d5a70685a52a0fad79f05a1f97a6b15cc727aa" +"@next/polyfill-module@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-11.1.2.tgz#1fe92c364fdc81add775a16c678f5057c6aace98" + integrity sha512-xZmixqADM3xxtqBV0TpAwSFzWJP0MOQzRfzItHXf1LdQHWb0yofHHC+7eOrPFic8+ZGz5y7BdPkkgR1S25OymA== -"@next/react-dev-overlay@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-11.1.1.tgz#3cd99202a85412bada8ba9c8e3f4cf7c19294b24" +"@next/react-dev-overlay@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-11.1.2.tgz#73795dc5454b7af168bac93df7099965ebb603be" + integrity sha512-rDF/mGY2NC69mMg2vDqzVpCOlWqnwPUXB2zkARhvknUHyS6QJphPYv9ozoPJuoT/QBs49JJd9KWaAzVBvq920A== dependencies: "@babel/code-frame" "7.12.11" anser "1.4.9" @@ -607,29 +625,35 @@ stacktrace-parser "0.1.10" strip-ansi "6.0.0" -"@next/react-refresh-utils@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-11.1.1.tgz#8d1a5432a53c9f987503d5ab07d3241230afb33f" +"@next/react-refresh-utils@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-11.1.2.tgz#44ea40d8e773e4b77bad85e24f6ac041d5e4b4a5" + integrity sha512-hsoJmPfhVqjZ8w4IFzoo8SyECVnN+8WMnImTbTKrRUHOVJcYMmKLL7xf7T0ft00tWwAl/3f3Q3poWIN2Ueql/Q== -"@next/swc-darwin-arm64@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-11.1.1.tgz#ea9a76bcff00945df29a81bc43b3b22dd0a6cb53" +"@next/swc-darwin-arm64@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-11.1.2.tgz#93226c38db488c4b62b30a53b530e87c969b8251" + integrity sha512-hZuwOlGOwBZADA8EyDYyjx3+4JGIGjSHDHWrmpI7g5rFmQNltjlbaefAbiU5Kk7j3BUSDwt30quJRFv3nyJQ0w== -"@next/swc-darwin-x64@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-11.1.1.tgz#95838e9116897ae734d02fdbbfa601b6f52adaf3" +"@next/swc-darwin-x64@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-11.1.2.tgz#792003989f560c00677b5daeff360b35b510db83" + integrity sha512-PGOp0E1GisU+EJJlsmJVGE+aPYD0Uh7zqgsrpD3F/Y3766Ptfbe1lEPPWnRDl+OzSSrSrX1lkyM/Jlmh5OwNvA== -"@next/swc-linux-x64-gnu@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-11.1.1.tgz#42c4973213a880977ebdfad01474217d7d71e8c2" +"@next/swc-linux-x64-gnu@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-11.1.2.tgz#8216b2ae1f21f0112958735c39dd861088108f37" + integrity sha512-YcDHTJjn/8RqvyJVB6pvEKXihDcdrOwga3GfMv/QtVeLphTouY4BIcEUfrG5+26Nf37MP1ywN3RRl1TxpurAsQ== -"@next/swc-win32-x64-msvc@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-11.1.1.tgz#1ffcbd01a0155fa8558f7aefffea1066e9bebe74" +"@next/swc-win32-x64-msvc@11.1.2": + version "11.1.2" + resolved "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-11.1.2.tgz#e15824405df137129918205e43cb5e9339589745" + integrity sha512-e/pIKVdB+tGQYa1cW3sAeHm8gzEri/HYLZHT4WZojrUxgWXqx8pk7S7Xs47uBcFTqBDRvK3EcQpPLf3XdVsDdg== "@node-rs/helper@1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@node-rs/helper/-/helper-1.2.1.tgz#e079b05f21ff4329d82c4e1f71c0290e4ecdc70c" + resolved "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz#e079b05f21ff4329d82c4e1f71c0290e4ecdc70c" + integrity sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg== dependencies: "@napi-rs/triples" "^1.0.3" @@ -655,19 +679,22 @@ version "1.0.0" resolved "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6" -"@prisma/client@^2.29.1": - version "2.29.1" - resolved "https://registry.npmjs.org/@prisma/client/-/client-2.29.1.tgz#a7b91c9644800de4e00b2f7c3789ff4bae42b3d6" +"@prisma/client@^2.30.2": + version "2.30.2" + resolved "https://registry.npmjs.org/@prisma/client/-/client-2.30.2.tgz#4e7f90f27a176d95769609e65932a4b95aa8da3f" + integrity sha512-cfS/1UWBRE4sq0z7spGLYqOE0oN2YJJvKtm+63o7h/BI6ji10VWla79aXBTXj3AImtfykNtC6OHtFVawEl/49w== dependencies: - "@prisma/engines-version" "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a" + "@prisma/engines-version" "2.30.1-2.b8c35d44de987a9691890b3ddf3e2e7effb9bf20" -"@prisma/engines-version@2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a": - version "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a" - resolved "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a.tgz#96db92f09714d4dd2a5e21054c28bd1c0820fa77" +"@prisma/engines-version@2.30.1-2.b8c35d44de987a9691890b3ddf3e2e7effb9bf20": + version "2.30.1-2.b8c35d44de987a9691890b3ddf3e2e7effb9bf20" + resolved "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-2.30.1-2.b8c35d44de987a9691890b3ddf3e2e7effb9bf20.tgz#d5ef55c92beeba56e52bba12b703af0bfd30530d" + integrity sha512-/iDRgaoSQC77WN2oDsOM8dn61fykm6tnZUAClY+6p+XJbOEgZ9gy4CKuKTBgrjSGDVjtQ/S2KGcYd3Ring8xaw== -"@prisma/engines@2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a": - version "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a" - resolved "https://registry.npmjs.org/@prisma/engines/-/engines-2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a.tgz#0a44a6dcbee7e0a2850ea086675a8a4f4d627f9d" +"@prisma/engines@2.30.1-2.b8c35d44de987a9691890b3ddf3e2e7effb9bf20": + version "2.30.1-2.b8c35d44de987a9691890b3ddf3e2e7effb9bf20" + resolved "https://registry.npmjs.org/@prisma/engines/-/engines-2.30.1-2.b8c35d44de987a9691890b3ddf3e2e7effb9bf20.tgz#2df768aa7c9f84acaa1f35c970417822233a9fb1" + integrity sha512-WPnA/IUrxDihrRhdP6+8KAVSwsc0zsh8ioPYsLJjOhzVhwpRbuFH2tJDRIAbc+qFh+BbTIZbeyBYt8fpNXaYQQ== "@radix-ui/number@0.0.6": version "0.0.6" @@ -1010,6 +1037,26 @@ version "1.1.2" resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" +"@tsconfig/node10@^1.0.7": + version "1.0.8" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + +"@tsconfig/node12@^1.0.7": + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + +"@tsconfig/node14@^1.0.0": + version "1.0.1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + +"@tsconfig/node16@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.1.15" resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz#2ccfb1ad55a02c83f8e0ad327cbc332f55eb1024" @@ -1241,11 +1288,16 @@ acorn-walk@^7.0.0, acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" +acorn-walk@^8.1.1: + version "8.1.1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" + integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== + acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" -acorn@^8.2.4: +acorn@^8.2.4, acorn@^8.4.1: version "8.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" @@ -1355,6 +1407,11 @@ app-root-path@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz#210b6f43873227e18a4b810a032283311555d5ad" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + arg@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz#eb0c9a8f77786cad2af8ff2b862899842d7b6adb" @@ -2018,6 +2075,11 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-fetch@^3.1.4: version "3.1.4" resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" @@ -2062,13 +2124,15 @@ cssesc@^3.0.0: cssnano-preset-simple@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-3.0.0.tgz#e95d0012699ca2c741306e9a3b8eeb495a348dbe" + resolved "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-3.0.0.tgz#e95d0012699ca2c741306e9a3b8eeb495a348dbe" + integrity sha512-vxQPeoMRqUT3c/9f0vWeVa2nKQIHFpogtoBvFdW4GQ3IvEJ6uauCP6p3Y5zQDLFcI7/+40FTgX12o7XUL0Ko+w== dependencies: caniuse-lite "^1.0.30001202" cssnano-simple@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-3.0.0.tgz#a4b8ccdef4c7084af97e19bc5b93b4ecf211e90f" + resolved "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-3.0.0.tgz#a4b8ccdef4c7084af97e19bc5b93b4ecf211e90f" + integrity sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg== dependencies: cssnano-preset-simple "^3.0.0" @@ -2195,6 +2259,11 @@ diff-sequences@^27.0.6: version "27.0.6" resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -3057,7 +3126,8 @@ ignore@^5.1.4: image-size@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.0.tgz#58b31fe4743b1cec0a0ac26f5c914d3c5b2f0750" + resolved "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz#58b31fe4743b1cec0a0ac26f5c914d3c5b2f0750" + integrity sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw== dependencies: queue "6.0.2" @@ -4058,6 +4128,11 @@ make-dir@^3.0.0, make-dir@^3.0.2: dependencies: semver "^6.0.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + makeerror@1.0.x: version "1.0.11" resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -4238,15 +4313,16 @@ next-transpile-modules@^8.0.0: escalade "^3.1.1" next@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/next/-/next-11.1.1.tgz#ca15c6d6b4b4bf8c3e859f7fc4f9657ce59bcb63" + version "11.1.2" + resolved "https://registry.npmjs.org/next/-/next-11.1.2.tgz#527475787a9a362f1bc916962b0c0655cc05bc91" + integrity sha512-azEYL0L+wFjv8lstLru3bgvrzPvK0P7/bz6B/4EJ9sYkXeW8r5Bjh78D/Ol7VOg0EIPz0CXoe72hzAlSAXo9hw== dependencies: "@babel/runtime" "7.15.3" "@hapi/accept" "5.0.2" - "@next/env" "11.1.1" - "@next/polyfill-module" "11.1.1" - "@next/react-dev-overlay" "11.1.1" - "@next/react-refresh-utils" "11.1.1" + "@next/env" "11.1.2" + "@next/polyfill-module" "11.1.2" + "@next/react-dev-overlay" "11.1.2" + "@next/react-refresh-utils" "11.1.2" "@node-rs/helper" "1.2.1" assert "2.0.0" ast-types "0.13.2" @@ -4284,7 +4360,7 @@ next@^11.1.1: stream-browserify "3.0.0" stream-http "3.1.1" string_decoder "1.3.0" - styled-jsx "4.0.0" + styled-jsx "4.0.1" timers-browserify "2.0.12" tty-browserify "0.0.1" use-subscription "1.5.1" @@ -4292,10 +4368,10 @@ next@^11.1.1: vm-browserify "1.1.2" watchpack "2.1.1" optionalDependencies: - "@next/swc-darwin-arm64" "11.1.1" - "@next/swc-darwin-x64" "11.1.1" - "@next/swc-linux-x64-gnu" "11.1.1" - "@next/swc-win32-x64-msvc" "11.1.1" + "@next/swc-darwin-arm64" "11.1.2" + "@next/swc-darwin-x64" "11.1.2" + "@next/swc-linux-x64-gnu" "11.1.2" + "@next/swc-win32-x64-msvc" "11.1.2" node-emoji@^1.8.1: version "1.11.0" @@ -4681,7 +4757,8 @@ postcss-value-parser@^4.1.0: postcss@8.2.15: version "8.2.15" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" + integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== dependencies: colorette "^1.2.2" nanoid "^3.1.23" @@ -4740,11 +4817,12 @@ pretty-hrtime@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" -prisma@^2.29.1: - version "2.29.1" - resolved "https://registry.npmjs.org/prisma/-/prisma-2.29.1.tgz#7845f55c7f09955b01f973c6a4b1f330cb212e7d" +prisma@^2.30.2: + version "2.30.2" + resolved "https://registry.npmjs.org/prisma/-/prisma-2.30.2.tgz#f65ea0a04ff642e1e393d5b42c804bdcb099a465" + integrity sha512-AoLz3CfD7XM+vfE7IWzxQq1O2+ZZ31+6yfabWeMr32wxdLLxSsGagW80LFgKIsZgWW6Ypwleu5ujyKNvO91WHA== dependencies: - "@prisma/engines" "2.29.0-34.1be4cd60b89afa04b192acb1ef47758a39810f3a" + "@prisma/engines" "2.30.1-2.b8c35d44de987a9691890b3ddf3e2e7effb9bf20" process-nextick-args@~2.0.0: version "2.0.1" @@ -4776,6 +4854,7 @@ prop-types-exact@^1.2.0: prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" @@ -4845,7 +4924,8 @@ queue-microtask@^1.2.2: queue@6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== dependencies: inherits "~2.0.3" @@ -4931,6 +5011,7 @@ react-input-autosize@^3.0.0: react-is@17.0.2, react-is@^17.0.1: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" @@ -5541,9 +5622,10 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" -styled-jsx@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-4.0.0.tgz#f7b90e7889d0a4f4635f8d1ae9ac32f3acaedc57" +styled-jsx@4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/styled-jsx/-/styled-jsx-4.0.1.tgz#ae3f716eacc0792f7050389de88add6d5245b9e9" + integrity sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ== dependencies: "@babel/plugin-syntax-jsx" "7.14.5" "@babel/types" "7.15.0" @@ -5747,6 +5829,24 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +ts-node@^10.2.1: + version "10.2.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.2.1.tgz#4cc93bea0a7aba2179497e65bb08ddfc198b3ab5" + integrity sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw== + dependencies: + "@cspotcode/source-map-support" "0.6.1" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + yn "3.1.1" + ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" @@ -6174,6 +6274,11 @@ yargs@^17.0.1: y18n "^5.0.5" yargs-parser "^20.2.2" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"