diff --git a/api/db/migrations/20201101183848-db-init/README.md b/api/db/migrations/20201101183848-db-init/README.md deleted file mode 100644 index 29cd885..0000000 --- a/api/db/migrations/20201101183848-db-init/README.md +++ /dev/null @@ -1,158 +0,0 @@ -# Migration `20201101183848-db-init` - -This migration has been generated by Kurt Hutten at 11/2/2020, 5:38:48 AM. -You can check out the [state of the schema](./schema.prisma) after the migration. - -## Database Steps - -```sql -CREATE TABLE "User" ( - "id" TEXT NOT NULL, - "userName" TEXT NOT NULL, - "email" TEXT NOT NULL, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - "image" TEXT, - "bio" TEXT, -PRIMARY KEY ("id") -) - -CREATE TABLE "Part" ( - "id" TEXT NOT NULL, - "title" TEXT NOT NULL, - "description" TEXT, - "code" TEXT, - "mainImage" TEXT, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - "userId" TEXT NOT NULL, - - FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE, -PRIMARY KEY ("id") -) - -CREATE TABLE "PartReaction" ( - "id" TEXT NOT NULL, - "emote" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "partId" TEXT NOT NULL, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - - FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE, - FOREIGN KEY ("partId") REFERENCES "Part"("id") ON DELETE CASCADE ON UPDATE CASCADE, -PRIMARY KEY ("id") -) - -CREATE TABLE "Comment" ( - "id" TEXT NOT NULL, - "text" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "partId" TEXT NOT NULL, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - - FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE, - FOREIGN KEY ("partId") REFERENCES "Part"("id") ON DELETE CASCADE ON UPDATE CASCADE, -PRIMARY KEY ("id") -) - -CREATE UNIQUE INDEX "User.userName_unique" ON "User"("userName") - -CREATE UNIQUE INDEX "User.email_unique" ON "User"("email") - -CREATE UNIQUE INDEX "Part.title_userId_unique" ON "Part"("title", "userId") - -CREATE UNIQUE INDEX "PartReaction.emote_userId_partId_unique" ON "PartReaction"("emote", "userId", "partId") -``` - -## Changes - -```diff -diff --git schema.prisma schema.prisma -migration ..20201101183848-db-init ---- datamodel.dml -+++ datamodel.dml -@@ -1,0 +1,79 @@ -+datasource DS { -+ provider = ["sqlite", "postgresql"] -+ url = "***" -+} -+ -+generator client { -+ provider = "prisma-client-js" -+ binaryTargets = "native" -+} -+ -+// sqlLight does not suport enums so we can't use enums until we set up postgresql in dev mode -+// enum Role { -+// USER -+// ADMIN -+// } -+ -+// enum PartType { -+// CASCADESTUDIO -+// JSCAD -+// } -+ -+model User { -+ id String @id @default(uuid()) -+ userName String @unique // reffered to as userId in @relations -+ email String @unique -+ // role should probably be a list [] and also use enums, neither are supported by sqllight, so we need to set up postgresql in dev -+ // maybe let netlify handle roles for now. -+ // role String @default("user") -+ -+ createdAt DateTime @default(now()) -+ updatedAt DateTime @updatedAt -+ -+ image String? // url maybe id or file storage service? cloudinary? -+ bio String? //mark down -+ Part Part[] -+ Reaction PartReaction[] -+ Comment Comment[] -+} -+ -+model Part { -+ id String @id @default(uuid()) -+ title String -+ description String? // markdown string -+ code String? -+ mainImage String? // link to cloudinary -+ createdAt DateTime @default(now()) -+ updatedAt DateTime @updatedAt -+ user User @relation(fields: [userId], references: [id]) -+ userId String -+ -+ Comment Comment[] -+ Reaction PartReaction[] -+ @@unique([title, userId]) -+} -+ -+model PartReaction { -+ id String @id @default(uuid()) -+ emote String // an emoji -+ user User @relation(fields: [userId], references: [id]) -+ userId String -+ part Part @relation(fields: [partId], references: [id]) -+ partId String -+ -+ createdAt DateTime @default(now()) -+ updatedAt DateTime @updatedAt -+ @@unique([emote, userId, partId]) -+} -+ -+model Comment { -+ id String @id @default(uuid()) -+ text String // the comment, should I allow mark down? -+ user User @relation(fields: [userId], references: [id]) -+ userId String -+ part Part @relation(fields: [partId], references: [id]) -+ partId String -+ -+ createdAt DateTime @default(now()) -+ updatedAt DateTime @updatedAt -+} -``` - - diff --git a/api/db/migrations/20201101183848-db-init/schema.prisma b/api/db/migrations/20201101183848-db-init/schema.prisma deleted file mode 100644 index f5d13ba..0000000 --- a/api/db/migrations/20201101183848-db-init/schema.prisma +++ /dev/null @@ -1,79 +0,0 @@ -datasource DS { - provider = ["sqlite", "postgresql"] - url = "***" -} - -generator client { - provider = "prisma-client-js" - binaryTargets = "native" -} - -// sqlLight does not suport enums so we can't use enums until we set up postgresql in dev mode -// enum Role { -// USER -// ADMIN -// } - -// enum PartType { -// CASCADESTUDIO -// JSCAD -// } - -model User { - id String @id @default(uuid()) - userName String @unique // reffered to as userId in @relations - email String @unique - // role should probably be a list [] and also use enums, neither are supported by sqllight, so we need to set up postgresql in dev - // maybe let netlify handle roles for now. - // role String @default("user") - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - image String? // url maybe id or file storage service? cloudinary? - bio String? //mark down - Part Part[] - Reaction PartReaction[] - Comment Comment[] -} - -model Part { - id String @id @default(uuid()) - title String - description String? // markdown string - code String? - mainImage String? // link to cloudinary - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - user User @relation(fields: [userId], references: [id]) - userId String - - Comment Comment[] - Reaction PartReaction[] - @@unique([title, userId]) -} - -model PartReaction { - id String @id @default(uuid()) - emote String // an emoji - user User @relation(fields: [userId], references: [id]) - userId String - part Part @relation(fields: [partId], references: [id]) - partId String - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - @@unique([emote, userId, partId]) -} - -model Comment { - id String @id @default(uuid()) - text String // the comment, should I allow mark down? - user User @relation(fields: [userId], references: [id]) - userId String - part Part @relation(fields: [partId], references: [id]) - partId String - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt -} diff --git a/api/db/migrations/20201101183848-db-init/steps.json b/api/db/migrations/20201101183848-db-init/steps.json deleted file mode 100644 index ce0e48a..0000000 --- a/api/db/migrations/20201101183848-db-init/steps.json +++ /dev/null @@ -1,839 +0,0 @@ -{ - "version": "0.3.14-fixed", - "steps": [ - { - "tag": "CreateSource", - "source": "DS" - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Source", - "source": "DS" - }, - "argument": "provider", - "value": "[\"sqlite\", \"postgresql\"]" - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Source", - "source": "DS" - }, - "argument": "url", - "value": "\"***\"" - }, - { - "tag": "CreateModel", - "model": "User" - }, - { - "tag": "CreateField", - "model": "User", - "field": "id", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "User", - "field": "id" - }, - "directive": "id" - } - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "User", - "field": "id" - }, - "directive": "default" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "User", - "field": "id" - }, - "directive": "default" - }, - "argument": "", - "value": "uuid()" - }, - { - "tag": "CreateField", - "model": "User", - "field": "userName", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "User", - "field": "userName" - }, - "directive": "unique" - } - }, - { - "tag": "CreateField", - "model": "User", - "field": "email", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "User", - "field": "email" - }, - "directive": "unique" - } - }, - { - "tag": "CreateField", - "model": "User", - "field": "createdAt", - "type": "DateTime", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "User", - "field": "createdAt" - }, - "directive": "default" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "User", - "field": "createdAt" - }, - "directive": "default" - }, - "argument": "", - "value": "now()" - }, - { - "tag": "CreateField", - "model": "User", - "field": "updatedAt", - "type": "DateTime", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "User", - "field": "updatedAt" - }, - "directive": "updatedAt" - } - }, - { - "tag": "CreateField", - "model": "User", - "field": "image", - "type": "String", - "arity": "Optional" - }, - { - "tag": "CreateField", - "model": "User", - "field": "bio", - "type": "String", - "arity": "Optional" - }, - { - "tag": "CreateField", - "model": "User", - "field": "Part", - "type": "Part", - "arity": "List" - }, - { - "tag": "CreateField", - "model": "User", - "field": "Reaction", - "type": "PartReaction", - "arity": "List" - }, - { - "tag": "CreateField", - "model": "User", - "field": "Comment", - "type": "Comment", - "arity": "List" - }, - { - "tag": "CreateModel", - "model": "Part" - }, - { - "tag": "CreateField", - "model": "Part", - "field": "id", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Part", - "field": "id" - }, - "directive": "id" - } - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Part", - "field": "id" - }, - "directive": "default" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "Part", - "field": "id" - }, - "directive": "default" - }, - "argument": "", - "value": "uuid()" - }, - { - "tag": "CreateField", - "model": "Part", - "field": "title", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateField", - "model": "Part", - "field": "description", - "type": "String", - "arity": "Optional" - }, - { - "tag": "CreateField", - "model": "Part", - "field": "code", - "type": "String", - "arity": "Optional" - }, - { - "tag": "CreateField", - "model": "Part", - "field": "mainImage", - "type": "String", - "arity": "Optional" - }, - { - "tag": "CreateField", - "model": "Part", - "field": "createdAt", - "type": "DateTime", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Part", - "field": "createdAt" - }, - "directive": "default" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "Part", - "field": "createdAt" - }, - "directive": "default" - }, - "argument": "", - "value": "now()" - }, - { - "tag": "CreateField", - "model": "Part", - "field": "updatedAt", - "type": "DateTime", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Part", - "field": "updatedAt" - }, - "directive": "updatedAt" - } - }, - { - "tag": "CreateField", - "model": "Part", - "field": "user", - "type": "User", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Part", - "field": "user" - }, - "directive": "relation" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "Part", - "field": "user" - }, - "directive": "relation" - }, - "argument": "fields", - "value": "[userId]" - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "Part", - "field": "user" - }, - "directive": "relation" - }, - "argument": "references", - "value": "[id]" - }, - { - "tag": "CreateField", - "model": "Part", - "field": "userId", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateField", - "model": "Part", - "field": "Comment", - "type": "Comment", - "arity": "List" - }, - { - "tag": "CreateField", - "model": "Part", - "field": "Reaction", - "type": "PartReaction", - "arity": "List" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Model", - "model": "Part", - "arguments": [ - { - "name": "", - "value": "[title, userId]" - } - ] - }, - "directive": "unique" - } - }, - { - "tag": "CreateModel", - "model": "PartReaction" - }, - { - "tag": "CreateField", - "model": "PartReaction", - "field": "id", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "id" - }, - "directive": "id" - } - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "id" - }, - "directive": "default" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "id" - }, - "directive": "default" - }, - "argument": "", - "value": "uuid()" - }, - { - "tag": "CreateField", - "model": "PartReaction", - "field": "emote", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateField", - "model": "PartReaction", - "field": "user", - "type": "User", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "user" - }, - "directive": "relation" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "user" - }, - "directive": "relation" - }, - "argument": "fields", - "value": "[userId]" - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "user" - }, - "directive": "relation" - }, - "argument": "references", - "value": "[id]" - }, - { - "tag": "CreateField", - "model": "PartReaction", - "field": "userId", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateField", - "model": "PartReaction", - "field": "part", - "type": "Part", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "part" - }, - "directive": "relation" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "part" - }, - "directive": "relation" - }, - "argument": "fields", - "value": "[partId]" - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "part" - }, - "directive": "relation" - }, - "argument": "references", - "value": "[id]" - }, - { - "tag": "CreateField", - "model": "PartReaction", - "field": "partId", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateField", - "model": "PartReaction", - "field": "createdAt", - "type": "DateTime", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "createdAt" - }, - "directive": "default" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "createdAt" - }, - "directive": "default" - }, - "argument": "", - "value": "now()" - }, - { - "tag": "CreateField", - "model": "PartReaction", - "field": "updatedAt", - "type": "DateTime", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "PartReaction", - "field": "updatedAt" - }, - "directive": "updatedAt" - } - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Model", - "model": "PartReaction", - "arguments": [ - { - "name": "", - "value": "[emote, userId, partId]" - } - ] - }, - "directive": "unique" - } - }, - { - "tag": "CreateModel", - "model": "Comment" - }, - { - "tag": "CreateField", - "model": "Comment", - "field": "id", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Comment", - "field": "id" - }, - "directive": "id" - } - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Comment", - "field": "id" - }, - "directive": "default" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "Comment", - "field": "id" - }, - "directive": "default" - }, - "argument": "", - "value": "uuid()" - }, - { - "tag": "CreateField", - "model": "Comment", - "field": "text", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateField", - "model": "Comment", - "field": "user", - "type": "User", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Comment", - "field": "user" - }, - "directive": "relation" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "Comment", - "field": "user" - }, - "directive": "relation" - }, - "argument": "fields", - "value": "[userId]" - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "Comment", - "field": "user" - }, - "directive": "relation" - }, - "argument": "references", - "value": "[id]" - }, - { - "tag": "CreateField", - "model": "Comment", - "field": "userId", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateField", - "model": "Comment", - "field": "part", - "type": "Part", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Comment", - "field": "part" - }, - "directive": "relation" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "Comment", - "field": "part" - }, - "directive": "relation" - }, - "argument": "fields", - "value": "[partId]" - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "Comment", - "field": "part" - }, - "directive": "relation" - }, - "argument": "references", - "value": "[id]" - }, - { - "tag": "CreateField", - "model": "Comment", - "field": "partId", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateField", - "model": "Comment", - "field": "createdAt", - "type": "DateTime", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Comment", - "field": "createdAt" - }, - "directive": "default" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "Comment", - "field": "createdAt" - }, - "directive": "default" - }, - "argument": "", - "value": "now()" - }, - { - "tag": "CreateField", - "model": "Comment", - "field": "updatedAt", - "type": "DateTime", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Comment", - "field": "updatedAt" - }, - "directive": "updatedAt" - } - } - ] -} \ No newline at end of file diff --git a/api/db/migrations/20201105184423-add-name-to-user/README.md b/api/db/migrations/20201105184423-add-name-to-user/README.md deleted file mode 100644 index e89ab99..0000000 --- a/api/db/migrations/20201105184423-add-name-to-user/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# Migration `20201105184423-add-name-to-user` - -This migration has been generated by Kurt Hutten at 11/6/2020, 5:44:24 AM. -You can check out the [state of the schema](./schema.prisma) after the migration. - -## Database Steps - -```sql -ALTER TABLE "User" ADD COLUMN "name" TEXT -``` - -## Changes - -```diff -diff --git schema.prisma schema.prisma -migration 20201101183848-db-init..20201105184423-add-name-to-user ---- datamodel.dml -+++ datamodel.dml -@@ -1,7 +1,7 @@ - datasource DS { - provider = ["sqlite", "postgresql"] -- url = "***" -+ url = "***" - } - generator client { - provider = "prisma-client-js" -@@ -19,11 +19,12 @@ - // JSCAD - // } - model User { -- id String @id @default(uuid()) -- userName String @unique // reffered to as userId in @relations -- email String @unique -+ id String @id @default(uuid()) -+ userName String @unique // reffered to as userId in @relations -+ email String @unique -+ name String? - // role should probably be a list [] and also use enums, neither are supported by sqllight, so we need to set up postgresql in dev - // maybe let netlify handle roles for now. - // role String @default("user") -``` - - diff --git a/api/db/migrations/20201105184423-add-name-to-user/schema.prisma b/api/db/migrations/20201105184423-add-name-to-user/schema.prisma deleted file mode 100644 index e0f3879..0000000 --- a/api/db/migrations/20201105184423-add-name-to-user/schema.prisma +++ /dev/null @@ -1,80 +0,0 @@ -datasource DS { - provider = ["sqlite", "postgresql"] - url = "***" -} - -generator client { - provider = "prisma-client-js" - binaryTargets = "native" -} - -// sqlLight does not suport enums so we can't use enums until we set up postgresql in dev mode -// enum Role { -// USER -// ADMIN -// } - -// enum PartType { -// CASCADESTUDIO -// JSCAD -// } - -model User { - id String @id @default(uuid()) - userName String @unique // reffered to as userId in @relations - email String @unique - name String? - // role should probably be a list [] and also use enums, neither are supported by sqllight, so we need to set up postgresql in dev - // maybe let netlify handle roles for now. - // role String @default("user") - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - image String? // url maybe id or file storage service? cloudinary? - bio String? //mark down - Part Part[] - Reaction PartReaction[] - Comment Comment[] -} - -model Part { - id String @id @default(uuid()) - title String - description String? // markdown string - code String? - mainImage String? // link to cloudinary - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - user User @relation(fields: [userId], references: [id]) - userId String - - Comment Comment[] - Reaction PartReaction[] - @@unique([title, userId]) -} - -model PartReaction { - id String @id @default(uuid()) - emote String // an emoji - user User @relation(fields: [userId], references: [id]) - userId String - part Part @relation(fields: [partId], references: [id]) - partId String - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - @@unique([emote, userId, partId]) -} - -model Comment { - id String @id @default(uuid()) - text String // the comment, should I allow mark down? - user User @relation(fields: [userId], references: [id]) - userId String - part Part @relation(fields: [partId], references: [id]) - partId String - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt -} diff --git a/api/db/migrations/20201105184423-add-name-to-user/steps.json b/api/db/migrations/20201105184423-add-name-to-user/steps.json deleted file mode 100644 index 21ac63d..0000000 --- a/api/db/migrations/20201105184423-add-name-to-user/steps.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "version": "0.3.14-fixed", - "steps": [ - { - "tag": "CreateField", - "model": "User", - "field": "name", - "type": "String", - "arity": "Optional" - } - ] -} \ No newline at end of file diff --git a/api/db/migrations/20201213004819-add-delete-on-part/README.md b/api/db/migrations/20201213004819-add-delete-on-part/README.md deleted file mode 100644 index f3bf834..0000000 --- a/api/db/migrations/20201213004819-add-delete-on-part/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# Migration `20201213004819-add-delete-on-part` - -This migration has been generated by Kurt Hutten at 12/13/2020, 11:48:20 AM. -You can check out the [state of the schema](./schema.prisma) after the migration. - -## Database Steps - -```sql -PRAGMA foreign_keys=OFF; -CREATE TABLE "new_Part" ( - "id" TEXT NOT NULL, - "title" TEXT NOT NULL, - "description" TEXT, - "code" TEXT, - "mainImage" TEXT, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - "userId" TEXT NOT NULL, - "deleted" BOOLEAN NOT NULL DEFAULT false, - - FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE, -PRIMARY KEY ("id") -); -INSERT INTO "new_Part" ("id", "title", "description", "code", "mainImage", "createdAt", "updatedAt", "userId") SELECT "id", "title", "description", "code", "mainImage", "createdAt", "updatedAt", "userId" FROM "Part"; -DROP TABLE "Part"; -ALTER TABLE "new_Part" RENAME TO "Part"; -CREATE UNIQUE INDEX "Part.title_userId_unique" ON "Part"("title", "userId"); -PRAGMA foreign_key_check; -PRAGMA foreign_keys=ON -``` - -## Changes - -```diff -diff --git schema.prisma schema.prisma -migration 20201105184423-add-name-to-user..20201213004819-add-delete-on-part ---- datamodel.dml -+++ datamodel.dml -@@ -1,12 +1,12 @@ - datasource DS { - provider = ["sqlite", "postgresql"] -- url = "***" -+ url = "***" - } - generator client { - provider = "prisma-client-js" -- binaryTargets = "native" -+ binaryTargets = ["native", "rhel-openssl-1.0.x"] - } - // sqlLight does not suport enums so we can't use enums until we set up postgresql in dev mode - // enum Role { -@@ -47,8 +47,9 @@ - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - user User @relation(fields: [userId], references: [id]) - userId String -+ deleted Boolean @default(false) - Comment Comment[] - Reaction PartReaction[] - @@unique([title, userId]) -``` - - diff --git a/api/db/migrations/20201213004819-add-delete-on-part/schema.prisma b/api/db/migrations/20201213004819-add-delete-on-part/schema.prisma deleted file mode 100644 index f5701d4..0000000 --- a/api/db/migrations/20201213004819-add-delete-on-part/schema.prisma +++ /dev/null @@ -1,81 +0,0 @@ -datasource DS { - provider = ["sqlite", "postgresql"] - url = "***" -} - -generator client { - provider = "prisma-client-js" - binaryTargets = ["native", "rhel-openssl-1.0.x"] -} - -// sqlLight does not suport enums so we can't use enums until we set up postgresql in dev mode -// enum Role { -// USER -// ADMIN -// } - -// enum PartType { -// CASCADESTUDIO -// JSCAD -// } - -model User { - id String @id @default(uuid()) - userName String @unique // reffered to as userId in @relations - email String @unique - name String? - // role should probably be a list [] and also use enums, neither are supported by sqllight, so we need to set up postgresql in dev - // maybe let netlify handle roles for now. - // role String @default("user") - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - image String? // url maybe id or file storage service? cloudinary? - bio String? //mark down - Part Part[] - Reaction PartReaction[] - Comment Comment[] -} - -model Part { - id String @id @default(uuid()) - title String - description String? // markdown string - code String? - mainImage String? // link to cloudinary - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - user User @relation(fields: [userId], references: [id]) - userId String - deleted Boolean @default(false) - - Comment Comment[] - Reaction PartReaction[] - @@unique([title, userId]) -} - -model PartReaction { - id String @id @default(uuid()) - emote String // an emoji - user User @relation(fields: [userId], references: [id]) - userId String - part Part @relation(fields: [partId], references: [id]) - partId String - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - @@unique([emote, userId, partId]) -} - -model Comment { - id String @id @default(uuid()) - text String // the comment, should I allow mark down? - user User @relation(fields: [userId], references: [id]) - userId String - part Part @relation(fields: [partId], references: [id]) - partId String - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt -} diff --git a/api/db/migrations/20201213004819-add-delete-on-part/steps.json b/api/db/migrations/20201213004819-add-delete-on-part/steps.json deleted file mode 100644 index 1dcd082..0000000 --- a/api/db/migrations/20201213004819-add-delete-on-part/steps.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "version": "0.3.14-fixed", - "steps": [ - { - "tag": "CreateField", - "model": "Part", - "field": "deleted", - "type": "Boolean", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "Part", - "field": "deleted" - }, - "directive": "default" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "Part", - "field": "deleted" - }, - "directive": "default" - }, - "argument": "", - "value": "false" - } - ] -} \ No newline at end of file diff --git a/api/db/migrations/20201227195638-add-subject-access-request-table/README.md b/api/db/migrations/20201227195638-add-subject-access-request-table/README.md deleted file mode 100644 index 75d3f2d..0000000 --- a/api/db/migrations/20201227195638-add-subject-access-request-table/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# Migration `20201227195638-add-subject-access-request-table` - -This migration has been generated by Kurt Hutten at 12/28/2020, 6:56:38 AM. -You can check out the [state of the schema](./schema.prisma) after the migration. - -## Database Steps - -```sql -CREATE TABLE "SubjectAccessRequest" ( - "id" TEXT NOT NULL, - "comment" TEXT NOT NULL, - "payload" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" DATETIME NOT NULL, - - FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE, -PRIMARY KEY ("id") -) -``` - -## Changes - -```diff -diff --git schema.prisma schema.prisma -migration 20201213004819-add-delete-on-part..20201227195638-add-subject-access-request-table ---- datamodel.dml -+++ datamodel.dml -@@ -1,7 +1,7 @@ - datasource DS { - provider = ["sqlite", "postgresql"] -- url = "***" -+ url = "***" - } - generator client { - provider = "prisma-client-js" -@@ -30,13 +30,14 @@ - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt -- image String? // url maybe id or file storage service? cloudinary? -- bio String? //mark down -- Part Part[] -- Reaction PartReaction[] -- Comment Comment[] -+ image String? // url maybe id or file storage service? cloudinary? -+ bio String? //mark down -+ Part Part[] -+ Reaction PartReaction[] -+ Comment Comment[] -+ SubjectAccessRequest SubjectAccessRequest[] - } - model Part { - id String @id @default(uuid()) -@@ -78,4 +79,15 @@ - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - } -+ -+model SubjectAccessRequest { -+ id String @id @default(uuid()) -+ comment String -+ payload String // json dump -+ user User @relation(fields: [userId], references: [id]) -+ userId String -+ -+ createdAt DateTime @default(now()) -+ updatedAt DateTime @updatedAt -+} -``` - - diff --git a/api/db/migrations/20201227195638-add-subject-access-request-table/schema.prisma b/api/db/migrations/20201227195638-add-subject-access-request-table/schema.prisma deleted file mode 100644 index c64ba45..0000000 --- a/api/db/migrations/20201227195638-add-subject-access-request-table/schema.prisma +++ /dev/null @@ -1,93 +0,0 @@ -datasource DS { - provider = ["sqlite", "postgresql"] - url = "***" -} - -generator client { - provider = "prisma-client-js" - binaryTargets = ["native", "rhel-openssl-1.0.x"] -} - -// sqlLight does not suport enums so we can't use enums until we set up postgresql in dev mode -// enum Role { -// USER -// ADMIN -// } - -// enum PartType { -// CASCADESTUDIO -// JSCAD -// } - -model User { - id String @id @default(uuid()) - userName String @unique // reffered to as userId in @relations - email String @unique - name String? - // role should probably be a list [] and also use enums, neither are supported by sqllight, so we need to set up postgresql in dev - // maybe let netlify handle roles for now. - // role String @default("user") - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - image String? // url maybe id or file storage service? cloudinary? - bio String? //mark down - Part Part[] - Reaction PartReaction[] - Comment Comment[] - SubjectAccessRequest SubjectAccessRequest[] -} - -model Part { - id String @id @default(uuid()) - title String - description String? // markdown string - code String? - mainImage String? // link to cloudinary - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - user User @relation(fields: [userId], references: [id]) - userId String - deleted Boolean @default(false) - - Comment Comment[] - Reaction PartReaction[] - @@unique([title, userId]) -} - -model PartReaction { - id String @id @default(uuid()) - emote String // an emoji - user User @relation(fields: [userId], references: [id]) - userId String - part Part @relation(fields: [partId], references: [id]) - partId String - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - @@unique([emote, userId, partId]) -} - -model Comment { - id String @id @default(uuid()) - text String // the comment, should I allow mark down? - user User @relation(fields: [userId], references: [id]) - userId String - part Part @relation(fields: [partId], references: [id]) - partId String - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt -} - -model SubjectAccessRequest { - id String @id @default(uuid()) - comment String - payload String // json dump - user User @relation(fields: [userId], references: [id]) - userId String - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt -} diff --git a/api/db/migrations/20201227195638-add-subject-access-request-table/steps.json b/api/db/migrations/20201227195638-add-subject-access-request-table/steps.json deleted file mode 100644 index d0ee8a8..0000000 --- a/api/db/migrations/20201227195638-add-subject-access-request-table/steps.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "version": "0.3.14-fixed", - "steps": [ - { - "tag": "CreateModel", - "model": "SubjectAccessRequest" - }, - { - "tag": "CreateField", - "model": "SubjectAccessRequest", - "field": "id", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "SubjectAccessRequest", - "field": "id" - }, - "directive": "id" - } - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "SubjectAccessRequest", - "field": "id" - }, - "directive": "default" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "SubjectAccessRequest", - "field": "id" - }, - "directive": "default" - }, - "argument": "", - "value": "uuid()" - }, - { - "tag": "CreateField", - "model": "SubjectAccessRequest", - "field": "comment", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateField", - "model": "SubjectAccessRequest", - "field": "payload", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateField", - "model": "SubjectAccessRequest", - "field": "user", - "type": "User", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "SubjectAccessRequest", - "field": "user" - }, - "directive": "relation" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "SubjectAccessRequest", - "field": "user" - }, - "directive": "relation" - }, - "argument": "fields", - "value": "[userId]" - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "SubjectAccessRequest", - "field": "user" - }, - "directive": "relation" - }, - "argument": "references", - "value": "[id]" - }, - { - "tag": "CreateField", - "model": "SubjectAccessRequest", - "field": "userId", - "type": "String", - "arity": "Required" - }, - { - "tag": "CreateField", - "model": "SubjectAccessRequest", - "field": "createdAt", - "type": "DateTime", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "SubjectAccessRequest", - "field": "createdAt" - }, - "directive": "default" - } - }, - { - "tag": "CreateArgument", - "location": { - "tag": "Directive", - "path": { - "tag": "Field", - "model": "SubjectAccessRequest", - "field": "createdAt" - }, - "directive": "default" - }, - "argument": "", - "value": "now()" - }, - { - "tag": "CreateField", - "model": "SubjectAccessRequest", - "field": "updatedAt", - "type": "DateTime", - "arity": "Required" - }, - { - "tag": "CreateDirective", - "location": { - "path": { - "tag": "Field", - "model": "SubjectAccessRequest", - "field": "updatedAt" - }, - "directive": "updatedAt" - } - }, - { - "tag": "CreateField", - "model": "User", - "field": "SubjectAccessRequest", - "type": "SubjectAccessRequest", - "arity": "List" - } - ] -} \ No newline at end of file diff --git a/api/db/migrations/20210228081443_initial_migration_to_postgres_from_sqlite/migration.sql b/api/db/migrations/20210228081443_initial_migration_to_postgres_from_sqlite/migration.sql new file mode 100644 index 0000000..7acfbea --- /dev/null +++ b/api/db/migrations/20210228081443_initial_migration_to_postgres_from_sqlite/migration.sql @@ -0,0 +1,94 @@ +-- CreateTable +CREATE TABLE "User" ( + "id" TEXT NOT NULL, + "userName" TEXT NOT NULL, + "email" TEXT NOT NULL, + "name" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "image" TEXT, + "bio" TEXT, + + PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Part" ( + "id" TEXT NOT NULL, + "title" TEXT NOT NULL, + "description" TEXT, + "code" TEXT, + "mainImage" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "userId" TEXT NOT NULL, + "deleted" BOOLEAN NOT NULL DEFAULT false, + + PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "PartReaction" ( + "id" TEXT NOT NULL, + "emote" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "partId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "Comment" ( + "id" TEXT NOT NULL, + "text" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "partId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "SubjectAccessRequest" ( + "id" TEXT NOT NULL, + "comment" TEXT NOT NULL, + "payload" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "User.userName_unique" ON "User"("userName"); + +-- CreateIndex +CREATE UNIQUE INDEX "User.email_unique" ON "User"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "Part.title_userId_unique" ON "Part"("title", "userId"); + +-- CreateIndex +CREATE UNIQUE INDEX "PartReaction.emote_userId_partId_unique" ON "PartReaction"("emote", "userId", "partId"); + +-- AddForeignKey +ALTER TABLE "Part" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PartReaction" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PartReaction" ADD FOREIGN KEY ("partId") REFERENCES "Part"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Comment" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Comment" ADD FOREIGN KEY ("partId") REFERENCES "Part"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "SubjectAccessRequest" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/api/db/migrations/migrate.lock b/api/db/migrations/migrate.lock deleted file mode 100644 index 2996315..0000000 --- a/api/db/migrations/migrate.lock +++ /dev/null @@ -1,6 +0,0 @@ -# Prisma Migrate lockfile v1 - -20201101183848-db-init -20201105184423-add-name-to-user -20201213004819-add-delete-on-part -20201227195638-add-subject-access-request-table \ No newline at end of file diff --git a/api/db/migrations/migration_lock.toml b/api/db/migrations/migration_lock.toml new file mode 100644 index 0000000..2cdb8f0 --- /dev/null +++ b/api/db/migrations/migration_lock.toml @@ -0,0 +1,2 @@ +# Please do not edit this file manually +provider = "postgresql" \ No newline at end of file diff --git a/api/db/schema.prisma b/api/db/schema.prisma index e8825da..2014cb5 100644 --- a/api/db/schema.prisma +++ b/api/db/schema.prisma @@ -1,5 +1,5 @@ datasource DS { - provider = ["sqlite", "postgresql"] + provider = "postgresql" url = env("DATABASE_URL") } diff --git a/api/db/seeds.js b/api/db/seed.js similarity index 98% rename from api/db/seeds.js rename to api/db/seed.js index 31d3730..9382735 100644 --- a/api/db/seeds.js +++ b/api/db/seed.js @@ -87,7 +87,7 @@ async function main() { - const aPart = await db.part.findOne({where: { + const aPart = await db.part.findUnique({where: { title_userId: { title: parts[0].title, userId: users[0].id, diff --git a/api/package.json b/api/package.json index 3ac686b..fd069ec 100644 --- a/api/package.json +++ b/api/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "private": true, "dependencies": { - "@redwoodjs/api": "^0.24.0", + "@redwoodjs/api": "^0.25.0", "cloudinary": "^1.23.0" } } diff --git a/api/src/functions/identity-signup.js b/api/src/functions/identity-signup.js index 361b195..7d772d0 100644 --- a/api/src/functions/identity-signup.js +++ b/api/src/functions/identity-signup.js @@ -59,7 +59,7 @@ export const handler = async (req, _context) => { if (eventType === 'signup') { roles.push('user') const isUniqueCallback = async (seed) => - db.user.findOne({ + db.user.findUnique({ where: { userName: seed }, }) const userNameSeed = enforceAlphaNumeric(user?.user_metadata?.userName) diff --git a/api/src/lib/auth.js b/api/src/lib/auth.js index cc3b24a..bab25b9 100644 --- a/api/src/lib/auth.js +++ b/api/src/lib/auth.js @@ -2,7 +2,7 @@ // to return a real user from your database, you could do something like: // // export const getCurrentUser = async ({ email }) => { -// return await db.user.findOne({ where: { email } }) +// return await db.user.findUnique({ where: { email } }) // } // // If you want to enforce role-based access ... @@ -67,7 +67,7 @@ import { AuthenticationError, ForbiddenError, parseJWT } from '@redwoodjs/api' * @example - No role-based access control. * * export const getCurrentUser = async (decoded) => { - * return await db.user.findOne({ where: { decoded.email } }) + * return await db.user.findUnique({ where: { decoded.email } }) * } * * @example - User info is contained in the decoded token and roles extracted @@ -79,7 +79,7 @@ import { AuthenticationError, ForbiddenError, parseJWT } from '@redwoodjs/api' * @example - User record query by email with namespaced app_metadata roles * * export const getCurrentUser = async (decoded) => { - * const currentUser = await db.user.findOne({ where: { email: decoded.email } }) + * const currentUser = await db.user.findUnique({ where: { email: decoded.email } }) * * return { * ...currentUser, @@ -90,7 +90,7 @@ import { AuthenticationError, ForbiddenError, parseJWT } from '@redwoodjs/api' * @example - User record query by an identity with app_metadata roles * * const getCurrentUser = async (decoded) => { - * const currentUser = await db.user.findOne({ where: { userIdentity: decoded.sub } }) + * const currentUser = await db.user.findUnique({ where: { userIdentity: decoded.sub } }) * return { * ...currentUser, * roles: parseJWT({ decoded: decoded }).roles, diff --git a/api/src/lib/owner.js b/api/src/lib/owner.js index dc60aff..e6b934e 100644 --- a/api/src/lib/owner.js +++ b/api/src/lib/owner.js @@ -21,7 +21,7 @@ export const requireOwnership = async ({ userId, userName, partId } = {}) => { } if (userName) { - const user = await db.user.findOne({ + const user = await db.user.findUnique({ where: { userName }, }) @@ -32,7 +32,7 @@ export const requireOwnership = async ({ userId, userName, partId } = {}) => { if (partId) { const user = await db.part - .findOne({ + .findUnique({ where: { id: partId }, }) .user() diff --git a/api/src/services/comments/comments.js b/api/src/services/comments/comments.js index 5c46fdf..1b4269f 100644 --- a/api/src/services/comments/comments.js +++ b/api/src/services/comments/comments.js @@ -6,7 +6,7 @@ export const comments = () => { } export const comment = ({ id }) => { - return db.comment.findOne({ + return db.comment.findUnique({ where: { id }, }) } @@ -32,7 +32,7 @@ export const deleteComment = ({ id }) => { export const Comment = { user: (_obj, { root }) => - db.comment.findOne({ where: { id: root.id } }).user(), + db.comment.findUnique({ where: { id: root.id } }).user(), part: (_obj, { root }) => - db.comment.findOne({ where: { id: root.id } }).part(), + db.comment.findUnique({ where: { id: root.id } }).part(), } diff --git a/api/src/services/partReactions/partReactions.js b/api/src/services/partReactions/partReactions.js index 6adac0f..a7388fe 100644 --- a/api/src/services/partReactions/partReactions.js +++ b/api/src/services/partReactions/partReactions.js @@ -10,7 +10,7 @@ export const partReactions = () => { } export const partReaction = ({ id }) => { - return db.partReaction.findOne({ + return db.partReaction.findUnique({ where: { id }, }) } @@ -62,7 +62,7 @@ export const deletePartReaction = ({ id }) => { export const PartReaction = { user: (_obj, { root }) => - db.partReaction.findOne({ where: { id: root.id } }).user(), + db.partReaction.findUnique({ where: { id: root.id } }).user(), part: (_obj, { root }) => - db.partReaction.findOne({ where: { id: root.id } }).part(), + db.partReaction.findUnique({ where: { id: root.id } }).part(), } diff --git a/api/src/services/parts/parts.js b/api/src/services/parts/parts.js index 0dcc19e..11e3953 100644 --- a/api/src/services/parts/parts.js +++ b/api/src/services/parts/parts.js @@ -23,17 +23,17 @@ export const parts = ({ userName }) => { } export const part = ({ id }) => { - return db.part.findOne({ + return db.part.findUnique({ where: { id }, }) } export const partByUserAndTitle = async ({ userName, partTitle }) => { - const user = await db.user.findOne({ + const user = await db.user.findUnique({ where: { userName, }, }) - return db.part.findOne({ + return db.part.findUnique({ where: { title_userId: { title: partTitle, @@ -54,7 +54,7 @@ export const forkPart = async ({ input }) => { // Only difference between create and fork part is that fork part will generate a unique title // (for the user) if there is a conflict const isUniqueCallback = async (seed) => - db.part.findOne({ + db.part.findUnique({ where: { title_userId: { title: seed, @@ -75,7 +75,7 @@ export const updatePart = async ({ id, input }) => { if (input.title) { input.title = enforceAlphaNumeric(input.title) } - const originalPart = await db.part.findOne({ where: { id } }) + const originalPart = await db.part.findUnique({ where: { id } }) const imageToDestroy = originalPart.mainImage !== input.mainImage && originalPart.mainImage const update = await db.part.update({ @@ -102,11 +102,12 @@ export const deletePart = async ({ id }) => { } export const Part = { - user: (_obj, { root }) => db.part.findOne({ where: { id: root.id } }).user(), + user: (_obj, { root }) => + db.part.findUnique({ where: { id: root.id } }).user(), Comment: (_obj, { root }) => - db.part.findOne({ where: { id: root.id } }).Comment(), + db.part.findUnique({ where: { id: root.id } }).Comment(), Reaction: (_obj, { root }) => db.part - .findOne({ where: { id: root.id } }) + .findUnique({ where: { id: root.id } }) .Reaction({ where: { userId: _obj.userId } }), } diff --git a/api/src/services/subjectAccessRequests/subjectAccessRequests.js b/api/src/services/subjectAccessRequests/subjectAccessRequests.js index 8776520..faf86be 100644 --- a/api/src/services/subjectAccessRequests/subjectAccessRequests.js +++ b/api/src/services/subjectAccessRequests/subjectAccessRequests.js @@ -9,7 +9,7 @@ export const subjectAccessRequests = () => { export const subjectAccessRequest = ({ id }) => { requireAuth({ role: 'admin' }) - return db.subjectAccessRequest.findOne({ + return db.subjectAccessRequest.findUnique({ where: { id }, }) } @@ -38,5 +38,5 @@ export const deleteSubjectAccessRequest = ({ id }) => { export const SubjectAccessRequest = { user: (_obj, { root }) => - db.subjectAccessRequest.findOne({ where: { id: root.id } }).user(), + db.subjectAccessRequest.findUnique({ where: { id: root.id } }).user(), } diff --git a/api/src/services/users/users.js b/api/src/services/users/users.js index 2cb0586..2e2e874 100644 --- a/api/src/services/users/users.js +++ b/api/src/services/users/users.js @@ -10,13 +10,13 @@ export const users = () => { } export const user = ({ id }) => { - return db.user.findOne({ + return db.user.findUnique({ where: { id }, }) } export const userName = ({ userName }) => { - return db.user.findOne({ + return db.user.findUnique({ where: { userName }, }) } @@ -51,7 +51,7 @@ export const updateUserByUserName = async ({ userName, input }) => { `You've tried to used a protected word as you userName, try something other than ` ) } - const originalPart = await db.user.findOne({ where: { userName } }) + const originalPart = await db.user.findUnique({ where: { userName } }) const imageToDestroy = originalPart.image !== input.image && originalPart.image const update = await db.user.update({ @@ -73,10 +73,11 @@ export const deleteUser = ({ id }) => { } export const User = { - Parts: (_obj, { root }) => db.user.findOne({ where: { id: root.id } }).Part(), + Parts: (_obj, { root }) => + db.user.findUnique({ where: { id: root.id } }).Part(), Part: (_obj, { root }) => _obj.partTitle && - db.part.findOne({ + db.part.findUnique({ where: { title_userId: { title: _obj.partTitle, @@ -85,9 +86,9 @@ export const User = { }, }), Reaction: (_obj, { root }) => - db.user.findOne({ where: { id: root.id } }).Reaction(), + db.user.findUnique({ where: { id: root.id } }).Reaction(), Comment: (_obj, { root }) => - db.user.findOne({ where: { id: root.id } }).Comment(), + db.user.findUnique({ where: { id: root.id } }).Comment(), SubjectAccessRequest: (_obj, { root }) => - db.user.findOne({ where: { id: root.id } }).SubjectAccessRequest(), + db.user.findUnique({ where: { id: root.id } }).SubjectAccessRequest(), } diff --git a/netlify.toml b/netlify.toml index a16d760..d7baac8 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,5 +1,5 @@ [build] -command = "yarn rw build && yarn rw db up --no-db-client --auto-approve && yarn rw dataMigrate up" +command = "yarn rw deploy netlify" publish = "web/dist" functions = "api/dist/functions" diff --git a/package.json b/package.json index a91600c..cee29f9 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { }, "devDependencies": { - "@redwoodjs/core": "^0.24.0" + "@redwoodjs/core": "^0.25.0" }, "eslintConfig": { "extends": "@redwoodjs/eslint-config" diff --git a/web/package.json b/web/package.json index 5bbe526..60784ed 100644 --- a/web/package.json +++ b/web/package.json @@ -14,10 +14,10 @@ }, "dependencies": { "@material-ui/core": "^4.11.0", - "@redwoodjs/auth": "^0.24.0", - "@redwoodjs/forms": "^0.24.0", - "@redwoodjs/router": "^0.24.0", - "@redwoodjs/web": "^0.24.0", + "@redwoodjs/auth": "^0.25.0", + "@redwoodjs/forms": "^0.25.0", + "@redwoodjs/router": "^0.25.0", + "@redwoodjs/web": "^0.25.0", "cloudinary-react": "^1.6.7", "controlkit": "^0.1.9", "get-active-classes": "^0.0.11", diff --git a/yarn.lock b/yarn.lock index 2e97589..006023c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2160,71 +2160,65 @@ schema-utils "^2.6.5" source-map "^0.7.3" -"@prisma/bar@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@prisma/bar/-/bar-0.0.1.tgz#088c4fbbb79c588391437ade9fd3a85527e753b3" - integrity sha512-FVLhwVkbfhXlBhroWfIXMLi+3Jh9IEzYp+9z+MUUiw3ZsbcoAil7CN9/QIjHc4/TcCRyRfuSmT7qCnn4O+TjJw== - -"@prisma/cli@2.12.1": - version "2.12.1" - resolved "https://registry.yarnpkg.com/@prisma/cli/-/cli-2.12.1.tgz#1f52ab2a363ae4cc88d4d18933bd304ed7f80612" - integrity sha512-obkwK95dEeifCdVehG0rS0BlPQGLsOtc9U1MgbrjNX3MnhXQdwROnvymfPB3DBlNyoLoHGklPgi9UlwBokNXcQ== +"@prisma/cli@2.16.1": + version "2.16.1" + resolved "https://registry.yarnpkg.com/@prisma/cli/-/cli-2.16.1.tgz#28a849c3e793472857fe123c48bfb038f7e80362" + integrity sha512-nVw8gs+o6bZ1CbaYzKmPcy2I4MJcP7FW7/4PkLgvy9v3/EWd9CKfSUX9b6cMq3uK9Jxa5kTejwNQkLHnihzxrg== dependencies: - "@prisma/bar" "^0.0.1" - "@prisma/engines" "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58" + "@prisma/engines" "2.16.1-1.8b74ad57aaf2cc6c155f382a18a8e3ba95aceb03" -"@prisma/client@2.12.1": - version "2.12.1" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-2.12.1.tgz#ff655c9cc1188035303f374d2f9f794b66fc18c7" - integrity sha512-HP4/E9sRdxw/FB7XP4EeRa5ri8Lp1U/L7G4VAA95aM8C+8ARioQHMNDpEjC83NrOrOr4EcaZV5pXDDQL1H+F0g== +"@prisma/client@2.16.1": + version "2.16.1" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-2.16.1.tgz#3aed1506f4090734735d1036bfdaee997032e793" + integrity sha512-g4zXwC9PRtlrad/CBu+lXHRhvkEz4QW9tDn7bJGwCVNeLi+gLzSbEHjo3xLZgI3+Jp+40flOzrJrYP0bkNCpdQ== dependencies: - "@prisma/engines-version" "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58" + "@prisma/engines-version" "2.16.1-1.8b74ad57aaf2cc6c155f382a18a8e3ba95aceb03" -"@prisma/debug@2.12.1": - version "2.12.1" - resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-2.12.1.tgz#a45bafc142c0952c9c5f288f73e15e83d06138c9" - integrity sha512-ke4ZOvWZffATjG7Z2Ksxhig6RU7El1YXZOquds3847Rq1/kTq0mp3NFPZuxnv1xq8XDpuKe5Op4tYnzsKibWyw== +"@prisma/debug@2.16.1": + version "2.16.1" + resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-2.16.1.tgz#a9397581179a2535525c5db776644f4d69a655ad" + integrity sha512-GdkEHBpudTqeT/az/pHHmwG7aCcZFlVubwkLcRjABT3RlqHKDPDU2rkFAeFX4YW50YvE1fcG3d2uWsCRqqmmug== dependencies: - debug "^4.1.1" + debug "4.3.2" + ms "^2.1.3" -"@prisma/engine-core@2.12.1": - version "2.12.1" - resolved "https://registry.yarnpkg.com/@prisma/engine-core/-/engine-core-2.12.1.tgz#01653634af785d82469d4e6260e7784cc92f7416" - integrity sha512-7zl9X7rn5HQ7s3oR5T2kAP4nuIrIEFA1l8TkEas2XAnItlP9yTjy5q/CsHhP3Z4MW8XQseZSL6pHHD5g2YZ5CQ== +"@prisma/engine-core@2.16.1": + version "2.16.1" + resolved "https://registry.yarnpkg.com/@prisma/engine-core/-/engine-core-2.16.1.tgz#1eee48da2c84c1b4ba81ef763e81a9308b170244" + integrity sha512-ns3/AuIxlia7UQRzqmhfO+u1Gi83qqLAf8RCrNdrdPttRT7SoqFvCNooyJMEZatht1fpxIpuD3qxuZZgwoEAxg== dependencies: - "@prisma/debug" "2.12.1" - "@prisma/engines" "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58" - "@prisma/generator-helper" "2.12.1" - "@prisma/get-platform" "2.12.1" + "@prisma/debug" "2.16.1" + "@prisma/engines" "2.16.1-1.8b74ad57aaf2cc6c155f382a18a8e3ba95aceb03" + "@prisma/generator-helper" "2.16.1" + "@prisma/get-platform" "2.16.1" chalk "^4.0.0" - cross-fetch "^3.0.4" - execa "^4.0.2" + execa "^5.0.0" get-stream "^6.0.0" indent-string "^4.0.0" new-github-issue-url "^0.2.1" p-retry "^4.2.0" terminal-link "^2.1.1" - undici "2.2.0" + undici "3.2.0" -"@prisma/engines-version@2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58": - version "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58.tgz#428f8996f88c92a4142e35f196584a5e17c95871" - integrity sha512-IHb/Jag1Wmoq5tLZhOHP5zqLHEXqQEfrHb6l0drIBSvh2AF7yWQ3yyuD0ZEb1Nq37SvbBgop5wrWMOU8YWFTGQ== +"@prisma/engines-version@2.16.1-1.8b74ad57aaf2cc6c155f382a18a8e3ba95aceb03": + version "2.16.1-1.8b74ad57aaf2cc6c155f382a18a8e3ba95aceb03" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-2.16.1-1.8b74ad57aaf2cc6c155f382a18a8e3ba95aceb03.tgz#52c026a05f6c109dd642c1edcc60ca45b01021ca" + integrity sha512-BkqxSWOc9aNYXjtmRtaLy2fKIeJ3+NKimRL1gKWXMjtxhKS5E3wvyxwZamtfIpEaZELGAO3x5+gqwoR9kS2oZA== -"@prisma/engines@2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58": - version "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58.tgz#0e23c811cfa2f58650bb3c04394b1ac0d9dac78a" - integrity sha512-F6RmUZ5JpPWxmGvVDji8c4gepHIGkvYbtuFi0IoDDJVaCVo8yS656stciKFyswI6/BLWXa0X47/MIMbz6nzw7g== +"@prisma/engines@2.16.1-1.8b74ad57aaf2cc6c155f382a18a8e3ba95aceb03": + version "2.16.1-1.8b74ad57aaf2cc6c155f382a18a8e3ba95aceb03" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-2.16.1-1.8b74ad57aaf2cc6c155f382a18a8e3ba95aceb03.tgz#38f64337f6ad2ab9e13e7e2bac54286a79d2edfa" + integrity sha512-GZ1huP5KC6TPf9u8pYGFklUkGVTKFel6k4wL4iMr8AQ6MeSV4GDJX3lEtEJLb0ayj6je/hDEyQG9iMp/BysFYg== -"@prisma/fetch-engine@2.12.1": - version "2.12.1" - resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-2.12.1.tgz#884c646c22bd0757a867b0de509509ae7a3d6d99" - integrity sha512-huJS0uvkSUsnEU6CUrUfpgU9Z7PR3UlzJ9wbypk4hWtiMhfuoq2yU0ca2NxEpAhgHpSlERiLsZjBA8SlWw9WpQ== +"@prisma/fetch-engine@2.16.1": + version "2.16.1" + resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-2.16.1.tgz#d6359e50f8bddf6497ac4dcac22adb93f2fb70a3" + integrity sha512-f1mDu3dKYPZrerkn9qDUStoMJnvLN3rz5abNZ5OJIfLmpBzfLOugz14TcM+ONDNlAzhuFre0v1ICQqNQsPDzhw== dependencies: - "@prisma/debug" "2.12.1" - "@prisma/get-platform" "2.12.1" + "@prisma/debug" "2.16.1" + "@prisma/get-platform" "2.16.1" chalk "^4.0.0" - execa "^4.0.0" + execa "^5.0.0" find-cache-dir "^3.3.1" hasha "^5.2.0" http-proxy-agent "^4.0.1" @@ -2233,51 +2227,50 @@ node-fetch "^2.6.0" p-filter "^2.1.0" p-map "^4.0.0" - p-queue "^6.4.0" p-retry "^4.2.0" progress "^2.0.3" rimraf "^3.0.2" temp-dir "^2.0.0" tempy "^1.0.0" -"@prisma/generator-helper@2.12.1": - version "2.12.1" - resolved "https://registry.yarnpkg.com/@prisma/generator-helper/-/generator-helper-2.12.1.tgz#b9c96d041b62c6d0c9474a889e8d93b130218c83" - integrity sha512-sqZcT6Lnb1xaogy1LVu/gnqrth71V/5hbw5wCXZ/3qeoSNdSmpcBJvfwXzmQ9R50K+tHVA1lZKfGyRlgYnhGUQ== +"@prisma/generator-helper@2.16.1": + version "2.16.1" + resolved "https://registry.yarnpkg.com/@prisma/generator-helper/-/generator-helper-2.16.1.tgz#fdae2a80c1999250b339a73712de9dc050f234c5" + integrity sha512-HXXD5AI6IUu+O0tkrm9QvNgbXkCHzU/qdpHsS/nSqdabyPXqSi8uC+9CWJD0lyEpK51fL5dGrnZ7du4O3NNSgg== dependencies: - "@prisma/debug" "2.12.1" + "@prisma/debug" "2.16.1" "@types/cross-spawn" "^6.0.1" chalk "^4.0.0" cross-spawn "^7.0.2" -"@prisma/get-platform@2.12.1": - version "2.12.1" - resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-2.12.1.tgz#c47115feffb130c2f654f6a5bd9cc4e1cc8a3c9d" - integrity sha512-bYTKvTgdbYXtNEZnaAUOdr0twiYNrtadDCGAc1YBwSCQ+P0cNmkrtn+EUwt0ZijCtKYZ1uLC6UAM0y7uxf1s6w== +"@prisma/get-platform@2.16.1": + version "2.16.1" + resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-2.16.1.tgz#2542830d1b90cf3647aa37141baa296da0ca7e96" + integrity sha512-VREZXBcNxM7QMO11ubd2BvBZtHp5z60T7VwwdkELmHLpda6cN+pKGyBly77ALeSlu/Z2BEAuL4FqGqjoDoUIjw== dependencies: - "@prisma/debug" "2.12.1" + "@prisma/debug" "2.16.1" -"@prisma/sdk@2.12.1": - version "2.12.1" - resolved "https://registry.yarnpkg.com/@prisma/sdk/-/sdk-2.12.1.tgz#20b603b668318b4f4defe21a114df20d5a6a3f77" - integrity sha512-1/BokOdZU11lyOSaLhnmXnfY4c6JVLGFXWVfohIiPgemqbjUPvhbk7DpZYDOeNBozlLHIlzXYbU7Kdmwy7nsJQ== +"@prisma/sdk@2.16.1": + version "2.16.1" + resolved "https://registry.yarnpkg.com/@prisma/sdk/-/sdk-2.16.1.tgz#a8e196b595a3ef5eb2cdd7de485608bae84ee6e7" + integrity sha512-hSTLSWcyLW2luV2M+YGFdohDvRp0xMrruYU8kU1/5hdt4KTWJc02H+2vSmmgG079ZyCQ/f9n1v2WD7SRlEuW1w== dependencies: - "@prisma/debug" "2.12.1" - "@prisma/engine-core" "2.12.1" - "@prisma/engines" "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58" - "@prisma/fetch-engine" "2.12.1" - "@prisma/generator-helper" "2.12.1" - "@prisma/get-platform" "2.12.1" + "@prisma/debug" "2.16.1" + "@prisma/engine-core" "2.16.1" + "@prisma/engines" "2.16.1-1.8b74ad57aaf2cc6c155f382a18a8e3ba95aceb03" + "@prisma/fetch-engine" "2.16.1" + "@prisma/generator-helper" "2.16.1" + "@prisma/get-platform" "2.16.1" "@timsuchanek/copy" "^1.4.5" archiver "^4.0.0" arg "^5.0.0" chalk "4.1.0" - checkpoint-client "1.1.14" + checkpoint-client "1.1.18" cli-truncate "^2.1.0" dotenv "^8.2.0" - execa "^4.0.0" + execa "^5.0.0" find-up "5.0.0" - global-dirs "^2.0.1" + global-dirs "^3.0.0" globby "^11.0.0" has-yarn "^2.1.0" is-ci "^2.0.0" @@ -2361,14 +2354,14 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" -"@redwoodjs/api@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/api/-/api-0.24.0.tgz#4a4836ae8b93570f3e98b4a96419f468f1c0747f" - integrity sha512-ER7zywk2MQpXvRdTiXX0vOCmwXSS1Rmn6/47ZFljnh02RYPKd9ZD5SMwnBY4pNP9YlAWIFeUCeCrQtsQglGAVQ== +"@redwoodjs/api@^0.25.0": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/api/-/api-0.25.1.tgz#8069c11a6030c5d663c49eb851f1faa19a7ff691" + integrity sha512-QBXAPQOMusze88unscj4ZBvilXlM4ty/A3rnKcLHqlkXvIB5kUP9RYCsAqnGfa+SHcQqK23FMC1PlQSJIw0SeQ== dependencies: "@graphql-tools/merge" "^6.2.4" - "@prisma/client" "2.12.1" - "@redwoodjs/internal" "^0.24.0" + "@prisma/client" "2.16.1" + "@redwoodjs/internal" "^0.25.1" apollo-server-lambda "2.18.2" core-js "3.6.5" graphql "^15.3.0" @@ -2379,19 +2372,19 @@ lodash.merge "^4.6.2" lodash.omitby "^4.6.0" -"@redwoodjs/auth@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/auth/-/auth-0.24.0.tgz#9cdbe56cb562d783d37a68fa2475d41573d54e67" - integrity sha512-37Eq686kMe7q82Pnak0sDMOlrO+M7HegRZ3q8GNLfSv9sek291hs6r6igsL5B4zWUG9mFN2rPCU427FzxpsVCw== +"@redwoodjs/auth@^0.25.0", "@redwoodjs/auth@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/auth/-/auth-0.25.1.tgz#217c9bdbafc71f3f131371f038e7633c52db06de" + integrity sha512-mTUSWAj9ENa9jp6bdg03cQ3pu/c6mWwiLqLlcr6oGh2TA2YPVRBA+Yucb7TYedGLSL89xm9iy95kMhlM4gFy4Q== -"@redwoodjs/cli@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/cli/-/cli-0.24.0.tgz#ee135f68709d6223e4ddd93d6d8bbeeeb602ca89" - integrity sha512-tEnR8qVaAX5Qug74aqzEu8cdgeoL9DWY9R7pZ+3fncq52Fiwo0ZKTIXtMV0vBvHgsz1R1SjpVozhsWvTcNzcvQ== +"@redwoodjs/cli@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/cli/-/cli-0.25.1.tgz#3a5bf48641e5506c43aa4f925105bc9449ee6e99" + integrity sha512-WBfjz7+6uRyVQ1Q/fvlh3+fyN2zRFhn4z4vyevZC6dPkR4AP51oZmaHUIkS2/lsKBfWTv+7niveteZuhwzKB9A== dependencies: - "@prisma/sdk" "2.12.1" - "@redwoodjs/internal" "^0.24.0" - "@redwoodjs/structure" "^0.24.0" + "@prisma/sdk" "2.16.1" + "@redwoodjs/internal" "^0.25.1" + "@redwoodjs/structure" "^0.25.1" boxen "^4.2.0" camelcase "^6.0.0" chalk "^4.1.0" @@ -2414,10 +2407,10 @@ terminal-link "^2.1.1" yargs "^16.0.3" -"@redwoodjs/core@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/core/-/core-0.24.0.tgz#026b12981ac4734b03f02a9b8532d965531906bb" - integrity sha512-KZWdMcaiEYE0YC+j4luh0YQcVqlznUPk4ICgYDRjptOwZEAwhFhpwxuImyNViNeGPOfJbpmVCkqYD3Cw6ka3uQ== +"@redwoodjs/core@^0.25.0": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/core/-/core-0.25.1.tgz#f0007155faf8b74d6a1d17a48e67ac9f8a5ac8b4" + integrity sha512-h4cTL8mga7Z6OlBwL2uVlgz0fyEQMCr94I2cUezOdYseGO2JTRgIs8PHgg8S1Vr5FZ809kPVJXrtDnXjV3+pYg== dependencies: "@babel/cli" "^7.11.6" "@babel/core" "^7.11.6" @@ -2429,12 +2422,12 @@ "@babel/preset-typescript" "^7.10.4" "@babel/runtime-corejs3" "^7.11.2" "@pmmmwh/react-refresh-webpack-plugin" "^0.4.3" - "@prisma/cli" "2.12.1" - "@redwoodjs/cli" "^0.24.0" - "@redwoodjs/dev-server" "^0.24.0" - "@redwoodjs/eslint-config" "^0.24.0" - "@redwoodjs/internal" "^0.24.0" - "@redwoodjs/testing" "^0.24.0" + "@prisma/cli" "2.16.1" + "@redwoodjs/cli" "^0.25.1" + "@redwoodjs/dev-server" "^0.25.1" + "@redwoodjs/eslint-config" "^0.25.1" + "@redwoodjs/internal" "^0.25.1" + "@redwoodjs/testing" "^0.25.1" "@storybook/react" "^5.3.19" "@testing-library/jest-dom" "5.11.6" "@types/jest" "^26.0.10" @@ -2475,13 +2468,13 @@ webpack-retry-chunk-load-plugin "^1.4.0" whatwg-fetch "^3.5.0" -"@redwoodjs/dev-server@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/dev-server/-/dev-server-0.24.0.tgz#8ef059745efabc4c2bb00f150097429fd5075b77" - integrity sha512-M0VwQl6dx/u7iWvqznyF2k7+nYB8lvPcCG8rWV7pjtU9tRADdnZ7zptnyerqIhqGJA8WMnaDSK9ZaqUuVaX3CQ== +"@redwoodjs/dev-server@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/dev-server/-/dev-server-0.25.1.tgz#ee102508368003ebbb36f81ec9b13baf1a63b7ea" + integrity sha512-ss9foWSbxtY4ECyXW4fZHh61WNKuhdyQzcGZpCwnQuiXj88U1F8ktgKmAIM3xALFtw539CSVNmKnnO+T3WF8jw== dependencies: "@babel/register" "^7.9.0" - "@redwoodjs/internal" "^0.24.0" + "@redwoodjs/internal" "^0.25.1" body-parser "^1.19.0" chokidar "^3.4.3" express "^4.17.1" @@ -2492,12 +2485,12 @@ youch "^2.1.1" youch-terminal "^1.0.1" -"@redwoodjs/eslint-config@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/eslint-config/-/eslint-config-0.24.0.tgz#4dd5b2e2fa93f5337ec456806cf83d2de0c11cd0" - integrity sha512-qiTULqRf3YXkymSKojaNN0Flw5YU9UpumW8pEui90e58okoLPpdnlklnehLcE3J/jKHQw4oPvxFau2H6aU9h+A== +"@redwoodjs/eslint-config@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/eslint-config/-/eslint-config-0.25.1.tgz#8b26a815f21006ad72c46b0123a1065700bdf5d9" + integrity sha512-NMw3M2iPRqq9oAdbjbxhg0mSzhaUfXBs92YStxv7EcE2zP3lP4UBpL6dEGJcOi/g1IMcM7W73d9On+CiwH6cGA== dependencies: - "@redwoodjs/eslint-plugin-redwood" "^0.24.0" + "@redwoodjs/eslint-plugin-redwood" "^0.25.1" "@typescript-eslint/eslint-plugin" "^4.0.1" "@typescript-eslint/parser" "^4.0.1" babel-eslint "^10.1.0" @@ -2513,25 +2506,25 @@ eslint-plugin-react-hooks "^4.1.0" prettier "^2.1.1" -"@redwoodjs/eslint-plugin-redwood@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/eslint-plugin-redwood/-/eslint-plugin-redwood-0.24.0.tgz#571c9222ab3f00a6ba0716f48934f74708ed2441" - integrity sha512-WhhebCYDHHQl6l6H9wyAxyV2qpyUXbPzzKlPBHpsV4dGfRvFFjH1LJVc2ofn8amWJ77lhqdRmuH15dWbL2GJpQ== +"@redwoodjs/eslint-plugin-redwood@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/eslint-plugin-redwood/-/eslint-plugin-redwood-0.25.1.tgz#590946a627bc878412ed9fffa95cd410da04fafd" + integrity sha512-/4KUfjY5eObKoh42RYpk9YEr9Z1+WSmo7oS3UDJtRAzj9MfKYiJUog0onay3YI0/ZQloBNRyVNuyLX70uVruVA== -"@redwoodjs/forms@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/forms/-/forms-0.24.0.tgz#b76c4924b45772895c44f6803de22d1bf7a21fa4" - integrity sha512-WMVr9dPBl2iUysUGXLMKT5Rd9yXsjveIqKhvJzFmnF+1OOL9bjUUYW0+kDMLHdTMzjnsq/Z3qa75yc5qhsYWcg== +"@redwoodjs/forms@^0.25.0": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/forms/-/forms-0.25.1.tgz#f87c999e3b56957ec30b7a2ac49171dc3a96d8e2" + integrity sha512-pMQmIkq4OwiC1fIIy2Jen86yRt+iGOfiaSPNxXkO8jca34Ns9NfIZNCghj58S04KQjE0/2U76j+c3PaxkGZ4Hg== dependencies: "@types/pascalcase" "^1.0.0" core-js "3.6.5" pascalcase "1.0.0" react-hook-form "^6.9.5" -"@redwoodjs/internal@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/internal/-/internal-0.24.0.tgz#d4986781ffafa96e81c2245b0445e6c9a81321de" - integrity sha512-nRTw5Z57im+hkljOJ0n8fi32wijRG/iyU7+JvqnqZ3vV0NZhoNigA/EVXA31b1VANW0QfPQatZQrJKxgNBb45Q== +"@redwoodjs/internal@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/internal/-/internal-0.25.1.tgz#5f79bf23d7132ae83d9a087d81376d27df259534" + integrity sha512-VWHbbEwDR7djU2iFtFmapK+OqouNDlNerDsiUtHAL/j9gEuElORnSB7hfQtvsHCdBUqKgILShBHVqpWXxDtklQ== dependencies: deepmerge "^4.2.2" findup-sync "^4.0.0" @@ -2539,22 +2532,22 @@ kill-port "^1.6.1" toml "^3.0.0" -"@redwoodjs/router@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/router/-/router-0.24.0.tgz#a3c97f03075d610de381230699b8d8a81bb363c5" - integrity sha512-IDY2cKfd2hfry5BKfwyiu5c6Wppn5Twf4Iz2Y9T6a2+YLo9hJ8Su3yIjWHf4A15Qzpy4WGlgIKy2797qxd0yhQ== +"@redwoodjs/router@^0.25.0", "@redwoodjs/router@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/router/-/router-0.25.1.tgz#f1fb7b151b1762abc2f19b1ef47c5611fbf0c59b" + integrity sha512-nrkYmVAj5cSl1JTxe7Lu/xU6pJBqVtZy1yHdftJHS3HMhWyE5fpMc7gPkrqKom2bMvEbM+ypdaZPEgjTFPpHIw== dependencies: - "@redwoodjs/auth" "^0.24.0" + "@redwoodjs/auth" "^0.25.1" core-js "3.6.5" lodash.isequal "^4.5.0" -"@redwoodjs/structure@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/structure/-/structure-0.24.0.tgz#358f1bd35d54d2b59a4c41e480ab054cd2ce02b5" - integrity sha512-psclGk0vSGCyc1crwOWL1GfP6l0dHXberODNEBYrL/JkGac+PUbhRRALUHI3xGces11Qa9c80m0ZLZkmSfvqpA== +"@redwoodjs/structure@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/structure/-/structure-0.25.1.tgz#49bd3d4591e98b3a8f31d9f9bf9c67d442c0a2da" + integrity sha512-BYuGycUVSZ3M7ZlpK5Yd76YkEuRhM/qNhHf/0GXbvveQBVgrpNy1CKfHalagECI6f9818DdMIUmiM6+8zXHmbw== dependencies: - "@prisma/sdk" "2.12.1" - "@redwoodjs/internal" "^0.24.0" + "@prisma/sdk" "2.16.1" + "@redwoodjs/internal" "^0.25.1" "@types/line-column" "^1.0.0" camelcase "^6.0.0" deepmerge "^4.2.2" @@ -2575,23 +2568,23 @@ vscode-languageserver-types "^3.15.1" yargs-parser "^18.1.3" -"@redwoodjs/testing@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/testing/-/testing-0.24.0.tgz#97cfcee74ca8b22f6f47f41d4fefd93a16cda16e" - integrity sha512-j+pmUOlVmAUYoanbhCDkHQZdWC+g+5COR2Dsxb5ID+l704cydP22DV1GgAI/4NjyG8PUZLZpNnmg0LC8BYKmGw== +"@redwoodjs/testing@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/testing/-/testing-0.25.1.tgz#fa5dae465171a1af07567d7b134dbf7946fd6f03" + integrity sha512-V0iPPid+UM+0TOxduqqpR5bQRJxcWw1AVQ5hfpOeM73Aj8L0xfrAm3iEy8qGWm/NQw6Ip044531RTi2s7Vsqtw== dependencies: - "@redwoodjs/auth" "^0.24.0" - "@redwoodjs/internal" "^0.24.0" - "@redwoodjs/router" "^0.24.0" - "@redwoodjs/web" "^0.24.0" + "@redwoodjs/auth" "^0.25.1" + "@redwoodjs/internal" "^0.25.1" + "@redwoodjs/router" "^0.25.1" + "@redwoodjs/web" "^0.25.1" "@testing-library/react" "11.2.2" "@types/react" "16.9.53" msw "^0.21.2" -"@redwoodjs/web@^0.24.0": - version "0.24.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/web/-/web-0.24.0.tgz#225412abb2f47cab61a0f6a9dbf60f47d0780b7d" - integrity sha512-6ScBQZrj5P2gPT+rvnjs+JNfCoSbRcIUv01Bd9hF0On2LVVG2kYzu8djxkg3b4U8TjdBUGr/Of1JhOs0bWqqJA== +"@redwoodjs/web@^0.25.0", "@redwoodjs/web@^0.25.1": + version "0.25.1" + resolved "https://registry.yarnpkg.com/@redwoodjs/web/-/web-0.25.1.tgz#0194b01e5271e7c961ef0f90a60ae8eec54c4e44" + integrity sha512-ZMS86k3NUmC//WWRjm+TT5kFzCGlvJBhkr3ADKWc1glEttAmLg/4fn/T/Qgjkykqqy2BzoEgD9G5pIutRFiHqw== dependencies: "@apollo/client" "^3.2.5" "@types/react" "16.9.53" @@ -5763,13 +5756,12 @@ check-types@^8.0.3: resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== -checkpoint-client@1.1.14: - version "1.1.14" - resolved "https://registry.yarnpkg.com/checkpoint-client/-/checkpoint-client-1.1.14.tgz#45d58ae4f9d24c029fb35f5afc8cd6cacfed4e36" - integrity sha512-/3wj7LeYK/J/e4pF+WG1JNpRZ3GggoXelgdY8I4VSzmlrlRUe9vJhJQySqYdVrCGe7O6VlfJ1GVlnmw7p8XAKg== +checkpoint-client@1.1.18: + version "1.1.18" + resolved "https://registry.yarnpkg.com/checkpoint-client/-/checkpoint-client-1.1.18.tgz#7ce9d0fe3601393603235fb514334cc5dc4cbcf8" + integrity sha512-tTvUGOs/0Hncjq3Ko9h9Yx8facRrMpKsYXDBo7vSkl+sFKL7bxU56rQektBeEK7WcaLzGNmP2UfRfWar5P9qXA== dependencies: ci-info "2.0.0" - cross-spawn "7.0.3" env-paths "2.2.0" fast-write-atomic "0.2.1" make-dir "3.1.0" @@ -6457,13 +6449,6 @@ cross-fetch@3.0.6: dependencies: node-fetch "2.6.1" -cross-fetch@^3.0.4: - version "3.0.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.5.tgz#2739d2981892e7ab488a7ad03b92df2816e03f4c" - integrity sha512-FFLcLtraisj5eteosnX1gf01qYDCOc4fDy0+euOt8Kn9YBY2NtXL/pCoYPavw24NIQkQqm5ZOLsGD5Zzj0gyew== - dependencies: - node-fetch "2.6.0" - cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -6475,7 +6460,7 @@ cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -6757,6 +6742,13 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + debug@=3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -7781,7 +7773,7 @@ eventemitter3@^3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== -eventemitter3@^4.0.0, eventemitter3@^4.0.4: +eventemitter3@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== @@ -7824,7 +7816,7 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^4.0.0, execa@^4.0.2: +execa@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== @@ -7854,6 +7846,21 @@ execa@^4.1.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -8648,12 +8655,12 @@ glob@7.1.6, glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glo once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== dependencies: - ini "^1.3.5" + ini "2.0.0" global-modules@2.0.0, global-modules@^2.0.0: version "2.0.0" @@ -9275,6 +9282,11 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + humanize-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/humanize-string/-/humanize-string-2.1.0.tgz#a7d7062e5e514e04f072607ded0df853be8a1f2f" @@ -9449,6 +9461,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + ini@^1.3.4, ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" @@ -11702,6 +11719,11 @@ ms@2.1.2, ms@^2.1.1, ms@^2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + msw@^0.21.2: version "0.21.3" resolved "https://registry.yarnpkg.com/msw/-/msw-0.21.3.tgz#d073842f9570a08f4041806a2c7303a9b8494602" @@ -11853,11 +11875,6 @@ node-environment-flags@^1.0.5: object.getownpropertydescriptors "^2.0.3" semver "^5.7.0" -node-fetch@2.6.0, node-fetch@^2.1.2, node-fetch@^2.2.0, node-fetch@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - node-fetch@2.6.1, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" @@ -11871,6 +11888,11 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-fetch@^2.1.2, node-fetch@^2.2.0, node-fetch@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + node-forge@0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" @@ -12000,7 +12022,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -12198,6 +12220,13 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + open@^6.3.0: version "6.4.0" resolved "https://registry.yarnpkg.com/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" @@ -12389,14 +12418,6 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" -p-queue@^6.4.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.0.tgz#263f2b73add4cefca81d8d6b2696ee74b326de2f" - integrity sha512-zPHXPNy9jZsiym0PpJjvnHQysx1fSd/QdaNVwiDRLU2KFChD6h9CkCB6b8i3U8lBwJyA+mHgNZCzcy77glUssQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.1.0" - p-retry@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" @@ -12412,13 +12433,6 @@ p-retry@^4.2.0: "@types/retry" "^0.12.0" retry "^0.12.0" -p-timeout@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -14507,7 +14521,7 @@ side-channel@^1.0.2: es-abstract "^1.17.0-next.1" object-inspect "^1.7.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -15784,10 +15798,10 @@ unc-path-regex@^0.1.2: resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= -undici@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-2.2.0.tgz#ffef206ffb44f0db1f4013d9c1fc5a89dddf8c9c" - integrity sha512-pNts1nTVW1e9rOFGXdueH28FGYZz2TdeuQtJSzcto95bx7HQCegmJr+A+51fW+XU2ZNE4vZlzI7VnfKHuALitQ== +undici@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-3.2.0.tgz#62ef2336f25d965f321ac799db784ebeb8313ece" + integrity sha512-lBvV7jZirNtDbDmnDJTLbfFDJO6VDav76XRqILfeERlSnAWeYn5pAo6JdPc7OM55RiBZdsh8ucRG9TNfDrDnhg== unfetch@^4.1.0: version "4.1.0"