diff --git a/config.example.toml b/config.example.toml index 8973414..a4b4d41 100644 --- a/config.example.toml +++ b/config.example.toml @@ -5,18 +5,9 @@ host = '0.0.0.0' port = 3000 [database] -# postgresql type = 'psql' url = 'postgres://postgres:postgres@postgres/postgres' -# mysql -# type = 'mysql' -# url = 'mysql://postgres:postgres@mysql/mysql' - -# sqlite -# type = 'sqlite' -# url = 'file:sqlite.db' - [uploader] route = '/u' embed_route = '/a' diff --git a/package.json b/package.json index 6a2719c..43901c8 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "zip3", - "version": "3.0.0", + "version": "3.1.0", "scripts": { "prepare": "husky install", "dev": "NODE_ENV=development node server", "build": "npm-run-all build:schema build:next", "build:next": "next build", - "build:schema": "prisma generate --schema=prisma/schema.shared.prisma", + "build:schema": "prisma generate --schema=prisma/schema.prisma", "start": "node server", "lint": "next lint", "ts-node": "./node_modules/.bin/ts-node --compiler-options \"{\\\"module\\\":\\\"commonjs\\\"}\" --transpile-only", @@ -21,7 +21,7 @@ "@material-ui/data-grid": "^4.0.0-alpha.32", "@material-ui/icons": "^5.0.0-alpha.37", "@material-ui/styles": "^5.0.0-alpha.35", - "@prisma/client": "2.25.0", + "@prisma/client": "^2.30.0", "@reduxjs/toolkit": "^1.6.0", "argon2": "^0.28.2", "colorette": "^1.2.2", @@ -31,14 +31,13 @@ "formik": "^2.2.9", "multer": "^1.4.2", "next": "11.1.0", - "prisma": "2.25.0", + "prisma": "^2.30.0", "react": "17.0.2", "react-dom": "17.0.2", "react-dropzone": "^11.3.2", "react-redux": "^7.2.4", "redux": "^4.1.0", "redux-thunk": "^2.3.0", - "rimraf": "^3.0.2", "yup": "^0.32.9" }, "devDependencies": { diff --git a/prisma/migrations_mysql/migration_lock.toml b/prisma/migrations_mysql/migration_lock.toml deleted file mode 100644 index e5a788a..0000000 --- a/prisma/migrations_mysql/migration_lock.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) -provider = "mysql" \ No newline at end of file diff --git a/prisma/migrations_mysql/mysql/migration.sql b/prisma/migrations_mysql/mysql/migration.sql deleted file mode 100644 index 74be848..0000000 --- a/prisma/migrations_mysql/mysql/migration.sql +++ /dev/null @@ -1,53 +0,0 @@ --- CreateTable -CREATE TABLE `User` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `username` VARCHAR(191) NOT NULL, - `password` VARCHAR(191) NOT NULL, - `token` VARCHAR(191) NOT NULL, - `administrator` BOOLEAN NOT NULL DEFAULT false, - `embedTitle` VARCHAR(191), - `embedColor` VARCHAR(191) NOT NULL DEFAULT '#2f3136', - - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- CreateTable -CREATE TABLE `Image` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `file` VARCHAR(191) NOT NULL, - `mimetype` VARCHAR(191) NOT NULL DEFAULT 'image/png', - `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - `views` INTEGER NOT NULL DEFAULT 0, - `userId` INTEGER NOT NULL, - - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- CreateTable -CREATE TABLE `InvisibleImage` ( - `id` INTEGER NOT NULL, - `invis` VARCHAR(191) NOT NULL, - - UNIQUE INDEX `InvisibleImage.invis_unique`(`invis`), - UNIQUE INDEX `InvisibleImage_id_unique`(`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- CreateTable -CREATE TABLE `Url` ( - `id` INTEGER NOT NULL AUTO_INCREMENT, - `to` VARCHAR(191) NOT NULL, - `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - `views` INTEGER NOT NULL DEFAULT 0, - `userId` INTEGER NOT NULL, - - PRIMARY KEY (`id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - --- AddForeignKey -ALTER TABLE `Image` ADD FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE `InvisibleImage` ADD FOREIGN KEY (`id`) REFERENCES `Image`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE `Url` ADD FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations_psql/migration_lock.toml b/prisma/migrations_psql/migration_lock.toml deleted file mode 100644 index fbffa92..0000000 --- a/prisma/migrations_psql/migration_lock.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) -provider = "postgresql" \ No newline at end of file diff --git a/prisma/migrations_psql/psql/migration.sql b/prisma/migrations_psql/psql/migration.sql deleted file mode 100644 index c22587b..0000000 --- a/prisma/migrations_psql/psql/migration.sql +++ /dev/null @@ -1,56 +0,0 @@ --- CreateTable -CREATE TABLE "User" ( - "id" SERIAL NOT NULL, - "username" TEXT NOT NULL, - "password" TEXT NOT NULL, - "token" TEXT NOT NULL, - "administrator" BOOLEAN NOT NULL DEFAULT false, - "embedTitle" TEXT, - "embedColor" TEXT NOT NULL DEFAULT E'#2f3136', - - PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "Image" ( - "id" SERIAL NOT NULL, - "file" TEXT NOT NULL, - "mimetype" TEXT NOT NULL DEFAULT E'image/png', - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "views" INTEGER NOT NULL DEFAULT 0, - "userId" INTEGER NOT NULL, - - PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "InvisibleImage" ( - "id" INTEGER NOT NULL, - "invis" TEXT NOT NULL -); - --- CreateTable -CREATE TABLE "Url" ( - "id" SERIAL NOT NULL, - "to" TEXT NOT NULL, - "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "views" INTEGER NOT NULL DEFAULT 0, - "userId" INTEGER NOT NULL, - - PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "InvisibleImage.invis_unique" ON "InvisibleImage"("invis"); - --- CreateIndex -CREATE UNIQUE INDEX "InvisibleImage_id_unique" ON "InvisibleImage"("id"); - --- AddForeignKey -ALTER TABLE "Image" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "InvisibleImage" ADD FOREIGN KEY ("id") REFERENCES "Image"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "Url" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations_sqlite/migration_lock.toml b/prisma/migrations_sqlite/migration_lock.toml deleted file mode 100644 index e5e5c47..0000000 --- a/prisma/migrations_sqlite/migration_lock.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) -provider = "sqlite" \ No newline at end of file diff --git a/prisma/migrations_sqlite/sqlite/migration.sql b/prisma/migrations_sqlite/sqlite/migration.sql deleted file mode 100644 index 3233ea2..0000000 --- a/prisma/migrations_sqlite/sqlite/migration.sql +++ /dev/null @@ -1,44 +0,0 @@ --- CreateTable -CREATE TABLE "User" ( - "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - "username" TEXT NOT NULL, - "password" TEXT NOT NULL, - "token" TEXT NOT NULL, - "administrator" BOOLEAN NOT NULL DEFAULT false, - "embedTitle" TEXT, - "embedColor" TEXT NOT NULL DEFAULT '#2f3136' -); - --- CreateTable -CREATE TABLE "Image" ( - "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - "file" TEXT NOT NULL, - "mimetype" TEXT NOT NULL DEFAULT 'image/png', - "created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "views" INTEGER NOT NULL DEFAULT 0, - "userId" INTEGER NOT NULL, - FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- CreateTable -CREATE TABLE "InvisibleImage" ( - "id" INTEGER NOT NULL, - "invis" TEXT NOT NULL, - FOREIGN KEY ("id") REFERENCES "Image" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- CreateTable -CREATE TABLE "Url" ( - "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - "to" TEXT NOT NULL, - "created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "views" INTEGER NOT NULL DEFAULT 0, - "userId" INTEGER NOT NULL, - FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE -); - --- CreateIndex -CREATE UNIQUE INDEX "InvisibleImage.invis_unique" ON "InvisibleImage"("invis"); - --- CreateIndex -CREATE UNIQUE INDEX "InvisibleImage_id_unique" ON "InvisibleImage"("id"); diff --git a/prisma/schema.mysql.prisma b/prisma/schema.mysql.prisma deleted file mode 100644 index 8f35465..0000000 --- a/prisma/schema.mysql.prisma +++ /dev/null @@ -1,55 +0,0 @@ -datasource db { - provider = "mysql" - url = env("DATABASE_URL") -} - -generator client { - provider = "prisma-client-js" -} - -model User { - id Int @id @default(autoincrement()) - username String - password String - token String - administrator Boolean @default(false) - embedTitle String? - embedColor String @default("#2f3136") - images Image[] - urls Url[] -} - -model Image { - id Int @id @default(autoincrement()) - file String - mimetype String @default("image/png") - created_at DateTime @default(now()) - views Int @default(0) - invisible InvisibleImage? - user User @relation(fields: [userId], references: [id]) - userId Int -} - -model InvisibleImage { - id Int - image Image @relation(fields: [id], references: [id]) - - invis String @unique -} - -model Url { - id Int @id @default(autoincrement()) - to String - created_at DateTime @default(now()) - views Int @default(0) - invisible InvisibleUrl? - user User @relation(fields: [userId], references: [id]) - userId Int -} - -model InvisibleUrl { - id Int - url Url @relation(fields: [id], references: [id]) - - invis String @unique -} \ No newline at end of file diff --git a/prisma/schema.psql.prisma b/prisma/schema.psql.prisma deleted file mode 100644 index 6c9a852..0000000 --- a/prisma/schema.psql.prisma +++ /dev/null @@ -1,55 +0,0 @@ -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} - -generator client { - provider = "prisma-client-js" -} - -model User { - id Int @id @default(autoincrement()) - username String - password String - token String - administrator Boolean @default(false) - embedTitle String? - embedColor String @default("#2f3136") - images Image[] - urls Url[] -} - -model Image { - id Int @id @default(autoincrement()) - file String - mimetype String @default("image/png") - created_at DateTime @default(now()) - views Int @default(0) - invisible InvisibleImage? - user User @relation(fields: [userId], references: [id]) - userId Int -} - -model InvisibleImage { - id Int - image Image @relation(fields: [id], references: [id]) - - invis String @unique -} - -model Url { - id Int @id @default(autoincrement()) - to String - created_at DateTime @default(now()) - views Int @default(0) - invisible InvisibleUrl? - user User @relation(fields: [userId], references: [id]) - userId Int -} - -model InvisibleUrl { - id Int - url Url @relation(fields: [id], references: [id]) - - invis String @unique -} \ No newline at end of file diff --git a/prisma/schema.shared.prisma b/prisma/schema.shared.prisma deleted file mode 100644 index 6c9a852..0000000 --- a/prisma/schema.shared.prisma +++ /dev/null @@ -1,55 +0,0 @@ -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} - -generator client { - provider = "prisma-client-js" -} - -model User { - id Int @id @default(autoincrement()) - username String - password String - token String - administrator Boolean @default(false) - embedTitle String? - embedColor String @default("#2f3136") - images Image[] - urls Url[] -} - -model Image { - id Int @id @default(autoincrement()) - file String - mimetype String @default("image/png") - created_at DateTime @default(now()) - views Int @default(0) - invisible InvisibleImage? - user User @relation(fields: [userId], references: [id]) - userId Int -} - -model InvisibleImage { - id Int - image Image @relation(fields: [id], references: [id]) - - invis String @unique -} - -model Url { - id Int @id @default(autoincrement()) - to String - created_at DateTime @default(now()) - views Int @default(0) - invisible InvisibleUrl? - user User @relation(fields: [userId], references: [id]) - userId Int -} - -model InvisibleUrl { - id Int - url Url @relation(fields: [id], references: [id]) - - invis String @unique -} \ No newline at end of file diff --git a/prisma/schema.sqlite.prisma b/prisma/schema.sqlite.prisma deleted file mode 100644 index 974f429..0000000 --- a/prisma/schema.sqlite.prisma +++ /dev/null @@ -1,55 +0,0 @@ -datasource db { - provider = "sqlite" - url = env("DATABASE_URL") -} - -generator client { - provider = "prisma-client-js" -} - -model User { - id Int @id @default(autoincrement()) - username String - password String - token String - administrator Boolean @default(false) - embedTitle String? - embedColor String @default("#2f3136") - images Image[] - urls Url[] -} - -model Image { - id Int @id @default(autoincrement()) - file String - mimetype String @default("image/png") - created_at DateTime @default(now()) - views Int @default(0) - invisible InvisibleImage? - user User @relation(fields: [userId], references: [id]) - userId Int -} - -model InvisibleImage { - id Int - image Image @relation(fields: [id], references: [id]) - - invis String @unique -} - -model Url { - id Int @id @default(autoincrement()) - to String - created_at DateTime @default(now()) - views Int @default(0) - invisible InvisibleUrl? - user User @relation(fields: [userId], references: [id]) - userId Int -} - -model InvisibleUrl { - id Int - url Url @relation(fields: [id], references: [id]) - - invis String @unique -} \ No newline at end of file diff --git a/scripts/create-migrations.js b/scripts/create-migrations.js deleted file mode 100644 index b307747..0000000 --- a/scripts/create-migrations.js +++ /dev/null @@ -1,42 +0,0 @@ -const prismaRun = require('./prisma-run'); -const remove = require('rimraf').sync; -const { readFileSync, readdirSync, statSync, renameSync } = require('fs'); -const { join } = require('path'); - - -const str = readFileSync('./config.toml'); -const config = require('@iarna/toml/parse-string')(str); - -remove('prisma/migrations*'); - -function getFirstDir(dir) { - const files = readdirSync(dir); - for (const file of files) { - if (statSync(join(dir, file)).isDirectory()) return join(dir, file); - } -} - -function createPSQLMigrations() { - prismaRun(config.database.psql_url, 'psql', ['migrate', 'dev', '--skip-seed', '--name=psql', '--schema=prisma/schema.psql.prisma']); - const dir = getFirstDir('./prisma/migrations'); - renameSync(dir, './prisma/migrations/psql'); - renameSync('./prisma/migrations', './prisma/migrations_psql'); -} - -function createMYSQLMigrations() { - prismaRun(config.database.mysql_url, 'mysql', ['migrate', 'dev', '--skip-seed', '--name=mysql', '--schema=prisma/schema.mysql.prisma']); - const dir = getFirstDir('./prisma/migrations'); - renameSync(dir, './prisma/migrations/mysql'); - renameSync('./prisma/migrations', './prisma/migrations_mysql'); -} - -function createSqliteMigrations() { - prismaRun(config.database.sqlite_url, 'sqlite', ['migrate', 'dev', '--skip-seed', '--name=sqlite', '--schema=prisma/schema.sqlite.prisma']); - const dir = getFirstDir('./prisma/migrations'); - renameSync(dir, './prisma/migrations/sqlite'); - renameSync('./prisma/migrations', './prisma/migrations_sqlite'); -} - -createPSQLMigrations(); -createMYSQLMigrations(); -createSqliteMigrations(); \ No newline at end of file diff --git a/scripts/deploy-db.js b/scripts/deploy-db.js index d36a77d..5336b1d 100644 --- a/scripts/deploy-db.js +++ b/scripts/deploy-db.js @@ -1,44 +1,14 @@ -const { copyFileSync, readdirSync, statSync, existsSync, mkdirSync } = require('fs'); -const { join, sep } = require('path'); -const rimraf = require('rimraf'); const Logger = require('../src/lib/logger'); const prismaRun = require('./prisma-run'); -function recursive(dir) { - let res = []; - const files = readdirSync(dir); - for (let i = 0, L = files.length; i !== L; ++i) { - const file = join(dir, files[i]); - if (statSync(file).isDirectory()) res = [...res, ...recursive(file)]; - else res.push(file); - } - - return res; -} - module.exports = async (config) => { try { - const prisma = join(process.cwd(), 'prisma'); - const migrationsDir = join(prisma, 'migrations_' + config.database.type); - const destMigrations = join(prisma, 'migrations'); - const migrationFiles = recursive(migrationsDir); - const destFiles = migrationFiles.map(x => x.replace(migrationsDir + sep, destMigrations + sep)); - - if (existsSync(destMigrations)) rimraf.sync(destMigrations); - mkdirSync(destMigrations); - mkdirSync(join(destMigrations, config.database.type)); - - for (let i = 0, L = migrationFiles.length; i !== L; ++i) { - copyFileSync(migrationFiles[i], destFiles[i]); - } - - await prismaRun(config.database.url, ['migrate', 'deploy', `--schema=prisma/schema.${config.database.type}.prisma`]); - await prismaRun(config.database.url, ['generate', `--schema=prisma/schema.${config.database.type}.prisma`]); - await prismaRun(config.database.url, ['db', 'seed', '--preview-feature', `--schema=prisma/schema.${config.database.type}.prisma`]); + await prismaRun(config.database.url, ['migrate', 'deploy', '--schema=prisma/schema.prisma']); + await prismaRun(config.database.url, ['generate', '--schema=prisma/schema.prisma']); + await prismaRun(config.database.url, ['db', 'seed', '--preview-feature', '--schema=prisma/schema.prisma']); } catch (e) { console.log(e); Logger.get('db').error('there was an error.. exiting..'); - rimraf.sync(join(process.cwd(), 'prisma', 'migrations')); process.exit(1); } }; \ No newline at end of file diff --git a/scripts/migrate-v2-v3.js b/scripts/migrate-v2-v3.js index d8a52ae..ff8c66b 100644 --- a/scripts/migrate-v2-v3.js +++ b/scripts/migrate-v2-v3.js @@ -1,6 +1,5 @@ -const { readFile, readdir } = require('fs/promises'); -const { existsSync } = require('fs'); -const { join, extname } = require('path'); +const { readdir } = require('fs/promises'); +const { extname } = require('path'); const validateConfig = require('../server/validateConfig'); const Logger = require('../src/lib/logger'); const readConfig = require('../src/lib/readConfig'); diff --git a/scripts/prisma-run.js b/scripts/prisma-run.js index 4dac643..bb184b1 100644 --- a/scripts/prisma-run.js +++ b/scripts/prisma-run.js @@ -10,14 +10,17 @@ module.exports = (url, args) => { }, }); - proc.stdout.on('data', d => console.log(d.toString())); + let a = ''; + + proc.stdout.on('data', d => { + console.log(d.toString()); + a += d.toString(); + }); proc.stderr.on('data', d => { console.log(d.toString()); - rej(d.toString()); }); - - proc.stdout.on('close', () => res()); - + proc.stdout.on('end', () => res(a)); + proc.stdout.on('close', () => res(a)); }); }; diff --git a/server/index.js b/server/index.js index 97af6e8..e83c240 100644 --- a/server/index.js +++ b/server/index.js @@ -1,16 +1,17 @@ const next = require('next'); const { createServer } = require('http'); -const { readFile, stat, mkdir } = require('fs/promises'); -const { existsSync } = require('fs'); +const { stat, mkdir } = require('fs/promises'); const { execSync } = require('child_process'); -const { join, extname } = require('path'); +const { extname } = require('path'); const { red, green, bold } = require('colorette'); const { PrismaClient } = require('@prisma/client'); const validateConfig = require('./validateConfig'); const Logger = require('../src/lib/logger'); const getFile = require('./static'); +const prismaRun = require('../scripts/prisma-run'); const readConfig = require('../src/lib/readConfig'); const mimes = require('../scripts/mimes'); +const deployDb = require('../scripts/deploy-db'); Logger.get('server').info('starting zipline server'); @@ -34,14 +35,14 @@ function shouldUseYarn() { (async () => { try { const config = readConfig(); - - if (!existsSync(join(process.cwd(), 'prisma', 'migrations'))) { - Logger.get('server').info('detected an uncreated database - creating...'); - require('../scripts/deploy-db')(config); - } - await validateConfig(config); + const data = await prismaRun(config.database.url, ['migrate', 'status']); + if (data.includes('Following migration have not yet been applied:')) { + Logger.get('database').info('some migrations are not applied, applying them now...'); + await deployDb(config); + Logger.get('database').info('finished applying migrations'); + } process.env.DATABASE_URL = config.database.url; await stat('./.next'); @@ -115,7 +116,6 @@ function shouldUseYarn() { }); srv.listen(config.core.port, config.core.host ?? '0.0.0.0'); - } catch (e) { if (e.message && e.message.startsWith('Could not find a production')) { Logger.get('web').error(`there is no production build - run \`${shouldUseYarn() ? 'yarn build' : 'npm build'}\``); diff --git a/src/lib/logger.js b/src/lib/logger.js index be3df9f..6925dce 100644 --- a/src/lib/logger.js +++ b/src/lib/logger.js @@ -1,5 +1,5 @@ const { format } = require('fecha'); -const { yellow, blueBright, magenta, red, cyan } = require('colorette'); +const { yellow, blueBright, magenta, red, cyan } = require('colorette'); class Logger { static get(clas) { diff --git a/src/lib/types.ts b/src/lib/types.ts index 1ba56f5..e41f341 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -13,7 +13,7 @@ export interface ConfigCore { } export interface ConfigDatabase { - type: 'psql' | 'mysql' | 'sqlite'; + type: 'psql'; url: string; } diff --git a/yarn.lock b/yarn.lock index 1d9ee2a..e50d451 100644 --- a/yarn.lock +++ b/yarn.lock @@ -599,22 +599,22 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.2.tgz#adea7b6953cbb34651766b0548468e743c6a2353" integrity sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q== -"@prisma/client@2.25.0": - version "2.25.0" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-2.25.0.tgz#a81cdf93ce93128eb35298cf8935480f3da6cca3" - integrity sha512-JDrAJ+oemiYAwgpYNJvCVT59S9bMbqkx78q2OT54xmmBoyYWWnn6t6oS6q8gKMiKHS6rzm/jdh3sy+2E0R+NAQ== +"@prisma/client@^2.30.0": + version "2.30.0" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-2.30.0.tgz#b0ed9db67405f619e428577f2d45843104142e00" + integrity sha512-tjJNHVfgyNOwS2F+AkjMMCJGPnXzHuUCrOnAMJyidAu4aNzxbJ8jWwjt96rRMpyrg9Hwen3xqqQ2oA+ikK7nhQ== dependencies: - "@prisma/engines-version" "2.25.0-36.c838e79f39885bc8e1611849b1eb28b5bb5bc922" + "@prisma/engines-version" "2.30.0-28.60b19f4a1de4fe95741da371b4c44a92f4d1adcb" -"@prisma/engines-version@2.25.0-36.c838e79f39885bc8e1611849b1eb28b5bb5bc922": - version "2.25.0-36.c838e79f39885bc8e1611849b1eb28b5bb5bc922" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-2.25.0-36.c838e79f39885bc8e1611849b1eb28b5bb5bc922.tgz#b353576a97d0c1952fd4f4201189e845aaafbea8" - integrity sha512-uZaonv3ZzLYAi99AooOe2BOBmb3k+ibVsJyZ5J3F6U1uFHTtTI9AVzC51mE09iNcgq3ZBt2CZNi5CDQZedMWyA== +"@prisma/engines-version@2.30.0-28.60b19f4a1de4fe95741da371b4c44a92f4d1adcb": + version "2.30.0-28.60b19f4a1de4fe95741da371b4c44a92f4d1adcb" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-2.30.0-28.60b19f4a1de4fe95741da371b4c44a92f4d1adcb.tgz#1360113dc19e1d43d4442e3b638ccfa0e1711943" + integrity sha512-oThNpx7HtJ0eEmnvrWARYcNCs6dqFdAK3Smt2bJVDD6Go4HLuuhjx028osP+rHaFrGOTx7OslLZYtvvFlAXRDA== -"@prisma/engines@2.25.0-36.c838e79f39885bc8e1611849b1eb28b5bb5bc922": - version "2.25.0-36.c838e79f39885bc8e1611849b1eb28b5bb5bc922" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-2.25.0-36.c838e79f39885bc8e1611849b1eb28b5bb5bc922.tgz#68d7850d311df6d017e1b878adb19ec21483bcf0" - integrity sha512-vjLCk8AFRZu3D8h/SMcWDzTo0xkMuUDyXQzXekn8gzAGjb47B6LQXGR6rDoZ3/uPM13JNTLPvF62mtVaY6fVeQ== +"@prisma/engines@2.30.0-28.60b19f4a1de4fe95741da371b4c44a92f4d1adcb": + version "2.30.0-28.60b19f4a1de4fe95741da371b4c44a92f4d1adcb" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-2.30.0-28.60b19f4a1de4fe95741da371b4c44a92f4d1adcb.tgz#b4d91ff876662b1de83e0cc913149a1c088becc7" + integrity sha512-LPKq88lIbYezvX0OOc1PU42hHdTsSMPJWmK8lusaHK7DaLHyXjDp/551LbsVapypbjW6N3Jx/If6GoMDASSMSw== "@reduxjs/toolkit@^1.6.0": version "1.6.0" @@ -651,11 +651,6 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.1.tgz#a6ca6a9a0ff366af433f42f5f0e124794ff6b8f1" integrity sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA== -"@types/bcryptjs@^2.4.2": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@types/bcryptjs/-/bcryptjs-2.4.2.tgz#e3530eac9dd136bfdfb0e43df2c4c5ce1f77dfae" - integrity sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ== - "@types/body-parser@*": version "1.19.0" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" @@ -664,13 +659,6 @@ "@types/connect" "*" "@types/node" "*" -"@types/busboy@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@types/busboy/-/busboy-0.2.3.tgz#6697ad29873246c530f09a3ff5a40861824230d5" - integrity sha1-ZpetKYcyRsUw8Jo/9aQIYYJCMNU= - dependencies: - "@types/node" "*" - "@types/connect@*": version "3.4.34" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" @@ -1338,13 +1326,6 @@ busboy@^0.2.11: dicer "0.2.5" readable-stream "1.1.x" -busboy@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" - integrity sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw== - dependencies: - dicer "0.3.0" - bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" @@ -1946,13 +1927,6 @@ dicer@0.2.5: readable-stream "1.1.x" streamsearch "0.1.2" -dicer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.0.tgz#eacd98b3bfbf92e8ab5c2fdb71aaac44bb06b872" - integrity sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA== - dependencies: - streamsearch "0.1.2" - diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -4452,12 +4426,12 @@ prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -prisma@2.25.0: - version "2.25.0" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-2.25.0.tgz#1ebfef3e945a22c673b3e3c5100f098da475700d" - integrity sha512-AdAlP+PShvugljIx62Omu+eLKu6Cozz06dehmClIHSb0/yFiVnyBtrRVV4LZus+QX6Ayg7CTDvtzroACAWl+Zw== +prisma@^2.30.0: + version "2.30.0" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-2.30.0.tgz#5b12091c480d538540b898d364b73651d44b4a01" + integrity sha512-2XYpSibcVpMd1JDxYypGDU/JKq0W2f/HI1itdddr4Pfg+q6qxt/ItWKcftv4/lqN6u/BVlQ2gDzXVEjpHeO5kQ== dependencies: - "@prisma/engines" "2.25.0-36.c838e79f39885bc8e1611849b1eb28b5bb5bc922" + "@prisma/engines" "2.30.0-28.60b19f4a1de4fe95741da371b4c44a92f4d1adcb" process-nextick-args@~2.0.0: version "2.0.1"