diff --git a/components/datarooms/dataroom-document-card.tsx b/components/datarooms/dataroom-document-card.tsx index 54a780194..ba25f15cc 100644 --- a/components/datarooms/dataroom-document-card.tsx +++ b/components/datarooms/dataroom-document-card.tsx @@ -32,6 +32,7 @@ import { cn, nFormatter, timeAgo } from "@/lib/utils"; import { fileIcon } from "@/lib/utils/get-file-icon"; import { AddToDataroomModal } from "../documents/add-document-to-dataroom-modal"; +import FileProcessStatusBar from "../documents/file-process-status-bar"; import { MoveToDataroomFolderModal } from "./move-dataroom-folder-modal"; type DocumentsCardProps = { @@ -64,6 +65,9 @@ export default function DataroomDocumentCard({ /** current folder name */ const currentFolderPath = router.query.name as string[] | undefined; + // Add state for document processing status + const [isProcessing, setIsProcessing] = useState(false); + // https://github.com/radix-ui/primitives/issues/1241#issuecomment-1888232392 useEffect(() => { if (!moveFolderOpen) { @@ -170,107 +174,136 @@ export default function DataroomDocumentCard({
-
- {!isSelected && !isHovered ? ( -
- {fileIcon({ - fileType: dataroomDocument.document.type ?? "", - className: "h-8 w-8", - isLight, - })} -
- ) : ( -
+
+
+ {!isSelected && !isHovered ? ( +
+ {fileIcon({ + fileType: dataroomDocument.document.type ?? "", + className: "h-8 w-8", + isLight, + })} +
+ ) : ( +
+ )} -
-
-

- {dataroomDocument.document.name} -

-
-
-

{timeAgo(dataroomDocument.createdAt)}

- {dataroomDocument.document._count.versions > 1 ? ( - <> -

-

{`${dataroomDocument.document._count.versions} Versions`}

- - ) : null} +
+
+

+ {dataroomDocument.document.name} +

+
+
+

+ {timeAgo(dataroomDocument.createdAt)} +

+ {dataroomDocument.document._count.versions > 1 ? ( + <> +

+

{`${dataroomDocument.document._count.versions} Versions`}

+ + ) : null} +
-
-
- { - e.stopPropagation(); - }} - href={`/documents/${dataroomDocument.document.id}`} - className="z-10 flex items-center space-x-1 rounded-md bg-gray-200 px-1.5 py-0.5 transition-all duration-75 hover:scale-105 active:scale-100 dark:bg-gray-700 sm:px-2" - > - -

- {nFormatter(dataroomDocument.document._count.views)} - views -

- +
+ { + e.stopPropagation(); + }} + href={`/documents/${dataroomDocument.document.id}`} + className="z-10 flex items-center space-x-1 rounded-md bg-gray-200 px-1.5 py-0.5 transition-all duration-75 hover:scale-105 active:scale-100 dark:bg-gray-700 sm:px-2" + > + +

+ {nFormatter(dataroomDocument.document._count.views)} + views +

+ - - - - - - Actions - { - e.stopPropagation(); - setMoveFolderOpen(true); - }} - > - - Move to folder - - { - e.stopPropagation(); - setAddDataRoomOpen(true); - }} - > - - Copy to other dataroom - - + + + + + + Actions + { + e.stopPropagation(); + setMoveFolderOpen(true); + }} + > + + Move to folder + + { + e.stopPropagation(); + setAddDataRoomOpen(true); + }} + > + + Copy to other dataroom + + - - handleButtonClick(event, dataroomDocument.id) - } - className="text-destructive duration-200 focus:bg-destructive focus:text-destructive-foreground" - > - {isFirstClick ? ( - "Really remove?" - ) : ( - <> - Remove document - - )} - - - + + handleButtonClick(event, dataroomDocument.id) + } + className="text-destructive duration-200 focus:bg-destructive focus:text-destructive-foreground" + > + {isFirstClick ? ( + "Really remove?" + ) : ( + <> + Remove document + + )} + + + +
+ + {(teamInfo?.currentTeam?.id === "cluqtfmcr0001zkza4xcgqatw" || + teamInfo?.currentTeam?.id === "clup33by90000oewh4rfvp2eg") && + ["pdf", "docs", "slides", "cad"].includes( + dataroomDocument.document.type, + ) && + !dataroomDocument.document.versions?.[0]?.hasPages && + dataroomDocument.document.versions?.[0]?.id && ( + { + setIsProcessing(false); + mutate( + `/api/teams/${teamInfo?.currentTeam?.id}/datarooms/${dataroomId}/documents`, + ); + }} + onProcessingChange={(processing) => setIsProcessing(processing)} + /> + )}
{addDataRoomOpen ? ( void; + onProcessingChange?: (processing: boolean) => void; +}) { + const { data } = useSWRImmutable<{ publicAccessToken: string }>( + `/api/progress-token?documentVersionId=${documentVersionId}`, + fetcher, + ); + + const { status: progressStatus, error: progressError } = + useDocumentProgressStatus(documentVersionId, data?.publicAccessToken); + + // Update processing state whenever status changes + useEffect(() => { + if (onProcessingChange) { + onProcessingChange( + progressStatus.state === "QUEUED" || + progressStatus.state === "EXECUTING", + ); + } + }, [progressStatus.state, onProcessingChange]); + + if (progressStatus.state === "QUEUED") { + return ( + + ); + } + + if ( + progressError || + ["FAILED", "CRASHED", "CANCELED", "SYSTEM_FAILURE"].includes( + progressStatus.state, + ) + ) { + return ( + + ); + } + + if (progressStatus.state === "COMPLETED") { + mutateDocument(); + return null; + } + + return ( + + ); +} diff --git a/components/documents/process-status-bar.tsx b/components/documents/process-status-bar.tsx index 582fa041e..c31606917 100644 --- a/components/documents/process-status-bar.tsx +++ b/components/documents/process-status-bar.tsx @@ -4,7 +4,7 @@ import { Progress } from "@/components/ui/progress"; import { cn } from "@/lib/utils"; -export default function ProcessStatusBar({ +export default function FileProcessStatusBar({ documentVersionId, className, }: { @@ -18,7 +18,7 @@ export default function ProcessStatusBar({ return ( void; }) { const router = useRouter(); const { plan } = usePlan(); @@ -316,14 +319,25 @@ export default function LinksTable({ )} > {/* Progress bar */} - {primaryVersion && - primaryVersion.type === "pdf" && - !primaryVersion.hasPages ? ( - - ) : null} + {primaryVersion && !primaryVersion.hasPages && ( + <> + {primaryVersion.type === "pdf" && + teamInfo?.currentTeam?.id !== + "cluqtfmcr0001zkza4xcgqatw" ? ( + + ) : ( + + )} + + )}
{link.domainId diff --git a/lib/swr/use-dataroom.ts b/lib/swr/use-dataroom.ts index b5d775817..7317858a8 100644 --- a/lib/swr/use-dataroom.ts +++ b/lib/swr/use-dataroom.ts @@ -266,6 +266,7 @@ export type DataroomFolderDocument = DataroomDocument & { id: string; name: string; type: string; + versions?: { id: string; hasPages: boolean }[]; _count: { views: number; versions: number; diff --git a/lib/swr/use-document.ts b/lib/swr/use-document.ts index c8ecf07d6..82a180c77 100644 --- a/lib/swr/use-document.ts +++ b/lib/swr/use-document.ts @@ -16,7 +16,11 @@ export function useDocument() { id: string; }; - const { data: document, error } = useSWR( + const { + data: document, + error, + mutate, + } = useSWR( teamInfo?.currentTeam?.id && id && `/api/teams/${teamInfo?.currentTeam?.id}/documents/${encodeURIComponent( @@ -33,6 +37,7 @@ export function useDocument() { primaryVersion: document?.versions[0], loading: !error && !document, error, + mutate, }; } diff --git a/lib/trigger/convert-files.ts b/lib/trigger/convert-files.ts index b7776940d..198e90e4c 100644 --- a/lib/trigger/convert-files.ts +++ b/lib/trigger/convert-files.ts @@ -5,9 +5,10 @@ import { getFile } from "@/lib/files/get-file"; import { putFileServer } from "@/lib/files/put-file-server"; import prisma from "@/lib/prisma"; +import { updateStatus } from "../utils/generate-trigger-status"; import { getExtensionFromContentType } from "../utils/get-content-type"; -type ConvertPayload = { +export type ConvertPayload = { documentId: string; documentVersionId: string; teamId: string; @@ -20,6 +21,8 @@ export const convertFilesToPdfTask = task({ concurrencyLimit: 10, }, run: async (payload: ConvertPayload) => { + updateStatus({ progress: 0, text: "Initializing..." }); + const team = await prisma.team.findUnique({ where: { id: payload.teamId, @@ -57,6 +60,8 @@ export const convertFilesToPdfTask = task({ !document.versions[0].originalFile || !document.versions[0].contentType ) { + updateStatus({ progress: 0, text: "Document not found" }); + logger.error("Document not found", { documentId: payload.documentId, documentVersionId: payload.documentVersionId, @@ -65,6 +70,8 @@ export const convertFilesToPdfTask = task({ return; } + updateStatus({ progress: 10, text: "Retrieving file..." }); + const fileUrl = await getFile({ data: document.versions[0].originalFile, type: document.versions[0].storageType, @@ -80,7 +87,9 @@ export const convertFilesToPdfTask = task({ }, ]), ); - formData.append("quality", "50"); + formData.append("quality", "75"); + + updateStatus({ progress: 20, text: "Converting document..." }); // Make the conversion request const conversionResponse = await retry.fetch( @@ -107,6 +116,7 @@ export const convertFilesToPdfTask = task({ ); if (!conversionResponse.ok) { + updateStatus({ progress: 0, text: "Conversion failed" }); const body = await conversionResponse.json(); throw new Error( `Conversion failed: ${body.message} ${conversionResponse.status}`, @@ -123,6 +133,8 @@ export const convertFilesToPdfTask = task({ const match = document.versions[0].originalFile.match(/(doc_[^\/]+)\//); const docId = match ? match[1] : undefined; + updateStatus({ progress: 30, text: "Saving converted file..." }); + // Save the converted file to the database const { type: storageType, data } = await putFileServer({ file: { @@ -135,6 +147,8 @@ export const convertFilesToPdfTask = task({ }); if (!data || !storageType) { + updateStatus({ progress: 0, text: "Failed to save converted file" }); + logger.error("Failed to save converted file to database", { documentId: payload.documentId, documentVersionId: payload.documentVersionId, @@ -156,6 +170,8 @@ export const convertFilesToPdfTask = task({ }, }); + updateStatus({ progress: 40, text: "Initiating document processing..." }); + // v2: trigger document uploaded event to trigger convert-pdf-to-image job await client.sendEvent({ id: payload.documentVersionId, // unique eventId for the run diff --git a/lib/trigger/pdf-to-image.ts b/lib/trigger/pdf-to-image.ts index 4749cb3ea..c05e327f3 100644 --- a/lib/trigger/pdf-to-image.ts +++ b/lib/trigger/pdf-to-image.ts @@ -11,18 +11,26 @@ import { getFile } from "@/lib/files/get-file"; import { streamFileServer } from "@/lib/files/stream-file-server"; import prisma from "@/lib/prisma"; +import { updateStatus } from "../utils/generate-trigger-status"; + +type ConvertPdfToImagePayload = { + documentId: string; + documentVersionId: string; + teamId: string; + docId: string; + versionNumber?: number; +}; + export const convertPdfToImage = task({ id: "convert-pdf-to-image", machine: { preset: "small-2x", }, - run: async (payload: { - documentVersionId: string; - teamId: string; - docId: string; - versionNumber?: number; - }) => { - const { documentVersionId, teamId, docId, versionNumber } = payload; + run: async (payload: ConvertPdfToImagePayload) => { + const { documentId, documentVersionId, teamId, docId, versionNumber } = + payload; + + updateStatus({ progress: 0, text: "Initializing..." }); try { // Get document version @@ -36,9 +44,11 @@ export const convertPdfToImage = task({ }); if (!documentVersion) { + updateStatus({ progress: 0, text: "Document not found" }); throw new Error("Document version not found"); } + updateStatus({ progress: 10, text: "Retrieving file..." }); // Get signed URL for the PDF const pdfUrl = await getFile({ type: documentVersion.storageType, @@ -46,6 +56,7 @@ export const convertPdfToImage = task({ }); if (!pdfUrl) { + updateStatus({ progress: 0, text: "Failed to retrieve file" }); throw new Error("Failed to get signed URL"); } @@ -59,12 +70,15 @@ export const convertPdfToImage = task({ // Stream PDF to temporary file const response = await fetch(pdfUrl); if (!response.body) { + updateStatus({ progress: 0, text: "Failed to retrieve file" }); throw new Error("Failed to fetch PDF stream"); } logger.info("Streaming PDF to temporary file"); await pipeline(response.body, createWriteStream(pdfPath)); + updateStatus({ progress: 20, text: "Converting document..." }); + // Get total pages and first page dimensions const getDimensions = execSync( `mutool show "${pdfPath}" "pages/1/MediaBox"`, @@ -111,14 +125,22 @@ export const convertPdfToImage = task({ const pngPath = `${pngOutputPath}1.png`; const jpegPath = `${jpegOutputPath}1.jpg`; - // Convert to PNG - execSync( - `mutool convert -o "${pngOutputPath}.png" -F png -O "resolution=${resolution}" "${pdfPath}" ${pageNumber}`, - ); - // Convert to JPEG - execSync( - `mutool convert -o "${jpegOutputPath}.jpg" -F jpeg -O "resolution=${resolution},quality=80" "${pdfPath}" ${pageNumber}`, - ); + try { + // Convert to PNG + execSync( + `mutool convert -o "${pngOutputPath}.png" -F png -O "resolution=${resolution}" "${pdfPath}" ${pageNumber}`, + ); + // Convert to JPEG + execSync( + `mutool convert -o "${jpegOutputPath}.jpg" -F jpeg -O "resolution=${resolution},quality=80" "${pdfPath}" ${pageNumber}`, + ); + } catch (error) { + updateStatus({ + progress: (100 * pageNumber) / totalPages, + text: `Error processing page ${pageNumber} of ${totalPages}`, + }); + throw new Error("Failed to convert document"); + } // Get file sizes const pngStats = await fs.stat(pngPath); @@ -152,6 +174,10 @@ export const convertPdfToImage = task({ }); if (!data) { + updateStatus({ + progress: (100 * pageNumber) / totalPages, + text: `Error saving page ${pageNumber} of ${totalPages}`, + }); throw new Error(`Failed to upload page ${pageNumber}`); } @@ -172,6 +198,11 @@ export const convertPdfToImage = task({ }, }); + updateStatus({ + progress: (100 * pageNumber) / totalPages, + text: `${pageNumber} / ${totalPages} pages processed`, + }); + logger.info(`Uploaded page ${pageNumber}`, { type, data }); } @@ -184,6 +215,11 @@ export const convertPdfToImage = task({ }, }); + updateStatus({ + progress: 100, + text: "Enabling pages...", + }); + // If versionNumber is provided, update other versions to not be primary if (versionNumber) { await prisma.documentVersion.updateMany({ @@ -197,18 +233,36 @@ export const convertPdfToImage = task({ isPrimary: false, }, }); + + await fetch( + `${process.env.NEXTAUTH_URL}/api/revalidate?secret=${process.env.REVALIDATE_TOKEN}&documentId=${documentId}`, + ); + + updateStatus({ + progress: 100, + text: "Revalidating links...", + }); } // Clean up temporary directory await fs.rm(tempDirectory, { recursive: true }); logger.info("Temporary directory cleaned up", { tempDirectory }); + updateStatus({ + progress: 100, + text: "Processing complete", + }); + return { success: true, message: "Successfully converted PDF to images", totalPages, }; } catch (error) { + updateStatus({ + progress: 0, + text: "Failed to convert PDF", + }); logger.error("Failed to convert PDF:", { error: error instanceof Error ? error.message : String(error), stack: error instanceof Error ? error.stack : undefined, diff --git a/lib/utils/generate-trigger-auth-token.ts b/lib/utils/generate-trigger-auth-token.ts new file mode 100644 index 000000000..2d4d95bd0 --- /dev/null +++ b/lib/utils/generate-trigger-auth-token.ts @@ -0,0 +1,12 @@ +import { auth } from "@trigger.dev/sdk/v3"; + +export async function generateTriggerPublicAccessToken(tag: string) { + return auth.createPublicToken({ + scopes: { + read: { + tags: [tag], + }, + }, + expirationTime: "15m", + }); +} diff --git a/lib/utils/generate-trigger-status.ts b/lib/utils/generate-trigger-status.ts new file mode 100644 index 000000000..7581d686b --- /dev/null +++ b/lib/utils/generate-trigger-status.ts @@ -0,0 +1,31 @@ +import { metadata } from "@trigger.dev/sdk/v3"; +import { z } from "zod"; + +const ZDocumentProgressStatus = z.object({ + progress: z.number(), + text: z.string(), +}); + +type TDocumentProgressStatus = z.infer; + +const ZDocumentProgressMetadata = z.object({ + status: ZDocumentProgressStatus, +}); + +type TDocumentProgressMetadata = z.infer; + +/** + * Update the status of the convert document task. Wraps the `metadata.set` method. + */ +export function updateStatus(status: TDocumentProgressStatus) { + // `metadata.set` can be used to update the status of the task + // as long as `updateStatus` is called within the task's `run` function. + metadata.set("status", status); +} + +/** + * Parse the status from the metadata. + */ +export function parseStatus(data: unknown): TDocumentProgressStatus { + return ZDocumentProgressMetadata.parse(data).status; +} diff --git a/lib/utils/use-progress-status.ts b/lib/utils/use-progress-status.ts new file mode 100644 index 000000000..89675b858 --- /dev/null +++ b/lib/utils/use-progress-status.ts @@ -0,0 +1,45 @@ +"use client"; + +import { type RunStatus } from "@trigger.dev/core/v3"; +import { useRealtimeRunsWithTag } from "@trigger.dev/react-hooks"; + +import { parseStatus } from "@/lib/utils/generate-trigger-status"; + +interface IDocumentProgressStatus { + state: RunStatus; + progress: number; + text: string; +} + +export function useDocumentProgressStatus( + documentVersionId: string, + publicAccessToken: string | undefined, +) { + const { runs, error } = useRealtimeRunsWithTag( + `version:${documentVersionId}`, + { + enabled: !!publicAccessToken, + accessToken: publicAccessToken, + }, + ); + + const run = runs[0]; + const status: IDocumentProgressStatus = { + state: run?.status ?? "QUEUED", + progress: 0, + text: "Initializing...", + }; + + // Parse metadata if available + if (run?.metadata) { + const { progress, text } = parseStatus(run.metadata); + status.progress = progress; + status.text = text; + } + + return { + status, + error, + run, + }; +} diff --git a/package-lock.json b/package-lock.json index fe108468c..1f0e91647 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,11 @@ "version": "0.1.0", "hasInstallScript": true, "dependencies": { - "@aws-sdk/client-lambda": "^3.731.1", - "@aws-sdk/client-s3": "^3.731.1", - "@aws-sdk/cloudfront-signer": "^3.723.0", - "@aws-sdk/lib-storage": "^3.731.1", - "@aws-sdk/s3-request-presigner": "^3.731.1", + "@aws-sdk/client-lambda": "^3.741.0", + "@aws-sdk/client-s3": "^3.741.0", + "@aws-sdk/cloudfront-signer": "^3.734.0", + "@aws-sdk/lib-storage": "^3.741.0", + "@aws-sdk/s3-request-presigner": "^3.741.0", "@chronark/zod-bird": "^0.3.10", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", @@ -28,22 +28,22 @@ "@radix-ui/react-avatar": "^1.1.2", "@radix-ui/react-checkbox": "^1.1.3", "@radix-ui/react-collapsible": "^1.1.2", - "@radix-ui/react-dialog": "^1.1.4", - "@radix-ui/react-dropdown-menu": "^2.1.4", + "@radix-ui/react-dialog": "^1.1.5", + "@radix-ui/react-dropdown-menu": "^2.1.5", "@radix-ui/react-label": "^2.1.1", - "@radix-ui/react-popover": "^1.1.4", + "@radix-ui/react-popover": "^1.1.5", "@radix-ui/react-portal": "^1.1.3", "@radix-ui/react-progress": "^1.1.1", "@radix-ui/react-radio-group": "^1.2.2", "@radix-ui/react-scroll-area": "^1.2.2", - "@radix-ui/react-select": "^2.1.4", + "@radix-ui/react-select": "^2.1.5", "@radix-ui/react-separator": "^1.1.1", "@radix-ui/react-slot": "^1.1.1", "@radix-ui/react-switch": "^1.1.2", "@radix-ui/react-tabs": "^1.1.2", "@radix-ui/react-toggle": "^1.1.1", "@radix-ui/react-toggle-group": "^1.1.1", - "@radix-ui/react-tooltip": "^1.1.6", + "@radix-ui/react-tooltip": "^1.1.7", "@react-email/components": "^0.0.32", "@sindresorhus/slugify": "^2.2.1", "@stripe/stripe-js": "^4.10.0", @@ -51,10 +51,11 @@ "@tanstack/react-table": "^8.20.6", "@teamhanko/passkeys-next-auth-provider": "^0.2.7", "@tremor/react": "^3.18.7", - "@trigger.dev/nextjs": "^3.3.11", - "@trigger.dev/react": "^3.3.11", - "@trigger.dev/sdk": "^3.3.11", - "@tus/s3-store": "^1.7.0", + "@trigger.dev/nextjs": "^3.3.12", + "@trigger.dev/react": "^3.3.12", + "@trigger.dev/react-hooks": "^3.3.12", + "@trigger.dev/sdk": "^3.3.12", + "@tus/s3-store": "^1.8.0", "@tus/server": "^1.10.1", "@tus/utils": "^0.5.1", "@upstash/qstash": "^2.7.20", @@ -62,7 +63,7 @@ "@upstash/redis": "^1.34.3", "@vercel/blob": "^0.23.4", "@vercel/edge-config": "^1.4.0", - "@vercel/functions": "^1.5.2", + "@vercel/functions": "^1.6.0", "ai": "2.2.37", "autoprefixer": "^10.4.20", "base-x": "^5.0.0", @@ -78,9 +79,9 @@ "input-otp": "^1.4.2", "js-cookie": "^3.0.5", "jsonwebtoken": "^9.0.2", - "lucide-react": "^0.473.0", + "lucide-react": "^0.474.0", "mime-types": "^2.1.35", - "motion": "^11.18.1", + "motion": "^11.18.2", "ms": "^2.1.3", "mupdf": "^0.3.0", "nanoid": "^5.0.9", @@ -88,14 +89,14 @@ "next-auth": "^4.24.11", "next-plausible": "^3.12.4", "next-themes": "^0.4.4", - "nodemailer": "^6.9.16", + "nodemailer": "^6.10.0", "notion-client": "^7.1.6", "notion-utils": "^7.1.6", "nuqs": "^1.20.0", "openai": "4.20.1", "pdf-lib": "^1.17.1", "postcss": "^8.5.1", - "posthog-js": "^1.207.0", + "posthog-js": "^1.215.2", "react": "^18.3.1", "react-colorful": "^5.6.1", "react-dom": "^18.3.1", @@ -103,23 +104,23 @@ "react-dropzone": "^14.3.5", "react-email": "^3.0.6", "react-hotkeys-hook": "^4.6.1", - "react-intersection-observer": "^9.15.0", + "react-intersection-observer": "^9.15.1", "react-notion-x": "^7.2.6", "react-pdf": "^8.0.2", "react-phone-number-input": "^3.4.11", "react-syntax-highlighter": "^15.6.1", "react-textarea-autosize": "^8.5.7", - "react-zoom-pan-pinch": "^3.6.1", - "resend": "^4.1.1", - "sonner": "^1.7.2", + "react-zoom-pan-pinch": "^3.7.0", + "resend": "^4.1.2", + "sonner": "^1.7.4", "stripe": "^16.12.0", "swr": "^2.3.0", "tailwind-merge": "^2.6.0", "tailwind-scrollbar-hide": "^1.3.1", "tailwindcss": "^3.4.17", "tailwindcss-animate": "^1.0.7", - "ts-pattern": "^5.6.0", - "tus-js-client": "^4.2.3", + "ts-pattern": "^5.6.2", + "tus-js-client": "^4.3.1", "ua-parser-js": "^1.0.40", "use-debounce": "^10.0.4", "vaul": "^1.1.2", @@ -128,7 +129,7 @@ }, "devDependencies": { "@tailwindcss/forms": "^0.5.10", - "@trigger.dev/build": "^3.3.11", + "@trigger.dev/build": "^3.3.12", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/bcryptjs": "^2.4.6", "@types/fluent-ffmpeg": "^2.1.27", @@ -142,7 +143,7 @@ "@types/react-syntax-highlighter": "^15.5.13", "@types/ua-parser-js": "^0.7.39", "prettier": "^3.4.2", - "prettier-plugin-tailwindcss": "^0.6.10", + "prettier-plugin-tailwindcss": "^0.6.11", "prisma": "^5.22.0", "typescript": "^5" }, @@ -425,75 +426,53 @@ } }, "node_modules/@aws-sdk/client-lambda": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.731.1.tgz", - "integrity": "sha512-W6fjtBVFjq+loCKKO4Gi/oOFclUPTdtQflx/tTZrOej2OMy/CgCFdqoxyc017+MkfYc3v1ZX0P7pl/qQiBAWfQ==", + "version": "3.741.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.741.0.tgz", + "integrity": "sha512-nrH6vx9cBz+f6dOzezofU4F+gnH8g9uhXR76Y3XicJEcvynGj8DfMH6e6FUEXLkqEYIND9rnq3rCEf1vjkIkFg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.731.0", - "@aws-sdk/credential-provider-node": "3.731.1", - "@aws-sdk/middleware-host-header": "3.731.0", - "@aws-sdk/middleware-logger": "3.731.0", - "@aws-sdk/middleware-recursion-detection": "3.731.0", - "@aws-sdk/middleware-user-agent": "3.731.0", - "@aws-sdk/region-config-resolver": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@aws-sdk/util-endpoints": "3.731.0", - "@aws-sdk/util-user-agent-browser": "3.731.0", - "@aws-sdk/util-user-agent-node": "3.731.0", - "@smithy/config-resolver": "^4.0.0", - "@smithy/core": "^3.0.0", - "@smithy/eventstream-serde-browser": "^4.0.0", - "@smithy/eventstream-serde-config-resolver": "^4.0.0", - "@smithy/eventstream-serde-node": "^4.0.0", - "@smithy/fetch-http-handler": "^5.0.0", - "@smithy/hash-node": "^4.0.0", - "@smithy/invalid-dependency": "^4.0.0", - "@smithy/middleware-content-length": "^4.0.0", - "@smithy/middleware-endpoint": "^4.0.0", - "@smithy/middleware-retry": "^4.0.0", - "@smithy/middleware-serde": "^4.0.0", - "@smithy/middleware-stack": "^4.0.0", - "@smithy/node-config-provider": "^4.0.0", - "@smithy/node-http-handler": "^4.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/smithy-client": "^4.0.0", - "@smithy/types": "^4.0.0", - "@smithy/url-parser": "^4.0.0", + "@aws-sdk/core": "3.734.0", + "@aws-sdk/credential-provider-node": "3.741.0", + "@aws-sdk/middleware-host-header": "3.734.0", + "@aws-sdk/middleware-logger": "3.734.0", + "@aws-sdk/middleware-recursion-detection": "3.734.0", + "@aws-sdk/middleware-user-agent": "3.734.0", + "@aws-sdk/region-config-resolver": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@aws-sdk/util-endpoints": "3.734.0", + "@aws-sdk/util-user-agent-browser": "3.734.0", + "@aws-sdk/util-user-agent-node": "3.734.0", + "@smithy/config-resolver": "^4.0.1", + "@smithy/core": "^3.1.1", + "@smithy/eventstream-serde-browser": "^4.0.1", + "@smithy/eventstream-serde-config-resolver": "^4.0.1", + "@smithy/eventstream-serde-node": "^4.0.1", + "@smithy/fetch-http-handler": "^5.0.1", + "@smithy/hash-node": "^4.0.1", + "@smithy/invalid-dependency": "^4.0.1", + "@smithy/middleware-content-length": "^4.0.1", + "@smithy/middleware-endpoint": "^4.0.2", + "@smithy/middleware-retry": "^4.0.3", + "@smithy/middleware-serde": "^4.0.1", + "@smithy/middleware-stack": "^4.0.1", + "@smithy/node-config-provider": "^4.0.1", + "@smithy/node-http-handler": "^4.0.2", + "@smithy/protocol-http": "^5.0.1", + "@smithy/smithy-client": "^4.1.2", + "@smithy/types": "^4.1.0", + "@smithy/url-parser": "^4.0.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.0", - "@smithy/util-defaults-mode-node": "^4.0.0", - "@smithy/util-endpoints": "^3.0.0", - "@smithy/util-middleware": "^4.0.0", - "@smithy/util-retry": "^4.0.0", - "@smithy/util-stream": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.3", + "@smithy/util-defaults-mode-node": "^4.0.3", + "@smithy/util-endpoints": "^3.0.1", + "@smithy/util-middleware": "^4.0.1", + "@smithy/util-retry": "^4.0.1", + "@smithy/util-stream": "^4.0.2", "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.731.1.tgz", - "integrity": "sha512-5c0ZiagMTPmWilXNffeXJCLoCEz97jilHr3QJWwf2GaTay4tzN+Ld71rpdfEenzUR7fuxEWFfVlwQbFOzFNYHg==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.731.0", - "@aws-sdk/credential-provider-http": "3.731.0", - "@aws-sdk/credential-provider-ini": "3.731.1", - "@aws-sdk/credential-provider-process": "3.731.0", - "@aws-sdk/credential-provider-sso": "3.731.1", - "@aws-sdk/credential-provider-web-identity": "3.731.1", - "@aws-sdk/types": "3.731.0", - "@smithy/credential-provider-imds": "^4.0.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/shared-ini-file-loader": "^4.0.0", - "@smithy/types": "^4.0.0", + "@smithy/util-waiter": "^4.0.2", "tslib": "^2.6.2" }, "engines": { @@ -501,87 +480,65 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.731.1.tgz", - "integrity": "sha512-Ab2PA/8Th6JkurCkxnQJZHPE/JnnSsX/XHQzirkQb+JpKOyWMRC/YZUBfAaiwhxqX65RHgklrwil+UbFl4TtAQ==", + "version": "3.741.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.741.0.tgz", + "integrity": "sha512-sZvdbRZ+E9/GcOMUOkZvYvob95N6c9LdzDneXHFASA7OIaEOQxQT1Arimz7JpEhfq/h9K2/j7wNO4jh4x80bmA==", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.731.0", - "@aws-sdk/credential-provider-node": "3.731.1", - "@aws-sdk/middleware-bucket-endpoint": "3.731.0", - "@aws-sdk/middleware-expect-continue": "3.731.0", - "@aws-sdk/middleware-flexible-checksums": "3.731.0", - "@aws-sdk/middleware-host-header": "3.731.0", - "@aws-sdk/middleware-location-constraint": "3.731.0", - "@aws-sdk/middleware-logger": "3.731.0", - "@aws-sdk/middleware-recursion-detection": "3.731.0", - "@aws-sdk/middleware-sdk-s3": "3.731.0", - "@aws-sdk/middleware-ssec": "3.731.0", - "@aws-sdk/middleware-user-agent": "3.731.0", - "@aws-sdk/region-config-resolver": "3.731.0", - "@aws-sdk/signature-v4-multi-region": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@aws-sdk/util-endpoints": "3.731.0", - "@aws-sdk/util-user-agent-browser": "3.731.0", - "@aws-sdk/util-user-agent-node": "3.731.0", - "@aws-sdk/xml-builder": "3.723.0", - "@smithy/config-resolver": "^4.0.0", - "@smithy/core": "^3.0.0", - "@smithy/eventstream-serde-browser": "^4.0.0", - "@smithy/eventstream-serde-config-resolver": "^4.0.0", - "@smithy/eventstream-serde-node": "^4.0.0", - "@smithy/fetch-http-handler": "^5.0.0", - "@smithy/hash-blob-browser": "^4.0.0", - "@smithy/hash-node": "^4.0.0", - "@smithy/hash-stream-node": "^4.0.0", - "@smithy/invalid-dependency": "^4.0.0", - "@smithy/md5-js": "^4.0.0", - "@smithy/middleware-content-length": "^4.0.0", - "@smithy/middleware-endpoint": "^4.0.0", - "@smithy/middleware-retry": "^4.0.0", - "@smithy/middleware-serde": "^4.0.0", - "@smithy/middleware-stack": "^4.0.0", - "@smithy/node-config-provider": "^4.0.0", - "@smithy/node-http-handler": "^4.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/smithy-client": "^4.0.0", - "@smithy/types": "^4.0.0", - "@smithy/url-parser": "^4.0.0", + "@aws-sdk/core": "3.734.0", + "@aws-sdk/credential-provider-node": "3.741.0", + "@aws-sdk/middleware-bucket-endpoint": "3.734.0", + "@aws-sdk/middleware-expect-continue": "3.734.0", + "@aws-sdk/middleware-flexible-checksums": "3.735.0", + "@aws-sdk/middleware-host-header": "3.734.0", + "@aws-sdk/middleware-location-constraint": "3.734.0", + "@aws-sdk/middleware-logger": "3.734.0", + "@aws-sdk/middleware-recursion-detection": "3.734.0", + "@aws-sdk/middleware-sdk-s3": "3.740.0", + "@aws-sdk/middleware-ssec": "3.734.0", + "@aws-sdk/middleware-user-agent": "3.734.0", + "@aws-sdk/region-config-resolver": "3.734.0", + "@aws-sdk/signature-v4-multi-region": "3.740.0", + "@aws-sdk/types": "3.734.0", + "@aws-sdk/util-endpoints": "3.734.0", + "@aws-sdk/util-user-agent-browser": "3.734.0", + "@aws-sdk/util-user-agent-node": "3.734.0", + "@aws-sdk/xml-builder": "3.734.0", + "@smithy/config-resolver": "^4.0.1", + "@smithy/core": "^3.1.1", + "@smithy/eventstream-serde-browser": "^4.0.1", + "@smithy/eventstream-serde-config-resolver": "^4.0.1", + "@smithy/eventstream-serde-node": "^4.0.1", + "@smithy/fetch-http-handler": "^5.0.1", + "@smithy/hash-blob-browser": "^4.0.1", + "@smithy/hash-node": "^4.0.1", + "@smithy/hash-stream-node": "^4.0.1", + "@smithy/invalid-dependency": "^4.0.1", + "@smithy/md5-js": "^4.0.1", + "@smithy/middleware-content-length": "^4.0.1", + "@smithy/middleware-endpoint": "^4.0.2", + "@smithy/middleware-retry": "^4.0.3", + "@smithy/middleware-serde": "^4.0.1", + "@smithy/middleware-stack": "^4.0.1", + "@smithy/node-config-provider": "^4.0.1", + "@smithy/node-http-handler": "^4.0.2", + "@smithy/protocol-http": "^5.0.1", + "@smithy/smithy-client": "^4.1.2", + "@smithy/types": "^4.1.0", + "@smithy/url-parser": "^4.0.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.0", - "@smithy/util-defaults-mode-node": "^4.0.0", - "@smithy/util-endpoints": "^3.0.0", - "@smithy/util-middleware": "^4.0.0", - "@smithy/util-retry": "^4.0.0", - "@smithy/util-stream": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.3", + "@smithy/util-defaults-mode-node": "^4.0.3", + "@smithy/util-endpoints": "^3.0.1", + "@smithy/util-middleware": "^4.0.1", + "@smithy/util-retry": "^4.0.1", + "@smithy/util-stream": "^4.0.2", "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.731.1.tgz", - "integrity": "sha512-5c0ZiagMTPmWilXNffeXJCLoCEz97jilHr3QJWwf2GaTay4tzN+Ld71rpdfEenzUR7fuxEWFfVlwQbFOzFNYHg==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.731.0", - "@aws-sdk/credential-provider-http": "3.731.0", - "@aws-sdk/credential-provider-ini": "3.731.1", - "@aws-sdk/credential-provider-process": "3.731.0", - "@aws-sdk/credential-provider-sso": "3.731.1", - "@aws-sdk/credential-provider-web-identity": "3.731.1", - "@aws-sdk/types": "3.731.0", - "@smithy/credential-provider-imds": "^4.0.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/shared-ini-file-loader": "^4.0.0", - "@smithy/types": "^4.0.0", + "@smithy/util-waiter": "^4.0.2", "tslib": "^2.6.2" }, "engines": { @@ -589,46 +546,46 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.731.0.tgz", - "integrity": "sha512-O4C/UYGgqMsBg21MMApFdgyh8BX568hQhbdoNFmRVTBoSnCZ3w+H4a1wBPX4Gyl0NX+ab6Xxo9rId8HiyPXJ0A==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.734.0.tgz", + "integrity": "sha512-oerepp0mut9VlgTwnG5Ds/lb0C0b2/rQ+hL/rF6q+HGKPfGsCuPvFx1GtwGKCXd49ase88/jVgrhcA9OQbz3kg==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.731.0", - "@aws-sdk/middleware-host-header": "3.731.0", - "@aws-sdk/middleware-logger": "3.731.0", - "@aws-sdk/middleware-recursion-detection": "3.731.0", - "@aws-sdk/middleware-user-agent": "3.731.0", - "@aws-sdk/region-config-resolver": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@aws-sdk/util-endpoints": "3.731.0", - "@aws-sdk/util-user-agent-browser": "3.731.0", - "@aws-sdk/util-user-agent-node": "3.731.0", - "@smithy/config-resolver": "^4.0.0", - "@smithy/core": "^3.0.0", - "@smithy/fetch-http-handler": "^5.0.0", - "@smithy/hash-node": "^4.0.0", - "@smithy/invalid-dependency": "^4.0.0", - "@smithy/middleware-content-length": "^4.0.0", - "@smithy/middleware-endpoint": "^4.0.0", - "@smithy/middleware-retry": "^4.0.0", - "@smithy/middleware-serde": "^4.0.0", - "@smithy/middleware-stack": "^4.0.0", - "@smithy/node-config-provider": "^4.0.0", - "@smithy/node-http-handler": "^4.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/smithy-client": "^4.0.0", - "@smithy/types": "^4.0.0", - "@smithy/url-parser": "^4.0.0", + "@aws-sdk/core": "3.734.0", + "@aws-sdk/middleware-host-header": "3.734.0", + "@aws-sdk/middleware-logger": "3.734.0", + "@aws-sdk/middleware-recursion-detection": "3.734.0", + "@aws-sdk/middleware-user-agent": "3.734.0", + "@aws-sdk/region-config-resolver": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@aws-sdk/util-endpoints": "3.734.0", + "@aws-sdk/util-user-agent-browser": "3.734.0", + "@aws-sdk/util-user-agent-node": "3.734.0", + "@smithy/config-resolver": "^4.0.1", + "@smithy/core": "^3.1.1", + "@smithy/fetch-http-handler": "^5.0.1", + "@smithy/hash-node": "^4.0.1", + "@smithy/invalid-dependency": "^4.0.1", + "@smithy/middleware-content-length": "^4.0.1", + "@smithy/middleware-endpoint": "^4.0.2", + "@smithy/middleware-retry": "^4.0.3", + "@smithy/middleware-serde": "^4.0.1", + "@smithy/middleware-stack": "^4.0.1", + "@smithy/node-config-provider": "^4.0.1", + "@smithy/node-http-handler": "^4.0.2", + "@smithy/protocol-http": "^5.0.1", + "@smithy/smithy-client": "^4.1.2", + "@smithy/types": "^4.1.0", + "@smithy/url-parser": "^4.0.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.0", - "@smithy/util-defaults-mode-node": "^4.0.0", - "@smithy/util-endpoints": "^3.0.0", - "@smithy/util-middleware": "^4.0.0", - "@smithy/util-retry": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.3", + "@smithy/util-defaults-mode-node": "^4.0.3", + "@smithy/util-endpoints": "^3.0.1", + "@smithy/util-middleware": "^4.0.1", + "@smithy/util-retry": "^4.0.1", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, @@ -637,11 +594,11 @@ } }, "node_modules/@aws-sdk/cloudfront-signer": { - "version": "3.723.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/cloudfront-signer/-/cloudfront-signer-3.723.0.tgz", - "integrity": "sha512-dJvVZIcUOkaLwieBBBgkiPH/3vA1tqJ/fcIrGRGl4hz1wNB1o/RC/7de3NG18aOgD0L0gfvfZQEJ8c0DbjQ4cg==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/cloudfront-signer/-/cloudfront-signer-3.734.0.tgz", + "integrity": "sha512-5ZvuP5bLs+en3Ath/ZozLNLWO3Ul4Gid9v/QdWrHp35s/xUi1J7el/vx7o2Kbq1DmBC/xd1Zoh9GSrUWWnIgFw==", "dependencies": { - "@smithy/url-parser": "^4.0.0", + "@smithy/url-parser": "^4.0.1", "tslib": "^2.6.2" }, "engines": { @@ -649,19 +606,19 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.731.0.tgz", - "integrity": "sha512-ithBN1VWASkvAIlozJmenqDvNnFddr/SZXAs58+jCnBHgy3tXLHABZGVNCjetZkHRqNdXEO1kirnoxaFeXMeDA==", - "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/core": "^3.0.0", - "@smithy/node-config-provider": "^4.0.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/signature-v4": "^5.0.0", - "@smithy/smithy-client": "^4.0.0", - "@smithy/types": "^4.0.0", - "@smithy/util-middleware": "^4.0.0", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.734.0.tgz", + "integrity": "sha512-SxnDqf3vobdm50OLyAKfqZetv6zzwnSqwIwd3jrbopxxHKqNIM/I0xcYjD6Tn+mPig+u7iRKb9q3QnEooFTlmg==", + "dependencies": { + "@aws-sdk/types": "3.734.0", + "@smithy/core": "^3.1.1", + "@smithy/node-config-provider": "^4.0.1", + "@smithy/property-provider": "^4.0.1", + "@smithy/protocol-http": "^5.0.1", + "@smithy/signature-v4": "^5.0.1", + "@smithy/smithy-client": "^4.1.2", + "@smithy/types": "^4.1.0", + "@smithy/util-middleware": "^4.0.1", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, @@ -670,14 +627,14 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.731.0.tgz", - "integrity": "sha512-h0WWZg4QMLgFVyIvQrC43zpVqsUWg1mPM1clpogP43B8+wEhDEQ4qWRzvFs3dQ4cqx/FLyDUZZF4cqgd94z7kw==", - "dependencies": { - "@aws-sdk/core": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/types": "^4.0.0", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.734.0.tgz", + "integrity": "sha512-gtRkzYTGafnm1FPpiNO8VBmJrYMoxhDlGPYDVcijzx3DlF8dhWnowuSBCxLSi+MJMx5hvwrX2A+e/q0QAeHqmw==", + "dependencies": { + "@aws-sdk/core": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@smithy/property-provider": "^4.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -685,19 +642,19 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.731.0.tgz", - "integrity": "sha512-iRtrjtcYaWgbvtu2cvDhIsPWXZGvhy1Hgks4682MEBNTc9AUwlfvDrYz2EEnTtJJyrbOdEHVrYrzqD8qPyVLCg==", - "dependencies": { - "@aws-sdk/core": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@smithy/fetch-http-handler": "^5.0.0", - "@smithy/node-http-handler": "^4.0.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/smithy-client": "^4.0.0", - "@smithy/types": "^4.0.0", - "@smithy/util-stream": "^4.0.0", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.734.0.tgz", + "integrity": "sha512-JFSL6xhONsq+hKM8xroIPhM5/FOhiQ1cov0lZxhzZWj6Ai3UAjucy3zyIFDr9MgP1KfCYNdvyaUq9/o+HWvEDg==", + "dependencies": { + "@aws-sdk/core": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@smithy/fetch-http-handler": "^5.0.1", + "@smithy/node-http-handler": "^4.0.2", + "@smithy/property-provider": "^4.0.1", + "@smithy/protocol-http": "^5.0.1", + "@smithy/smithy-client": "^4.1.2", + "@smithy/types": "^4.1.0", + "@smithy/util-stream": "^4.0.2", "tslib": "^2.6.2" }, "engines": { @@ -705,22 +662,44 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.731.1.tgz", - "integrity": "sha512-0M0ejuqW8iHNcTH2ZXSY9m+I7Y06qVkj6k3vfQU9XaB//mTUCxxfGfqWAtgfr7Yi73egABTcPc0jyPdcvSW4Kw==", - "dependencies": { - "@aws-sdk/core": "3.731.0", - "@aws-sdk/credential-provider-env": "3.731.0", - "@aws-sdk/credential-provider-http": "3.731.0", - "@aws-sdk/credential-provider-process": "3.731.0", - "@aws-sdk/credential-provider-sso": "3.731.1", - "@aws-sdk/credential-provider-web-identity": "3.731.1", - "@aws-sdk/nested-clients": "3.731.1", - "@aws-sdk/types": "3.731.0", - "@smithy/credential-provider-imds": "^4.0.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/shared-ini-file-loader": "^4.0.0", - "@smithy/types": "^4.0.0", + "version": "3.741.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.741.0.tgz", + "integrity": "sha512-/XvnVp6zZXsyUlP1FtmspcWnd+Z1u2WK0wwzTE/x277M0oIhAezCW79VmcY4jcDQbYH+qMbtnBexfwgFDARxQg==", + "dependencies": { + "@aws-sdk/core": "3.734.0", + "@aws-sdk/credential-provider-env": "3.734.0", + "@aws-sdk/credential-provider-http": "3.734.0", + "@aws-sdk/credential-provider-process": "3.734.0", + "@aws-sdk/credential-provider-sso": "3.734.0", + "@aws-sdk/credential-provider-web-identity": "3.734.0", + "@aws-sdk/nested-clients": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@smithy/credential-provider-imds": "^4.0.1", + "@smithy/property-provider": "^4.0.1", + "@smithy/shared-ini-file-loader": "^4.0.1", + "@smithy/types": "^4.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.741.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.741.0.tgz", + "integrity": "sha512-iz/puK9CZZkZjrKXX2W+PaiewHtlcD7RKUIsw4YHFyb8lrOt7yTYpM6VjeI+T//1sozjymmAnnp1SST9TXApLQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.734.0", + "@aws-sdk/credential-provider-http": "3.734.0", + "@aws-sdk/credential-provider-ini": "3.741.0", + "@aws-sdk/credential-provider-process": "3.734.0", + "@aws-sdk/credential-provider-sso": "3.734.0", + "@aws-sdk/credential-provider-web-identity": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@smithy/credential-provider-imds": "^4.0.1", + "@smithy/property-provider": "^4.0.1", + "@smithy/shared-ini-file-loader": "^4.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -728,15 +707,15 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.731.0.tgz", - "integrity": "sha512-6yNMY6q3xHLbs2f2+C6GhvMrjTgtFBiPJJqKaPLsTIhlTRvh4sK8pGm3ITcma0jOxtPDIuoPfBAV8N8XVMBlZg==", - "dependencies": { - "@aws-sdk/core": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/shared-ini-file-loader": "^4.0.0", - "@smithy/types": "^4.0.0", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.734.0.tgz", + "integrity": "sha512-zvjsUo+bkYn2vjT+EtLWu3eD6me+uun+Hws1IyWej/fKFAqiBPwyeyCgU7qjkiPQSXqk1U9+/HG9IQ6Iiz+eBw==", + "dependencies": { + "@aws-sdk/core": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@smithy/property-provider": "^4.0.1", + "@smithy/shared-ini-file-loader": "^4.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -744,17 +723,17 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.731.1.tgz", - "integrity": "sha512-p1tp+rMUf5YNQLr8rVRmDgNtKGYLL0KCdq3K2hwwvFnx9MjReF1sA4lfm3xWsxBQM+j3QN9AvMQqBzDJ+NOSdw==", - "dependencies": { - "@aws-sdk/client-sso": "3.731.0", - "@aws-sdk/core": "3.731.0", - "@aws-sdk/token-providers": "3.731.1", - "@aws-sdk/types": "3.731.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/shared-ini-file-loader": "^4.0.0", - "@smithy/types": "^4.0.0", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.734.0.tgz", + "integrity": "sha512-cCwwcgUBJOsV/ddyh1OGb4gKYWEaTeTsqaAK19hiNINfYV/DO9r4RMlnWAo84sSBfJuj9shUNsxzyoe6K7R92Q==", + "dependencies": { + "@aws-sdk/client-sso": "3.734.0", + "@aws-sdk/core": "3.734.0", + "@aws-sdk/token-providers": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@smithy/property-provider": "^4.0.1", + "@smithy/shared-ini-file-loader": "^4.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -762,15 +741,15 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.731.1.tgz", - "integrity": "sha512-+ynAvEGWDR5ZJFxgpwwzhvlQ3WQ7BleWXU6JwpIw3yFrD4eZEn85b8DZC1aEz7C9kb1HSV6B3gpqHqlyS6wj8g==", - "dependencies": { - "@aws-sdk/core": "3.731.0", - "@aws-sdk/nested-clients": "3.731.1", - "@aws-sdk/types": "3.731.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/types": "^4.0.0", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.734.0.tgz", + "integrity": "sha512-t4OSOerc+ppK541/Iyn1AS40+2vT/qE+MFMotFkhCgCJbApeRF2ozEdnDN6tGmnl4ybcUuxnp9JWLjwDVlR/4g==", + "dependencies": { + "@aws-sdk/core": "3.734.0", + "@aws-sdk/nested-clients": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@smithy/property-provider": "^4.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -778,13 +757,13 @@ } }, "node_modules/@aws-sdk/lib-storage": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.731.1.tgz", - "integrity": "sha512-+ajlL3FOCHu+HEB8M5BJ3Rvq+QmXfGdgzU5tmnVMJUl1V9ggbG9P01EmrVX7Q7INdWezQYr/VWqUcOmUW4zuBQ==", + "version": "3.741.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.741.0.tgz", + "integrity": "sha512-bbX3m5kdoa0zgo1DqyIDasolE8v/mo0X43unqW6g5hfMPI375X9QAFpn0bVmmcBQ62ixV8BO3aZLAPSZb1/IqQ==", "dependencies": { - "@smithy/abort-controller": "^4.0.0", - "@smithy/middleware-endpoint": "^4.0.0", - "@smithy/smithy-client": "^4.0.0", + "@smithy/abort-controller": "^4.0.1", + "@smithy/middleware-endpoint": "^4.0.2", + "@smithy/smithy-client": "^4.1.2", "buffer": "5.6.0", "events": "3.3.0", "stream-browserify": "3.0.0", @@ -794,7 +773,7 @@ "node": ">=18.0.0" }, "peerDependencies": { - "@aws-sdk/client-s3": "^3.731.1" + "@aws-sdk/client-s3": "^3.741.0" } }, "node_modules/@aws-sdk/lib-storage/node_modules/buffer": { @@ -807,15 +786,15 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.731.0.tgz", - "integrity": "sha512-G9vuGW5GWCbzGOwlGFJcOkfxhw1cB6vzcv75QTT0CmciLXK+Cio8O2pqMSTTF2kg9Y6iHVC2BlOtLRkJAVOxVQ==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.734.0.tgz", + "integrity": "sha512-etC7G18aF7KdZguW27GE/wpbrNmYLVT755EsFc8kXpZj8D6AFKxc7OuveinJmiy0bYXAMspJUWsF6CrGpOw6CQ==", "dependencies": { - "@aws-sdk/types": "3.731.0", + "@aws-sdk/types": "3.734.0", "@aws-sdk/util-arn-parser": "3.723.0", - "@smithy/node-config-provider": "^4.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/types": "^4.0.0", + "@smithy/node-config-provider": "^4.0.1", + "@smithy/protocol-http": "^5.0.1", + "@smithy/types": "^4.1.0", "@smithy/util-config-provider": "^4.0.0", "tslib": "^2.6.2" }, @@ -824,13 +803,13 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.731.0.tgz", - "integrity": "sha512-oY4nsY/mb5O5eZCzIuWpyvzO45Bi6UBtE48IaJsoyVctagA1l8hB66aczH9M1NHNjvbS4Beu1agwh3Nyb1eJug==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.734.0.tgz", + "integrity": "sha512-P38/v1l6HjuB2aFUewt7ueAW5IvKkFcv5dalPtbMGRhLeyivBOHwbCyuRKgVs7z7ClTpu9EaViEGki2jEQqEsQ==", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.734.0", + "@smithy/protocol-http": "^5.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -838,21 +817,21 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.731.0.tgz", - "integrity": "sha512-LMs/rndovYjYSntSYyPE/PIl4iHNiquaU0lpDqpQc9iTgQcNbjdriSUWpibgu1jXlGBpBYCqttNkxmEThbbWxA==", + "version": "3.735.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.735.0.tgz", + "integrity": "sha512-Tx7lYTPwQFRe/wQEHMR6Drh/S+X0ToAEq1Ava9QyxV1riwtepzRLojpNDELFb3YQVVYbX7FEiBMCJLMkmIIY+A==", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "3.731.0", - "@aws-sdk/types": "3.731.0", + "@aws-sdk/core": "3.734.0", + "@aws-sdk/types": "3.734.0", "@smithy/is-array-buffer": "^4.0.0", - "@smithy/node-config-provider": "^4.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/types": "^4.0.0", - "@smithy/util-middleware": "^4.0.0", - "@smithy/util-stream": "^4.0.0", + "@smithy/node-config-provider": "^4.0.1", + "@smithy/protocol-http": "^5.0.1", + "@smithy/types": "^4.1.0", + "@smithy/util-middleware": "^4.0.1", + "@smithy/util-stream": "^4.0.2", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, @@ -861,13 +840,13 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.731.0.tgz", - "integrity": "sha512-ndAJsm5uWPPJRZowLKpB1zuL17qWlWVtCJP4I/ynBkq1PU1DijDXBul2UZaG6Mpvsgms1NXo/h9noHuK7T3v8w==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.734.0.tgz", + "integrity": "sha512-LW7RRgSOHHBzWZnigNsDIzu3AiwtjeI2X66v+Wn1P1u+eXssy1+up4ZY/h+t2sU4LU36UvEf+jrZti9c6vRnFw==", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.734.0", + "@smithy/protocol-http": "^5.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -875,12 +854,12 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.731.0.tgz", - "integrity": "sha512-1I2EjAFxrQksrzqdN7YYuY/q2YsjqeX4l7f9VOkdBjiZeDvVIEdM99IT5sISJB/r6CjNrYX5MhqGhE8i1VFchA==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.734.0.tgz", + "integrity": "sha512-EJEIXwCQhto/cBfHdm3ZOeLxd2NlJD+X2F+ZTOxzokuhBtY0IONfC/91hOo5tWQweerojwshSMHRCKzRv1tlwg==", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.734.0", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -888,12 +867,12 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.731.0.tgz", - "integrity": "sha512-IIZrOdjbY2vKzPJPrwE7FoFQCIPEL6UqURi8LEaiVyCag4p2fvaTN5pgKuQtGC2+iYd/HHcGT4qn2bAqF5Jmmw==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.734.0.tgz", + "integrity": "sha512-mUMFITpJUW3LcKvFok176eI5zXAUomVtahb9IQBwLzkqFYOrMJvWAvoV4yuxrJ8TlQBG8gyEnkb9SnhZvjg67w==", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.734.0", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -901,13 +880,13 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.731.0.tgz", - "integrity": "sha512-y6FLASB1iKWuR5tUipMyo77bt0lEl3OnCrrd2xw/H24avq1HhJjjPR0HHhJE6QKJzF/FYXeV88tcyPSMe32VDw==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.734.0.tgz", + "integrity": "sha512-CUat2d9ITsFc2XsmeiRQO96iWpxSKYFjxvj27Hc7vo87YUHRnfMfnc8jw1EpxEwMcvBD7LsRa6vDNky6AjcrFA==", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.734.0", + "@smithy/protocol-http": "^5.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -915,22 +894,22 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.731.0.tgz", - "integrity": "sha512-J9aKyQaVoec5eWTSDfO4h2sKHNP0wTzN15LFcHnkD+e/d0rdmOi7BTkkbJrIaynma9WShIasmrtM3HNi9GiiTA==", + "version": "3.740.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.740.0.tgz", + "integrity": "sha512-VML9TzNoQdAs5lSPQSEgZiPgMUSz2H7SltaLb9g4tHwKK5xQoTq5WcDd6V1d2aPxSN5Q2Q63aiVUBby6MdUN/Q==", "dependencies": { - "@aws-sdk/core": "3.731.0", - "@aws-sdk/types": "3.731.0", + "@aws-sdk/core": "3.734.0", + "@aws-sdk/types": "3.734.0", "@aws-sdk/util-arn-parser": "3.723.0", - "@smithy/core": "^3.0.0", - "@smithy/node-config-provider": "^4.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/signature-v4": "^5.0.0", - "@smithy/smithy-client": "^4.0.0", - "@smithy/types": "^4.0.0", + "@smithy/core": "^3.1.1", + "@smithy/node-config-provider": "^4.0.1", + "@smithy/protocol-http": "^5.0.1", + "@smithy/signature-v4": "^5.0.1", + "@smithy/smithy-client": "^4.1.2", + "@smithy/types": "^4.1.0", "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.0", - "@smithy/util-stream": "^4.0.0", + "@smithy/util-middleware": "^4.0.1", + "@smithy/util-stream": "^4.0.2", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, @@ -939,12 +918,12 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.731.0.tgz", - "integrity": "sha512-1HP4lxGcQx4awXgxfL8t9faBK7TqEL7zkAZrm/YBbLrT9oQomxZOHKIOHvo5VVh4qmsNBdqnH2XUlSMY71gsww==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.734.0.tgz", + "integrity": "sha512-d4yd1RrPW/sspEXizq2NSOUivnheac6LPeLSLnaeTbBG9g1KqIqvCzP1TfXEqv2CrWfHEsWtJpX7oyjySSPvDQ==", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.734.0", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -952,16 +931,16 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.731.0.tgz", - "integrity": "sha512-Ngr2Gz0aec/uduoKaO3srN52SYkEHndYtFzkK/gDUyQwQzi4ha2eIisxPiuHEX6RvXT31V9ouqn/YtVkt0R76A==", - "dependencies": { - "@aws-sdk/core": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@aws-sdk/util-endpoints": "3.731.0", - "@smithy/core": "^3.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/types": "^4.0.0", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.734.0.tgz", + "integrity": "sha512-MFVzLWRkfFz02GqGPjqSOteLe5kPfElUrXZft1eElnqulqs6RJfVSpOV7mO90gu293tNAeggMWAVSGRPKIYVMg==", + "dependencies": { + "@aws-sdk/core": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@aws-sdk/util-endpoints": "3.734.0", + "@smithy/core": "^3.1.1", + "@smithy/protocol-http": "^5.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -969,46 +948,46 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.731.1.tgz", - "integrity": "sha512-/L8iVrulnXZl+kgmTn+oxRxNnhcSIbf+r12C06vGUq60w0YMidLvxJZN7vt8H9SnCAGCHqud2MS7ExCEvhc0gA==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.734.0.tgz", + "integrity": "sha512-iph2XUy8UzIfdJFWo1r0Zng9uWj3253yvW9gljhtu+y/LNmNvSnJxQk1f3D2BC5WmcoPZqTS3UsycT3mLPSzWA==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.731.0", - "@aws-sdk/middleware-host-header": "3.731.0", - "@aws-sdk/middleware-logger": "3.731.0", - "@aws-sdk/middleware-recursion-detection": "3.731.0", - "@aws-sdk/middleware-user-agent": "3.731.0", - "@aws-sdk/region-config-resolver": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@aws-sdk/util-endpoints": "3.731.0", - "@aws-sdk/util-user-agent-browser": "3.731.0", - "@aws-sdk/util-user-agent-node": "3.731.0", - "@smithy/config-resolver": "^4.0.0", - "@smithy/core": "^3.0.0", - "@smithy/fetch-http-handler": "^5.0.0", - "@smithy/hash-node": "^4.0.0", - "@smithy/invalid-dependency": "^4.0.0", - "@smithy/middleware-content-length": "^4.0.0", - "@smithy/middleware-endpoint": "^4.0.0", - "@smithy/middleware-retry": "^4.0.0", - "@smithy/middleware-serde": "^4.0.0", - "@smithy/middleware-stack": "^4.0.0", - "@smithy/node-config-provider": "^4.0.0", - "@smithy/node-http-handler": "^4.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/smithy-client": "^4.0.0", - "@smithy/types": "^4.0.0", - "@smithy/url-parser": "^4.0.0", + "@aws-sdk/core": "3.734.0", + "@aws-sdk/middleware-host-header": "3.734.0", + "@aws-sdk/middleware-logger": "3.734.0", + "@aws-sdk/middleware-recursion-detection": "3.734.0", + "@aws-sdk/middleware-user-agent": "3.734.0", + "@aws-sdk/region-config-resolver": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@aws-sdk/util-endpoints": "3.734.0", + "@aws-sdk/util-user-agent-browser": "3.734.0", + "@aws-sdk/util-user-agent-node": "3.734.0", + "@smithy/config-resolver": "^4.0.1", + "@smithy/core": "^3.1.1", + "@smithy/fetch-http-handler": "^5.0.1", + "@smithy/hash-node": "^4.0.1", + "@smithy/invalid-dependency": "^4.0.1", + "@smithy/middleware-content-length": "^4.0.1", + "@smithy/middleware-endpoint": "^4.0.2", + "@smithy/middleware-retry": "^4.0.3", + "@smithy/middleware-serde": "^4.0.1", + "@smithy/middleware-stack": "^4.0.1", + "@smithy/node-config-provider": "^4.0.1", + "@smithy/node-http-handler": "^4.0.2", + "@smithy/protocol-http": "^5.0.1", + "@smithy/smithy-client": "^4.1.2", + "@smithy/types": "^4.1.0", + "@smithy/url-parser": "^4.0.1", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.0", - "@smithy/util-defaults-mode-node": "^4.0.0", - "@smithy/util-endpoints": "^3.0.0", - "@smithy/util-middleware": "^4.0.0", - "@smithy/util-retry": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.3", + "@smithy/util-defaults-mode-node": "^4.0.3", + "@smithy/util-endpoints": "^3.0.1", + "@smithy/util-middleware": "^4.0.1", + "@smithy/util-retry": "^4.0.1", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, @@ -1017,15 +996,15 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.731.0.tgz", - "integrity": "sha512-XlDpRNkDVHF59f07JmkuAidEv//m3hT6/JL85h0l3+zrpaRWhf8n8lVUyAPNq35ZujK8AcorYM+93u7hdWsliQ==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.734.0.tgz", + "integrity": "sha512-Lvj1kPRC5IuJBr9DyJ9T9/plkh+EfKLy+12s/mykOy1JaKHDpvj+XGy2YO6YgYVOb8JFtaqloid+5COtje4JTQ==", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/node-config-provider": "^4.0.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.734.0", + "@smithy/node-config-provider": "^4.0.1", + "@smithy/types": "^4.1.0", "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.0", + "@smithy/util-middleware": "^4.0.1", "tslib": "^2.6.2" }, "engines": { @@ -1033,17 +1012,17 @@ } }, "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.731.1.tgz", - "integrity": "sha512-GdG0pXkcTgBpenouB834FoCHyLaivV2rGQn7OEQBiT8SBaTxSackZ6tGlJQAlzZQkiQfE/NePUJU7DczJZZvrg==", - "dependencies": { - "@aws-sdk/signature-v4-multi-region": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@aws-sdk/util-format-url": "3.731.0", - "@smithy/middleware-endpoint": "^4.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/smithy-client": "^4.0.0", - "@smithy/types": "^4.0.0", + "version": "3.741.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.741.0.tgz", + "integrity": "sha512-qrYYS+XG6wRwNDt60tcFKDCkQoLiBHhNlHaUtsHwdmSnlwA4aIuxCGXMkuskX93FsoLUDpuxtA0MZth3JL36dw==", + "dependencies": { + "@aws-sdk/signature-v4-multi-region": "3.740.0", + "@aws-sdk/types": "3.734.0", + "@aws-sdk/util-format-url": "3.734.0", + "@smithy/middleware-endpoint": "^4.0.2", + "@smithy/protocol-http": "^5.0.1", + "@smithy/smithy-client": "^4.1.2", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -1051,15 +1030,15 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.731.0.tgz", - "integrity": "sha512-1r/b4Os15dR+BCVRRLVQJMF7Krq6xX6IKHxN43kuvODYWz8Nv3XDlaSpeRpAzyJuzW/fTp4JgE+z0+gmJfdEeA==", - "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/signature-v4": "^5.0.0", - "@smithy/types": "^4.0.0", + "version": "3.740.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.740.0.tgz", + "integrity": "sha512-w+psidN3i+kl51nQEV3V+fKjKUqcEbqUA1GtubruDBvBqrl5El/fU2NF3Lo53y8CfI9wCdf3V7KOEpHIqxHNng==", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.740.0", + "@aws-sdk/types": "3.734.0", + "@smithy/protocol-http": "^5.0.1", + "@smithy/signature-v4": "^5.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -1067,15 +1046,15 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.731.1.tgz", - "integrity": "sha512-t34GOPwBZsX7zGHjiTXmMHGY3kHM7fLiQ60Jqk0On9P0ASHTDE5U75RgCXboE3u+qEv9wyKyaqMNyMWj9qQlFg==", - "dependencies": { - "@aws-sdk/nested-clients": "3.731.1", - "@aws-sdk/types": "3.731.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/shared-ini-file-loader": "^4.0.0", - "@smithy/types": "^4.0.0", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.734.0.tgz", + "integrity": "sha512-2U6yWKrjWjZO8Y5SHQxkFvMVWHQWbS0ufqfAIBROqmIZNubOL7jXCiVdEFekz6MZ9LF2tvYGnOW4jX8OKDGfIw==", + "dependencies": { + "@aws-sdk/nested-clients": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@smithy/property-provider": "^4.0.1", + "@smithy/shared-ini-file-loader": "^4.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -1083,11 +1062,11 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", - "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.734.0.tgz", + "integrity": "sha512-o11tSPTT70nAkGV1fN9wm/hAIiLPyWX6SuGf+9JyTp7S/rC2cFWhR26MvA69nplcjNaXVzB0f+QFrLXXjOqCrg==", "dependencies": { - "@smithy/types": "^4.0.0", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -1106,13 +1085,13 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz", - "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.734.0.tgz", + "integrity": "sha512-w2+/E88NUbqql6uCVAsmMxDQKu7vsKV0KqhlQb0lL+RCq4zy07yXYptVNs13qrnuTfyX7uPXkXrlugvK9R1Ucg==", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/types": "^4.0.0", - "@smithy/util-endpoints": "^3.0.0", + "@aws-sdk/types": "3.734.0", + "@smithy/types": "^4.1.0", + "@smithy/util-endpoints": "^3.0.1", "tslib": "^2.6.2" }, "engines": { @@ -1120,13 +1099,13 @@ } }, "node_modules/@aws-sdk/util-format-url": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.731.0.tgz", - "integrity": "sha512-wZHObjnYmiz8wFlUQ4/5dHsT7k0at+GvZM02LgvshcRJLnFjYdrzjelMKuNynd/NNK3gLgTsFTGuIgPpz9r4rA==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.734.0.tgz", + "integrity": "sha512-TxZMVm8V4aR/QkW9/NhujvYpPZjUYqzLwSge5imKZbWFR806NP7RMwc5ilVuHF/bMOln/cVHkl42kATElWBvNw==", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/querystring-builder": "^4.0.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.734.0", + "@smithy/querystring-builder": "^4.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -1145,25 +1124,25 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.731.0.tgz", - "integrity": "sha512-EnYXxTkCNCjTTBjW/pelRPv4Thsi9jepoB6qQjPMA9/ixrZ71BhhQecz9kgqzZLR9BPCwb6hgJ/Yd702jqJ4aQ==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.734.0.tgz", + "integrity": "sha512-xQTCus6Q9LwUuALW+S76OL0jcWtMOVu14q+GoLnWPUM7QeUw963oQcLhF7oq0CtaLLKyl4GOUfcwc773Zmwwng==", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.734.0", + "@smithy/types": "^4.1.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.731.0.tgz", - "integrity": "sha512-Rze78Ym5Bx7aWMvmZE2iL3JPo2INNCC5N9rLVx98Gg1G0ZaxclVRUvJrh1AojNlOFxU+otkxAe7FA3Foy2iLLQ==", - "dependencies": { - "@aws-sdk/middleware-user-agent": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@smithy/node-config-provider": "^4.0.0", - "@smithy/types": "^4.0.0", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.734.0.tgz", + "integrity": "sha512-c6Iinh+RVQKs6jYUFQ64htOU2HUXFQ3TVx+8Tu3EDF19+9vzWi9UukhIMH9rqyyEXIAkk9XL7avt8y2Uyw2dGA==", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.734.0", + "@aws-sdk/types": "3.734.0", + "@smithy/node-config-provider": "^4.0.1", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -1179,11 +1158,11 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.723.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.723.0.tgz", - "integrity": "sha512-5xK2SqGU1mzzsOeemy7cy3fGKxR1sEpUs4pEiIjaT0OIvU+fZaDVUEYWOqsgns6wI90XZEQJlXtI8uAHX/do5Q==", + "version": "3.734.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.734.0.tgz", + "integrity": "sha512-Zrjxi5qwGEcUsJ0ru7fRtW74WcTS0rbLcehoFB+rN1GRi2hbLcFaYs4PwVA5diLeAJH0gszv3x4Hr/S87MfbKQ==", "dependencies": { - "@smithy/types": "^4.0.0", + "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, "engines": { @@ -4363,14 +4342,14 @@ } }, "node_modules/@radix-ui/react-dialog": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.4.tgz", - "integrity": "sha512-Ur7EV1IwQGCyaAuyDRiOLA5JIUZxELJljF+MbM/2NC0BYwfuRrbpS30BiQBJrVruscgUkieKkqXYDOoByaxIoA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.5.tgz", + "integrity": "sha512-LaO3e5h/NOEL4OfXjxD43k9Dx+vn+8n+PCFt6uhX/BADFflllyv3WJG6rgvvSVBxpTch938Qq/LGc2MMxipXPw==", "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", @@ -4379,8 +4358,8 @@ "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.6.1" + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.2" }, "peerDependencies": { "@types/react": "*", @@ -4412,9 +4391,9 @@ } }, "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.3.tgz", - "integrity": "sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.4.tgz", + "integrity": "sha512-XDUI0IVYVSwjMXxM6P4Dfti7AH+Y4oS/TB+sglZ/EXc7cqLwGAmp1NlMrcUjj7ks6R5WTZuWKv44FBbLpwU3sA==", "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", @@ -4438,15 +4417,15 @@ } }, "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.4.tgz", - "integrity": "sha512-iXU1Ab5ecM+yEepGAWK8ZhMyKX4ubFdCNtol4sT9D0OVErG9PNElfx3TQhjw7n7BC5nFVz68/5//clWy+8TXzA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.5.tgz", + "integrity": "sha512-50ZmEFL1kOuLalPKHrLWvPFMons2fGx9TqQCWlPwDVpbAnaUJ1g4XNcKqFNMQymYU0kKWR4MDDi+9vUQBGFgcQ==", "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.4", + "@radix-ui/react-menu": "2.1.5", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, @@ -4543,16 +4522,16 @@ } }, "node_modules/@radix-ui/react-menu": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.4.tgz", - "integrity": "sha512-BnOgVoL6YYdHAG6DtXONaR29Eq4nvbi8rutrV/xlr3RQCMMb3yqP85Qiw/3NReozrSW+4dfLkK+rc1hb4wPU/A==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.5.tgz", + "integrity": "sha512-uH+3w5heoMJtqVCgYOtYVMECk1TOrkUn0OG0p5MqXC0W2ppcuVeESbou8PTHoqAjbdTEK19AGXBWcEtR5WpEQg==", "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", @@ -4563,8 +4542,8 @@ "@radix-ui/react-roving-focus": "1.1.1", "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-callback-ref": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.6.1" + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.2" }, "peerDependencies": { "@types/react": "*", @@ -4582,14 +4561,14 @@ } }, "node_modules/@radix-ui/react-popover": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.4.tgz", - "integrity": "sha512-aUACAkXx8LaFymDma+HQVji7WhvEhpFJ7+qPz17Nf4lLZqtreGOFRiNQWQmhzp7kEWg9cOyyQJpdIMUMPc/CPw==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.5.tgz", + "integrity": "sha512-YXkTAftOIW2Bt3qKH8vYr6n9gCkVrvyvfiTObVjoHVTHnNj26rmvO87IKa3VgtgCjb8FAQ6qOjNViwl+9iIzlg==", "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", @@ -4599,8 +4578,8 @@ "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.6.1" + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.2" }, "peerDependencies": { "@types/react": "*", @@ -4831,9 +4810,9 @@ } }, "node_modules/@radix-ui/react-select": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.4.tgz", - "integrity": "sha512-pOkb2u8KgO47j/h7AylCj7dJsm69BXcjkrvTqMptFqsE2i0p8lHkfgneXKjAgPzBMivnoMyt8o4KiV4wYzDdyQ==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.5.tgz", + "integrity": "sha512-eVV7N8jBXAXnyrc+PsOF89O9AfVgGnbLxUtBb0clJ8y8ENMWLARGMI/1/SBRLz7u4HqxLgN71BJ17eono3wcjA==", "dependencies": { "@radix-ui/number": "1.1.0", "@radix-ui/primitive": "1.1.1", @@ -4841,7 +4820,7 @@ "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", @@ -4854,8 +4833,8 @@ "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-previous": "1.1.0", "@radix-ui/react-visually-hidden": "1.1.1", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.6.1" + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.2" }, "peerDependencies": { "@types/react": "*", @@ -5021,14 +5000,14 @@ } }, "node_modules/@radix-ui/react-tooltip": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.6.tgz", - "integrity": "sha512-TLB5D8QLExS1uDn7+wH/bjEmRurNMTzNrtq7IjaS4kjion9NtzsTGkvR5+i7yc9q01Pi2KMM2cN3f8UG4IvvXA==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.7.tgz", + "integrity": "sha512-ss0s80BC0+g0+Zc53MvilcnTYSOi4mSuFWBPYPuTOFGjx+pUU+ZrmamMNwS56t8MTFlniA5ocjd4jYm/CdhbOg==", "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-dismissable-layer": "1.1.4", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.1", "@radix-ui/react-portal": "1.1.3", @@ -5674,16 +5653,16 @@ } }, "node_modules/@smithy/core": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.1.0.tgz", - "integrity": "sha512-swFv0wQiK7TGHeuAp6lfF5Kw1dHWsTrCuc+yh4Kh05gEShjsE2RUxHucEerR9ih9JITNtaHcSpUThn5Y/vDw0A==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.1.2.tgz", + "integrity": "sha512-htwQXkbdF13uwwDevz9BEzL5ABK+1sJpVQXywwGSH973AVOvisHNfpcB8A8761G6XgHoS2kHPqc9DqHJ2gp+/Q==", "dependencies": { - "@smithy/middleware-serde": "^4.0.1", + "@smithy/middleware-serde": "^4.0.2", "@smithy/protocol-http": "^5.0.1", "@smithy/types": "^4.1.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.1", - "@smithy/util-stream": "^4.0.1", + "@smithy/util-stream": "^4.0.2", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, @@ -5877,12 +5856,12 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.1.tgz", - "integrity": "sha512-hCCOPu9+sRI7Wj0rZKKnGylKXBEd9cQJetzjQqe8cT4PWvtQAbvNVa6cgAONiZg9m8LaXtP9/waxm3C3eO4hiw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.0.3.tgz", + "integrity": "sha512-YdbmWhQF5kIxZjWqPIgboVfi8i5XgiYMM7GGKFMTvBei4XjNQfNv8sukT50ITvgnWKKKpOtp0C0h7qixLgb77Q==", "dependencies": { - "@smithy/core": "^3.1.0", - "@smithy/middleware-serde": "^4.0.1", + "@smithy/core": "^3.1.2", + "@smithy/middleware-serde": "^4.0.2", "@smithy/node-config-provider": "^4.0.1", "@smithy/shared-ini-file-loader": "^4.0.1", "@smithy/types": "^4.1.0", @@ -5895,14 +5874,14 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.0.1.tgz", - "integrity": "sha512-n3g2zZFgOWaz2ZYCy8+4wxSmq+HSTD8QKkRhFDv+nkxY1o7gzyp4PDz/+tOdcNPMPZ/A6Mt4aVECYNjQNiaHJw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.0.4.tgz", + "integrity": "sha512-wmxyUBGHaYUqul0wZiset4M39SMtDBOtUr2KpDuftKNN74Do9Y36Go6Eqzj9tL0mIPpr31ulB5UUtxcsCeGXsQ==", "dependencies": { "@smithy/node-config-provider": "^4.0.1", "@smithy/protocol-http": "^5.0.1", "@smithy/service-error-classification": "^4.0.1", - "@smithy/smithy-client": "^4.1.0", + "@smithy/smithy-client": "^4.1.3", "@smithy/types": "^4.1.0", "@smithy/util-middleware": "^4.0.1", "@smithy/util-retry": "^4.0.1", @@ -5914,9 +5893,9 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.1.tgz", - "integrity": "sha512-Fh0E2SOF+S+P1+CsgKyiBInAt3o2b6Qk7YOp2W0Qx2XnfTdfMuSDKUEcnrtpxCzgKJnqXeLUZYqtThaP0VGqtA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.2.tgz", + "integrity": "sha512-Sdr5lOagCn5tt+zKsaW+U2/iwr6bI9p08wOkCp6/eL6iMbgdtc2R5Ety66rf87PeohR0ExI84Txz9GYv5ou3iQ==", "dependencies": { "@smithy/types": "^4.1.0", "tslib": "^2.6.2" @@ -5952,9 +5931,9 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.1.tgz", - "integrity": "sha512-ddQc7tvXiVLC5c3QKraGWde761KSk+mboCheZoWtuqnXh5l0WKyFy3NfDIM/dsKrI9HlLVH/21pi9wWK2gUFFA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.2.tgz", + "integrity": "sha512-X66H9aah9hisLLSnGuzRYba6vckuFtGE+a5DcHLliI/YlqKrGoxhisD5XbX44KyoeRzoNlGr94eTsMVHFAzPOw==", "dependencies": { "@smithy/abort-controller": "^4.0.1", "@smithy/protocol-http": "^5.0.1", @@ -6057,16 +6036,16 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.1.0.tgz", - "integrity": "sha512-NiboZnrsrZY+Cy5hQNbYi+nVNssXVi2I+yL4CIKNIanOhH8kpC5PKQ2jx/MQpwVr21a3XcVoQBArlpRF36OeEQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.1.3.tgz", + "integrity": "sha512-A2Hz85pu8BJJaYFdX8yb1yocqigyqBzn+OVaVgm+Kwi/DkN8vhN2kbDVEfADo6jXf5hPKquMLGA3UINA64UZ7A==", "dependencies": { - "@smithy/core": "^3.1.0", - "@smithy/middleware-endpoint": "^4.0.1", + "@smithy/core": "^3.1.2", + "@smithy/middleware-endpoint": "^4.0.3", "@smithy/middleware-stack": "^4.0.1", "@smithy/protocol-http": "^5.0.1", "@smithy/types": "^4.1.0", - "@smithy/util-stream": "^4.0.1", + "@smithy/util-stream": "^4.0.2", "tslib": "^2.6.2" }, "engines": { @@ -6156,12 +6135,12 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.1.tgz", - "integrity": "sha512-nkQifWzWUHw/D0aLPgyKut+QnJ5X+5E8wBvGfvrYLLZ86xPfVO6MoqfQo/9s4bF3Xscefua1M6KLZtobHMWrBg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.4.tgz", + "integrity": "sha512-Ej1bV5sbrIfH++KnWxjjzFNq9nyP3RIUq2c9Iqq7SmMO/idUR24sqvKH2LUQFTSPy/K7G4sB2m8n7YYlEAfZaw==", "dependencies": { "@smithy/property-provider": "^4.0.1", - "@smithy/smithy-client": "^4.1.0", + "@smithy/smithy-client": "^4.1.3", "@smithy/types": "^4.1.0", "bowser": "^2.11.0", "tslib": "^2.6.2" @@ -6171,15 +6150,15 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.1.tgz", - "integrity": "sha512-LeAx2faB83litC9vaOdwFaldtto2gczUHxfFf8yoRwDU3cwL4/pDm7i0hxsuBCRk5mzHsrVGw+3EVCj32UZMdw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.4.tgz", + "integrity": "sha512-HE1I7gxa6yP7ZgXPCFfZSDmVmMtY7SHqzFF55gM/GPegzZKaQWZZ+nYn9C2Cc3JltCMyWe63VPR3tSFDEvuGjw==", "dependencies": { "@smithy/config-resolver": "^4.0.1", "@smithy/credential-provider-imds": "^4.0.1", "@smithy/node-config-provider": "^4.0.1", "@smithy/property-provider": "^4.0.1", - "@smithy/smithy-client": "^4.1.0", + "@smithy/smithy-client": "^4.1.3", "@smithy/types": "^4.1.0", "tslib": "^2.6.2" }, @@ -6237,12 +6216,12 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.0.1.tgz", - "integrity": "sha512-Js16gOgU6Qht6qTPfuJgb+1YD4AEO+5Y1UPGWKSp3BNo8ONl/qhXSYDhFKJtwybRJynlCqvP5IeiaBsUmkSPTQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.0.2.tgz", + "integrity": "sha512-0eZ4G5fRzIoewtHtwaYyl8g2C+osYOT4KClXgfdNEDAgkbe2TYPqcnw4GAWabqkZCax2ihRGPe9LZnsPdIUIHA==", "dependencies": { "@smithy/fetch-http-handler": "^5.0.1", - "@smithy/node-http-handler": "^4.0.1", + "@smithy/node-http-handler": "^4.0.2", "@smithy/types": "^4.1.0", "@smithy/util-base64": "^4.0.0", "@smithy/util-buffer-from": "^4.0.0", @@ -6474,12 +6453,12 @@ } }, "node_modules/@trigger.dev/build": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/@trigger.dev/build/-/build-3.3.11.tgz", - "integrity": "sha512-m6z8BJCL30Eve/GzqdqjJ/BslZ8hPc0Dt1gABvCyr+MeJ53D25HuScKXlZLvH8LkPAhDLlOoR6FPcaA3OD6j5w==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@trigger.dev/build/-/build-3.3.12.tgz", + "integrity": "sha512-nMj153C9Ly/5PAVuSBj/fsQ7HNF2V2UA9bGSarOmDC3xsjdq2a5/6woUgQ8F8XEU22b3n7mqrJb1Vk0mMBtm9A==", "dev": true, "dependencies": { - "@trigger.dev/core": "3.3.11", + "@trigger.dev/core": "3.3.12", "pkg-types": "^1.1.3", "tinyglobby": "^0.2.2", "tsconfck": "3.1.3" @@ -6489,9 +6468,9 @@ } }, "node_modules/@trigger.dev/core": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/@trigger.dev/core/-/core-3.3.11.tgz", - "integrity": "sha512-UpzFwiF5X4SVAmWXQzkw9Wj7tnaoDeyFwfa7heApoFJI3Ox3pOum3Xs9nWiro56KDp3tYWh7OAX6uH8I+T728g==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@trigger.dev/core/-/core-3.3.12.tgz", + "integrity": "sha512-cdOb5Qu59HGgS6mC+FcG/zMWarqoMlk7dCXGTySiC725IRfEbIzmyZ5vpoFALMqXNZeYsxGcZvGaDug6RgfcZA==", "dependencies": { "@electric-sql/client": "1.0.0-beta.1", "@google-cloud/precise-date": "^4.0.0", @@ -6588,9 +6567,9 @@ } }, "node_modules/@trigger.dev/nextjs": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/@trigger.dev/nextjs/-/nextjs-3.3.11.tgz", - "integrity": "sha512-2vEpB9EpCJk4ciGbt4jzB84ETC7gKrjLdkZGMrwWc2jcj3cwNzbn5UyYnJcuIJBYUKNw+nWZS/S/UCLIOg2boQ==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@trigger.dev/nextjs/-/nextjs-3.3.12.tgz", + "integrity": "sha512-CMqaOBJ+hwwUzyNeTj4Wc9wyRtQ8RKMNeumspsrbUvPxWc7XJ0Gaw/xWZ+R9odbIl+BHahSvyZEUR6OEWlJmIA==", "dependencies": { "debug": "^4.3.4" }, @@ -6603,9 +6582,9 @@ } }, "node_modules/@trigger.dev/react": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/@trigger.dev/react/-/react-3.3.11.tgz", - "integrity": "sha512-O3W17Dn477SAcViOJqI7U9ZK6lnpC21YZN9IskKEYkIQJk/rBUV9SlxhMQd8e77lZTPW0h1VYNQkc/+cHssPrA==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@trigger.dev/react/-/react-3.3.12.tgz", + "integrity": "sha512-f3Z6Ez2TNB1VN48aeb2spbOStqO0IBlPbCNlY22xgxDKOX7dbD6GR1R4JAHPKWu37hnf2zklHrd3wjTf8yGoyA==", "dependencies": { "@tanstack/react-query": "5.0.0-beta.2", "@trigger.dev/core": "~2.3.0 || ^3.0.0", @@ -6616,6 +6595,22 @@ "react": "^16.8.0 || ^17.0.0 || ^18" } }, + "node_modules/@trigger.dev/react-hooks": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@trigger.dev/react-hooks/-/react-hooks-3.3.12.tgz", + "integrity": "sha512-ObLbJt/c7Y19Tv3W/CBdW3CxpfSr0xYjdat4sMBVnrmL8uSkbuBTjr3j/QIEhrTSeGrnbZoyLfLbaR+3b/h9rQ==", + "dependencies": { + "@trigger.dev/core": "^3.3.12", + "swr": "^2.2.5" + }, + "engines": { + "node": ">=18.20.0" + }, + "peerDependencies": { + "react": "^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc" + } + }, "node_modules/@trigger.dev/react/node_modules/zod": { "version": "3.22.3", "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.3.tgz", @@ -6625,14 +6620,14 @@ } }, "node_modules/@trigger.dev/sdk": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/@trigger.dev/sdk/-/sdk-3.3.11.tgz", - "integrity": "sha512-gnFh6NHwXjavrF0tD34Tf98FB1Sn6fCEN6LvVN8hajcLGwGypWKa++Tytk4JYOtoDx1U+Omaq7ldULxLCFTjYQ==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/@trigger.dev/sdk/-/sdk-3.3.12.tgz", + "integrity": "sha512-HcDgdozocrOi8+X0/LQEVrawSBOVfAywFvLXUBULIWrltvuIwsJy6e5rX105SKBsvwq/eBbNvi9u5t6jiyEA+Q==", "dependencies": { "@opentelemetry/api": "1.9.0", "@opentelemetry/api-logs": "0.52.1", "@opentelemetry/semantic-conventions": "1.25.1", - "@trigger.dev/core": "3.3.11", + "@trigger.dev/core": "3.3.12", "chalk": "^5.2.0", "cronstrue": "^2.21.0", "debug": "^4.3.4", @@ -6682,9 +6677,9 @@ } }, "node_modules/@tus/s3-store": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@tus/s3-store/-/s3-store-1.7.0.tgz", - "integrity": "sha512-pEM9r0QoTlEjiYZaYGP5auHQ2qfGTyMKyWYmtLshcKe11saA+kLp8Z8QDIq8tT7CaX0W41astcprgXupvFohdQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@tus/s3-store/-/s3-store-1.8.0.tgz", + "integrity": "sha512-nyY5Tay/MumPEhVkExFaPJ4linO14vahdycwKBRNkyNKusfX4M1mULTWIbQhECFDWjP6ezUMgPvY/AfrLskxOA==", "dependencies": { "@aws-sdk/client-s3": "^3.717.0", "@shopify/semaphore": "^3.1.0", @@ -6827,11 +6822,12 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" }, "node_modules/@types/jsonwebtoken": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", - "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.8.tgz", + "integrity": "sha512-7fx54m60nLFUVYlxAB1xpe9CBWX2vSrk50Y6ogRJ1v5xxtba7qXTg5BgYDN5dq+yuQQ9HaVlHJyAAt1/mxryFg==", "dev": true, "dependencies": { + "@types/ms": "*", "@types/node": "*" } }, @@ -6848,9 +6844,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.17.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.14.tgz", - "integrity": "sha512-w6qdYetNL5KRBiSClK/KWai+2IMEJuAj+EujKCumalFOwXtvOXaEan9AuwcRID2IcOIAWSIfR495hBtgKlx2zg==", + "version": "20.17.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.17.tgz", + "integrity": "sha512-/WndGO4kIfMicEQLTi/mDANUu/iVUhT7KboZPdEqqHQ4aTS+3qT3U5gIqWDFV+XouorjfgGqvKILJeHhuQgFYg==", "dependencies": { "undici-types": "~6.19.2" } @@ -7195,9 +7191,9 @@ "integrity": "sha512-NRIBwfcS0bUoUbRWlNGetqjvLSwgYH/BqKqDN7vK1g32p7dN96k0712COgaz6VFizAm9b0g6IG6hR6+hc0KCPg==" }, "node_modules/@vercel/functions": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vercel/functions/-/functions-1.5.2.tgz", - "integrity": "sha512-9XuynFoM/J1X+LSahgjhuAZCbZ96vm9mpXapCkSS1MX890U7zLh7n2RW/2KLNuxsXt8u8h2dOCw+Njtg+7pXgQ==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vercel/functions/-/functions-1.6.0.tgz", + "integrity": "sha512-R6FKQrYT5MZs5IE1SqeCJWxMuBdHawFcCZboKKw8p7s+6/mcd55Gx6tWmyKnQTyrSEA04NH73Tc9CbqpEle8RA==", "engines": { "node": ">= 16" }, @@ -10246,9 +10242,9 @@ } }, "node_modules/framer-motion": { - "version": "11.18.1", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.1.tgz", - "integrity": "sha512-EQa8c9lWVOm4zlz14MsBJWr8woq87HsNmsBnQNvcS0hs8uzw6HtGAxZyIU7EGTVpHD1C1n01ufxRyarXcNzpPg==", + "version": "11.18.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.2.tgz", + "integrity": "sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w==", "dependencies": { "motion-dom": "^11.18.1", "motion-utils": "^11.18.1", @@ -12010,9 +12006,9 @@ } }, "node_modules/lucide-react": { - "version": "0.473.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.473.0.tgz", - "integrity": "sha512-KW6u5AKeIjkvrxXZ6WuCu9zHE/gEYSXCay+Gre2ZoInD0Je/e3RBtP4OHpJVJ40nDklSvjVKjgH7VU8/e2dzRw==", + "version": "0.474.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.474.0.tgz", + "integrity": "sha512-CmghgHkh0OJNmxGKWc0qfPJCYHASPMVSyGY8fj3xgk4v84ItqDg64JNKFZn5hC6E0vHi6gxnbCgwhyVB09wQtA==", "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } @@ -12302,11 +12298,11 @@ "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" }, "node_modules/motion": { - "version": "11.18.1", - "resolved": "https://registry.npmjs.org/motion/-/motion-11.18.1.tgz", - "integrity": "sha512-Tqbn7UMVp1V6JH5gbLFJAbP1//gdHNwEciQO22UHgFH1mBScq6gHrq8dlyBGbOlRF8iVSX8k0UV8tkkAVbwpKw==", + "version": "11.18.2", + "resolved": "https://registry.npmjs.org/motion/-/motion-11.18.2.tgz", + "integrity": "sha512-JLjvFDuFr42NFtcVoMAyC2sEjnpA8xpy6qWPyzQvCloznAyQ8FIXioxWfHiLtgYhoVpfUqSWpn1h9++skj9+Wg==", "dependencies": { - "framer-motion": "^11.18.1", + "framer-motion": "^11.18.2", "tslib": "^2.4.0" }, "peerDependencies": { @@ -12644,9 +12640,9 @@ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" }, "node_modules/nodemailer": { - "version": "6.9.16", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.16.tgz", - "integrity": "sha512-psAuZdTIRN08HKVd/E8ObdV6NO7NTBY3KsC30F7M4H1OnmLCUNaS56FpYxyb26zWLSyYF9Ozch9KYHhHegsiOQ==", + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.10.0.tgz", + "integrity": "sha512-SQ3wZCExjeSatLE/HBaXS5vqUOQk6GtBdIIKxiFdmm01mOQZX/POJkO3SUX1wDiYcwUOJwT23scFSC9fY2H8IA==", "engines": { "node": ">=6.0.0" } @@ -12967,9 +12963,9 @@ } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.71", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.71.tgz", - "integrity": "sha512-evXpcgtZm8FY4jqBSN8+DmOTcVkkvTmAayeo4Wf3m1xAruyVGzGuDh/Fb/WWX2yLItUiho42ozyJjB0dw//Tkw==", + "version": "18.19.75", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.75.tgz", + "integrity": "sha512-UIksWtThob6ZVSyxcOqCLOUNg/dyO1Qvx4McgeuhrEtHTLFTf7BBhEazaE4K806FGTPtzd/2sE90qn4fVr7cyw==", "dependencies": { "undici-types": "~5.26.4" } @@ -13552,9 +13548,9 @@ } }, "node_modules/posthog-js": { - "version": "1.207.0", - "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.207.0.tgz", - "integrity": "sha512-Sx+xamhg1/iKGAtUNh3uAUtAAza4j/yBhxcfUxfqR++WrZdw0V6nmh7LSfVNl7+QVl2qmiPSoZA7z+5ojaWDDQ==", + "version": "1.215.2", + "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.215.2.tgz", + "integrity": "sha512-CDK+R8CFW8GopisuGr41VHSmzFzsn0BI+VKf/WVTfE27RfVhUIa1BPxLYOMMLO70zmFiCnSqmnc0NthgcyNhPg==", "dependencies": { "core-js": "^3.38.1", "fflate": "^0.4.8", @@ -13605,9 +13601,9 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.10.tgz", - "integrity": "sha512-ndj2WLDaMzACnr1gAYZiZZLs5ZdOeBYgOsbBmHj3nvW/6q8h8PymsXiEnKvj/9qgCCAoHyvLOisoQdIcsDvIgw==", + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", + "integrity": "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==", "dev": true, "engines": { "node": ">=14.21.3" @@ -14357,9 +14353,9 @@ } }, "node_modules/react-intersection-observer": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.15.0.tgz", - "integrity": "sha512-qul9TzGgZtHIHAsLOXnRfMWNYCrqjU87HMKhRjwC8l6XSxz2Bo0xmpq5pklaXGj+brx2gSMe8lp1K17mMP2Q8w==", + "version": "9.15.1", + "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.15.1.tgz", + "integrity": "sha512-vGrqYEVWXfH+AGu241uzfUpNK4HAdhCkSAyFdkMb9VWWXs6mxzBLpWCxEy9YcnDNY2g9eO6z7qUtTBdA9hc8pA==", "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -14645,9 +14641,9 @@ } }, "node_modules/react-zoom-pan-pinch": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.6.1.tgz", - "integrity": "sha512-SdPqdk7QDSV7u/WulkFOi+cnza8rEZ0XX4ZpeH7vx3UZEg7DoyuAy3MCmm+BWv/idPQL2Oe73VoC0EhfCN+sZQ==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-3.7.0.tgz", + "integrity": "sha512-UmReVZ0TxlKzxSbYiAj+LeGRW8s8LraAFTXRAxzMYnNRgGPsxCudwZKVkjvGmjtx7SW/hZamt69NUmGf4xrkXA==", "engines": { "node": ">=8", "npm": ">=5" @@ -14841,9 +14837,9 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resend": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/resend/-/resend-4.1.1.tgz", - "integrity": "sha512-nkcRpIOgPb3sFPA/GyOTr6Vmlrkhwsu+XlC20kKbbebOfw0WbAjbBbJ1m4AcjKOkPf57O4DH9Bnbxi9i18JYng==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/resend/-/resend-4.1.2.tgz", + "integrity": "sha512-km0btrAj/BqIaRlS+SoLNMaCAUUWEgcEvZpycfVvoXEwAHCxU+vp/ikxPgKRkyKyiR2iDcdUq5uIBTDK9oSSSQ==", "dependencies": { "@react-email/render": "1.0.1" }, @@ -15377,9 +15373,9 @@ } }, "node_modules/sonner": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.2.tgz", - "integrity": "sha512-zMbseqjrOzQD1a93lxahm+qMGxWovdMxBlkTbbnZdNqVLt4j+amF9PQxUCL32WfztOFt9t9ADYkejAL3jF9iNA==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.4.tgz", + "integrity": "sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==", "peerDependencies": { "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" @@ -16111,9 +16107,9 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, "node_modules/ts-pattern": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.6.0.tgz", - "integrity": "sha512-SL8u60X5+LoEy9tmQHWCdPc2hhb2pKI6I1tU5Jue3v8+iRqZdcT3mWPwKKJy1fMfky6uha82c8ByHAE8PMhKHw==" + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.6.2.tgz", + "integrity": "sha512-d4IxJUXROL5NCa3amvMg6VQW2HVtZYmUTPfvVtO7zJWGYLJ+mry9v2OmYm+z67aniQoQ8/yFNadiEwtNS9qQiw==" }, "node_modules/tsafe": { "version": "1.7.5", @@ -16168,9 +16164,9 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/tus-js-client": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/tus-js-client/-/tus-js-client-4.2.3.tgz", - "integrity": "sha512-UkQUCeDWKh5AwArcasIJWcL5EP66XPypKQtsdPu82wNnTea8eAUHdpDx3DcfZgDERAiCII895zMYkXri4M1wzw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/tus-js-client/-/tus-js-client-4.3.1.tgz", + "integrity": "sha512-ZLeYmjrkaU1fUsKbIi8JML52uAocjEZtBx4DKjRrqzrZa0O4MYwT6db+oqePlspV+FxXJAyFBc/L5gwUi2OFsg==", "dependencies": { "buffer-from": "^1.1.2", "combine-errors": "^3.0.3", diff --git a/package.json b/package.json index 1c07396a4..0712969db 100644 --- a/package.json +++ b/package.json @@ -21,11 +21,11 @@ "dev:prisma": "npx prisma generate && npx prisma migrate deploy" }, "dependencies": { - "@aws-sdk/client-lambda": "^3.731.1", - "@aws-sdk/client-s3": "^3.731.1", - "@aws-sdk/cloudfront-signer": "^3.723.0", - "@aws-sdk/lib-storage": "^3.731.1", - "@aws-sdk/s3-request-presigner": "^3.731.1", + "@aws-sdk/client-lambda": "^3.741.0", + "@aws-sdk/client-s3": "^3.741.0", + "@aws-sdk/cloudfront-signer": "^3.734.0", + "@aws-sdk/lib-storage": "^3.741.0", + "@aws-sdk/s3-request-presigner": "^3.741.0", "@chronark/zod-bird": "^0.3.10", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", @@ -40,22 +40,22 @@ "@radix-ui/react-avatar": "^1.1.2", "@radix-ui/react-checkbox": "^1.1.3", "@radix-ui/react-collapsible": "^1.1.2", - "@radix-ui/react-dialog": "^1.1.4", - "@radix-ui/react-dropdown-menu": "^2.1.4", + "@radix-ui/react-dialog": "^1.1.5", + "@radix-ui/react-dropdown-menu": "^2.1.5", "@radix-ui/react-label": "^2.1.1", - "@radix-ui/react-popover": "^1.1.4", + "@radix-ui/react-popover": "^1.1.5", "@radix-ui/react-portal": "^1.1.3", "@radix-ui/react-progress": "^1.1.1", "@radix-ui/react-radio-group": "^1.2.2", "@radix-ui/react-scroll-area": "^1.2.2", - "@radix-ui/react-select": "^2.1.4", + "@radix-ui/react-select": "^2.1.5", "@radix-ui/react-separator": "^1.1.1", "@radix-ui/react-slot": "^1.1.1", "@radix-ui/react-switch": "^1.1.2", "@radix-ui/react-tabs": "^1.1.2", "@radix-ui/react-toggle": "^1.1.1", "@radix-ui/react-toggle-group": "^1.1.1", - "@radix-ui/react-tooltip": "^1.1.6", + "@radix-ui/react-tooltip": "^1.1.7", "@react-email/components": "^0.0.32", "@sindresorhus/slugify": "^2.2.1", "@stripe/stripe-js": "^4.10.0", @@ -63,10 +63,11 @@ "@tanstack/react-table": "^8.20.6", "@teamhanko/passkeys-next-auth-provider": "^0.2.7", "@tremor/react": "^3.18.7", - "@trigger.dev/nextjs": "^3.3.11", - "@trigger.dev/react": "^3.3.11", - "@trigger.dev/sdk": "^3.3.11", - "@tus/s3-store": "^1.7.0", + "@trigger.dev/nextjs": "^3.3.12", + "@trigger.dev/react": "^3.3.12", + "@trigger.dev/react-hooks": "^3.3.12", + "@trigger.dev/sdk": "^3.3.12", + "@tus/s3-store": "^1.8.0", "@tus/server": "^1.10.1", "@tus/utils": "^0.5.1", "@upstash/qstash": "^2.7.20", @@ -74,7 +75,7 @@ "@upstash/redis": "^1.34.3", "@vercel/blob": "^0.23.4", "@vercel/edge-config": "^1.4.0", - "@vercel/functions": "^1.5.2", + "@vercel/functions": "^1.6.0", "ai": "2.2.37", "autoprefixer": "^10.4.20", "base-x": "^5.0.0", @@ -90,9 +91,9 @@ "input-otp": "^1.4.2", "js-cookie": "^3.0.5", "jsonwebtoken": "^9.0.2", - "lucide-react": "^0.473.0", + "lucide-react": "^0.474.0", "mime-types": "^2.1.35", - "motion": "^11.18.1", + "motion": "^11.18.2", "ms": "^2.1.3", "mupdf": "^0.3.0", "nanoid": "^5.0.9", @@ -100,14 +101,14 @@ "next-auth": "^4.24.11", "next-plausible": "^3.12.4", "next-themes": "^0.4.4", - "nodemailer": "^6.9.16", + "nodemailer": "^6.10.0", "notion-client": "^7.1.6", "notion-utils": "^7.1.6", "nuqs": "^1.20.0", "openai": "4.20.1", "pdf-lib": "^1.17.1", "postcss": "^8.5.1", - "posthog-js": "^1.207.0", + "posthog-js": "^1.215.2", "react": "^18.3.1", "react-colorful": "^5.6.1", "react-dom": "^18.3.1", @@ -115,23 +116,23 @@ "react-dropzone": "^14.3.5", "react-email": "^3.0.6", "react-hotkeys-hook": "^4.6.1", - "react-intersection-observer": "^9.15.0", + "react-intersection-observer": "^9.15.1", "react-notion-x": "^7.2.6", "react-pdf": "^8.0.2", "react-phone-number-input": "^3.4.11", "react-syntax-highlighter": "^15.6.1", "react-textarea-autosize": "^8.5.7", - "react-zoom-pan-pinch": "^3.6.1", - "resend": "^4.1.1", - "sonner": "^1.7.2", + "react-zoom-pan-pinch": "^3.7.0", + "resend": "^4.1.2", + "sonner": "^1.7.4", "stripe": "^16.12.0", "swr": "^2.3.0", "tailwind-merge": "^2.6.0", "tailwind-scrollbar-hide": "^1.3.1", "tailwindcss": "^3.4.17", "tailwindcss-animate": "^1.0.7", - "ts-pattern": "^5.6.0", - "tus-js-client": "^4.2.3", + "ts-pattern": "^5.6.2", + "tus-js-client": "^4.3.1", "ua-parser-js": "^1.0.40", "use-debounce": "^10.0.4", "vaul": "^1.1.2", @@ -140,7 +141,7 @@ }, "devDependencies": { "@tailwindcss/forms": "^0.5.10", - "@trigger.dev/build": "^3.3.11", + "@trigger.dev/build": "^3.3.12", "@trivago/prettier-plugin-sort-imports": "^4.3.0", "@types/bcryptjs": "^2.4.6", "@types/fluent-ffmpeg": "^2.1.27", @@ -154,7 +155,7 @@ "@types/react-syntax-highlighter": "^15.5.13", "@types/ua-parser-js": "^0.7.39", "prettier": "^3.4.2", - "prettier-plugin-tailwindcss": "^0.6.10", + "prettier-plugin-tailwindcss": "^0.6.11", "prisma": "^5.22.0", "typescript": "^5" }, diff --git a/pages/api/progress-token.ts b/pages/api/progress-token.ts new file mode 100644 index 000000000..6ae71bf51 --- /dev/null +++ b/pages/api/progress-token.ts @@ -0,0 +1,28 @@ +import { NextApiRequest, NextApiResponse } from "next"; + +import { generateTriggerPublicAccessToken } from "@/lib/utils/generate-trigger-auth-token"; + +export default async function handle( + req: NextApiRequest, + res: NextApiResponse, +) { + if (req.method !== "GET") { + return res.status(405).json({ error: "Method not allowed" }); + } + + const { documentVersionId } = req.query; + + if (!documentVersionId || typeof documentVersionId !== "string") { + return res.status(400).json({ error: "Document version ID is required" }); + } + + try { + const publicAccessToken = await generateTriggerPublicAccessToken( + `version:${documentVersionId}`, + ); + return res.status(200).json({ publicAccessToken }); + } catch (error) { + console.error("Error generating token:", error); + return res.status(500).json({ error: "Failed to generate token" }); + } +} diff --git a/pages/api/teams/[teamId]/datarooms/[id]/documents/index.ts b/pages/api/teams/[teamId]/datarooms/[id]/documents/index.ts index 786cbd627..fe9941b03 100644 --- a/pages/api/teams/[teamId]/datarooms/[id]/documents/index.ts +++ b/pages/api/teams/[teamId]/datarooms/[id]/documents/index.ts @@ -71,6 +71,9 @@ export default async function handle( id: true, name: true, type: true, + versions: { + select: { id: true, hasPages: true }, + }, _count: { select: { views: { where: { dataroomId } }, diff --git a/pages/api/teams/[teamId]/datarooms/[id]/folders/documents/[...name].ts b/pages/api/teams/[teamId]/datarooms/[id]/folders/documents/[...name].ts index 85333504c..fdac3282e 100644 --- a/pages/api/teams/[teamId]/datarooms/[id]/folders/documents/[...name].ts +++ b/pages/api/teams/[teamId]/datarooms/[id]/folders/documents/[...name].ts @@ -86,6 +86,9 @@ export default async function handle( id: true, name: true, type: true, + versions: { + select: { id: true, hasPages: true }, + }, _count: { select: { views: { where: { dataroomId } }, diff --git a/pages/api/teams/[teamId]/documents/[id]/versions/index.ts b/pages/api/teams/[teamId]/documents/[id]/versions/index.ts index dac96d002..dbe44836c 100644 --- a/pages/api/teams/[teamId]/documents/[id]/versions/index.ts +++ b/pages/api/teams/[teamId]/documents/[id]/versions/index.ts @@ -9,6 +9,7 @@ import { copyFileToBucketServer } from "@/lib/files/copy-file-to-bucket-server"; import prisma from "@/lib/prisma"; import { getTeamWithUsersAndDocument } from "@/lib/team/helper"; import { convertFilesToPdfTask } from "@/lib/trigger/convert-files"; +import { convertPdfToImage } from "@/lib/trigger/pdf-to-image"; import { CustomUser } from "@/lib/types"; import { log } from "@/lib/utils"; @@ -111,22 +112,49 @@ export default async function handle( }, { idempotencyKey: `${teamId}-${version.id}`, - tags: [`team_${teamId}`, `document_${documentId}`], + tags: [ + `team_${teamId}`, + `document_${documentId}`, + `version:${version.id}`, + ], }, ); } // trigger document uploaded event to trigger convert-pdf-to-image job if (type === "pdf") { - await client.sendEvent({ - id: version.id, - name: "document.uploaded", - payload: { - documentVersionId: version.id, - versionNumber: version.versionNumber, - documentId: documentId, - teamId: teamId, - }, - }); + if ( + teamId === "cluqtfmcr0001zkza4xcgqatw" || + teamId === "clup33by90000oewh4rfvp2eg" // local + ) { + await convertPdfToImage.trigger( + { + documentId: documentId, + documentVersionId: version.id, + teamId, + docId: version.file.split("/")[1], // Extract doc_xxxx from teamId/doc_xxxx/filename + versionNumber: version.versionNumber, + }, + { + idempotencyKey: `${teamId}-${version.id}`, + tags: [ + `team_${teamId}`, + `document_${documentId}`, + `version:${version.id}`, + ], + }, + ); + } else { + await client.sendEvent({ + id: version.id, + name: "document.uploaded", + payload: { + documentVersionId: version.id, + versionNumber: version.versionNumber, + documentId: documentId, + teamId: teamId, + }, + }); + } } if (type === "sheet" && document?.advancedExcelEnabled) { diff --git a/pages/api/teams/[teamId]/documents/index.ts b/pages/api/teams/[teamId]/documents/index.ts index a211fc97f..491391bd8 100644 --- a/pages/api/teams/[teamId]/documents/index.ts +++ b/pages/api/teams/[teamId]/documents/index.ts @@ -12,6 +12,7 @@ import notion from "@/lib/notion"; import prisma from "@/lib/prisma"; import { getTeamWithUsersAndDocument } from "@/lib/team/helper"; import { + ConvertPayload, convertCadToPdfTask, convertFilesToPdfTask, } from "@/lib/trigger/convert-files"; @@ -276,7 +277,11 @@ export default async function handle( }, { idempotencyKey: `${teamId}-${document.versions[0].id}`, - tags: [`team_${teamId}`, `document_${document.id}`], + tags: [ + `team_${teamId}`, + `document_${document.id}`, + `version:${document.versions[0].id}`, + ], }, ); } @@ -292,7 +297,11 @@ export default async function handle( }, { idempotencyKey: `${teamId}-${document.versions[0].id}`, - tags: [`team_${teamId}`, `document_${document.id}`], + tags: [ + `team_${teamId}`, + `document_${document.id}`, + `version:${document.versions[0].id}`, + ], }, ); } @@ -312,7 +321,11 @@ export default async function handle( }, { idempotencyKey: `${teamId}-${document.versions[0].id}`, - tags: [`team_${teamId}`, `document_${document.id}`], + tags: [ + `team_${teamId}`, + `document_${document.id}`, + `version:${document.versions[0].id}`, + ], }, ); } @@ -320,9 +333,13 @@ export default async function handle( // skip triggering convert-pdf-to-image job for "notion" / "excel" documents if (type === "pdf") { // trigger document uploaded event to trigger convert-pdf-to-image job - if (teamId === "cluqtfmcr0001zkza4xcgqatw") { + if ( + teamId === "cluqtfmcr0001zkza4xcgqatw" || + teamId === "clup33by90000oewh4rfvp2eg" // local + ) { await convertPdfToImage.trigger( { + documentId: document.id, documentVersionId: document.versions[0].id, teamId, docId: fileUrl.split("/")[1], @@ -332,7 +349,7 @@ export default async function handle( tags: [ `team_${teamId}`, `document_${document.id}`, - `version_${document.versions[0].id}`, + `version:${document.versions[0].id}`, ], }, ); diff --git a/pages/documents/[id]/index.tsx b/pages/documents/[id]/index.tsx index 53fa2b37e..ae7d04249 100644 --- a/pages/documents/[id]/index.tsx +++ b/pages/documents/[id]/index.tsx @@ -20,7 +20,12 @@ import { useDocument, useDocumentLinks } from "@/lib/swr/use-document"; import useLimits from "@/lib/swr/use-limits"; export default function DocumentPage() { - const { document: prismaDocument, primaryVersion, error } = useDocument(); + const { + document: prismaDocument, + primaryVersion, + error, + mutate: mutateDocument, + } = useDocument(); const { links } = useDocumentLinks(); const teamInfo = useTeam(); @@ -92,6 +97,7 @@ export default function DocumentPage() { links={links} targetType={"DOCUMENT"} primaryVersion={primaryVersion} + mutateDocument={mutateDocument} /> {/* Visitors */} diff --git a/trigger.config.ts b/trigger.config.ts index db2f83c33..4448aa7e4 100644 --- a/trigger.config.ts +++ b/trigger.config.ts @@ -22,7 +22,64 @@ export default defineConfig({ schema: "prisma/schema.prisma", }), ffmpeg(), - aptGet({ packages: ["mupdf-tools", "curl"] }), + // aptGet({ packages: ["curl"] }), + // { + // name: "mupdf", + // onBuildComplete: async (context, manifest) => { + // context.addLayer({ + // id: "mupdf-tools", + // image: { + // instructions: [ + // // Install build dependencies + // `RUN apt-get update && apt-get install -y \ + // build-essential \ + // curl \ + // xz-utils \ + // libc-dev \ + // libstdc++-11-dev \ + // libgcc-11-dev \ + // netbase \ + // libudev-dev \ + // ca-certificates`, + + // // Clone and build MuPDF from source + // `RUN curl -fsS https://pkgx.sh | sh && \ + // MUPDF_PATH=$(pkgx +mupdf.com@1.25.2 --json | jq -r '.env.PATH' | cut -d: -f1) && \ + // ln -sf $MUPDF_PATH/mutool /usr/local/bin/mutool && \ + // ln -sf $MUPDF_PATH/mudraw /usr/local/bin/mudraw`, + // ], + // }, + // }); + // }, + // }, + { + name: "nix", + onBuildComplete: async (context, manifest) => { + context.addLayer({ + id: "mupdf-tools", + image: { + instructions: [ + // Install prerequisites + `RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get install -y curl xz-utils ca-certificates`, + + // Install Nix and mupdf in a new shell session + `RUN curl -L https://nixos.org/nix/install | sh -s -- --daemon`, + `SHELL ["/bin/bash", "-l", "-c"]`, + `RUN . /root/.nix-profile/etc/profile.d/nix.sh && \ + nix-channel --update && \ + nix-env -iA nixpkgs.mupdf && \ + MUPDF_PATH=$(readlink -f $(which mutool)) && \ + ln -sf $MUPDF_PATH /usr/local/bin/mutool && \ + chmod 755 /usr/local/bin/mutool && \ + chown root:root /usr/local/bin/mutool && \ + echo "Verifying mupdf installation..." && \ + ls -l /usr/local/bin/mutool && \ + mutool -v`, + ], + }, + }); + }, + }, ], }, });