diff --git a/actions/chat/get-chat-conversations.ts b/actions/chat/get-chat-conversations.ts index 370f5893..d57cd421 100644 --- a/actions/chat/get-chat-conversations.ts +++ b/actions/chat/get-chat-conversations.ts @@ -66,6 +66,7 @@ export const getChatConversations = async ({ sharedConversationId }: GetChatConv user: true, messages: { orderBy: { createdAt: 'asc' }, + include: { feedback: true }, }, }, }); diff --git a/app/(chat)/(routes)/chat/[[...slug]]/_components/chat-main/chat-bubble.tsx b/app/(chat)/(routes)/chat/[[...slug]]/_components/chat-main/chat-bubble.tsx index 35f23e17..cc991d28 100644 --- a/app/(chat)/(routes)/chat/[[...slug]]/_components/chat-main/chat-bubble.tsx +++ b/app/(chat)/(routes)/chat/[[...slug]]/_components/chat-main/chat-bubble.tsx @@ -8,10 +8,18 @@ import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui'; import { ChatCompletionRole } from '@/constants/open-ai'; import { getFallbackName } from '@/lib/utils'; +import { ChatFeedback } from './chat-feedback'; + type ChatBubbleProps = { isShared?: boolean; isSubmitting?: boolean; - message: { role: string; content: string; model?: string }; + message: { + role: string; + content: string; + model?: string; + id?: string; + feedback?: { feedback: string } | null; + }; name: string; picture?: string | null; streamMessage?: string; @@ -50,8 +58,9 @@ export const ChatBubble = ({ {isAssistant && !isSubmitting && ( -
+
+
)}
diff --git a/app/(chat)/(routes)/chat/[[...slug]]/_components/chat-main/chat-feedback.tsx b/app/(chat)/(routes)/chat/[[...slug]]/_components/chat-main/chat-feedback.tsx new file mode 100644 index 00000000..0cb7e266 --- /dev/null +++ b/app/(chat)/(routes)/chat/[[...slug]]/_components/chat-main/chat-feedback.tsx @@ -0,0 +1,104 @@ +'use client'; + +import { ChatMessage } from '@prisma/client'; +import { ThumbsDown, ThumbsUp } from 'lucide-react'; +import { SyntheticEvent, useState } from 'react'; + +import { useToast } from '@/components/ui/use-toast'; +import { useChatStore } from '@/hooks/store/use-chat-store'; +import { fetcher } from '@/lib/fetcher'; +import { cn } from '@/lib/utils'; + +const enum Feedback { + POSITIVE = 'positive', + NEGATIVE = 'negative', +} + +type ChatFeedback = { + className?: string; + disabled?: boolean; + messageId?: string; + state?: string | null; +}; + +export const ChatFeedback = ({ className, disabled, messageId, state }: ChatFeedback) => { + const { toast } = useToast(); + + const { chatMessages, setChatMessages } = useChatStore((state) => ({ + chatMessages: state.chatMessages, + setChatMessages: state.setChatMessages, + })); + + const [isFetching, setIsFetching] = useState(false); + const [clicked, setClicked] = useState({ + [Feedback.POSITIVE]: false, + [Feedback.NEGATIVE]: false, + }); + + const handleClick = async (event: SyntheticEvent & { currentTarget: { name: string } }) => { + const feedback = event.currentTarget.name; + + setClicked((prev) => ({ ...prev, [feedback]: true })); + + setTimeout(() => { + setClicked((prev) => ({ ...prev, [feedback]: false })); + }, 1000); + + setIsFetching(true); + + try { + const response = await fetcher.post('/api/chat/feedback', { + responseType: 'json', + body: { messageId, feedback }, + }); + + const conversationId = response.message.conversationId; + + const updatedChatMessages = { + ...chatMessages, + [conversationId]: chatMessages[conversationId].map((message) => + message.id === messageId + ? { + ...message, + feedback: { + ...(message as ChatMessage & { feedback: ChatFeedback })?.feedback, + feedback: response.feedback, + }, + } + : message, + ), + }; + + setChatMessages(updatedChatMessages); + } catch (error) { + toast({ isError: true }); + } finally { + setIsFetching(false); + } + }; + + return ( +
+ + +
+ ); +}; diff --git a/app/api/chat/feedback/route.ts b/app/api/chat/feedback/route.ts new file mode 100644 index 00000000..f12c68db --- /dev/null +++ b/app/api/chat/feedback/route.ts @@ -0,0 +1,39 @@ +import { ReasonPhrases, StatusCodes } from 'http-status-codes'; +import { NextRequest, NextResponse } from 'next/server'; + +import { getCurrentUser } from '@/actions/auth/get-current-user'; +import { db } from '@/lib/db'; + +export const POST = async (req: NextRequest) => { + try { + const user = await getCurrentUser(); + + if (!user?.hasSubscription) { + return new NextResponse(ReasonPhrases.UNAUTHORIZED, { status: StatusCodes.UNAUTHORIZED }); + } + + const { messageId, feedback } = await req.json(); + + if (!messageId) { + return new NextResponse(ReasonPhrases.BAD_REQUEST, { status: StatusCodes.BAD_REQUEST }); + } + + const updatedFeedback = await db.chatMessageFeedback.upsert({ + where: { messageId }, + update: { feedback }, + create: { + messageId, + feedback, + }, + include: { message: true }, + }); + + return NextResponse.json(updatedFeedback); + } catch (error) { + console.error('[POST_CHAT_MESSAGE_FEEDBACK]', error); + + return new NextResponse(ReasonPhrases.INTERNAL_SERVER_ERROR, { + status: StatusCodes.INTERNAL_SERVER_ERROR, + }); + } +}; diff --git a/package.json b/package.json index deb6ec84..a93e0198 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "@hello-pangea/dnd": "^16.5.0", "@hookform/resolvers": "^3.3.4", "@plaiceholder/next": "^3.0.0", - "@prisma/client": "^5.21.1", + "@prisma/client": "^6.5.0", "@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-alert-dialog": "^1.0.5", "@radix-ui/react-avatar": "^1.0.4", @@ -131,7 +131,7 @@ "lint-staged": "^15.2.2", "postcss": "^8", "prettier": "^3.2.4", - "prisma": "^5.21.1", + "prisma": "^6.5.0", "tailwindcss": "^3.3.0", "typescript": "^5" }, diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 0fbe5f79..d12bb14d 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -288,19 +288,36 @@ model CsmIssue { } // Chat Copilot +enum ChatFeedback { + positive + negative +} + model ChatMessage { - id String @id @default(uuid()) + id String @id @default(uuid()) content String - conversation ChatConversation? @relation(fields: [conversationId], references: [id], onDelete: Cascade) + conversation ChatConversation? @relation(fields: [conversationId], references: [id], onDelete: Cascade) conversationId String? - createdAt DateTime @default(now()) + createdAt DateTime @default(now()) + feedback ChatMessageFeedback? model String role String - updatedAt DateTime @updatedAt + updatedAt DateTime @updatedAt @@index([conversationId]) } +model ChatMessageFeedback { + id String @id @default(uuid()) + createdAt DateTime @default(now()) + feedback ChatFeedback + message ChatMessage @relation(fields: [messageId], references: [id], onDelete: Cascade) + messageId String @unique + updatedAt DateTime @updatedAt + + @@index([messageId]) +} + model ChatConversation { id String @id @default(uuid()) createdAt DateTime @default(now()) diff --git a/yarn.lock b/yarn.lock index ebc17d04..74223d7c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -210,6 +210,181 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/aix-ppc64@npm:0.25.1" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/android-arm64@npm:0.25.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/android-arm@npm:0.25.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/android-x64@npm:0.25.1" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/darwin-arm64@npm:0.25.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/darwin-x64@npm:0.25.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/freebsd-arm64@npm:0.25.1" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/freebsd-x64@npm:0.25.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-arm64@npm:0.25.1" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-arm@npm:0.25.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-ia32@npm:0.25.1" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-loong64@npm:0.25.1" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-mips64el@npm:0.25.1" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-ppc64@npm:0.25.1" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-riscv64@npm:0.25.1" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-s390x@npm:0.25.1" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/linux-x64@npm:0.25.1" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/netbsd-arm64@npm:0.25.1" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/netbsd-x64@npm:0.25.1" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/openbsd-arm64@npm:0.25.1" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/openbsd-x64@npm:0.25.1" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/sunos-x64@npm:0.25.1" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/win32-arm64@npm:0.25.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/win32-ia32@npm:0.25.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.25.1": + version: 0.25.1 + resolution: "@esbuild/win32-x64@npm:0.25.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" @@ -674,61 +849,74 @@ __metadata: languageName: node linkType: hard -"@prisma/client@npm:^5.21.1": - version: 5.21.1 - resolution: "@prisma/client@npm:5.21.1" +"@prisma/client@npm:^6.5.0": + version: 6.5.0 + resolution: "@prisma/client@npm:6.5.0" peerDependencies: prisma: "*" + typescript: ">=5.1.0" peerDependenciesMeta: prisma: optional: true - checksum: 10c0/066bf678d6bda048893eb9080818339a99bba995a0ba19935cccda30a10eb46c6674bc445bbbbb37881e52d3010c72ce4a28565156b80bfea5438cafd9868941 + typescript: + optional: true + checksum: 10c0/2bf6a213bd65de20092b2773b9bb105f023558da2214e92542fe745255778dee8386068ec6648d0d651e0af7443ca69ed9278aa505c0342d39a30098fd0090d2 languageName: node linkType: hard -"@prisma/debug@npm:5.21.1": - version: 5.21.1 - resolution: "@prisma/debug@npm:5.21.1" - checksum: 10c0/5d69a13ae83efe3748efabb16ceae1dc0e9c2cc0c132e7fe46016a85a6d403eaa994094e8b30fb660b42e23abf5034b8ac1733bca30d6d66cb3fd763281e64e1 +"@prisma/config@npm:6.5.0": + version: 6.5.0 + resolution: "@prisma/config@npm:6.5.0" + dependencies: + esbuild: "npm:>=0.12 <1" + esbuild-register: "npm:3.6.0" + checksum: 10c0/6096e946aa8787cd216a9661ab12641776cfc21c2142f25b2fa3a199042a761de3fbfeca0bf0e8acd77f4913e8ecb1cea37a04ecf51a4a110f06c17963665b7c + languageName: node + linkType: hard + +"@prisma/debug@npm:6.5.0": + version: 6.5.0 + resolution: "@prisma/debug@npm:6.5.0" + checksum: 10c0/e33ba5750642c3ecf73844df7b8d7a1b35bd45601e6449bd6fdd56df7bf5a1c09f3b034594b2cd150aae86e822b6de5f29fae5681a0c94c38b1e393ce439e923 languageName: node linkType: hard -"@prisma/engines-version@npm:5.21.1-1.bf0e5e8a04cada8225617067eaa03d041e2bba36": - version: 5.21.1-1.bf0e5e8a04cada8225617067eaa03d041e2bba36 - resolution: "@prisma/engines-version@npm:5.21.1-1.bf0e5e8a04cada8225617067eaa03d041e2bba36" - checksum: 10c0/3b4ca9f8911c36da847740951f73b2ab66f2f3619530dea7a9667764e8853675d2b7fbbd24e2568ece5ad9c5a78c5498e44be94af2979372d7b8743c83ee27a1 +"@prisma/engines-version@npm:6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60": + version: 6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60 + resolution: "@prisma/engines-version@npm:6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60" + checksum: 10c0/92792c7f4ece28bfb3f6be14c8d3c625bc201a802ab9c71cf5b04e7e1fef827c75e73f63258c3ae5e63658eec97306d172b8104e5ee4e73583e7cb586479d724 languageName: node linkType: hard -"@prisma/engines@npm:5.21.1": - version: 5.21.1 - resolution: "@prisma/engines@npm:5.21.1" +"@prisma/engines@npm:6.5.0": + version: 6.5.0 + resolution: "@prisma/engines@npm:6.5.0" dependencies: - "@prisma/debug": "npm:5.21.1" - "@prisma/engines-version": "npm:5.21.1-1.bf0e5e8a04cada8225617067eaa03d041e2bba36" - "@prisma/fetch-engine": "npm:5.21.1" - "@prisma/get-platform": "npm:5.21.1" - checksum: 10c0/5a6a76457da5cb075e39a21e566b7e03295cacd357182b0f96f849e9950676c2a9d49cdaac7b974b1b9af6a350d96791a8fd30cf7814a669fa77e14ba17a7531 + "@prisma/debug": "npm:6.5.0" + "@prisma/engines-version": "npm:6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60" + "@prisma/fetch-engine": "npm:6.5.0" + "@prisma/get-platform": "npm:6.5.0" + checksum: 10c0/61cc51e28f403a9540183d7276e3f4e191daa854005642f80747f122f4d99e322d036b112da5ab0be77938198b5298138243c72d9d56e6841066b808a6c73f93 languageName: node linkType: hard -"@prisma/fetch-engine@npm:5.21.1": - version: 5.21.1 - resolution: "@prisma/fetch-engine@npm:5.21.1" +"@prisma/fetch-engine@npm:6.5.0": + version: 6.5.0 + resolution: "@prisma/fetch-engine@npm:6.5.0" dependencies: - "@prisma/debug": "npm:5.21.1" - "@prisma/engines-version": "npm:5.21.1-1.bf0e5e8a04cada8225617067eaa03d041e2bba36" - "@prisma/get-platform": "npm:5.21.1" - checksum: 10c0/068663fa15cb204d033b166588157915be11571a1584c914372968248faab0f7c236ec1086aaf194929ece3ae2a3d2d0b28e33dac114a1545e0dee1011dc669c + "@prisma/debug": "npm:6.5.0" + "@prisma/engines-version": "npm:6.5.0-73.173f8d54f8d52e692c7e27e72a88314ec7aeff60" + "@prisma/get-platform": "npm:6.5.0" + checksum: 10c0/4f26fb07fd183f9a975674b29f976d94fe0301a4fd0571b85b3f6995127ce70d0a65e84a821daef95f4053ae3a02b0cc9535e1e113d363f70d3f606eca587df5 languageName: node linkType: hard -"@prisma/get-platform@npm:5.21.1": - version: 5.21.1 - resolution: "@prisma/get-platform@npm:5.21.1" +"@prisma/get-platform@npm:6.5.0": + version: 6.5.0 + resolution: "@prisma/get-platform@npm:6.5.0" dependencies: - "@prisma/debug": "npm:5.21.1" - checksum: 10c0/3e6f2378e8a6086db0cc02e95e5b872b602263d0b2e55c3e18f6041bbbf9edea5edbfb9efce331527e75e13411eee68d2b34c24b9aeac9c579e75aac2a39432c + "@prisma/debug": "npm:6.5.0" + checksum: 10c0/45033d8c20a19d6e0329ff15901606a53be9f43c843ddfd99848c8ac388b12e1b65c202e95a1d5cdc7da4bfee77ed3795ba3c7e0b1d1fa6380c9a253e1bedfd2 languageName: node linkType: hard @@ -4594,6 +4782,103 @@ __metadata: languageName: node linkType: hard +"esbuild-register@npm:3.6.0": + version: 3.6.0 + resolution: "esbuild-register@npm:3.6.0" + dependencies: + debug: "npm:^4.3.4" + peerDependencies: + esbuild: ">=0.12 <1" + checksum: 10c0/77193b7ca32ba9f81b35ddf3d3d0138efb0b1429d71b39480cfee932e1189dd2e492bd32bf04a4d0bc3adfbc7ec7381ceb5ffd06efe35f3e70904f1f686566d5 + languageName: node + linkType: hard + +"esbuild@npm:>=0.12 <1": + version: 0.25.1 + resolution: "esbuild@npm:0.25.1" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.1" + "@esbuild/android-arm": "npm:0.25.1" + "@esbuild/android-arm64": "npm:0.25.1" + "@esbuild/android-x64": "npm:0.25.1" + "@esbuild/darwin-arm64": "npm:0.25.1" + "@esbuild/darwin-x64": "npm:0.25.1" + "@esbuild/freebsd-arm64": "npm:0.25.1" + "@esbuild/freebsd-x64": "npm:0.25.1" + "@esbuild/linux-arm": "npm:0.25.1" + "@esbuild/linux-arm64": "npm:0.25.1" + "@esbuild/linux-ia32": "npm:0.25.1" + "@esbuild/linux-loong64": "npm:0.25.1" + "@esbuild/linux-mips64el": "npm:0.25.1" + "@esbuild/linux-ppc64": "npm:0.25.1" + "@esbuild/linux-riscv64": "npm:0.25.1" + "@esbuild/linux-s390x": "npm:0.25.1" + "@esbuild/linux-x64": "npm:0.25.1" + "@esbuild/netbsd-arm64": "npm:0.25.1" + "@esbuild/netbsd-x64": "npm:0.25.1" + "@esbuild/openbsd-arm64": "npm:0.25.1" + "@esbuild/openbsd-x64": "npm:0.25.1" + "@esbuild/sunos-x64": "npm:0.25.1" + "@esbuild/win32-arm64": "npm:0.25.1" + "@esbuild/win32-ia32": "npm:0.25.1" + "@esbuild/win32-x64": "npm:0.25.1" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/80fca30dd0f21aec23fdfab34f0a8d5f55df5097dd7f475f2ab561d45662c32ee306f5649071cd1a0ba0614b164c48ca3dc3ee1551a4daf204b8af90e4d893f5 + languageName: node + linkType: hard + "escalade@npm:^3.1.1": version: 3.1.2 resolution: "escalade@npm:3.1.2" @@ -6500,7 +6785,7 @@ __metadata: "@hello-pangea/dnd": "npm:^16.5.0" "@hookform/resolvers": "npm:^3.3.4" "@plaiceholder/next": "npm:^3.0.0" - "@prisma/client": "npm:^5.21.1" + "@prisma/client": "npm:^6.5.0" "@radix-ui/react-accordion": "npm:^1.1.2" "@radix-ui/react-alert-dialog": "npm:^1.0.5" "@radix-ui/react-avatar": "npm:^1.0.4" @@ -6570,7 +6855,7 @@ __metadata: plaiceholder: "npm:^3.0.0" postcss: "npm:^8" prettier: "npm:^3.2.4" - prisma: "npm:^5.21.1" + prisma: "npm:^6.5.0" pusher: "npm:^5.2.0" pusher-js: "npm:^8.4.0-rc2" qrcode: "npm:^1.5.3" @@ -8480,18 +8765,24 @@ __metadata: languageName: node linkType: hard -"prisma@npm:^5.21.1": - version: 5.21.1 - resolution: "prisma@npm:5.21.1" +"prisma@npm:^6.5.0": + version: 6.5.0 + resolution: "prisma@npm:6.5.0" dependencies: - "@prisma/engines": "npm:5.21.1" + "@prisma/config": "npm:6.5.0" + "@prisma/engines": "npm:6.5.0" fsevents: "npm:2.3.3" + peerDependencies: + typescript: ">=5.1.0" dependenciesMeta: fsevents: optional: true + peerDependenciesMeta: + typescript: + optional: true bin: prisma: build/index.js - checksum: 10c0/14a276fb1891e1fec832da1632a4c3c9ae6909a094067d1ba94012fe2063b80f44680a0a373fc86e0e73b8a81455f20374303f70d93451060e06b93f0983b82b + checksum: 10c0/d859336d9b121987723e775d48a69e78b7eed7d6c56ccc040d2d53f3e6d999dc04b23021320bc4ee2c6db968929c2a863ae747c870f359b1faf831ced6f8132c languageName: node linkType: hard