From e4ed7859113d2d25c0eea670b2e9ba14e1f930fc Mon Sep 17 00:00:00 2001 From: Opti1337 Date: Fri, 22 May 2026 05:08:02 +0600 Subject: [PATCH] brutalism design --- new-client/AGENTS.md | 1 + new-client/package.json | 7 +- new-client/src/app/entry.ts | 5 + new-client/src/shared/api/client.ts | 1 + .../src/shared/api/generated-chad-api.ts | 61 +- new-client/src/shared/api/qUser.ts | 2 +- .../src/shared/components/ui/Avatar.vue | 8 + .../src/shared/components/ui/Button.vue | 1 + new-client/src/shared/components/ui/Tag.vue | 47 + .../src/shared/components/ui/Toggle.vue | 67 ++ .../src/shared/composables/use-clients.ts | 72 ++ .../src/shared/composables/use-event-bus.ts | 3 +- .../src/shared/composables/use-session.ts | 3 + .../src/shared/composables/use-signaling.ts | 20 +- new-client/src/shared/layouts/Default.vue | 36 +- new-client/src/shared/styles/main.scss | 21 +- new-client/src/shared/types.ts | 7 +- .../ui/{ChannelItem.vue => Channel.vue} | 20 +- .../widgets/channel-list/ui/ChannelList.vue | 4 +- .../src/widgets/chat/api/qChatMessages.ts | 9 +- .../chat/composables/use-chat-scroll.ts | 79 ++ .../src/widgets/chat/composables/use-chat.ts | 23 +- .../src/widgets/chat/ui/ChatMessage.vue | 22 +- .../widgets/chat/ui/ChatMessageAttachment.vue | 89 +- .../chat/ui/ChatMessageAttachments.vue | 51 + .../chat/ui/ChatMessageImageAttachment.vue | 33 + .../src/widgets/chat/ui/ChatMessages.vue | 89 +- .../widgets/control-panel/ui/ControlPanel.vue | 63 ++ new-client/tsconfig.app.json | 2 +- new-client/yarn.lock | 896 ++---------------- server/plugins/auth.ts | 1 - server/plugins/schemas/auth.ts | 1 - server/plugins/schemas/channel.ts | 2 +- server/plugins/schemas/chat.ts | 7 +- server/plugins/schemas/user.ts | 1 - server/plugins/socket/types.ts | 2 +- server/plugins/socket/webrtc/Client.ts | 8 +- server/plugins/socket/webrtc/index.ts | 2 +- server/prisma/generated-client/browser.ts | 3 +- .../prisma/generated-client/internal/class.ts | 11 +- .../internal/prismaNamespace.ts | 10 +- .../internal/prismaNamespaceBrowser.ts | 7 +- .../prisma/generated-client/models/Channel.ts | 54 +- .../prisma/generated-client/models/Message.ts | 58 +- server/prisma/generated-client/models/User.ts | 64 +- .../models/UserPreferences.ts | 70 +- server/prisma/schema.prisma | 19 +- server/routes/auth.ts | 7 +- server/routes/channel.ts | 4 +- server/routes/chat.ts | 24 +- server/routes/user.ts | 14 +- 51 files changed, 940 insertions(+), 1171 deletions(-) create mode 100644 new-client/AGENTS.md create mode 100644 new-client/src/shared/components/ui/Tag.vue create mode 100644 new-client/src/shared/components/ui/Toggle.vue create mode 100644 new-client/src/shared/composables/use-clients.ts create mode 100644 new-client/src/shared/composables/use-session.ts rename new-client/src/widgets/channel-list/ui/{ChannelItem.vue => Channel.vue} (66%) create mode 100644 new-client/src/widgets/chat/composables/use-chat-scroll.ts create mode 100644 new-client/src/widgets/chat/ui/ChatMessageAttachments.vue create mode 100644 new-client/src/widgets/chat/ui/ChatMessageImageAttachment.vue create mode 100644 new-client/src/widgets/control-panel/ui/ControlPanel.vue diff --git a/new-client/AGENTS.md b/new-client/AGENTS.md new file mode 100644 index 0000000..73889b8 --- /dev/null +++ b/new-client/AGENTS.md @@ -0,0 +1 @@ +use context7 \ No newline at end of file diff --git a/new-client/package.json b/new-client/package.json index 9437415..3c14182 100644 --- a/new-client/package.json +++ b/new-client/package.json @@ -6,10 +6,10 @@ "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", - "preview": "vite preview" + "preview": "vite preview", + "typegen": "npx swagger-typescript-api generate --path http://localhost:4000/reference/openapi.yaml --output ./src/shared/api --name generated-chad-api.ts" }, "dependencies": { - "@ark-ui/vue": "^5.36.2", "@lucide/vue": "^1.14.0", "@tanstack/query-persist-client-core": "^5.100.10", "@tanstack/vue-query": "^5.100.10", @@ -20,9 +20,12 @@ "@vueuse/core": "^14.3.0", "@zag-js/avatar": "^1.40.0", "@zag-js/collapsible": "^1.40.0", + "@zag-js/file-utils": "^1.40.0", "@zag-js/password-input": "^1.40.0", + "@zag-js/toggle": "^1.40.0", "@zag-js/vue": "^1.40.0", "date-fns": "^4.1.0", + "mediasoup-client": "^3.20.0", "mitt": "^3.0.1", "primevue": "^4.5.5", "socket.io-client": "^4.8.3", diff --git a/new-client/src/app/entry.ts b/new-client/src/app/entry.ts index 679296d..7e59a6c 100644 --- a/new-client/src/app/entry.ts +++ b/new-client/src/app/entry.ts @@ -1,7 +1,9 @@ import initializeApp from './bootstrap/app' import authorize from './bootstrap/authorize' import showError from './bootstrap/error' +import setupMediasoup from './bootstrap/mediasoup' import preloader from './bootstrap/preloader' +import connectSignaling from './bootstrap/signaling' import checkUpdates from './bootstrap/updater' (async () => { @@ -13,6 +15,9 @@ import checkUpdates from './bootstrap/updater' await authorize() + connectSignaling() + setupMediasoup() + await initializeApp() } catch (error) { diff --git a/new-client/src/shared/api/client.ts b/new-client/src/shared/api/client.ts index 7918e1f..c0fbc9c 100644 --- a/new-client/src/shared/api/client.ts +++ b/new-client/src/shared/api/client.ts @@ -2,6 +2,7 @@ import { Api } from './generated-chad-api' const api = new Api({ baseUrl: 'http://localhost:4000', + baseApiParams: { credentials: 'include' }, }) function isChadResponseError(error) { diff --git a/new-client/src/shared/api/generated-chad-api.ts b/new-client/src/shared/api/generated-chad-api.ts index 5c4e4ac..b444185 100644 --- a/new-client/src/shared/api/generated-chad-api.ts +++ b/new-client/src/shared/api/generated-chad-api.ts @@ -30,7 +30,7 @@ export interface Attachment { */ export interface Channel { id: string; - ownerId: string | null; + ownerUsername: string | null; name: string; persistent: boolean; } @@ -42,15 +42,22 @@ export interface Channel { export interface ChatMessage { /** @format uuid */ id: string; - /** @format uuid */ - senderId: string; + senderUsername: string; /** @minLength 1 */ text: string; /** @format date-time */ createdAt: string; /** @format date-time */ updatedAt: string; - attachments: string[]; + attachments: { + id: string; + name: string; + mimetype: string; + /** @min 0 */ + size: number; + /** @format date-time */ + createdAt: string; + }[]; } /** @@ -118,8 +125,7 @@ export interface NewChatMessagePayload { export interface Reply { /** @format uuid */ messageId: string; - /** @format uuid */ - senderId: string; + senderUsername: string; text: string; } @@ -164,7 +170,6 @@ export interface UserPreferences { * User */ export interface User { - id: string; username: string; displayName: string; /** @format date-time */ @@ -232,7 +237,7 @@ export class HttpClient { fetch(...fetchParams); private baseApiParams: RequestParams = { - credentials: "include", + credentials: "same-origin", headers: {}, redirect: "follow", referrerPolicy: "no-referrer", @@ -590,30 +595,8 @@ export class Api< * @summary Send message * @request POST:/chad/chat/send */ - chatSend: ( - data: { - /** @minLength 1 */ - text: string; - attachments?: string[]; - }, - params: RequestParams = {}, - ) => - this.request< - { - /** @format uuid */ - id: string; - /** @format uuid */ - senderId: string; - /** @minLength 1 */ - text: string; - /** @format date-time */ - createdAt: string; - /** @format date-time */ - updatedAt: string; - attachments: string[]; - }, - ResponseError - >({ + chatSend: (data: NewChatMessagePayload, params: RequestParams = {}) => + this.request({ path: `/chad/chat/send`, method: "POST", body: data, @@ -648,19 +631,7 @@ export class Api< ) => this.request< { - messages: { - /** @format uuid */ - id: string; - /** @format uuid */ - senderId: string; - /** @minLength 1 */ - text: string; - /** @format date-time */ - createdAt: string; - /** @format date-time */ - updatedAt: string; - attachments: string[]; - }[]; + messages: ChatMessage[]; /** * Cursor to last message * @format uuid diff --git a/new-client/src/shared/api/qUser.ts b/new-client/src/shared/api/qUser.ts index b4b88a7..0cd080f 100644 --- a/new-client/src/shared/api/qUser.ts +++ b/new-client/src/shared/api/qUser.ts @@ -8,7 +8,7 @@ export function qUser(username: MaybeRefOrGetter) { return useQuery({ queryKey: ['user', username], queryFn: async () => { - const response = await api.chad.userGet({ id: toValue(username) }) + const response = await api.chad.userGet({ username: toValue(username) }) return response.data }, diff --git a/new-client/src/shared/components/ui/Avatar.vue b/new-client/src/shared/components/ui/Avatar.vue index 707ec4d..fc2717d 100644 --- a/new-client/src/shared/components/ui/Avatar.vue +++ b/new-client/src/shared/components/ui/Avatar.vue @@ -46,6 +46,10 @@ const api = computed(() => avatar.connect(service, normalizeProps)) #{$self}.highlighted & { background-color: var(--yellow); } + + &[data-state='hidden'] { + display: none; + } } &__image { @@ -53,6 +57,10 @@ const api = computed(() => avatar.connect(service, normalizeProps)) height: 100%; object-fit: cover; object-position: center; + + &[data-state='hidden'] { + display: none; + } } } diff --git a/new-client/src/shared/components/ui/Button.vue b/new-client/src/shared/components/ui/Button.vue index 60dcad6..8ffc735 100644 --- a/new-client/src/shared/components/ui/Button.vue +++ b/new-client/src/shared/components/ui/Button.vue @@ -38,6 +38,7 @@ interface Props { .chad-button { @include font-display-14; + flex-shrink: 0; border: none; color: var(--ink); padding-inline: var(--space-3); diff --git a/new-client/src/shared/components/ui/Tag.vue b/new-client/src/shared/components/ui/Tag.vue new file mode 100644 index 0000000..a51b6a4 --- /dev/null +++ b/new-client/src/shared/components/ui/Tag.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/new-client/src/shared/components/ui/Toggle.vue b/new-client/src/shared/components/ui/Toggle.vue new file mode 100644 index 0000000..ea253c4 --- /dev/null +++ b/new-client/src/shared/components/ui/Toggle.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/new-client/src/shared/composables/use-clients.ts b/new-client/src/shared/composables/use-clients.ts new file mode 100644 index 0000000..006ae27 --- /dev/null +++ b/new-client/src/shared/composables/use-clients.ts @@ -0,0 +1,72 @@ +import type { ChadClient } from '@shared/types.ts' +import { useSignaling } from '@shared/composables/use-signaling.ts' +import { createGlobalState } from '@vueuse/core' +import { computed, shallowRef } from 'vue' +import { useAuth } from './use-auth' + +export const useClients = createGlobalState(() => { + const { me } = useAuth() + const signaling = useSignaling() + + const clients = shallowRef([]) + + function addClient(...incoming: ChadClient[]) { + const ids = new Set(incoming.map(c => c.socketId)) + clients.value = [ + ...clients.value.filter(c => !ids.has(c.socketId)), + ...incoming, + ] + } + + function removeClient(...socketIds: string[]) { + const ids = new Set(socketIds) + clients.value = clients.value.filter(c => !ids.has(c.socketId)) + } + + function updateClient(socketId: string, patch: Partial>) { + clients.value = clients.value.map(c => + c.socketId === socketId ? { ...c, ...patch } : c, + ) + } + + function findById(socketId: string) { + return clients.value.find(c => c.socketId === socketId) + } + + function findByChannel(channelId: string) { + return clients.value.filter(c => c.channelId === channelId) + } + + function findByUsername(username: string) { + return clients.value.find(c => c.username === username) + } + + const self = computed(() => { + return clients.value.find((client) => { + if (signaling.socket.value) { + return client.socketId === signaling.socket.value.id + } + else if (me.value) { + return client.username === me.value.username + } + + return undefined + }) + }) + + function clear() { + clients.value = [] + } + + return { + clients, + self, + addClient, + removeClient, + updateClient, + findById, + findByChannel, + findByUsername, + clear, + } +}) diff --git a/new-client/src/shared/composables/use-event-bus.ts b/new-client/src/shared/composables/use-event-bus.ts index 6ecf5ec..e79ca1e 100644 --- a/new-client/src/shared/composables/use-event-bus.ts +++ b/new-client/src/shared/composables/use-event-bus.ts @@ -1,3 +1,4 @@ +import type { ChatMessage } from '@shared/api/generated-chad-api.ts' import type { EventType } from 'mitt' import mitt from 'mitt' @@ -29,7 +30,7 @@ export interface AppEvents extends Record { 'share:enabled': void 'share:disabled': void - 'chat:new-message': void + 'chat:new-message': ChatMessage } const emitter = mitt() diff --git a/new-client/src/shared/composables/use-session.ts b/new-client/src/shared/composables/use-session.ts new file mode 100644 index 0000000..8388d4e --- /dev/null +++ b/new-client/src/shared/composables/use-session.ts @@ -0,0 +1,3 @@ +export function useSession() { + return {} +} diff --git a/new-client/src/shared/composables/use-signaling.ts b/new-client/src/shared/composables/use-signaling.ts index af06f62..8f049c7 100644 --- a/new-client/src/shared/composables/use-signaling.ts +++ b/new-client/src/shared/composables/use-signaling.ts @@ -7,7 +7,7 @@ import { useAuth } from './use-auth' import { useEventBus } from './use-event-bus' export const useSignaling = createSharedComposable(() => { - const { emit } = useEventBus() + const eventBus = useEventBus() const { me } = useAuth() const socket = shallowRef() @@ -44,9 +44,9 @@ export const useSignaling = createSharedComposable(() => { watch(connected, (connected) => { if (connected) - emit('socket:connected') + eventBus.emit('socket:connected') else - emit('socket:disconnected') + eventBus.emit('socket:disconnected') }, { immediate: true }) watch(me, (me) => { @@ -56,10 +56,7 @@ export const useSignaling = createSharedComposable(() => { } }) - onScopeDispose(() => { - socket.value?.close() - socket.value = undefined - }) + onScopeDispose(disconnect) function connect() { if (socket.value || !me.value) @@ -73,15 +70,18 @@ export const useSignaling = createSharedComposable(() => { path: `${pathname}/ws`, transports: ['websocket'], withCredentials: true, - auth: { - userId: me.value.id, - }, }) } + function disconnect() { + socket.value?.disconnect() + socket.value = undefined + } + return { socket, connected, connect, + disconnect, } }) diff --git a/new-client/src/shared/layouts/Default.vue b/new-client/src/shared/layouts/Default.vue index 7336acc..9822d22 100644 --- a/new-client/src/shared/layouts/Default.vue +++ b/new-client/src/shared/layouts/Default.vue @@ -21,9 +21,22 @@
@@ -33,17 +46,28 @@ diff --git a/new-client/src/widgets/chat/ui/ChatMessageAttachment.vue b/new-client/src/widgets/chat/ui/ChatMessageAttachment.vue index 038c48a..6c0143c 100644 --- a/new-client/src/widgets/chat/ui/ChatMessageAttachment.vue +++ b/new-client/src/widgets/chat/ui/ChatMessageAttachment.vue @@ -1,46 +1,91 @@ diff --git a/new-client/src/widgets/chat/ui/ChatMessageAttachments.vue b/new-client/src/widgets/chat/ui/ChatMessageAttachments.vue new file mode 100644 index 0000000..e74b0b6 --- /dev/null +++ b/new-client/src/widgets/chat/ui/ChatMessageAttachments.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/new-client/src/widgets/chat/ui/ChatMessageImageAttachment.vue b/new-client/src/widgets/chat/ui/ChatMessageImageAttachment.vue new file mode 100644 index 0000000..2ec915d --- /dev/null +++ b/new-client/src/widgets/chat/ui/ChatMessageImageAttachment.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/new-client/src/widgets/chat/ui/ChatMessages.vue b/new-client/src/widgets/chat/ui/ChatMessages.vue index 7a0d7ce..1d062f3 100644 --- a/new-client/src/widgets/chat/ui/ChatMessages.vue +++ b/new-client/src/widgets/chat/ui/ChatMessages.vue @@ -1,38 +1,64 @@ diff --git a/new-client/src/widgets/control-panel/ui/ControlPanel.vue b/new-client/src/widgets/control-panel/ui/ControlPanel.vue new file mode 100644 index 0000000..9c51064 --- /dev/null +++ b/new-client/src/widgets/control-panel/ui/ControlPanel.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/new-client/tsconfig.app.json b/new-client/tsconfig.app.json index 34f9b2c..6d8fa2b 100644 --- a/new-client/tsconfig.app.json +++ b/new-client/tsconfig.app.json @@ -2,7 +2,7 @@ "extends": "@vue/tsconfig/tsconfig.dom.json", "compilerOptions": { "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - + "lib": ["ES2023", "DOM"], "moduleResolution": "Bundler", "paths": { "@app/*": ["./src/app/*"], diff --git a/new-client/yarn.lock b/new-client/yarn.lock index f50b1d1..67e4414 100644 --- a/new-client/yarn.lock +++ b/new-client/yarn.lock @@ -52,79 +52,6 @@ package-manager-detector "^1.3.0" tinyexec "^1.0.1" -"@ark-ui/vue@^5.36.2": - version "5.36.2" - resolved "https://registry.yarnpkg.com/@ark-ui/vue/-/vue-5.36.2.tgz#b3899d14711d1097217545ddd91737d7e522a36d" - integrity sha512-GI22MHnEvcSeLyIdNPYz1DR7ktogpXRWQRMLdf9D1j4hG6FK7O0Z6vUwegghY0Dc4n3ar9IQY7OU8Bp+AjhgdQ== - dependencies: - "@internationalized/date" "3.12.0" - "@zag-js/accordion" "1.40.0" - "@zag-js/anatomy" "1.40.0" - "@zag-js/angle-slider" "1.40.0" - "@zag-js/async-list" "1.40.0" - "@zag-js/auto-resize" "1.40.0" - "@zag-js/avatar" "1.40.0" - "@zag-js/carousel" "1.40.0" - "@zag-js/cascade-select" "1.40.0" - "@zag-js/checkbox" "1.40.0" - "@zag-js/clipboard" "1.40.0" - "@zag-js/collapsible" "1.40.0" - "@zag-js/collection" "1.40.0" - "@zag-js/color-picker" "1.40.0" - "@zag-js/color-utils" "1.40.0" - "@zag-js/combobox" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/date-input" "1.40.0" - "@zag-js/date-picker" "1.40.0" - "@zag-js/date-utils" "1.40.0" - "@zag-js/dialog" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/drawer" "1.40.0" - "@zag-js/editable" "1.40.0" - "@zag-js/file-upload" "1.40.0" - "@zag-js/file-utils" "1.40.0" - "@zag-js/floating-panel" "1.40.0" - "@zag-js/focus-trap" "1.40.0" - "@zag-js/focus-visible" "1.40.0" - "@zag-js/highlight-word" "1.40.0" - "@zag-js/hover-card" "1.40.0" - "@zag-js/i18n-utils" "1.40.0" - "@zag-js/image-cropper" "1.40.0" - "@zag-js/json-tree-utils" "1.40.0" - "@zag-js/listbox" "1.40.0" - "@zag-js/marquee" "1.40.0" - "@zag-js/menu" "1.40.0" - "@zag-js/navigation-menu" "1.40.0" - "@zag-js/number-input" "1.40.0" - "@zag-js/pagination" "1.40.0" - "@zag-js/password-input" "1.40.0" - "@zag-js/pin-input" "1.40.0" - "@zag-js/popover" "1.40.0" - "@zag-js/presence" "1.40.0" - "@zag-js/progress" "1.40.0" - "@zag-js/qr-code" "1.40.0" - "@zag-js/radio-group" "1.40.0" - "@zag-js/rating-group" "1.40.0" - "@zag-js/scroll-area" "1.40.0" - "@zag-js/select" "1.40.0" - "@zag-js/signature-pad" "1.40.0" - "@zag-js/slider" "1.40.0" - "@zag-js/splitter" "1.40.0" - "@zag-js/steps" "1.40.0" - "@zag-js/switch" "1.40.0" - "@zag-js/tabs" "1.40.0" - "@zag-js/tags-input" "1.40.0" - "@zag-js/timer" "1.40.0" - "@zag-js/toast" "1.40.0" - "@zag-js/toggle" "1.40.0" - "@zag-js/toggle-group" "1.40.0" - "@zag-js/tooltip" "1.40.0" - "@zag-js/tour" "1.40.0" - "@zag-js/tree-view" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - "@zag-js/vue" "1.40.0" - "@babel/generator@^7.28.6": version "7.29.1" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" @@ -343,26 +270,6 @@ "@eslint/core" "^1.2.1" levn "^0.4.1" -"@floating-ui/core@^1.7.5": - version "1.7.5" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.5.tgz#d4af157a03330af5a60e69da7a4692507ada0622" - integrity sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ== - dependencies: - "@floating-ui/utils" "^0.2.11" - -"@floating-ui/dom@^1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.6.tgz#f915bba5abbb177e1f227cacee1b4d0634b187bf" - integrity sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ== - dependencies: - "@floating-ui/core" "^1.7.5" - "@floating-ui/utils" "^0.2.11" - -"@floating-ui/utils@^0.2.11": - version "0.2.11" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.11.tgz#a269e055e40e2f45873bae9d1a2fdccbd314ea3f" - integrity sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg== - "@humanfs/core@^0.19.2": version "0.19.2" resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.2.tgz#a8272ca03b2acf492670222b2320b6c421bfde60" @@ -394,20 +301,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== -"@internationalized/date@3.12.0": - version "3.12.0" - resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.12.0.tgz#cdcd12adf36e1ccb05ec7b964f4857e7ec62137d" - integrity sha512-/PyIMzK29jtXaGU23qTvNZxvBXRtKbNnGDFD+PY6CZw/Y8Ex8pFUzkuCJCG9aOqmShjqhS9mPqP6Dk5onQY8rQ== - dependencies: - "@swc/helpers" "^0.5.0" - -"@internationalized/number@3.6.5": - version "3.6.5" - resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.6.5.tgz#1103f2832ca8d9dd3e4eecf95733d497791dbbbe" - integrity sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g== - dependencies: - "@swc/helpers" "^0.5.0" - "@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": version "0.3.13" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" @@ -447,6 +340,18 @@ resolved "https://registry.yarnpkg.com/@lucide/vue/-/vue-1.14.0.tgz#e85ed1165d1b5e8ec1012a83a704191ce4268046" integrity sha512-0s2fsXJGXYqcuyigsRtoTPqbeGGFOiLTYMDFfYvWO4rQNOongaJe1XDiExOLiybbI9+uQPBr5aGoiCdQNlSfQg== +"@lukeed/csprng@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@lukeed/csprng/-/csprng-1.1.0.tgz#1e3e4bd05c1cc7a0b2ddbd8a03f39f6e4b5e6cfe" + integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== + +"@lukeed/uuid@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@lukeed/uuid/-/uuid-2.0.1.tgz#4f6c34259ee0982a455e1797d56ac27bb040fd74" + integrity sha512-qC72D4+CDdjGqJvkFMMEAtancHUQ7/d/tAiHf64z8MopFDmcrtbcJuerDtFceuAfQJ2pDSfCKCtbqoGBNnwg0w== + dependencies: + "@lukeed/csprng" "^1.1.0" + "@napi-rs/wasm-runtime@^1.1.4": version "1.1.4" resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz#a46bbfedc29751b7170c5d23bc1d8ee8c7e3c1e1" @@ -799,13 +704,6 @@ estraverse "^5.3.0" picomatch "^4.0.3" -"@swc/helpers@^0.5.0": - version "0.5.21" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.21.tgz#0b1b020317ee1282860ca66f7e9a7c7790f05ae0" - integrity sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg== - dependencies: - tslib "^2.8.0" - "@tanstack/match-sorter-utils@^8.19.4": version "8.19.4" resolved "https://registry.yarnpkg.com/@tanstack/match-sorter-utils/-/match-sorter-utils-8.19.4.tgz#dacf772b5d94f4684f10dbeb2518cf72dccab8a5" @@ -947,7 +845,7 @@ dependencies: tslib "^2.4.0" -"@types/debug@^4.0.0": +"@types/debug@^4.0.0", "@types/debug@^4.1.13": version "4.1.13" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.13.tgz#22d1cc9d542d3593caea764f974306ab36286ee7" integrity sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw== @@ -964,6 +862,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== +"@types/events-alias@npm:@types/events@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.3.tgz#a8ef894305af28d1fc6d2dfdfc98e899591ea529" + integrity sha512-trOc4AAUThEz9hapPtSd7wf5tiQKvTtu5b371UxXdTuqzIh0ArcRspRP0i0Viu+LXstIQ1z96t1nsPxT9ol01g== + "@types/hast@^3.0.0": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa" @@ -1297,57 +1200,12 @@ resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-14.3.0.tgz#a3e7e6391f9ed7f363cbb28c32c4a278efaacbd0" integrity sha512-bZpge9eSXwa4ToSiqJ7j6KRwhAsneMFoSz3LMWKQDkqimm3D/tbFlrklrs/IOqC8tEcYmXQZJ6N0UrjhBirVCg== -"@zag-js/accordion@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/accordion/-/accordion-1.40.0.tgz#fabf5eeae61d6285a781f76d16a11e2fbc5efb43" - integrity sha512-YDdyvZJ6fr92RZazyXQq+juT3ZA0ubjDISptb5YPgMoTPdnjKNiICPpMeCeVj1ncYRDkHXrOdChS/5CtuX/K6g== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - "@zag-js/anatomy@1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/anatomy/-/anatomy-1.40.0.tgz#df087ed1a287d14bc99eca1e4a580fb68db04c5a" integrity sha512-oiB4uAaV//L38JluLVPtOHO3xvqambrfrXVOoq4kmNrBv1LLlCmFvrXA2HOR9lakn4ExK27XSUrKhUN7YlKjfQ== -"@zag-js/angle-slider@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/angle-slider/-/angle-slider-1.40.0.tgz#196f3d973877e4567989dd2af9e4ab931d7b4802" - integrity sha512-6X6bOBoCyYG0/lFY0Y+AXJZZG6CeYQiWkcMXvegxCC2zxthodqOVzkVOASW+6rzLjn2bru+V5O9RMjNgmCumKg== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/rect-utils" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/aria-hidden@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/aria-hidden/-/aria-hidden-1.40.0.tgz#9deec4d211d7a903b1717d1306238921be5bb470" - integrity sha512-lNWujEIlfGKwMQIcgfXuOZSsJD2avrgPsQHrXNVF9mkXygjLFcIRKz2pEexTSCqFh/HuUZJ6rG4pM/hJ/BiVCw== - dependencies: - "@zag-js/dom-query" "1.40.0" - -"@zag-js/async-list@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/async-list/-/async-list-1.40.0.tgz#0ebf0b37c55750af6b237651b27775f260bf8da7" - integrity sha512-hLGUTtwRFl6FIdYxSIYSeLQjJeG4isKpdmGCUvtWNnKr7ayf1yAkkSwX10SdBMWOCldbtvKCZXumKvP6dDwNvw== - dependencies: - "@zag-js/core" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/auto-resize@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/auto-resize/-/auto-resize-1.40.0.tgz#3aed4b048c1ddcb82af6609a88b09030dee5dad3" - integrity sha512-eZC+AGKUip7UMu41/ApeT1wCIgn2fmo63FJeGAdMMD8E9M8M7QLsfISMIoieNNGBAYWhSyqELQ3jPgkUf6xReA== - dependencies: - "@zag-js/dom-query" "1.40.0" - -"@zag-js/avatar@1.40.0", "@zag-js/avatar@^1.40.0": +"@zag-js/avatar@^1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/avatar/-/avatar-1.40.0.tgz#6d412fe7f7726f7924fcb6a46da397650f07987c" integrity sha512-DayZDsNXbipT+1GUkX29tVhO4hZonDnidwE3SjEQv9Ic9vCdnwP95+B0FPEuaca03F5ZXFqVXjnPmRVbRMyDYQ== @@ -1358,58 +1216,7 @@ "@zag-js/types" "1.40.0" "@zag-js/utils" "1.40.0" -"@zag-js/carousel@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/carousel/-/carousel-1.40.0.tgz#6292395b24a8830fb69ab58066c744777310933a" - integrity sha512-9svWc2jjvUP8iQ0afuu/ZAI75PuPLm4qB7h+10rmDrAgUPn7fwUBVzyATKubJPdtmaYQQvTTIiZU2B8mV88oGg== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/scroll-snap" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/cascade-select@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/cascade-select/-/cascade-select-1.40.0.tgz#f6b74eec4be5e756ad5ba2fae5c3ec15622cf2e7" - integrity sha512-0fkE0Fd2VQ4QsaWXHdgQxHWiaef3UWW0l6Jd47frtMNnrvg5t5Xfqowa7c2S23hcduOUfz2WC0xEuGXnO4UVDQ== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/collection" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-visible" "1.40.0" - "@zag-js/popper" "1.40.0" - "@zag-js/rect-utils" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/checkbox@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/checkbox/-/checkbox-1.40.0.tgz#32041efac6a6b89521b14b6aef7a25cf2e10353f" - integrity sha512-oFCgnkOjrUDejB1wEp5s3cyJ+uFe/GoI3+wqNyckqOtcdKL1MBxy193GYVdj0LDfuCNrk8V0aIJGTdusCD2b4A== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-visible" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/clipboard@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/clipboard/-/clipboard-1.40.0.tgz#2bd3f923a7bf811f260eb848ce45e63cf2602db2" - integrity sha512-QbFhJMwwUxTKcbWyb9ZrKgAp13U4+IzfHSLhPxbDVSQ15mIrjIkjW68gS6ElzhRDwGr1qawkZVApsqcToUqSaQ== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/collapsible@1.40.0", "@zag-js/collapsible@^1.40.0": +"@zag-js/collapsible@^1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/collapsible/-/collapsible-1.40.0.tgz#a8cf143963df8be1421ec5b3f3cbd76581c36f62" integrity sha512-xDLY4j9D3gdoTirkwzMaCtelfCjnMhBzPyY6c/mh4oPvD3RB6dr3V3kI80i3yxHaUUeDCIUm/XAxK0InPsRBug== @@ -1420,50 +1227,6 @@ "@zag-js/types" "1.40.0" "@zag-js/utils" "1.40.0" -"@zag-js/collection@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/collection/-/collection-1.40.0.tgz#2da47bd984a6a7da10eb443872569138aef5b420" - integrity sha512-+3o1nvbcA9Kz2hDDFf8Kngpd+of33S4TS5Tb9KvrHlU5ieQdvEUtc7/pWG2aCTkGpmgda+j91akB6ZB8+oVkvA== - dependencies: - "@zag-js/utils" "1.40.0" - -"@zag-js/color-picker@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/color-picker/-/color-picker-1.40.0.tgz#1ad9f401a4e3470f7986267c579f014c73005775" - integrity sha512-lT93xd1BlNBbitl2RxST8ARYE6q/HZD5a0QhMIT1RbndB8F4e9j/NxkStgE9f0QqgpC/rO+nKHLoR+H1xs/EkA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/color-utils" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/popper" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/color-utils@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/color-utils/-/color-utils-1.40.0.tgz#538158008c69134ee2ba1e1ac38a41f3c3d52f0b" - integrity sha512-PZihcGheb5bn0/cEUwozjJjPoKkEwlJNpTA5mUxj/+sOElLaZM+zY2AnGYeMl6w5zIyZZUDoJMIT5rcb5sN87g== - dependencies: - "@zag-js/utils" "1.40.0" - -"@zag-js/combobox@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/combobox/-/combobox-1.40.0.tgz#3b5fc41628ce57f58151b81026b757353726fbbf" - integrity sha512-5IVCDrB8m7XrKBu28j7bIRE5KiyKJLPDZB3AJ+PLJyL69D+9z1anhLDmkUYcPseyCasszLKzIejby+kYQJgHlA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/collection" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-visible" "1.40.0" - "@zag-js/live-region" "1.40.0" - "@zag-js/popper" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - "@zag-js/core@1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/core/-/core-1.40.0.tgz#0640fdda8611417fb88d5d2df65048dd2bd2b84b" @@ -1472,63 +1235,6 @@ "@zag-js/dom-query" "1.40.0" "@zag-js/utils" "1.40.0" -"@zag-js/date-input@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/date-input/-/date-input-1.40.0.tgz#51a189b979350302f963f4bdb5f538e8a9c86f3a" - integrity sha512-/VU8g3dugggC5xW2OJW1KONWzPkEbK/yLA0lPxymW/Uo0ixh2mKJUVTOTqDFWf1b0vzLX2XlYoLL+I2ryUyPvA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/date-utils" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/live-region" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/date-picker@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/date-picker/-/date-picker-1.40.0.tgz#567cd1f8246905713c7cdc75da8b5e5c08cd5247" - integrity sha512-Nm3aSKn/5tGOZk8rIddLyBk+oeE0zr/ZsJuuTc3rysd04owVy1UhmUh6X9CqfTJtwTDpUZe+orHaIvKlE3Rd0w== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/date-utils" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/live-region" "1.40.0" - "@zag-js/popper" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/date-utils@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/date-utils/-/date-utils-1.40.0.tgz#7c17a009e6884ba11c8959a3a91fee5899d2e0cc" - integrity sha512-nuB1QM3X7yY0k2JiZbHHm6wigY+Cl1QK6sRlh+C7mOyzEKnNEqNSVIqgSionCtWO6zAZh1R8Znp5ZeCdbbc27w== - -"@zag-js/dialog@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/dialog/-/dialog-1.40.0.tgz#8ad955596e999f3eb02475ac7d71f9748f88f28f" - integrity sha512-1FHxR7/Kuu+9K2dxH7dKlSckCZ26n5ec79qWr0aMSSs2DF+ypQf5GUlaS6z2UqroZvIoJCvABVMm9OMko/qxlA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/aria-hidden" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-trap" "1.40.0" - "@zag-js/remove-scroll" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/dismissable@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/dismissable/-/dismissable-1.40.0.tgz#9509f9c7c47b94c1577d71d8a7b9eb2652fde344" - integrity sha512-bBkFvPg/zbYn31ZgEfx8not6s2Ekx7zU2sO8tGXb8rYPnHBfGDYEzVQansUStJn0Atzw+y7XR7B3G3u5AFQJKw== - dependencies: - "@zag-js/dom-query" "1.40.0" - "@zag-js/interact-outside" "1.40.0" - "@zag-js/utils" "1.40.0" - "@zag-js/dom-query@1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/dom-query/-/dom-query-1.40.0.tgz#f35d1de3d7050da2b758aee35cb42f9c1332d920" @@ -1536,99 +1242,13 @@ dependencies: "@zag-js/types" "1.40.0" -"@zag-js/drawer@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/drawer/-/drawer-1.40.0.tgz#a2220676f6f04d16f4c2af0b757491be47d7c319" - integrity sha512-N2OR5ZYuTsWkYYmwsNgmL+wfuM3qUxB8GAfo53AWvOh07QUVz1Dvh1WP4km5L6Tkz4UBQZACu8T/ZLyeZ+PdWg== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/aria-hidden" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-trap" "1.40.0" - "@zag-js/remove-scroll" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/editable@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/editable/-/editable-1.40.0.tgz#3b794e1724bff3d218bb60c3fbcfe7353add7d0c" - integrity sha512-X23wOg42BPvFWfJQi3yd8HiL8xtisrpL5ouFEzba56SQIxWZHDRpeWoqXqyLODq2/z2+SsZ0wV3laRD3ZH0C2g== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/interact-outside" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/file-upload@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/file-upload/-/file-upload-1.40.0.tgz#ffc910381478b963d8d785caf3343fae874122f2" - integrity sha512-hUZlJYjSGk7SAflTmQIjZv6M+icujaHS6I+dik2LM48rLWwNa/GYTNx+uY4zJLd9oW1eEj+6NcCYZpPWzKku4Q== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/file-utils" "1.40.0" - "@zag-js/i18n-utils" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/file-utils@1.40.0": +"@zag-js/file-utils@^1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/file-utils/-/file-utils-1.40.0.tgz#65bfea43ff88c3534b79c1d880de9a6fc382fc8a" integrity sha512-BGny4rafiBQ5TPCBXfzbH7lSyFdnoix7brq/+FllKpDqpWPQz0tIsgSZueF/Z8GPTrAkwMKOFI99P7OVhAhRig== dependencies: "@zag-js/i18n-utils" "1.40.0" -"@zag-js/floating-panel@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/floating-panel/-/floating-panel-1.40.0.tgz#e7729597e6f820006c654da8094f8be0e9dbabc5" - integrity sha512-e2QXwapCbjLJnU+MAz06CoByj4XJ3sdSBgWF+PSe2X2T8dd/FkZUnaDPaX0yyfyTWKzBbyRRNyon2LMAs8ndHw== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/popper" "1.40.0" - "@zag-js/rect-utils" "1.40.0" - "@zag-js/store" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/focus-trap@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/focus-trap/-/focus-trap-1.40.0.tgz#f8863317f0dd5bc1dc0121305abf4b972fb09ffb" - integrity sha512-Q6W+DU7pix5rtRwoDnYzTYMkUV2kMWrFV0/EdNN3spFSvnUSkDWRmcNpzf+56AuCNeqsAZxaLJpsHLZkcT2xrw== - dependencies: - "@zag-js/dom-query" "1.40.0" - -"@zag-js/focus-visible@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/focus-visible/-/focus-visible-1.40.0.tgz#e12f324b5ace7707819955674447525a329b551b" - integrity sha512-63byl/kLVzDYlnHFma4HKEKrqB1Vx2zg0sBmUSENPyh+Ia1xhEVVC5vu6GX7nu4t/8QRy3Jn0q7T5og81FGb1A== - dependencies: - "@zag-js/dom-query" "1.40.0" - -"@zag-js/highlight-word@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/highlight-word/-/highlight-word-1.40.0.tgz#131f5acb71372fbe6985e6181137f26f34f0707c" - integrity sha512-+aeVn3S5NPG6Tk4Sanl0VZk/0atjnF7Xy7POPs1HD5SBui29/6i3vn3bUBNXJXrnhUoNrUhuySVYVhgkffcQ7w== - -"@zag-js/hover-card@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/hover-card/-/hover-card-1.40.0.tgz#d0e56e83a630daa3fd3cee9037aa6aa2dea17b69" - integrity sha512-lkuLaikPLBIOnR0X75kSXdDYgv3ritAsn4TF1eGs12iYnZVX4PTL3J39tVNm9QrEXZ+iKcA1D2cUXNhEteCTyA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/popper" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - "@zag-js/i18n-utils@1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/i18n-utils/-/i18n-utils-1.40.0.tgz#c85c5e6327715dc3a86fc2d677e15905c3b1f3aa" @@ -1636,110 +1256,7 @@ dependencies: "@zag-js/dom-query" "1.40.0" -"@zag-js/image-cropper@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/image-cropper/-/image-cropper-1.40.0.tgz#341997f79550e76b9f220f96f7f8ef712a741f8b" - integrity sha512-bpTCaiUXM0Mh6ddoJ1fA1B/YXp5Fc8LA0hg8CuEByDwGRVKPJ0KotL6QXMF6cEJZ1fcHF3Lcmpbj5Xotfkr4mA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/interact-outside@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/interact-outside/-/interact-outside-1.40.0.tgz#569c3d67b37120ae5a0f4ee53c6d78a7821b2edd" - integrity sha512-Fws+O4uD9vS0I5KVcf3U2tNjLKvqlv+RExFbTywckDLOCJ145M/pMQWTr1FHil04jk5PFyM1iGfsbom8tozHpQ== - dependencies: - "@zag-js/dom-query" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/json-tree-utils@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/json-tree-utils/-/json-tree-utils-1.40.0.tgz#5e19150e891d9a9d65309b3176aeb7720533ce62" - integrity sha512-7zEzU59Gz76nV7n3l70uMB5yAOOQMmt1PTAni6S97uw7/6KzPktsEWBcw7ocC4IIA42PKdT7akpq721H0vthbA== - -"@zag-js/listbox@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/listbox/-/listbox-1.40.0.tgz#7618a3036cdb4936746dacccb9e16fda2ad69d01" - integrity sha512-zB33y+dk6/e0ZTs3wun2KsuPaH/wygOuD8scnH2a2Y/W9a2P1rq503Kgm5d5kVXBKQLxOBwievWJ8Blajv8LnA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/collection" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-visible" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/live-region@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/live-region/-/live-region-1.40.0.tgz#08406a21e6ce8f5e94b1192b0405749b75abe5f0" - integrity sha512-i1Dx02KGcQOAZGNhkFe8kz26gYJcn7KsT/M1UovjS9RTbl9diY8ShiyfIAhqruoaHQyqsHMRh/f7Idu45HdiDA== - -"@zag-js/marquee@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/marquee/-/marquee-1.40.0.tgz#fd0f02fd733dea18be5b4fa80a986fa7367bb689" - integrity sha512-XfvAwSNYXV3fEIRc44a9sAsoJoLKt+CWbpSPgQBpiFPpWh0rZ8frUZCslevTzBB3ifIWoSg+svDHQOGsDa8wGA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/menu@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/menu/-/menu-1.40.0.tgz#a4f02e67510f133ccdd540b90f19e7d736039895" - integrity sha512-FRBqwsOjxBi0eSwqwrOw2td1rd0Xxl0f41J2lGc8E7z+2PabbBcJ/poqSiEn8YoaCT4mAWNjt4QQU/Pe1bRJ/g== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-visible" "1.40.0" - "@zag-js/popper" "1.40.0" - "@zag-js/rect-utils" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/navigation-menu@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/navigation-menu/-/navigation-menu-1.40.0.tgz#79d0d346167c48eccaac64245d517a9f140dcfda" - integrity sha512-aJkEGYH8P9NfsQOjxMzxuF4YrrV2N1GQj6Y5Ow19MKuLh42o35bUhwoGsYjFbxgEcImabINtZJqtAPAkOdJXmQ== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/number-input@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/number-input/-/number-input-1.40.0.tgz#1142f29ae0f22572f186a9ef7578fba8f6c87fae" - integrity sha512-WffdeqSOpsKmgPzBkNZl9nAolQPlyl9dIabaPguGgXdYtZW/OGCGj8jCYqyEu4VL3kDPPVVQRWEqC/XzwzVCRg== - dependencies: - "@internationalized/number" "3.6.5" - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/pagination@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/pagination/-/pagination-1.40.0.tgz#5fc9a454965d2729220151557c4409274d0bf9fc" - integrity sha512-Ykotky0A/7rswb6BfOD9aXL1EssKwUYfBRbdWGe52uhVc7dGagMSTUDRVeNhVsP/MEdtwqys7urvDbAlEqq+GA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/password-input@1.40.0", "@zag-js/password-input@^1.40.0": +"@zag-js/password-input@^1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/password-input/-/password-input-1.40.0.tgz#8d70e938ad5646aef8869d967741a58608d0a16f" integrity sha512-mD4tbA4m82oV+0NbJ+P00Q4Gwz+zf1kZEZ3Z48ohICfK/WO1KhCgviY7vu/7bCMnRiD3dbi+nEeym8Kb29wRHw== @@ -1750,188 +1267,6 @@ "@zag-js/types" "1.40.0" "@zag-js/utils" "1.40.0" -"@zag-js/pin-input@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/pin-input/-/pin-input-1.40.0.tgz#cb5b956e1a741057786ba0bab34b289557674207" - integrity sha512-iJIXDJC+9DUx+A3sRdTmHV7vPZXCw9O6le3R0lKf/8kQOgj7FKjbVw2SkUMAoOZ0u5J7Zwg2oZc7ddt1pwUk9w== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/popover@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/popover/-/popover-1.40.0.tgz#0aa2d0efe90a29a2c9bb5190fbb860d0fd1d330c" - integrity sha512-bjvOep1YNlsvIYGh/rPsFCHjH2cCt2aKsVLyRvzTT1jhGZJvBdQKQBJjSuG5Nh4y1PUqtrrz69ZMWRrJGQ3rNg== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/aria-hidden" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-trap" "1.40.0" - "@zag-js/popper" "1.40.0" - "@zag-js/remove-scroll" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/popper@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/popper/-/popper-1.40.0.tgz#7bc2160fb82ed0e790630e5def8e9a4f8f22095a" - integrity sha512-rCkgqgwlpgMwcnuSVrZK2xXl1Mvptpuw3cZy6rC2C5F3yE1GmWohdts5VkeQNro+sd/xHTdVovOqY6cU9Htj1w== - dependencies: - "@floating-ui/dom" "^1.7.6" - "@zag-js/dom-query" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/presence@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/presence/-/presence-1.40.0.tgz#f8f38210e7b55bd42724b7e9f1899619c0e623cc" - integrity sha512-P0bAuzEIDuMglE1xfmW5xTuSBlWjNZ8nOGXoIksKOKb+b+jy2Vys6WjZjKipV/jop4u85wfzKchcPc3C+cXuog== - dependencies: - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - -"@zag-js/progress@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/progress/-/progress-1.40.0.tgz#5614bce7083e7cd77cdcd6c21acf78a105509568" - integrity sha512-V61a5CHEs8suevQVS+/1ENj1RDVYNOUUTawK6uriCA6Ol59xe30DmF+eV6Y9miM7L/pN3YjZRq9uEDJMXXK32g== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/qr-code@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/qr-code/-/qr-code-1.40.0.tgz#b2416846b5a6182c8c2bafb43ea5b93a5043b5c3" - integrity sha512-xD37tVrQ46CeqVLqkSm61kURoJ4Z/uOFcB8z7Hu3UX+1OFTfkhgrns6iLUneoRjO3hsqQaTaVkxVOQeLYWb+wA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - proxy-memoize "3.0.1" - uqr "0.1.2" - -"@zag-js/radio-group@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/radio-group/-/radio-group-1.40.0.tgz#3877a9891cfcb6a6dd98434bc90c8188fda6c49b" - integrity sha512-sFJCdyOKzQC9hylSP19R71yv44by/C78D9EHfsxQJtvOgDv9E+h13NNX4n9wWyubC20xftlxkja8sNT5NfJKUw== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-visible" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/rating-group@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/rating-group/-/rating-group-1.40.0.tgz#c44107032ad1729b4c280f2c0d91c1632d5f8abe" - integrity sha512-UMBI3xAMcm7otpAczMGPEA7jC1hvV8NhnZ4mN3oftJB0bc1winoXxJdCkrXN58TTNWrGNSRzjtm048G+HPCdpw== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/rect-utils@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/rect-utils/-/rect-utils-1.40.0.tgz#8748089c98542eb8f053040f4c285226189e0aa5" - integrity sha512-ikgLuE4rLlACm4mGLp6Ga8sJA44uFwohA1nVmb95sQ+VIyx2naf91CEF7SMrZVEwFKHaHpxdKVQSZLRjJqO/dw== - -"@zag-js/remove-scroll@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/remove-scroll/-/remove-scroll-1.40.0.tgz#ebb194643959840f41dbe57124b165a92ee4baae" - integrity sha512-f6EgODnJMRtkbgdJCgyllND8jui+RtPrCZy6JYhhOg7KQ+bFfV36KzWQMty38ZdOyrh23UUO7MJ3WGcFXPvk3g== - dependencies: - "@zag-js/dom-query" "1.40.0" - -"@zag-js/scroll-area@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/scroll-area/-/scroll-area-1.40.0.tgz#01b2c135bdef8b7c1755fc2ae6ff727e25891a35" - integrity sha512-7EtWETRIn8dY7xqAeMOlnEuzhOrtc65mN/0YvT3XYcBz/CzmHzyZTmos3UXBJGnKHSGj61aEpP9g3RK+x/w63A== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/scroll-snap@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/scroll-snap/-/scroll-snap-1.40.0.tgz#5b1fda9025df0063b1ec42c825f3567067051905" - integrity sha512-XtjeOd+pwGX0+K7NvsQncrKwV8CTSzHfVVJrdQ+MweiWBpGNeAh43ySN4L+KSTgtnUiZbuwBIxlKK0tX+WupgQ== - dependencies: - "@zag-js/dom-query" "1.40.0" - -"@zag-js/select@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/select/-/select-1.40.0.tgz#e29b5a0bdfe809d33ec620b5f23a1a415730538f" - integrity sha512-auMI9SvocVvKHNWF2DobyQN6+1k3OO6UsQTdkofvbHxX7maosy8ZXA6k1r9Ndt4qLUu7CbdAAQ+qJ4VkgJyvxA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/collection" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-visible" "1.40.0" - "@zag-js/popper" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/signature-pad@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/signature-pad/-/signature-pad-1.40.0.tgz#3193d5f930ef5741f421112707959d9370ed04bd" - integrity sha512-L0LTxcpdckaGdDDXcQCr4AG+J9xUHH+lsenH7NG4ZI7rSr4nRmHMdDH0GR7nBa6MMdPIIimjWIE/TwZ1OuHzCQ== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - perfect-freehand "^1.2.3" - -"@zag-js/slider@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/slider/-/slider-1.40.0.tgz#91d5c96f9014e70a6523909ade62c22237655fb1" - integrity sha512-xZGycm+ghGFG3kTYq8g0t1Av1moxg45WiFz5E3bRgP7YU9beSTaFZI8h6f65NiC5P3YuwA0RoYxA46GH22qoZg== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/splitter@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/splitter/-/splitter-1.40.0.tgz#35aee11423e994c3f7f7777a9b14dd29f8d1c5dc" - integrity sha512-64KNKwlIjyUIjp7i/whDCpREiSFrNI/cF7MpBJvBGRPUWq8NpNxMGKWD+vBCV+JC61QF9xg/NgNoigFycS9sYw== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/steps@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/steps/-/steps-1.40.0.tgz#0be1a53e1af20c17fe9ad98bc3ef46d9f594add7" - integrity sha512-5sVFzcIYubCn1nJSQIx9WWNlJuFoOJMpkD/ZMwNp0LzpnmnspsCOmdnQUWEftMQ1KdwZ+qNgfo/+kHclb9cBjg== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - "@zag-js/store@1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/store/-/store-1.40.0.tgz#d27ed18e9bd8bf979315ab672d6481b71b482f1d" @@ -1939,78 +1274,7 @@ dependencies: proxy-compare "3.0.1" -"@zag-js/switch@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/switch/-/switch-1.40.0.tgz#2b289bb0eaa9ab320179c6539432f97329aafa65" - integrity sha512-hUH3AF79ndSFZxt7Plw7mVZV0QlM0kFqKwrAGBEOE77P3rKpOsMJ3wWgMb3w6nwlxGQsbwmMgAFvYUslLpM4Lg== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-visible" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/tabs@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/tabs/-/tabs-1.40.0.tgz#b80d3cbfed40fef531fe5ec90df51be2471489f3" - integrity sha512-xqfPC2nQ6Bn4nqy1L+1CVcQcg/Z7K2q753OvsX2C8Wtu+7tF//HyMbOpF6fGikqlLkUzCkvjkqDjdOXcfWN9ZQ== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/tags-input@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/tags-input/-/tags-input-1.40.0.tgz#aae5785584c669648a199e4854be47498e4ae0df" - integrity sha512-3cB7nPlUvzZNZwQw5AaTuxwcRn1n2qkDCjLEb2NEwtmI+YxHbK3k1MtXjTccjcYjU8cAkv+jaeyZPs6KFKQcHA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/auto-resize" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/interact-outside" "1.40.0" - "@zag-js/live-region" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/timer@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/timer/-/timer-1.40.0.tgz#4358358973738032570221c27d4280aae0d2d201" - integrity sha512-Rvet226fhUtZnItjHpUYV7MH0uEFZfXT9PSRrX5jdiU4/P0eWKbirwi//AVeqcWFexXvw6ajYSfQN7EVyr2x4w== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/toast@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/toast/-/toast-1.40.0.tgz#16b64be26b73bda23ab69e8c8d03e563317cd9dd" - integrity sha512-EDH43zdiH4Bz30cE6YI9g//qXGOOfWObM3dFLG8I0q/cJRf7/6jO82rwZAHPwfOSfKhUDxStirD8F6eoY6BWXA== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/toggle-group@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/toggle-group/-/toggle-group-1.40.0.tgz#c48c3ebb065001e73722b70045d772b88499779a" - integrity sha512-+JKcnfEbdQnr5p7uRvYLdivhUsM6iio71UC10tK74nXYRnYm0/Uvxg3oQzvbNTq9WdcU/DIh3gZVZ2Vex9nBnQ== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/toggle@1.40.0": +"@zag-js/toggle@^1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/toggle/-/toggle-1.40.0.tgz#8c2a757e51acca6ebd25385db8fb70217c51269b" integrity sha512-DW7682lzTP2eDlMvrS7tUX3zAm7ufrrKr7VDiX8BB6oXBRETXrVIxCYNuoIdqjwXebdjAoxaCiUZEreRVucYQg== @@ -2021,46 +1285,6 @@ "@zag-js/types" "1.40.0" "@zag-js/utils" "1.40.0" -"@zag-js/tooltip@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/tooltip/-/tooltip-1.40.0.tgz#428d5836a7e19a3a564412c807d6be159961c5ac" - integrity sha512-pyrvit+nB8dIwVNTGBRlHPsh7yMJGAxxM1zfY7HOTJqF+n6+6xYTQ4gQ/Ocy1Q7I5kO88+m16naEh0qLFiTZww== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-visible" "1.40.0" - "@zag-js/popper" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/tour@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/tour/-/tour-1.40.0.tgz#a230885a1841c19b0830704119ff6a34a4630894" - integrity sha512-VczYGFQM9xsSbfy5N0NP91GdKxbYvfPCDAguD+WQSs1umEIgAAozSKPUdV3NNCX5Pq6B1F3dBxi6gYPdNqrAHg== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dismissable" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/focus-trap" "1.40.0" - "@zag-js/interact-outside" "1.40.0" - "@zag-js/popper" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - -"@zag-js/tree-view@1.40.0": - version "1.40.0" - resolved "https://registry.yarnpkg.com/@zag-js/tree-view/-/tree-view-1.40.0.tgz#4ba8192e5631edbcb6eded37f4d4d35b8cbd2274" - integrity sha512-v/20ekjbM+HXDEkpHAz6k8WpoZRmZmdCApDIkIgXVHPRQk+kwAiiIPY20ZDG+DjRu7Lh0MUdQavdZtGj6Ihwkw== - dependencies: - "@zag-js/anatomy" "1.40.0" - "@zag-js/collection" "1.40.0" - "@zag-js/core" "1.40.0" - "@zag-js/dom-query" "1.40.0" - "@zag-js/types" "1.40.0" - "@zag-js/utils" "1.40.0" - "@zag-js/types@1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/types/-/types-1.40.0.tgz#6bd98a399d58724e6e81c11f4cbd0bb3501cc6fa" @@ -2073,7 +1297,7 @@ resolved "https://registry.yarnpkg.com/@zag-js/utils/-/utils-1.40.0.tgz#cf590c4b6ac294f74a369e8cda40ca7eec754400" integrity sha512-XUpqDtXfHe7CySjOhLPLj9H8rxbiFUJAGgmBzNdpsGPP4wx12cpOXrpSjRXZ2kMwooMPz/P7RPDBteto8sqhAQ== -"@zag-js/vue@1.40.0", "@zag-js/vue@^1.40.0": +"@zag-js/vue@^1.40.0": version "1.40.0" resolved "https://registry.yarnpkg.com/@zag-js/vue/-/vue-1.40.0.tgz#f5d7f3ff68b6062ecab5611cc846fe39ddf08524" integrity sha512-sUkJfuESY42yNnSXszpkz4PCreW0rvEWir1s01zhow1rDi7WCNO1P7Jc9VrS5goVyzqsfInedUX2nzOO7XV5Iw== @@ -2134,6 +1358,13 @@ ast-walker-scope@^0.8.3: "@babel/parser" "^7.28.4" ast-kit "^2.1.3" +awaitqueue@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/awaitqueue/-/awaitqueue-3.3.0.tgz#299174d17b467fda8bbc60bba44adc1aac5349a1" + integrity sha512-zLxDhzQbzHmOyvxi7g3OlfR7jLrcmElStPxfLPpJkrFSDm71RSrY/MvsDA8Btlx8X1nOHUzGhQvc6bdUjL2f2w== + dependencies: + debug "^4.4.3" + balanced-match@^4.0.2: version "4.0.4" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" @@ -2750,11 +1981,23 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +"events-alias@npm:events@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + exsolve@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/exsolve/-/exsolve-1.0.8.tgz#7f5e34da61cd1116deda5136e62292c096f50613" integrity sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA== +fake-mediastreamtrack@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/fake-mediastreamtrack/-/fake-mediastreamtrack-2.2.1.tgz#49a36b4d58fadb7b450eafe96bdfd9173a1c6252" + integrity sha512-SITLc7UTDirSdgLGORrlmqjWLJtbtfIz/xO7DwVbJH3f0ds+NQok4ccl/WEzz49NSgiUlXf2wDW0+y5C+TO6EA== + dependencies: + "@lukeed/uuid" "^2.0.1" + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -2888,6 +2131,13 @@ graceful-fs@^4.2.4: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +h264-profile-level-id@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/h264-profile-level-id/-/h264-profile-level-id-2.3.2.tgz#1990cb16479756072db96e947315b361b36d2cbf" + integrity sha512-hnq1UDlw7WGJV6GCr/g7wnkHYUjdAY2bis9rgn2JqSdQS2WfVvnt1ZE9g8nTguracodf5LLKZOwURsDN49YtBQ== + dependencies: + debug "^4.4.3" + has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -3280,6 +2530,21 @@ mdast-util-to-string@^4.0.0: dependencies: "@types/mdast" "^4.0.0" +mediasoup-client@^3.20.0: + version "3.20.0" + resolved "https://registry.yarnpkg.com/mediasoup-client/-/mediasoup-client-3.20.0.tgz#4c9abcc5471ce610584c01b9ebc943124901ebf7" + integrity sha512-FL6RlsGwvmXbXkbMoc1eW2EqW7k8Cw/Mhls3QewQXH+mioWVeVNWjzcDPmTZ3Sw+mua/n0IH5C/ntuVsx+KegA== + dependencies: + "@types/debug" "^4.1.13" + "@types/events-alias" "npm:@types/events@^3.0.3" + awaitqueue "^3.3.0" + debug "^4.4.3" + events-alias "npm:events@^3.3.0" + fake-mediastreamtrack "^2.2.1" + h264-profile-level-id "^2.3.2" + sdp-transform "^3.0.0" + supports-color "^10.2.2" + micromark-core-commonmark@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz#c691630e485021a68cf28dbc2b2ca27ebf678cd4" @@ -3755,11 +3020,6 @@ perfect-debounce@^2.0.0: resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-2.1.0.tgz#e7078e38f231cb191855c3136a4423aef725d261" integrity sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g== -perfect-freehand@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/perfect-freehand/-/perfect-freehand-1.2.3.tgz#f78b4f85464297e5861a9f6c3efd4c0abfa2f4be" - integrity sha512-bHZSfqDHGNlPpgH2yxXgPHlQSPpEbo+qg7li0M78J9vNAi2yjwLeA4x79BEQhX44lEWpCLSFCeRZwpw0niiXPA== - picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" @@ -3845,18 +3105,11 @@ primevue@^4.5.5: "@primevue/core" "4.5.5" "@primevue/icons" "4.5.5" -proxy-compare@3.0.1, proxy-compare@^3.0.0: +proxy-compare@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-3.0.1.tgz#3262cff3a25a6dedeaa299f6cf2369d6f7588a94" integrity sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q== -proxy-memoize@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/proxy-memoize/-/proxy-memoize-3.0.1.tgz#75eed518778b282abb0bc55e748995214b7f74a9" - integrity sha512-VDdG/VYtOgdGkWJx7y0o7p+zArSf2383Isci8C+BP3YXgMYDoPd3cCBjw0JdWb6YBb9sFiOPbAADDVTPJnh+9g== - dependencies: - proxy-compare "^3.0.0" - punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" @@ -4101,6 +3354,11 @@ scule@^1.3.0: resolved "https://registry.yarnpkg.com/scule/-/scule-1.3.0.tgz#6efbd22fd0bb801bdcc585c89266a7d2daa8fbd3" integrity sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g== +sdp-transform@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/sdp-transform/-/sdp-transform-3.0.0.tgz#863dd2d781c468d7d6a2f9c70fedcf0538f3e76c" + integrity sha512-gfYVRGxjHkGF2NPeUWHw5u6T/KGFtS5/drPms73gaSuMaVHKCY3lpLnGDfswVQO0kddeePoti09AwhYP4zA8dQ== + semver@^7.3.5, semver@^7.5.4, semver@^7.6.3, semver@^7.7.3, semver@^7.7.4: version "7.7.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" @@ -4169,6 +3427,11 @@ strip-indent@^4.1.1: resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.1.1.tgz#aba13de189d4ad9a17f6050e76554ac27585c7af" integrity sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA== +supports-color@^10.2.2: + version "10.2.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-10.2.2.tgz#466c2978cc5cd0052d542a0b576461c2b802ebb4" + integrity sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g== + supports-color@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" @@ -4245,7 +3508,7 @@ ts-declaration-location@^1.0.6: dependencies: picomatch "^4.0.2" -tslib@^2.1.0, tslib@^2.4.0, tslib@^2.8.0: +tslib@^2.1.0, tslib@^2.4.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -4336,11 +3599,6 @@ update-browserslist-db@^1.2.3: escalade "^3.2.0" picocolors "^1.1.1" -uqr@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d" - integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA== - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" diff --git a/server/plugins/auth.ts b/server/plugins/auth.ts index 4dd8d41..5e0b3af 100644 --- a/server/plugins/auth.ts +++ b/server/plugins/auth.ts @@ -4,7 +4,6 @@ import fp from 'fastify-plugin' import { Lucia } from 'lucia' interface DatabaseUserAttributes { - id: string displayName: string username: string createdAt: Date diff --git a/server/plugins/schemas/auth.ts b/server/plugins/schemas/auth.ts index 45071a2..15e58f9 100644 --- a/server/plugins/schemas/auth.ts +++ b/server/plugins/schemas/auth.ts @@ -1,7 +1,6 @@ import { Type } from 'typebox' export const UserSchema = Type.Object({ - id: Type.String(), username: Type.String(), displayName: Type.String(), createdAt: Type.String({ format: 'date-time' }), diff --git a/server/plugins/schemas/channel.ts b/server/plugins/schemas/channel.ts index fb55435..a51f53f 100644 --- a/server/plugins/schemas/channel.ts +++ b/server/plugins/schemas/channel.ts @@ -2,7 +2,7 @@ import { Type } from 'typebox' export const ChannelSchema = Type.Object({ id: Type.String(), - ownerId: Type.Union([Type.String(), Type.Null()]), + ownerUsername: Type.Union([Type.String(), Type.Null()]), name: Type.String(), persistent: Type.Boolean(), }, { $id: 'Channel' }) diff --git a/server/plugins/schemas/chat.ts b/server/plugins/schemas/chat.ts index 5a97ddb..eb7b003 100644 --- a/server/plugins/schemas/chat.ts +++ b/server/plugins/schemas/chat.ts @@ -1,19 +1,20 @@ import { Type } from 'typebox' +import { AttachmentSchema } from './attachment.ts' export const ReplySchema = Type.Object({ messageId: Type.String({ format: 'uuid' }), - senderId: Type.String({ format: 'uuid' }), + senderUsername: Type.String(), text: Type.String(), }, { $id: 'Reply' }) export const ChatMessageSchema = Type.Object({ id: Type.String({ format: 'uuid' }), - senderId: Type.String({ format: 'uuid' }), + senderUsername: Type.String(), text: Type.String({ minLength: 1 }), createdAt: Type.String({ format: 'date-time' }), updatedAt: Type.String({ format: 'date-time' }), - attachments: Type.Array(Type.String({ format: 'uuid' })), + attachments: Type.Array(AttachmentSchema), }, { $id: 'ChatMessage' }) export const NewChatMessagePayloadSchema = Type.Object({ diff --git a/server/plugins/schemas/user.ts b/server/plugins/schemas/user.ts index f2f8b08..10c7130 100644 --- a/server/plugins/schemas/user.ts +++ b/server/plugins/schemas/user.ts @@ -2,7 +2,6 @@ import { Type } from 'typebox' export const GetUserQuerySchema = Type.Partial(Type.Object({ username: Type.String(), - id: Type.String(), }), { $id: 'GetUserQuery' }) export const UserPreferencesSchema = Type.Object({ diff --git a/server/plugins/socket/types.ts b/server/plugins/socket/types.ts index 84573ef..a1c9dfa 100644 --- a/server/plugins/socket/types.ts +++ b/server/plugins/socket/types.ts @@ -4,7 +4,7 @@ import type { Channel, User } from '../../prisma/generated-client/client.ts' export interface SerializedClient { socketId: string - userId: User['id'] + username: User['username'] channelId: Channel['id'] inputMuted: boolean outputMuted: boolean diff --git a/server/plugins/socket/webrtc/Client.ts b/server/plugins/socket/webrtc/Client.ts index c5665a3..08da057 100644 --- a/server/plugins/socket/webrtc/Client.ts +++ b/server/plugins/socket/webrtc/Client.ts @@ -26,7 +26,7 @@ interface ClientEvents { export class Client extends EventEmitter { readonly socketId: string - readonly userId: string + readonly username: string channelId: string = '' #inputMuted = false @@ -38,11 +38,11 @@ export class Client extends EventEmitter { readonly #producers = new Map() readonly #consumers = new Map() - constructor(socketId: string, userId: string, router: types.Router) { + constructor(socketId: string, username: string, router: types.Router) { super() this.socketId = socketId - this.userId = userId + this.username = username this.#router = router } @@ -278,7 +278,7 @@ export class Client extends EventEmitter { serialize(): SerializedClient { return { socketId: this.socketId, - userId: this.userId, + username: this.username, channelId: this.channelId, inputMuted: this.#inputMuted, outputMuted: this.#outputMuted, diff --git a/server/plugins/socket/webrtc/index.ts b/server/plugins/socket/webrtc/index.ts index db3f648..0189fd1 100644 --- a/server/plugins/socket/webrtc/index.ts +++ b/server/plugins/socket/webrtc/index.ts @@ -23,7 +23,7 @@ export default async function (fastify: FastifyInstance) { io.on('connection', async (socket) => { consola.info('[WebRtc]', 'Client connected', socket.id) - const client = new Client(socket.id, socket.data.user.id, mediasoupRouter) + const client = new Client(socket.id, socket.data.user.username, mediasoupRouter) defaultChannel.addClient(client) socket.join(defaultChannel.id) diff --git a/server/prisma/generated-client/browser.ts b/server/prisma/generated-client/browser.ts index dffa888..56e11fe 100644 --- a/server/prisma/generated-client/browser.ts +++ b/server/prisma/generated-client/browser.ts @@ -1,3 +1,4 @@ + /* !!! This is code generated by Prisma. Do not edit directly. !!! */ /* eslint-disable */ // biome-ignore-all lint: generated file @@ -7,7 +8,7 @@ * Use it to get access to models, enums, and input types. * * This file does not contain a `PrismaClient` class, nor several other helpers that are intended as server-side only. - * See `Client.ts` for the standard, server-side entry point. + * See `client.ts` for the standard, server-side entry point. * * 🟢 You can import this file directly. */ diff --git a/server/prisma/generated-client/internal/class.ts b/server/prisma/generated-client/internal/class.ts index 3bf4859..d1c5b4a 100644 --- a/server/prisma/generated-client/internal/class.ts +++ b/server/prisma/generated-client/internal/class.ts @@ -1,3 +1,4 @@ + /* !!! This is code generated by Prisma. Do not edit directly. !!! */ /* eslint-disable */ // biome-ignore-all lint: generated file @@ -7,7 +8,7 @@ * * 🛑 Under no circumstances should you import this file directly! 🛑 * - * Please import the `PrismaClient` class from the `Client.ts` file instead. + * Please import the `PrismaClient` class from the `client.ts` file instead. */ import * as runtime from "@prisma/client/runtime/client" @@ -19,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.7.0", "engineVersion": "75cbdc1eb7150937890ad5465d861175c6624711", "activeProvider": "sqlite", - "inlineSchema": "datasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./generated-client\"\n}\n\nmodel User {\n id String @id @default(cuid())\n username String @unique\n password String\n displayName String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n Session Session[]\n UserPreferences UserPreferences?\n Messages Message[]\n Channels Channel[]\n}\n\nmodel Session {\n id String @id\n userId String\n expiresAt DateTime\n\n user User @relation(references: [id], fields: [userId], onDelete: Cascade)\n\n @@index([userId])\n}\n\nmodel UserPreferences {\n userId String @id @unique\n toggleInputHotkey String? @default(\"\")\n toggleOutputHotkey String? @default(\"\")\n\n user User @relation(references: [id], fields: [userId], onDelete: Cascade)\n}\n\nmodel Attachment {\n id String @id @default(uuid())\n name String\n mimetype String\n size Int\n createdAt DateTime @default(now())\n\n message MessageAttachment[]\n}\n\nmodel Message {\n id String @id @default(uuid())\n text String\n senderId String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n sender User? @relation(references: [id], fields: [senderId], onDelete: SetNull)\n attachments MessageAttachment[]\n}\n\nmodel MessageAttachment {\n messageId String\n attachmentId String\n\n message Message @relation(fields: [messageId], references: [id])\n attachment Attachment @relation(fields: [attachmentId], references: [id])\n\n @@id([messageId, attachmentId])\n}\n\nmodel Channel {\n id String @id @default(uuid())\n ownerId String?\n name String\n persistent Boolean\n\n owner User? @relation(references: [id], fields: [ownerId], onDelete: Cascade)\n}\n", + "inlineSchema": "datasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./generated-client\"\n}\n\nmodel User {\n username String @id @unique\n password String\n displayName String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n Session Session[]\n UserPreferences UserPreferences?\n Messages Message[]\n Channels Channel[]\n}\n\nmodel Session {\n id String @id\n userId String\n expiresAt DateTime\n\n user User @relation(references: [username], fields: [userId], onDelete: Cascade)\n}\n\nmodel UserPreferences {\n username String @id @unique\n toggleInputHotkey String? @default(\"\")\n toggleOutputHotkey String? @default(\"\")\n\n user User @relation(references: [username], fields: [username], onDelete: Cascade)\n}\n\nmodel Attachment {\n id String @id @default(uuid())\n name String\n mimetype String\n size Int\n createdAt DateTime @default(now())\n\n message MessageAttachment[]\n}\n\nmodel Message {\n id String @id @default(uuid())\n text String\n senderUsername String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n sender User? @relation(references: [username], fields: [senderUsername], onDelete: SetNull)\n attachments MessageAttachment[]\n}\n\nmodel MessageAttachment {\n messageId String\n attachmentId String\n\n message Message @relation(fields: [messageId], references: [id])\n attachment Attachment @relation(fields: [attachmentId], references: [id])\n\n @@id([messageId, attachmentId])\n}\n\nmodel Channel {\n id String @id @default(uuid())\n ownerUsername String?\n name String\n persistent Boolean\n\n owner User? @relation(references: [username], fields: [ownerUsername], onDelete: Cascade)\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, @@ -31,10 +32,10 @@ const config: runtime.GetPrismaClientConfig = { } } -config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"Session\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"UserPreferences\",\"kind\":\"object\",\"type\":\"UserPreferences\",\"relationName\":\"UserToUserPreferences\"},{\"name\":\"Messages\",\"kind\":\"object\",\"type\":\"Message\",\"relationName\":\"MessageToUser\"},{\"name\":\"Channels\",\"kind\":\"object\",\"type\":\"Channel\",\"relationName\":\"ChannelToUser\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":null},\"UserPreferences\":{\"fields\":[{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toggleInputHotkey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toggleOutputHotkey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserPreferences\"}],\"dbName\":null},\"Attachment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimetype\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"size\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"message\",\"kind\":\"object\",\"type\":\"MessageAttachment\",\"relationName\":\"AttachmentToMessageAttachment\"}],\"dbName\":null},\"Message\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"text\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"senderId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sender\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"MessageToUser\"},{\"name\":\"attachments\",\"kind\":\"object\",\"type\":\"MessageAttachment\",\"relationName\":\"MessageToMessageAttachment\"}],\"dbName\":null},\"MessageAttachment\":{\"fields\":[{\"name\":\"messageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"attachmentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message\",\"kind\":\"object\",\"type\":\"Message\",\"relationName\":\"MessageToMessageAttachment\"},{\"name\":\"attachment\",\"kind\":\"object\",\"type\":\"Attachment\",\"relationName\":\"AttachmentToMessageAttachment\"}],\"dbName\":null},\"Channel\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ownerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"persistent\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"owner\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ChannelToUser\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"Session\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"UserPreferences\",\"kind\":\"object\",\"type\":\"UserPreferences\",\"relationName\":\"UserToUserPreferences\"},{\"name\":\"Messages\",\"kind\":\"object\",\"type\":\"Message\",\"relationName\":\"MessageToUser\"},{\"name\":\"Channels\",\"kind\":\"object\",\"type\":\"Channel\",\"relationName\":\"ChannelToUser\"}],\"dbName\":null},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":null},\"UserPreferences\":{\"fields\":[{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toggleInputHotkey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"toggleOutputHotkey\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserPreferences\"}],\"dbName\":null},\"Attachment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimetype\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"size\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"message\",\"kind\":\"object\",\"type\":\"MessageAttachment\",\"relationName\":\"AttachmentToMessageAttachment\"}],\"dbName\":null},\"Message\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"text\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"senderUsername\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sender\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"MessageToUser\"},{\"name\":\"attachments\",\"kind\":\"object\",\"type\":\"MessageAttachment\",\"relationName\":\"MessageToMessageAttachment\"}],\"dbName\":null},\"MessageAttachment\":{\"fields\":[{\"name\":\"messageId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"attachmentId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message\",\"kind\":\"object\",\"type\":\"Message\",\"relationName\":\"MessageToMessageAttachment\"},{\"name\":\"attachment\",\"kind\":\"object\",\"type\":\"Attachment\",\"relationName\":\"AttachmentToMessageAttachment\"}],\"dbName\":null},\"Channel\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ownerUsername\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"persistent\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"owner\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ChannelToUser\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"Session\",\"UserPreferences\",\"sender\",\"message\",\"_count\",\"attachment\",\"attachments\",\"Messages\",\"owner\",\"Channels\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"UserPreferences.findUnique\",\"UserPreferences.findUniqueOrThrow\",\"UserPreferences.findFirst\",\"UserPreferences.findFirstOrThrow\",\"UserPreferences.findMany\",\"UserPreferences.createOne\",\"UserPreferences.createMany\",\"UserPreferences.createManyAndReturn\",\"UserPreferences.updateOne\",\"UserPreferences.updateMany\",\"UserPreferences.updateManyAndReturn\",\"UserPreferences.upsertOne\",\"UserPreferences.deleteOne\",\"UserPreferences.deleteMany\",\"UserPreferences.groupBy\",\"UserPreferences.aggregate\",\"Attachment.findUnique\",\"Attachment.findUniqueOrThrow\",\"Attachment.findFirst\",\"Attachment.findFirstOrThrow\",\"Attachment.findMany\",\"Attachment.createOne\",\"Attachment.createMany\",\"Attachment.createManyAndReturn\",\"Attachment.updateOne\",\"Attachment.updateMany\",\"Attachment.updateManyAndReturn\",\"Attachment.upsertOne\",\"Attachment.deleteOne\",\"Attachment.deleteMany\",\"_avg\",\"_sum\",\"Attachment.groupBy\",\"Attachment.aggregate\",\"Message.findUnique\",\"Message.findUniqueOrThrow\",\"Message.findFirst\",\"Message.findFirstOrThrow\",\"Message.findMany\",\"Message.createOne\",\"Message.createMany\",\"Message.createManyAndReturn\",\"Message.updateOne\",\"Message.updateMany\",\"Message.updateManyAndReturn\",\"Message.upsertOne\",\"Message.deleteOne\",\"Message.deleteMany\",\"Message.groupBy\",\"Message.aggregate\",\"MessageAttachment.findUnique\",\"MessageAttachment.findUniqueOrThrow\",\"MessageAttachment.findFirst\",\"MessageAttachment.findFirstOrThrow\",\"MessageAttachment.findMany\",\"MessageAttachment.createOne\",\"MessageAttachment.createMany\",\"MessageAttachment.createManyAndReturn\",\"MessageAttachment.updateOne\",\"MessageAttachment.updateMany\",\"MessageAttachment.updateManyAndReturn\",\"MessageAttachment.upsertOne\",\"MessageAttachment.deleteOne\",\"MessageAttachment.deleteMany\",\"MessageAttachment.groupBy\",\"MessageAttachment.aggregate\",\"Channel.findUnique\",\"Channel.findUniqueOrThrow\",\"Channel.findFirst\",\"Channel.findFirstOrThrow\",\"Channel.findMany\",\"Channel.createOne\",\"Channel.createMany\",\"Channel.createManyAndReturn\",\"Channel.updateOne\",\"Channel.updateMany\",\"Channel.updateManyAndReturn\",\"Channel.upsertOne\",\"Channel.deleteOne\",\"Channel.deleteMany\",\"Channel.groupBy\",\"Channel.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"ownerId\",\"name\",\"persistent\",\"equals\",\"not\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"contains\",\"startsWith\",\"endsWith\",\"messageId\",\"attachmentId\",\"text\",\"senderId\",\"createdAt\",\"updatedAt\",\"mimetype\",\"size\",\"every\",\"some\",\"none\",\"userId\",\"toggleInputHotkey\",\"toggleOutputHotkey\",\"expiresAt\",\"username\",\"password\",\"displayName\",\"messageId_attachmentId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "jAM-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ACABAAAAAwAgAwgAAKsCACAgAACtAgAgIQAArAIAIAaGAQAA3wEAMIcBAABHABCIAQAA3wEAMIkBAQDCAQAhowEBAMIBACGmAUAAzwEAIQMAAAADACABAABGADAfAABHACADAAAAAwAgAQAABAAwAgAABQAgBwMAAN4BACCGAQAA3AEAMIcBAAAHABCIAQAA3AEAMKMBAQAAAAGkAQEA3QEAIaUBAQDdAQAhAQAAAEoAIAEAAABKACADAwAAqgIAIKQBAADvAQAgpQEAAO8BACADAAAABwAgAQAATQAwAgAASgAgAwAAAAcAIAEAAE0AMAIAAEoAIAMAAAAHACABAABNADACAABKACAEAwAAqQIAIKMBAQAAAAGkAQEAAAABpQEBAAAAAQETAABRACADowEBAAAAAaQBAQAAAAGlAQEAAAABARMAAFMAMAETAABTADAEAwAAqAIAIKMBAQDzAQAhpAEBAPUBACGlAQEA9QEAIQIAAABKACATAABWACADowEBAPMBACGkAQEA9QEAIaUBAQD1AQAhAgAAAAcAIBMAAFgAIAIAAAAHACATAABYACADAAAASgAgGgAAUQAgGwAAVgAgAQAAAEoAIAEAAAAHACAFCAAApQIAICAAAKcCACAhAACmAgAgpAEAAO8BACClAQAA7wEAIAaGAQAA2wEAMIcBAABfABCIAQAA2wEAMKMBAQDCAQAhpAEBAMMBACGlAQEAwwEAIQMAAAAHACABAABeADAfAABfACADAAAABwAgAQAATQAwAgAASgAgCQcAANoBACCGAQAA1gEAMIcBAABlABCIAQAA1gEAMIkBAQAAAAGLAQEA1wEAIZwBQADZAQAhngEBANcBACGfAQIA2AEAIQEAAABiACABAAAAYgAgCQcAANoBACCGAQAA1gEAMIcBAABlABCIAQAA1gEAMIkBAQDXAQAhiwEBANcBACGcAUAA2QEAIZ4BAQDXAQAhnwECANgBACEBBwAApAIAIAMAAABlACABAABmADACAABiACADAAAAZQAgAQAAZgAwAgAAYgAgAwAAAGUAIAEAAGYAMAIAAGIAIAYHAACjAgAgiQEBAAAAAYsBAQAAAAGcAUAAAAABngEBAAAAAZ8BAgAAAAEBEwAAagAgBYkBAQAAAAGLAQEAAAABnAFAAAAAAZ4BAQAAAAGfAQIAAAABARMAAGwAMAETAABsADAGBwAAmQIAIIkBAQDzAQAhiwEBAPMBACGcAUAAggIAIZ4BAQDzAQAhnwECAJgCACECAAAAYgAgEwAAbwAgBYkBAQDzAQAhiwEBAPMBACGcAUAAggIAIZ4BAQDzAQAhnwECAJgCACECAAAAZQAgEwAAcQAgAgAAAGUAIBMAAHEAIAMAAABiACAaAABqACAbAABvACABAAAAYgAgAQAAAGUAIAUIAACTAgAgIAAAlgIAICEAAJUCACBSAACUAgAgUwAAlwIAIAiGAQAA0gEAMIcBAAB4ABCIAQAA0gEAMIkBAQDCAQAhiwEBAMIBACGcAUAAzwEAIZ4BAQDCAQAhnwECANMBACEDAAAAZQAgAQAAdwAwHwAAeAAgAwAAAGUAIAEAAGYAMAIAAGIAIAEAAAALACABAAAACwAgAwAAAAkAIAEAAAoAMAIAAAsAIAMAAAAJACABAAAKADACAAALACADAAAACQAgAQAACgAwAgAACwAgBwYAAJECACAKAACSAgAgiQEBAAAAAZoBAQAAAAGbAQEAAAABnAFAAAAAAZ0BQAAAAAEBEwAAgAEAIAWJAQEAAAABmgEBAAAAAZsBAQAAAAGcAUAAAAABnQFAAAAAAQETAACCAQAwARMAAIIBADABAAAADQAgBwYAAIMCACAKAACEAgAgiQEBAPMBACGaAQEA8wEAIZsBAQD1AQAhnAFAAIICACGdAUAAggIAIQIAAAALACATAACGAQAgBYkBAQDzAQAhmgEBAPMBACGbAQEA9QEAIZwBQACCAgAhnQFAAIICACECAAAACQAgEwAAiAEAIAIAAAAJACATAACIAQAgAQAAAA0AIAMAAAALACAaAACAAQAgGwAAhgEAIAEAAAALACABAAAACQAgBAgAAP8BACAgAACBAgAgIQAAgAIAIJsBAADvAQAgCIYBAADOAQAwhwEAAJABABCIAQAAzgEAMIkBAQDCAQAhmgEBAMIBACGbAQEAwwEAIZwBQADPAQAhnQFAAM8BACEDAAAACQAgAQAAjwEAMB8AAJABACADAAAACQAgAQAACgAwAgAACwAgAQAAABEAIAEAAAARACADAAAADwAgAQAAEAAwAgAAEQAgAwAAAA8AIAEAABAAMAIAABEAIAMAAAAPACABAAAQADACAAARACAEBwAA_QEAIAkAAP4BACCYAQEAAAABmQEBAAAAAQETAACYAQAgApgBAQAAAAGZAQEAAAABARMAAJoBADABEwAAmgEAMAQHAAD7AQAgCQAA_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-AIAIBsAAPwCACCtAQAA-QIAIK4BAAD7AgAgsQEAAA0AILIBAAANACCzAQAAAQAgCxoAAIUCADAbAACKAgAwrQEAAIYCADCuAQAAhwIAMK8BAACIAgAgsAEAAIkCADCxAQAAiQIAMLIBAACJAgAwswEAAIkCADC0AQAAiwIAMLUBAACMAgAwAgkAAP4BACCZAQEAAAABAgAAABEAIBoAAJACACADAAAAEQAgGgAAkAIAIBsAAI8CACABEwAA-gIAMAgHAADmAQAgCQAA5wEAIIYBAADlAQAwhwEAAA8AEIgBAADlAQAwmAEBANcBACGZAQEA1wEAIaoBAADkAQAgAgAAABEAIBMAAI8CACACAAAAjQIAIBMAAI4CACAFhgEAAIwCADCHAQAAjQIAEIgBAACMAgAwmAEBANcBACGZAQEA1wEAIQWGAQAAjAIAMIcBAACNAgAQiAEAAIwCADCYAQEA1wEAIZkBAQDXAQAhAZkBAQDzAQAhAgkAAPwBACCZAQEA8wEAIQIJAAD-AQAgmQEBAAAAAQMaAAD4AgAgrQEAAPkCACCzAQAAAQAgBBoAAIUCADCtAQAAhgIAMK8BAACIAgAgswEAAIkCADAAAAAAAAWwAQIAAAABtgECAAAAAbcBAgAAAAG4AQIAAAABuQECAAAAAQsaAACaAgAwGwAAngIAMK0BAACbAgAwrgEAAJwCADCvAQAAnQIAILABAACJAgAwsQEAAIkCADCyAQAAiQIAMLMBAACJAgAwtAEAAJ8CADC1AQAAjAIAMAIHAAD9AQAgmAEBAAAAAQIAAAARACAaAACiAgAgAwAAABEAIBoAAKICACAbAAChAgAgARMAAPcCADACAAAAEQAgEwAAoQIAIAIAAACNAgAgEwAAoAIAIAGYAQEA8wEAIQIHAAD7AQAgmAEBAPMBACECBwAA_QEAIJgBAQAAAAEEGgAAmgIAMK0BAACbAgAwrwEAAJ0CACCzAQAAiQIAMAAAAAAFGgAA8gIAIBsAAPUCACCtAQAA8wIAIK4BAAD0AgAgswEAAAEAIAMaAADyAgAgrQEAAPMCACCzAQAAAQAgBAQAAOQCACAFAADlAgAgCwAA5gIAIA0AAOcCACAAAAAFGgAA7QIAIBsAAPACACCtAQAA7gIAIK4BAADvAgAgswEAAAEAIAMaAADtAgAgrQEAAO4CACCzAQAAAQAgAAAACxoAANQCADAbAADZAgAwrQEAANUCADCuAQAA1gIAMK8BAADXAgAgsAEAANgCADCxAQAA2AIAMLIBAADYAgAwswEAANgCADC0AQAA2gIAMLUBAADbAgAwBxoAAM8CACAbAADSAgAgrQEAANACACCuAQAA0QIAILEBAAAHACCyAQAABwAgswEAAEoAIAsaAADDAgAwGwAAyAIAMK0BAADEAgAwrgEAAMUCADCvAQAAxgIAILABAADHAgAwsQEAAMcCADCyAQAAxwIAMLMBAADHAgAwtAEAAMkCADC1AQAAygIAMAsaAAC3AgAwGwAAvAIAMK0BAAC4AgAwrgEAALkCADCvAQAAugIAILABAAC7AgAwsQEAALsCADCyAQAAuwIAMLMBAAC7AgAwtAEAAL0CADC1AQAAvgIAMAOJAQEAAAABiwEBAAAAAYwBIAAAAAECAAAAGAAgGgAAwgIAIAMAAAAYACAaAADCAgAgGwAAwQIAIAETAADsAgAwCAwAAOMBACCGAQAA4QEAMIcBAAAWABCIAQAA4QEAMIkBAQAAAAGKAQEA3QEAIYsBAQDXAQAhjAEgAOIBACECAAAAGAAgEwAAwQIAIAIAAAC_AgAgEwAAwAIAIAeGAQAAvgIAMIcBAAC_AgAQiAEAAL4CADCJAQEA1wEAIYoBAQDdAQAhiwEBANcBACGMASAA4gEAIQeGAQAAvgIAMIcBAAC_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_QIAIAsAAAANACAEAACzAgAgBQAAtAIAIA0AALYCACATAAD9AgAgiQEBAPMBACGcAUAAggIAIZ0BQACCAgAhpwEBAPMBACGoAQEA8wEAIakBAQDzAQAhCQQAALMCACAFAAC0AgAgDQAAtgIAIIkBAQDzAQAhnAFAAIICACGdAUAAggIAIacBAQDzAQAhqAEBAPMBACGpAQEA8wEAIQWJAQEAAAABiwEBAAAAAZwBQAAAAAGeAQEAAAABnwECAAAAAQIAAABiACAaAAD-AgAgBgYAAJECACCJAQEAAAABmgEBAAAAAZsBAQAAAAGcAUAAAAABnQFAAAAAAQIAAAALACAaAACAAwAgAwAAAGUAIBoAAP4CACAbAACEAwAgBwAAAGUAIBMAAIQDACCJAQEA8wEAIYsBAQDzAQAhnAFAAIICACGeAQEA8wEAIZ8BAgCYAgAhBYkBAQDzAQAhiwEBAPMBACGcAUAAggIAIZ4BAQDzAQAhnwECAJgCACEDAAAACQAgGgAAgAMAIBsAAIcDACAIAAAACQAgBgAAgwIAIBMAAIcDACCJAQEA8wEAIZoBAQDzAQAhmwEBAPUBACGcAUAAggIAIZ0BQACCAgAhBgYAAIMCACCJAQEA8wEAIZoBAQDzAQAhmwEBAPUBACGcAUAAggIAIZ0BQACCAgAhCQQAAOACACAFAADhAgAgCwAA4gIAIIkBAQAAAAGcAUAAAAABnQFAAAAAAacBAQAAAAGoAQEAAAABqQEBAAAAAQIAAAABACAaAACIAwAgAwAAAA0AIBoAAIgDACAbAACMAwAgCwAAAA0AIAQAALMCACAFAAC0AgAgCwAAtQIAIBMAAIwDACCJAQEA8wEAIZwBQACCAgAhnQFAAIICACGnAQEA8wEAIagBAQDzAQAhqQEBAPMBACEJBAAAswIAIAUAALQCACALAAC1AgAgiQEBAPMBACGcAUAAggIAIZ0BQACCAgAhpwEBAPMBACGoAQEA8wEAIakBAQDzAQAhBQQGAgUIAwgACgsMBA0ZCQEDAAEBAwABAwYOAQgACAoSBQIHAAQJAAYCBxMFCAAHAQcUAAEKFQABDBoBAwQbAAscAA0dAAAAAAMIAA8gABAhABEAAAADCAAPIAAQIQARAQMAAQEDAAEDCAAWIAAXIQAYAAAAAwgAFiAAFyEAGAEDAAEBAwABAwgAHSAAHiEAHwAAAAMIAB0gAB4hAB8AAAUIACQgACchAChSACVTACYAAAAAAAUIACQgACchAChSACVTACYBBoUBAQEGiwEBAwgALSAALiEALwAAAAMIAC0gAC4hAC8CBwAECQAGAgcABAkABgMIADQgADUhADYAAAADCAA0IAA1IQA2AQyzAQEBDLkBAQMIADsgADwhAD0AAAADCAA7IAA8IQA9DgIBDx4BECABESEBEiIBFCQBFSYLFicMFykBGCsLGSwNHC0BHS4BHi8LIjIOIzMSJDQCJTUCJjYCJzcCKDgCKToCKjwLKz0TLD8CLUELLkIUL0MCMEQCMUULMkgVM0kZNEsDNUwDNk4DN08DOFADOVIDOlQLO1UaPFcDPVkLPlobP1sDQFwDQV0LQmAcQ2EgRGMGRWQGRmcGR2gGSGkGSWsGSm0LS24hTHAGTXILTnMiT3QGUHUGUXYLVHkjVXopVnsEV3wEWH0EWX4EWn8EW4EBBFyDAQtdhAEqXocBBF-JAQtgigErYYwBBGKNAQRjjgELZJEBLGWSATBmkwEFZ5QBBWiVAQVplgEFapcBBWuZAQVsmwELbZwBMW6eAQVvoAELcKEBMnGiAQVyowEFc6QBC3SnATN1qAE3dqkBCXeqAQl4qwEJeawBCXqtAQl7rwEJfLEBC32yATh-tQEJf7cBC4ABuAE5gQG6AQmCAbsBCYMBvAELhAG_ATqFAcABPg" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"Session\",\"UserPreferences\",\"sender\",\"message\",\"_count\",\"attachment\",\"attachments\",\"Messages\",\"owner\",\"Channels\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"UserPreferences.findUnique\",\"UserPreferences.findUniqueOrThrow\",\"UserPreferences.findFirst\",\"UserPreferences.findFirstOrThrow\",\"UserPreferences.findMany\",\"UserPreferences.createOne\",\"UserPreferences.createMany\",\"UserPreferences.createManyAndReturn\",\"UserPreferences.updateOne\",\"UserPreferences.updateMany\",\"UserPreferences.updateManyAndReturn\",\"UserPreferences.upsertOne\",\"UserPreferences.deleteOne\",\"UserPreferences.deleteMany\",\"UserPreferences.groupBy\",\"UserPreferences.aggregate\",\"Attachment.findUnique\",\"Attachment.findUniqueOrThrow\",\"Attachment.findFirst\",\"Attachment.findFirstOrThrow\",\"Attachment.findMany\",\"Attachment.createOne\",\"Attachment.createMany\",\"Attachment.createManyAndReturn\",\"Attachment.updateOne\",\"Attachment.updateMany\",\"Attachment.updateManyAndReturn\",\"Attachment.upsertOne\",\"Attachment.deleteOne\",\"Attachment.deleteMany\",\"_avg\",\"_sum\",\"Attachment.groupBy\",\"Attachment.aggregate\",\"Message.findUnique\",\"Message.findUniqueOrThrow\",\"Message.findFirst\",\"Message.findFirstOrThrow\",\"Message.findMany\",\"Message.createOne\",\"Message.createMany\",\"Message.createManyAndReturn\",\"Message.updateOne\",\"Message.updateMany\",\"Message.updateManyAndReturn\",\"Message.upsertOne\",\"Message.deleteOne\",\"Message.deleteMany\",\"Message.groupBy\",\"Message.aggregate\",\"MessageAttachment.findUnique\",\"MessageAttachment.findUniqueOrThrow\",\"MessageAttachment.findFirst\",\"MessageAttachment.findFirstOrThrow\",\"MessageAttachment.findMany\",\"MessageAttachment.createOne\",\"MessageAttachment.createMany\",\"MessageAttachment.createManyAndReturn\",\"MessageAttachment.updateOne\",\"MessageAttachment.updateMany\",\"MessageAttachment.updateManyAndReturn\",\"MessageAttachment.upsertOne\",\"MessageAttachment.deleteOne\",\"MessageAttachment.deleteMany\",\"MessageAttachment.groupBy\",\"MessageAttachment.aggregate\",\"Channel.findUnique\",\"Channel.findUniqueOrThrow\",\"Channel.findFirst\",\"Channel.findFirstOrThrow\",\"Channel.findMany\",\"Channel.createOne\",\"Channel.createMany\",\"Channel.createManyAndReturn\",\"Channel.updateOne\",\"Channel.updateMany\",\"Channel.updateManyAndReturn\",\"Channel.upsertOne\",\"Channel.deleteOne\",\"Channel.deleteMany\",\"Channel.groupBy\",\"Channel.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"ownerUsername\",\"name\",\"persistent\",\"equals\",\"not\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"contains\",\"startsWith\",\"endsWith\",\"messageId\",\"attachmentId\",\"text\",\"senderUsername\",\"createdAt\",\"updatedAt\",\"mimetype\",\"size\",\"every\",\"some\",\"none\",\"username\",\"toggleInputHotkey\",\"toggleOutputHotkey\",\"userId\",\"expiresAt\",\"password\",\"displayName\",\"messageId_attachmentId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "jAM-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_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_gIAIBsAAIMDACCtAQAA_wIAIK4BAACCAwAgswEAAGIAIAMaAACAAwAgrQEAAIEDACCzAQAACwAgAxoAAP4CACCtAQAA_wIAILMBAABiACAAAAABsAFAAAAAAQcaAAD4AgAgGwAA_AIAIK0BAAD5AgAgrgEAAPsCACCxAQAADQAgsgEAAA0AILMBAAABACALGgAAhQIAMBsAAIoCADCtAQAAhgIAMK4BAACHAgAwrwEAAIgCACCwAQAAiQIAMLEBAACJAgAwsgEAAIkCADCzAQAAiQIAMLQBAACLAgAwtQEAAIwCADACCQAA_gEAIJkBAQAAAAECAAAAEQAgGgAAkAIAIAMAAAARACAaAACQAgAgGwAAjwIAIAETAAD6AgAwCAcAAOYBACAJAADnAQAghgEAAOUBADCHAQAADwAQiAEAAOUBADCYAQEA1wEAIZkBAQDXAQAhqgEAAOQBACACAAAAEQAgEwAAjwIAIAIAAACNAgAgEwAAjgIAIAWGAQAAjAIAMIcBAACNAgAQiAEAAIwCADCYAQEA1wEAIZkBAQDXAQAhBYYBAACMAgAwhwEAAI0CABCIAQAAjAIAMJgBAQDXAQAhmQEBANcBACEBmQEBAPMBACECCQAA_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_QIAIAoAAAANACAEAACzAgAgBQAAtAIAIA0AALYCACATAAD9AgAgnAFAAIICACGdAUAAggIAIaMBAQDzAQAhqAEBAPMBACGpAQEA8wEAIQgEAACzAgAgBQAAtAIAIA0AALYCACCcAUAAggIAIZ0BQACCAgAhowEBAPMBACGoAQEA8wEAIakBAQDzAQAhBYkBAQAAAAGLAQEAAAABnAFAAAAAAZ4BAQAAAAGfAQIAAAABAgAAAGIAIBoAAP4CACAGBgAAkQIAIIkBAQAAAAGaAQEAAAABmwEBAAAAAZwBQAAAAAGdAUAAAAABAgAAAAsAIBoAAIADACADAAAAZQAgGgAA_gIAIBsAAIQDACAHAAAAZQAgEwAAhAMAIIkBAQDzAQAhiwEBAPMBACGcAUAAggIAIZ4BAQDzAQAhnwECAJgCACEFiQEBAPMBACGLAQEA8wEAIZwBQACCAgAhngEBAPMBACGfAQIAmAIAIQMAAAAJACAaAACAAwAgGwAAhwMAIAgAAAAJACAGAACDAgAgEwAAhwMAIIkBAQDzAQAhmgEBAPMBACGbAQEA9QEAIZwBQACCAgAhnQFAAIICACEGBgAAgwIAIIkBAQDzAQAhmgEBAPMBACGbAQEA9QEAIZwBQACCAgAhnQFAAIICACEIBAAA4AIAIAUAAOECACALAADiAgAgnAFAAAAAAZ0BQAAAAAGjAQEAAAABqAEBAAAAAakBAQAAAAECAAAAAQAgGgAAiAMAIAMAAAANACAaAACIAwAgGwAAjAMAIAoAAAANACAEAACzAgAgBQAAtAIAIAsAALUCACATAACMAwAgnAFAAIICACGdAUAAggIAIaMBAQDzAQAhqAEBAPMBACGpAQEA8wEAIQgEAACzAgAgBQAAtAIAIAsAALUCACCcAUAAggIAIZ0BQACCAgAhowEBAPMBACGoAQEA8wEAIakBAQDzAQAhBQQGAgUIAwgACgsMBA0ZCQEDAAEBAwABAwYOAQgACAoSBQIHAAQJAAYCBxMFCAAHAQcUAAEKFQABDBoBAwQbAAscAA0dAAAAAAMIAA8gABAhABEAAAADCAAPIAAQIQARAQMAAQEDAAEDCAAWIAAXIQAYAAAAAwgAFiAAFyEAGAEDAAEBAwABAwgAHSAAHiEAHwAAAAMIAB0gAB4hAB8AAAUIACQgACchAChSACVTACYAAAAAAAUIACQgACchAChSACVTACYBBoUBAQEGiwEBAwgALSAALiEALwAAAAMIAC0gAC4hAC8CBwAECQAGAgcABAkABgMIADQgADUhADYAAAADCAA0IAA1IQA2AQyzAQEBDLkBAQMIADsgADwhAD0AAAADCAA7IAA8IQA9DgIBDx4BECABESEBEiIBFCQBFSYLFicMFykBGCsLGSwNHC0BHS4BHi8LIjIOIzMSJDQCJTUCJjYCJzcCKDgCKToCKjwLKz0TLD8CLUELLkIUL0MCMEQCMUULMkgVM0kZNEsDNUwDNk4DN08DOFADOVIDOlQLO1UaPFcDPVkLPlobP1sDQFwDQV0LQmAcQ2EgRGMGRWQGRmcGR2gGSGkGSWsGSm0LS24hTHAGTXILTnMiT3QGUHUGUXYLVHkjVXopVnsEV3wEWH0EWX4EWn8EW4EBBFyDAQtdhAEqXocBBF-JAQtgigErYYwBBGKNAQRjjgELZJEBLGWSATBmkwEFZ5QBBWiVAQVplgEFapcBBWuZAQVsmwELbZwBMW6eAQVvoAELcKEBMnGiAQVyowEFc6QBC3SnATN1qAE3dqkBCXeqAQl4qwEJeawBCXqtAQl7rwEJfLEBC32yATh-tQEJf7cBC4ABuAE5gQG6AQmCAbsBCYMBvAELhAG_ATqFAcABPg" } async function decodeBase64AsWasm(wasmBase64: string): Promise { diff --git a/server/prisma/generated-client/internal/prismaNamespace.ts b/server/prisma/generated-client/internal/prismaNamespace.ts index c5c5f1e..65ed5c9 100644 --- a/server/prisma/generated-client/internal/prismaNamespace.ts +++ b/server/prisma/generated-client/internal/prismaNamespace.ts @@ -1,3 +1,4 @@ + /* !!! This is code generated by Prisma. Do not edit directly. !!! */ /* eslint-disable */ // biome-ignore-all lint: generated file @@ -7,7 +8,7 @@ * * 🛑 Under no circumstances should you import this file directly! 🛑 * - * All exports from this file are wrapped under a `Prisma` namespace object in the Client.ts file. + * All exports from this file are wrapped under a `Prisma` namespace object in the client.ts file. * While this enables partial backward compatibility, it is not part of the stable public API. * * If you are looking for your Models, Enums, and Input Types, please import them from the respective @@ -964,7 +965,6 @@ export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof export const UserScalarFieldEnum = { - id: 'id', username: 'username', password: 'password', displayName: 'displayName', @@ -985,7 +985,7 @@ export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeo export const UserPreferencesScalarFieldEnum = { - userId: 'userId', + username: 'username', toggleInputHotkey: 'toggleInputHotkey', toggleOutputHotkey: 'toggleOutputHotkey' } as const @@ -1007,7 +1007,7 @@ export type AttachmentScalarFieldEnum = (typeof AttachmentScalarFieldEnum)[keyof export const MessageScalarFieldEnum = { id: 'id', text: 'text', - senderId: 'senderId', + senderUsername: 'senderUsername', createdAt: 'createdAt', updatedAt: 'updatedAt' } as const @@ -1025,7 +1025,7 @@ export type MessageAttachmentScalarFieldEnum = (typeof MessageAttachmentScalarFi export const ChannelScalarFieldEnum = { id: 'id', - ownerId: 'ownerId', + ownerUsername: 'ownerUsername', name: 'name', persistent: 'persistent' } as const diff --git a/server/prisma/generated-client/internal/prismaNamespaceBrowser.ts b/server/prisma/generated-client/internal/prismaNamespaceBrowser.ts index d5cce3a..2723b11 100644 --- a/server/prisma/generated-client/internal/prismaNamespaceBrowser.ts +++ b/server/prisma/generated-client/internal/prismaNamespaceBrowser.ts @@ -74,7 +74,6 @@ export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof export const UserScalarFieldEnum = { - id: 'id', username: 'username', password: 'password', displayName: 'displayName', @@ -95,7 +94,7 @@ export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeo export const UserPreferencesScalarFieldEnum = { - userId: 'userId', + username: 'username', toggleInputHotkey: 'toggleInputHotkey', toggleOutputHotkey: 'toggleOutputHotkey' } as const @@ -117,7 +116,7 @@ export type AttachmentScalarFieldEnum = (typeof AttachmentScalarFieldEnum)[keyof export const MessageScalarFieldEnum = { id: 'id', text: 'text', - senderId: 'senderId', + senderUsername: 'senderUsername', createdAt: 'createdAt', updatedAt: 'updatedAt' } as const @@ -135,7 +134,7 @@ export type MessageAttachmentScalarFieldEnum = (typeof MessageAttachmentScalarFi export const ChannelScalarFieldEnum = { id: 'id', - ownerId: 'ownerId', + ownerUsername: 'ownerUsername', name: 'name', persistent: 'persistent' } as const diff --git a/server/prisma/generated-client/models/Channel.ts b/server/prisma/generated-client/models/Channel.ts index 483aba2..fec3932 100644 --- a/server/prisma/generated-client/models/Channel.ts +++ b/server/prisma/generated-client/models/Channel.ts @@ -26,21 +26,21 @@ export type AggregateChannel = { export type ChannelMinAggregateOutputType = { id: string | null - ownerId: string | null + ownerUsername: string | null name: string | null persistent: boolean | null } export type ChannelMaxAggregateOutputType = { id: string | null - ownerId: string | null + ownerUsername: string | null name: string | null persistent: boolean | null } export type ChannelCountAggregateOutputType = { id: number - ownerId: number + ownerUsername: number name: number persistent: number _all: number @@ -49,21 +49,21 @@ export type ChannelCountAggregateOutputType = { export type ChannelMinAggregateInputType = { id?: true - ownerId?: true + ownerUsername?: true name?: true persistent?: true } export type ChannelMaxAggregateInputType = { id?: true - ownerId?: true + ownerUsername?: true name?: true persistent?: true } export type ChannelCountAggregateInputType = { id?: true - ownerId?: true + ownerUsername?: true name?: true persistent?: true _all?: true @@ -143,7 +143,7 @@ export type ChannelGroupByArgs | string - ownerId?: Prisma.StringNullableFilter<"Channel"> | string | null + ownerUsername?: Prisma.StringNullableFilter<"Channel"> | string | null name?: Prisma.StringFilter<"Channel"> | string persistent?: Prisma.BoolFilter<"Channel"> | boolean owner?: Prisma.XOR | null @@ -179,7 +179,7 @@ export type ChannelWhereInput = { export type ChannelOrderByWithRelationInput = { id?: Prisma.SortOrder - ownerId?: Prisma.SortOrderInput | Prisma.SortOrder + ownerUsername?: Prisma.SortOrderInput | Prisma.SortOrder name?: Prisma.SortOrder persistent?: Prisma.SortOrder owner?: Prisma.UserOrderByWithRelationInput @@ -190,7 +190,7 @@ export type ChannelWhereUniqueInput = Prisma.AtLeast<{ AND?: Prisma.ChannelWhereInput | Prisma.ChannelWhereInput[] OR?: Prisma.ChannelWhereInput[] NOT?: Prisma.ChannelWhereInput | Prisma.ChannelWhereInput[] - ownerId?: Prisma.StringNullableFilter<"Channel"> | string | null + ownerUsername?: Prisma.StringNullableFilter<"Channel"> | string | null name?: Prisma.StringFilter<"Channel"> | string persistent?: Prisma.BoolFilter<"Channel"> | boolean owner?: Prisma.XOR | null @@ -198,7 +198,7 @@ export type ChannelWhereUniqueInput = Prisma.AtLeast<{ export type ChannelOrderByWithAggregationInput = { id?: Prisma.SortOrder - ownerId?: Prisma.SortOrderInput | Prisma.SortOrder + ownerUsername?: Prisma.SortOrderInput | Prisma.SortOrder name?: Prisma.SortOrder persistent?: Prisma.SortOrder _count?: Prisma.ChannelCountOrderByAggregateInput @@ -211,7 +211,7 @@ export type ChannelScalarWhereWithAggregatesInput = { OR?: Prisma.ChannelScalarWhereWithAggregatesInput[] NOT?: Prisma.ChannelScalarWhereWithAggregatesInput | Prisma.ChannelScalarWhereWithAggregatesInput[] id?: Prisma.StringWithAggregatesFilter<"Channel"> | string - ownerId?: Prisma.StringNullableWithAggregatesFilter<"Channel"> | string | null + ownerUsername?: Prisma.StringNullableWithAggregatesFilter<"Channel"> | string | null name?: Prisma.StringWithAggregatesFilter<"Channel"> | string persistent?: Prisma.BoolWithAggregatesFilter<"Channel"> | boolean } @@ -225,7 +225,7 @@ export type ChannelCreateInput = { export type ChannelUncheckedCreateInput = { id?: string - ownerId?: string | null + ownerUsername?: string | null name: string persistent: boolean } @@ -239,14 +239,14 @@ export type ChannelUpdateInput = { export type ChannelUncheckedUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - ownerId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + ownerUsername?: Prisma.NullableStringFieldUpdateOperationsInput | string | null name?: Prisma.StringFieldUpdateOperationsInput | string persistent?: Prisma.BoolFieldUpdateOperationsInput | boolean } export type ChannelCreateManyInput = { id?: string - ownerId?: string | null + ownerUsername?: string | null name: string persistent: boolean } @@ -259,7 +259,7 @@ export type ChannelUpdateManyMutationInput = { export type ChannelUncheckedUpdateManyInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - ownerId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + ownerUsername?: Prisma.NullableStringFieldUpdateOperationsInput | string | null name?: Prisma.StringFieldUpdateOperationsInput | string persistent?: Prisma.BoolFieldUpdateOperationsInput | boolean } @@ -276,21 +276,21 @@ export type ChannelOrderByRelationAggregateInput = { export type ChannelCountOrderByAggregateInput = { id?: Prisma.SortOrder - ownerId?: Prisma.SortOrder + ownerUsername?: Prisma.SortOrder name?: Prisma.SortOrder persistent?: Prisma.SortOrder } export type ChannelMaxOrderByAggregateInput = { id?: Prisma.SortOrder - ownerId?: Prisma.SortOrder + ownerUsername?: Prisma.SortOrder name?: Prisma.SortOrder persistent?: Prisma.SortOrder } export type ChannelMinOrderByAggregateInput = { id?: Prisma.SortOrder - ownerId?: Prisma.SortOrder + ownerUsername?: Prisma.SortOrder name?: Prisma.SortOrder persistent?: Prisma.SortOrder } @@ -383,7 +383,7 @@ export type ChannelScalarWhereInput = { OR?: Prisma.ChannelScalarWhereInput[] NOT?: Prisma.ChannelScalarWhereInput | Prisma.ChannelScalarWhereInput[] id?: Prisma.StringFilter<"Channel"> | string - ownerId?: Prisma.StringNullableFilter<"Channel"> | string | null + ownerUsername?: Prisma.StringNullableFilter<"Channel"> | string | null name?: Prisma.StringFilter<"Channel"> | string persistent?: Prisma.BoolFilter<"Channel"> | boolean } @@ -416,7 +416,7 @@ export type ChannelUncheckedUpdateManyWithoutOwnerInput = { export type ChannelSelect = runtime.Types.Extensions.GetSelect<{ id?: boolean - ownerId?: boolean + ownerUsername?: boolean name?: boolean persistent?: boolean owner?: boolean | Prisma.Channel$ownerArgs @@ -424,7 +424,7 @@ export type ChannelSelect = runtime.Types.Extensions.GetSelect<{ id?: boolean - ownerId?: boolean + ownerUsername?: boolean name?: boolean persistent?: boolean owner?: boolean | Prisma.Channel$ownerArgs @@ -432,7 +432,7 @@ export type ChannelSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ id?: boolean - ownerId?: boolean + ownerUsername?: boolean name?: boolean persistent?: boolean owner?: boolean | Prisma.Channel$ownerArgs @@ -440,12 +440,12 @@ export type ChannelSelectUpdateManyAndReturn = runtime.Types.Extensions.GetOmit<"id" | "ownerId" | "name" | "persistent", ExtArgs["result"]["channel"]> +export type ChannelOmit = runtime.Types.Extensions.GetOmit<"id" | "ownerUsername" | "name" | "persistent", ExtArgs["result"]["channel"]> export type ChannelInclude = { owner?: boolean | Prisma.Channel$ownerArgs } @@ -463,7 +463,7 @@ export type $ChannelPayload @@ -891,7 +891,7 @@ export interface Prisma__ChannelClient - readonly ownerId: Prisma.FieldRef<"Channel", 'String'> + readonly ownerUsername: Prisma.FieldRef<"Channel", 'String'> readonly name: Prisma.FieldRef<"Channel", 'String'> readonly persistent: Prisma.FieldRef<"Channel", 'Boolean'> } diff --git a/server/prisma/generated-client/models/Message.ts b/server/prisma/generated-client/models/Message.ts index 9dba529..429a667 100644 --- a/server/prisma/generated-client/models/Message.ts +++ b/server/prisma/generated-client/models/Message.ts @@ -27,7 +27,7 @@ export type AggregateMessage = { export type MessageMinAggregateOutputType = { id: string | null text: string | null - senderId: string | null + senderUsername: string | null createdAt: Date | null updatedAt: Date | null } @@ -35,7 +35,7 @@ export type MessageMinAggregateOutputType = { export type MessageMaxAggregateOutputType = { id: string | null text: string | null - senderId: string | null + senderUsername: string | null createdAt: Date | null updatedAt: Date | null } @@ -43,7 +43,7 @@ export type MessageMaxAggregateOutputType = { export type MessageCountAggregateOutputType = { id: number text: number - senderId: number + senderUsername: number createdAt: number updatedAt: number _all: number @@ -53,7 +53,7 @@ export type MessageCountAggregateOutputType = { export type MessageMinAggregateInputType = { id?: true text?: true - senderId?: true + senderUsername?: true createdAt?: true updatedAt?: true } @@ -61,7 +61,7 @@ export type MessageMinAggregateInputType = { export type MessageMaxAggregateInputType = { id?: true text?: true - senderId?: true + senderUsername?: true createdAt?: true updatedAt?: true } @@ -69,7 +69,7 @@ export type MessageMaxAggregateInputType = { export type MessageCountAggregateInputType = { id?: true text?: true - senderId?: true + senderUsername?: true createdAt?: true updatedAt?: true _all?: true @@ -150,7 +150,7 @@ export type MessageGroupByArgs | string text?: Prisma.StringFilter<"Message"> | string - senderId?: Prisma.StringNullableFilter<"Message"> | string | null + senderUsername?: Prisma.StringNullableFilter<"Message"> | string | null createdAt?: Prisma.DateTimeFilter<"Message"> | Date | string updatedAt?: Prisma.DateTimeFilter<"Message"> | Date | string sender?: Prisma.XOR | null @@ -189,7 +189,7 @@ export type MessageWhereInput = { export type MessageOrderByWithRelationInput = { id?: Prisma.SortOrder text?: Prisma.SortOrder - senderId?: Prisma.SortOrderInput | Prisma.SortOrder + senderUsername?: Prisma.SortOrderInput | Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder sender?: Prisma.UserOrderByWithRelationInput @@ -202,7 +202,7 @@ export type MessageWhereUniqueInput = Prisma.AtLeast<{ OR?: Prisma.MessageWhereInput[] NOT?: Prisma.MessageWhereInput | Prisma.MessageWhereInput[] text?: Prisma.StringFilter<"Message"> | string - senderId?: Prisma.StringNullableFilter<"Message"> | string | null + senderUsername?: Prisma.StringNullableFilter<"Message"> | string | null createdAt?: Prisma.DateTimeFilter<"Message"> | Date | string updatedAt?: Prisma.DateTimeFilter<"Message"> | Date | string sender?: Prisma.XOR | null @@ -212,7 +212,7 @@ export type MessageWhereUniqueInput = Prisma.AtLeast<{ export type MessageOrderByWithAggregationInput = { id?: Prisma.SortOrder text?: Prisma.SortOrder - senderId?: Prisma.SortOrderInput | Prisma.SortOrder + senderUsername?: Prisma.SortOrderInput | Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder _count?: Prisma.MessageCountOrderByAggregateInput @@ -226,7 +226,7 @@ export type MessageScalarWhereWithAggregatesInput = { NOT?: Prisma.MessageScalarWhereWithAggregatesInput | Prisma.MessageScalarWhereWithAggregatesInput[] id?: Prisma.StringWithAggregatesFilter<"Message"> | string text?: Prisma.StringWithAggregatesFilter<"Message"> | string - senderId?: Prisma.StringNullableWithAggregatesFilter<"Message"> | string | null + senderUsername?: Prisma.StringNullableWithAggregatesFilter<"Message"> | string | null createdAt?: Prisma.DateTimeWithAggregatesFilter<"Message"> | Date | string updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Message"> | Date | string } @@ -243,7 +243,7 @@ export type MessageCreateInput = { export type MessageUncheckedCreateInput = { id?: string text: string - senderId?: string | null + senderUsername?: string | null createdAt?: Date | string updatedAt?: Date | string attachments?: Prisma.MessageAttachmentUncheckedCreateNestedManyWithoutMessageInput @@ -261,7 +261,7 @@ export type MessageUpdateInput = { export type MessageUncheckedUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string text?: Prisma.StringFieldUpdateOperationsInput | string - senderId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + senderUsername?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string attachments?: Prisma.MessageAttachmentUncheckedUpdateManyWithoutMessageNestedInput @@ -270,7 +270,7 @@ export type MessageUncheckedUpdateInput = { export type MessageCreateManyInput = { id?: string text: string - senderId?: string | null + senderUsername?: string | null createdAt?: Date | string updatedAt?: Date | string } @@ -285,7 +285,7 @@ export type MessageUpdateManyMutationInput = { export type MessageUncheckedUpdateManyInput = { id?: Prisma.StringFieldUpdateOperationsInput | string text?: Prisma.StringFieldUpdateOperationsInput | string - senderId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + senderUsername?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } @@ -303,7 +303,7 @@ export type MessageOrderByRelationAggregateInput = { export type MessageCountOrderByAggregateInput = { id?: Prisma.SortOrder text?: Prisma.SortOrder - senderId?: Prisma.SortOrder + senderUsername?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder } @@ -311,7 +311,7 @@ export type MessageCountOrderByAggregateInput = { export type MessageMaxOrderByAggregateInput = { id?: Prisma.SortOrder text?: Prisma.SortOrder - senderId?: Prisma.SortOrder + senderUsername?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder } @@ -319,7 +319,7 @@ export type MessageMaxOrderByAggregateInput = { export type MessageMinOrderByAggregateInput = { id?: Prisma.SortOrder text?: Prisma.SortOrder - senderId?: Prisma.SortOrder + senderUsername?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder } @@ -432,7 +432,7 @@ export type MessageScalarWhereInput = { NOT?: Prisma.MessageScalarWhereInput | Prisma.MessageScalarWhereInput[] id?: Prisma.StringFilter<"Message"> | string text?: Prisma.StringFilter<"Message"> | string - senderId?: Prisma.StringNullableFilter<"Message"> | string | null + senderUsername?: Prisma.StringNullableFilter<"Message"> | string | null createdAt?: Prisma.DateTimeFilter<"Message"> | Date | string updatedAt?: Prisma.DateTimeFilter<"Message"> | Date | string } @@ -448,7 +448,7 @@ export type MessageCreateWithoutAttachmentsInput = { export type MessageUncheckedCreateWithoutAttachmentsInput = { id?: string text: string - senderId?: string | null + senderUsername?: string | null createdAt?: Date | string updatedAt?: Date | string } @@ -480,7 +480,7 @@ export type MessageUpdateWithoutAttachmentsInput = { export type MessageUncheckedUpdateWithoutAttachmentsInput = { id?: Prisma.StringFieldUpdateOperationsInput | string text?: Prisma.StringFieldUpdateOperationsInput | string - senderId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + senderUsername?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } @@ -549,7 +549,7 @@ export type MessageCountOutputTypeCountAttachmentsArgs = runtime.Types.Extensions.GetSelect<{ id?: boolean text?: boolean - senderId?: boolean + senderUsername?: boolean createdAt?: boolean updatedAt?: boolean sender?: boolean | Prisma.Message$senderArgs @@ -560,7 +560,7 @@ export type MessageSelect = runtime.Types.Extensions.GetSelect<{ id?: boolean text?: boolean - senderId?: boolean + senderUsername?: boolean createdAt?: boolean updatedAt?: boolean sender?: boolean | Prisma.Message$senderArgs @@ -569,7 +569,7 @@ export type MessageSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ id?: boolean text?: boolean - senderId?: boolean + senderUsername?: boolean createdAt?: boolean updatedAt?: boolean sender?: boolean | Prisma.Message$senderArgs @@ -578,12 +578,12 @@ export type MessageSelectUpdateManyAndReturn = runtime.Types.Extensions.GetOmit<"id" | "text" | "senderId" | "createdAt" | "updatedAt", ExtArgs["result"]["message"]> +export type MessageOmit = runtime.Types.Extensions.GetOmit<"id" | "text" | "senderUsername" | "createdAt" | "updatedAt", ExtArgs["result"]["message"]> export type MessageInclude = { sender?: boolean | Prisma.Message$senderArgs attachments?: boolean | Prisma.Message$attachmentsArgs @@ -605,7 +605,7 @@ export type $MessagePayload @@ -1035,7 +1035,7 @@ export interface Prisma__MessageClient readonly text: Prisma.FieldRef<"Message", 'String'> - readonly senderId: Prisma.FieldRef<"Message", 'String'> + readonly senderUsername: Prisma.FieldRef<"Message", 'String'> readonly createdAt: Prisma.FieldRef<"Message", 'DateTime'> readonly updatedAt: Prisma.FieldRef<"Message", 'DateTime'> } diff --git a/server/prisma/generated-client/models/User.ts b/server/prisma/generated-client/models/User.ts index 87c64e1..fa6bc89 100644 --- a/server/prisma/generated-client/models/User.ts +++ b/server/prisma/generated-client/models/User.ts @@ -25,7 +25,6 @@ export type AggregateUser = { } export type UserMinAggregateOutputType = { - id: string | null username: string | null password: string | null displayName: string | null @@ -34,7 +33,6 @@ export type UserMinAggregateOutputType = { } export type UserMaxAggregateOutputType = { - id: string | null username: string | null password: string | null displayName: string | null @@ -43,7 +41,6 @@ export type UserMaxAggregateOutputType = { } export type UserCountAggregateOutputType = { - id: number username: number password: number displayName: number @@ -54,7 +51,6 @@ export type UserCountAggregateOutputType = { export type UserMinAggregateInputType = { - id?: true username?: true password?: true displayName?: true @@ -63,7 +59,6 @@ export type UserMinAggregateInputType = { } export type UserMaxAggregateInputType = { - id?: true username?: true password?: true displayName?: true @@ -72,7 +67,6 @@ export type UserMaxAggregateInputType = { } export type UserCountAggregateInputType = { - id?: true username?: true password?: true displayName?: true @@ -154,7 +148,6 @@ export type UserGroupByArgs | string username?: Prisma.StringFilter<"User"> | string password?: Prisma.StringFilter<"User"> | string displayName?: Prisma.StringFilter<"User"> | string @@ -197,7 +189,6 @@ export type UserWhereInput = { } export type UserOrderByWithRelationInput = { - id?: Prisma.SortOrder username?: Prisma.SortOrder password?: Prisma.SortOrder displayName?: Prisma.SortOrder @@ -210,7 +201,6 @@ export type UserOrderByWithRelationInput = { } export type UserWhereUniqueInput = Prisma.AtLeast<{ - id?: string username?: string AND?: Prisma.UserWhereInput | Prisma.UserWhereInput[] OR?: Prisma.UserWhereInput[] @@ -223,10 +213,9 @@ export type UserWhereUniqueInput = Prisma.AtLeast<{ UserPreferences?: Prisma.XOR | null Messages?: Prisma.MessageListRelationFilter Channels?: Prisma.ChannelListRelationFilter -}, "id" | "username"> +}, "username" | "username"> export type UserOrderByWithAggregationInput = { - id?: Prisma.SortOrder username?: Prisma.SortOrder password?: Prisma.SortOrder displayName?: Prisma.SortOrder @@ -241,7 +230,6 @@ export type UserScalarWhereWithAggregatesInput = { AND?: Prisma.UserScalarWhereWithAggregatesInput | Prisma.UserScalarWhereWithAggregatesInput[] OR?: Prisma.UserScalarWhereWithAggregatesInput[] NOT?: Prisma.UserScalarWhereWithAggregatesInput | Prisma.UserScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"User"> | string username?: Prisma.StringWithAggregatesFilter<"User"> | string password?: Prisma.StringWithAggregatesFilter<"User"> | string displayName?: Prisma.StringWithAggregatesFilter<"User"> | string @@ -250,7 +238,6 @@ export type UserScalarWhereWithAggregatesInput = { } export type UserCreateInput = { - id?: string username: string password: string displayName: string @@ -263,7 +250,6 @@ export type UserCreateInput = { } export type UserUncheckedCreateInput = { - id?: string username: string password: string displayName: string @@ -276,7 +262,6 @@ export type UserUncheckedCreateInput = { } export type UserUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -289,7 +274,6 @@ export type UserUpdateInput = { } export type UserUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -302,7 +286,6 @@ export type UserUncheckedUpdateInput = { } export type UserCreateManyInput = { - id?: string username: string password: string displayName: string @@ -311,7 +294,6 @@ export type UserCreateManyInput = { } export type UserUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -320,7 +302,6 @@ export type UserUpdateManyMutationInput = { } export type UserUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -329,7 +310,6 @@ export type UserUncheckedUpdateManyInput = { } export type UserCountOrderByAggregateInput = { - id?: Prisma.SortOrder username?: Prisma.SortOrder password?: Prisma.SortOrder displayName?: Prisma.SortOrder @@ -338,7 +318,6 @@ export type UserCountOrderByAggregateInput = { } export type UserMaxOrderByAggregateInput = { - id?: Prisma.SortOrder username?: Prisma.SortOrder password?: Prisma.SortOrder displayName?: Prisma.SortOrder @@ -347,7 +326,6 @@ export type UserMaxOrderByAggregateInput = { } export type UserMinOrderByAggregateInput = { - id?: Prisma.SortOrder username?: Prisma.SortOrder password?: Prisma.SortOrder displayName?: Prisma.SortOrder @@ -434,7 +412,6 @@ export type UserUpdateOneWithoutChannelsNestedInput = { } export type UserCreateWithoutSessionInput = { - id?: string username: string password: string displayName: string @@ -446,7 +423,6 @@ export type UserCreateWithoutSessionInput = { } export type UserUncheckedCreateWithoutSessionInput = { - id?: string username: string password: string displayName: string @@ -474,7 +450,6 @@ export type UserUpdateToOneWithWhereWithoutSessionInput = { } export type UserUpdateWithoutSessionInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -486,7 +461,6 @@ export type UserUpdateWithoutSessionInput = { } export type UserUncheckedUpdateWithoutSessionInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -498,7 +472,6 @@ export type UserUncheckedUpdateWithoutSessionInput = { } export type UserCreateWithoutUserPreferencesInput = { - id?: string username: string password: string displayName: string @@ -510,7 +483,6 @@ export type UserCreateWithoutUserPreferencesInput = { } export type UserUncheckedCreateWithoutUserPreferencesInput = { - id?: string username: string password: string displayName: string @@ -538,7 +510,6 @@ export type UserUpdateToOneWithWhereWithoutUserPreferencesInput = { } export type UserUpdateWithoutUserPreferencesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -550,7 +521,6 @@ export type UserUpdateWithoutUserPreferencesInput = { } export type UserUncheckedUpdateWithoutUserPreferencesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -562,7 +532,6 @@ export type UserUncheckedUpdateWithoutUserPreferencesInput = { } export type UserCreateWithoutMessagesInput = { - id?: string username: string password: string displayName: string @@ -574,7 +543,6 @@ export type UserCreateWithoutMessagesInput = { } export type UserUncheckedCreateWithoutMessagesInput = { - id?: string username: string password: string displayName: string @@ -602,7 +570,6 @@ export type UserUpdateToOneWithWhereWithoutMessagesInput = { } export type UserUpdateWithoutMessagesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -614,7 +581,6 @@ export type UserUpdateWithoutMessagesInput = { } export type UserUncheckedUpdateWithoutMessagesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -626,7 +592,6 @@ export type UserUncheckedUpdateWithoutMessagesInput = { } export type UserCreateWithoutChannelsInput = { - id?: string username: string password: string displayName: string @@ -638,7 +603,6 @@ export type UserCreateWithoutChannelsInput = { } export type UserUncheckedCreateWithoutChannelsInput = { - id?: string username: string password: string displayName: string @@ -666,7 +630,6 @@ export type UserUpdateToOneWithWhereWithoutChannelsInput = { } export type UserUpdateWithoutChannelsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -678,7 +641,6 @@ export type UserUpdateWithoutChannelsInput = { } export type UserUncheckedUpdateWithoutChannelsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string username?: Prisma.StringFieldUpdateOperationsInput | string password?: Prisma.StringFieldUpdateOperationsInput | string displayName?: Prisma.StringFieldUpdateOperationsInput | string @@ -739,7 +701,6 @@ export type UserCountOutputTypeCountChannelsArgs = runtime.Types.Extensions.GetSelect<{ - id?: boolean username?: boolean password?: boolean displayName?: boolean @@ -753,7 +714,6 @@ export type UserSelect export type UserSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean username?: boolean password?: boolean displayName?: boolean @@ -762,7 +722,6 @@ export type UserSelectCreateManyAndReturn export type UserSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean username?: boolean password?: boolean displayName?: boolean @@ -771,7 +730,6 @@ export type UserSelectUpdateManyAndReturn export type UserSelectScalar = { - id?: boolean username?: boolean password?: boolean displayName?: boolean @@ -779,7 +737,7 @@ export type UserSelectScalar = { updatedAt?: boolean } -export type UserOmit = runtime.Types.Extensions.GetOmit<"id" | "username" | "password" | "displayName" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]> +export type UserOmit = runtime.Types.Extensions.GetOmit<"username" | "password" | "displayName" | "createdAt" | "updatedAt", ExtArgs["result"]["user"]> export type UserInclude = { Session?: boolean | Prisma.User$SessionArgs UserPreferences?: boolean | Prisma.User$UserPreferencesArgs @@ -799,7 +757,6 @@ export type $UserPayload[] } scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string username: string password: string displayName: string @@ -888,8 +845,8 @@ export interface UserDelegate(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> @@ -933,9 +890,9 @@ export interface UserDelegate readonly username: Prisma.FieldRef<"User", 'String'> readonly password: Prisma.FieldRef<"User", 'String'> readonly displayName: Prisma.FieldRef<"User", 'String'> diff --git a/server/prisma/generated-client/models/UserPreferences.ts b/server/prisma/generated-client/models/UserPreferences.ts index 32e3c70..2522ccb 100644 --- a/server/prisma/generated-client/models/UserPreferences.ts +++ b/server/prisma/generated-client/models/UserPreferences.ts @@ -25,19 +25,19 @@ export type AggregateUserPreferences = { } export type UserPreferencesMinAggregateOutputType = { - userId: string | null + username: string | null toggleInputHotkey: string | null toggleOutputHotkey: string | null } export type UserPreferencesMaxAggregateOutputType = { - userId: string | null + username: string | null toggleInputHotkey: string | null toggleOutputHotkey: string | null } export type UserPreferencesCountAggregateOutputType = { - userId: number + username: number toggleInputHotkey: number toggleOutputHotkey: number _all: number @@ -45,19 +45,19 @@ export type UserPreferencesCountAggregateOutputType = { export type UserPreferencesMinAggregateInputType = { - userId?: true + username?: true toggleInputHotkey?: true toggleOutputHotkey?: true } export type UserPreferencesMaxAggregateInputType = { - userId?: true + username?: true toggleInputHotkey?: true toggleOutputHotkey?: true } export type UserPreferencesCountAggregateInputType = { - userId?: true + username?: true toggleInputHotkey?: true toggleOutputHotkey?: true _all?: true @@ -136,7 +136,7 @@ export type UserPreferencesGroupByArgs | string + username?: Prisma.StringFilter<"UserPreferences"> | string toggleInputHotkey?: Prisma.StringNullableFilter<"UserPreferences"> | string | null toggleOutputHotkey?: Prisma.StringNullableFilter<"UserPreferences"> | string | null user?: Prisma.XOR } export type UserPreferencesOrderByWithRelationInput = { - userId?: Prisma.SortOrder + username?: Prisma.SortOrder toggleInputHotkey?: Prisma.SortOrderInput | Prisma.SortOrder toggleOutputHotkey?: Prisma.SortOrderInput | Prisma.SortOrder user?: Prisma.UserOrderByWithRelationInput } export type UserPreferencesWhereUniqueInput = Prisma.AtLeast<{ - userId?: string + username?: string AND?: Prisma.UserPreferencesWhereInput | Prisma.UserPreferencesWhereInput[] OR?: Prisma.UserPreferencesWhereInput[] NOT?: Prisma.UserPreferencesWhereInput | Prisma.UserPreferencesWhereInput[] toggleInputHotkey?: Prisma.StringNullableFilter<"UserPreferences"> | string | null toggleOutputHotkey?: Prisma.StringNullableFilter<"UserPreferences"> | string | null user?: Prisma.XOR -}, "userId" | "userId"> +}, "username" | "username"> export type UserPreferencesOrderByWithAggregationInput = { - userId?: Prisma.SortOrder + username?: Prisma.SortOrder toggleInputHotkey?: Prisma.SortOrderInput | Prisma.SortOrder toggleOutputHotkey?: Prisma.SortOrderInput | Prisma.SortOrder _count?: Prisma.UserPreferencesCountOrderByAggregateInput @@ -199,7 +199,7 @@ export type UserPreferencesScalarWhereWithAggregatesInput = { AND?: Prisma.UserPreferencesScalarWhereWithAggregatesInput | Prisma.UserPreferencesScalarWhereWithAggregatesInput[] OR?: Prisma.UserPreferencesScalarWhereWithAggregatesInput[] NOT?: Prisma.UserPreferencesScalarWhereWithAggregatesInput | Prisma.UserPreferencesScalarWhereWithAggregatesInput[] - userId?: Prisma.StringWithAggregatesFilter<"UserPreferences"> | string + username?: Prisma.StringWithAggregatesFilter<"UserPreferences"> | string toggleInputHotkey?: Prisma.StringNullableWithAggregatesFilter<"UserPreferences"> | string | null toggleOutputHotkey?: Prisma.StringNullableWithAggregatesFilter<"UserPreferences"> | string | null } @@ -211,7 +211,7 @@ export type UserPreferencesCreateInput = { } export type UserPreferencesUncheckedCreateInput = { - userId: string + username: string toggleInputHotkey?: string | null toggleOutputHotkey?: string | null } @@ -223,13 +223,13 @@ export type UserPreferencesUpdateInput = { } export type UserPreferencesUncheckedUpdateInput = { - userId?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string toggleInputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null toggleOutputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null } export type UserPreferencesCreateManyInput = { - userId: string + username: string toggleInputHotkey?: string | null toggleOutputHotkey?: string | null } @@ -240,7 +240,7 @@ export type UserPreferencesUpdateManyMutationInput = { } export type UserPreferencesUncheckedUpdateManyInput = { - userId?: Prisma.StringFieldUpdateOperationsInput | string + username?: Prisma.StringFieldUpdateOperationsInput | string toggleInputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null toggleOutputHotkey?: Prisma.NullableStringFieldUpdateOperationsInput | string | null } @@ -251,19 +251,19 @@ export type UserPreferencesNullableScalarRelationFilter = { } export type UserPreferencesCountOrderByAggregateInput = { - userId?: Prisma.SortOrder + username?: Prisma.SortOrder toggleInputHotkey?: Prisma.SortOrder toggleOutputHotkey?: Prisma.SortOrder } export type UserPreferencesMaxOrderByAggregateInput = { - userId?: Prisma.SortOrder + username?: Prisma.SortOrder toggleInputHotkey?: Prisma.SortOrder toggleOutputHotkey?: Prisma.SortOrder } export type UserPreferencesMinOrderByAggregateInput = { - userId?: Prisma.SortOrder + username?: Prisma.SortOrder toggleInputHotkey?: Prisma.SortOrder toggleOutputHotkey?: Prisma.SortOrder } @@ -343,33 +343,33 @@ export type UserPreferencesUncheckedUpdateWithoutUserInput = { export type UserPreferencesSelect = runtime.Types.Extensions.GetSelect<{ - userId?: boolean + username?: boolean toggleInputHotkey?: boolean toggleOutputHotkey?: boolean user?: boolean | Prisma.UserDefaultArgs }, ExtArgs["result"]["userPreferences"]> export type UserPreferencesSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - userId?: boolean + username?: boolean toggleInputHotkey?: boolean toggleOutputHotkey?: boolean user?: boolean | Prisma.UserDefaultArgs }, ExtArgs["result"]["userPreferences"]> export type UserPreferencesSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - userId?: boolean + username?: boolean toggleInputHotkey?: boolean toggleOutputHotkey?: boolean user?: boolean | Prisma.UserDefaultArgs }, ExtArgs["result"]["userPreferences"]> export type UserPreferencesSelectScalar = { - userId?: boolean + username?: boolean toggleInputHotkey?: boolean toggleOutputHotkey?: boolean } -export type UserPreferencesOmit = runtime.Types.Extensions.GetOmit<"userId" | "toggleInputHotkey" | "toggleOutputHotkey", ExtArgs["result"]["userPreferences"]> +export type UserPreferencesOmit = runtime.Types.Extensions.GetOmit<"username" | "toggleInputHotkey" | "toggleOutputHotkey", ExtArgs["result"]["userPreferences"]> export type UserPreferencesInclude = { user?: boolean | Prisma.UserDefaultArgs } @@ -386,7 +386,7 @@ export type $UserPreferencesPayload } scalars: runtime.Types.Extensions.GetPayloadResult<{ - userId: string + username: string toggleInputHotkey: string | null toggleOutputHotkey: string | null }, ExtArgs["result"]["userPreferences"]> @@ -472,8 +472,8 @@ export interface UserPreferencesDelegate(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> @@ -517,9 +517,9 @@ export interface UserPreferencesDelegate + readonly username: Prisma.FieldRef<"UserPreferences", 'String'> readonly toggleInputHotkey: Prisma.FieldRef<"UserPreferences", 'String'> readonly toggleOutputHotkey: Prisma.FieldRef<"UserPreferences", 'String'> } diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma index c28a4d4..5f95127 100644 --- a/server/prisma/schema.prisma +++ b/server/prisma/schema.prisma @@ -8,8 +8,7 @@ generator client { } model User { - id String @id @default(cuid()) - username String @unique + username String @id @unique password String displayName String createdAt DateTime @default(now()) @@ -26,17 +25,15 @@ model Session { userId String expiresAt DateTime - user User @relation(references: [id], fields: [userId], onDelete: Cascade) - - @@index([userId]) + user User @relation(references: [username], fields: [userId], onDelete: Cascade) } model UserPreferences { - userId String @id @unique + username String @id @unique toggleInputHotkey String? @default("") toggleOutputHotkey String? @default("") - user User @relation(references: [id], fields: [userId], onDelete: Cascade) + user User @relation(references: [username], fields: [username], onDelete: Cascade) } model Attachment { @@ -52,11 +49,11 @@ model Attachment { model Message { id String @id @default(uuid()) text String - senderId String? + senderUsername String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt - sender User? @relation(references: [id], fields: [senderId], onDelete: SetNull) + sender User? @relation(references: [username], fields: [senderUsername], onDelete: SetNull) attachments MessageAttachment[] } @@ -72,9 +69,9 @@ model MessageAttachment { model Channel { id String @id @default(uuid()) - ownerId String? + ownerUsername String? name String persistent Boolean - owner User? @relation(references: [id], fields: [ownerId], onDelete: Cascade) + owner User? @relation(references: [username], fields: [ownerUsername], onDelete: Cascade) } \ No newline at end of file diff --git a/server/routes/auth.ts b/server/routes/auth.ts index fec8c27..e42bbbf 100644 --- a/server/routes/auth.ts +++ b/server/routes/auth.ts @@ -33,13 +33,12 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { }, }) - const session = await fastify.lucia.createSession(user.id, {}) + const session = await fastify.lucia.createSession(user.username, {}) const cookie = fastify.lucia.createSessionCookie(session.id) reply.setCookie(cookie.name, cookie.value, cookie.attributes) return { - id: user.id, username: user.username, displayName: user.username, createdAt: user.createdAt.toISOString(), @@ -67,7 +66,6 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { const user = await fastify.prisma.user.findFirst({ where: { username: req.body.username }, select: { - id: true, username: true, displayName: true, createdAt: true, @@ -84,7 +82,7 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { return reply.notFound('Incorrect username or password') } - const session = await fastify.lucia.createSession(user.id, {}) + const session = await fastify.lucia.createSession(user.username, {}) const cookie = fastify.lucia.createSessionCookie(session.id) reply.setCookie(cookie.name, cookie.value, cookie.attributes) @@ -112,7 +110,6 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { const user = req.user! return { - id: user.id, username: user.username, displayName: user.displayName, createdAt: user.createdAt.toISOString(), diff --git a/server/routes/channel.ts b/server/routes/channel.ts index a1e4384..6d22779 100644 --- a/server/routes/channel.ts +++ b/server/routes/channel.ts @@ -41,7 +41,7 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { const channel = await fastify.prisma.channel.create({ data: { name: req.body.name, - ownerId: user.id, + ownerUsername: user.username, persistent: req.body.persistent, }, }) @@ -73,7 +73,7 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { try { const channel = await fastify.prisma.channel.delete({ - where: { id: req.params.id, ownerId: user.id }, + where: { id: req.params.id, ownerUsername: user.username }, }) fastify.bus.emit('channel:removed', channel) diff --git a/server/routes/chat.ts b/server/routes/chat.ts index 19692f8..5908a2a 100644 --- a/server/routes/chat.ts +++ b/server/routes/chat.ts @@ -1,6 +1,7 @@ import type { FastifyPluginAsyncTypebox } from '@fastify/type-provider-typebox' import { Type } from 'typebox' import { ChatMessageSchema, NewChatMessagePayloadSchema } from '../plugins/schemas/chat.ts' +import { TypeboxRef } from '../utils/typebox-ref.ts' const plugin: FastifyPluginAsyncTypebox = async (fastify) => { fastify.post( @@ -10,9 +11,9 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { summary: 'Send message', tags: ['Chat'], operationId: 'chat.send', - body: NewChatMessagePayloadSchema, + body: TypeboxRef(NewChatMessagePayloadSchema), response: { - 200: ChatMessageSchema, + 200: TypeboxRef(ChatMessageSchema), }, }, }, @@ -22,7 +23,7 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { const message = await fastify.prisma.message.create({ data: { text: req.body.text, - senderId: user.id, + senderUsername: user.username, attachments: { create: (req.body.attachments ?? []).map((attachmentId) => { return { @@ -35,6 +36,13 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { }), }, }, + include: { + attachments: { + include: { + attachment: true, + }, + }, + }, }) if (!message) { @@ -43,11 +51,11 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { const response = { id: message.id, - senderId: user.id, + senderUsername: user.username, text: message.text, createdAt: message.createdAt.toISOString(), updatedAt: message.updatedAt.toISOString(), - attachments: req.body.attachments ?? [], + attachments: message.attachments.map(({ attachment }) => attachment), } fastify.bus.emit('chat:new-message', response) @@ -69,7 +77,7 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { }), response: { 200: Type.Object({ - messages: Type.Array(ChatMessageSchema), + messages: Type.Array(TypeboxRef(ChatMessageSchema)), nextCursor: Type.Optional(Type.String({ format: 'uuid', description: 'Cursor to last message' })), }), }, @@ -81,7 +89,7 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { const messages = await fastify.prisma.message.findMany({ orderBy: { createdAt: 'desc' }, take: req.query.limit + 1, - include: { attachments: true }, + include: { attachments: { include: { attachment: true } } }, ...(req.query.cursor && { cursor: { id: req.query.cursor, @@ -99,7 +107,7 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { ...message, createdAt: message.createdAt.toISOString(), updatedAt: message.updatedAt.toISOString(), - attachments: message.attachments.map(({ attachmentId }) => attachmentId), + attachments: message.attachments.map(({ attachment }) => attachment), } }), nextCursor: cursorMessage?.id, diff --git a/server/routes/user.ts b/server/routes/user.ts index 6ac41fc..dc5178e 100644 --- a/server/routes/user.ts +++ b/server/routes/user.ts @@ -19,9 +19,8 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { }, async (req, reply) => { const user = await fastify.prisma.user.findFirst({ - where: { username: req.query.username, id: req.query.id }, + where: { username: req.query.username }, select: { - id: true, username: true, displayName: true, createdAt: true, @@ -55,8 +54,8 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { const user = req.user! const preferences = await fastify.prisma.userPreferences.upsert({ - where: { userId: user.id }, - create: { userId: user.id }, + where: { username: user.username }, + create: { username: user.username }, update: {}, }) @@ -81,9 +80,9 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { const user = req.user! return fastify.prisma.userPreferences.upsert({ - where: { userId: user.id }, + where: { username: user.username }, create: { - userId: user.id, + username: user.username, ...req.body, }, update: req.body, @@ -108,12 +107,11 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => { const user = req.user! const updatedUser = await fastify.prisma.user.update({ - where: { id: user.id }, + where: { username: user.username }, data: { displayName: req.body.displayName, }, select: { - id: true, username: true, displayName: true, createdAt: true,