mirror of
https://github.com/formbricks/formbricks.git
synced 2025-12-23 06:30:51 -06:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa7f52a72b | ||
|
|
5306aecec4 | ||
|
|
cdc332d44e | ||
|
|
2e58f337b0 | ||
|
|
1390b071ea | ||
|
|
d5a4a4736b | ||
|
|
57725783e8 | ||
|
|
8f5527ac34 | ||
|
|
3632c9ec94 | ||
|
|
1acf334ad3 | ||
|
|
a526bb08be | ||
|
|
787cf2d56f | ||
|
|
12b7dbd567 | ||
|
|
423466d30a |
@@ -138,7 +138,7 @@ export const EditLogo = ({ project, environmentId, isReadOnly }: EditLogoProps)
|
|||||||
) : (
|
) : (
|
||||||
<FileInput
|
<FileInput
|
||||||
id="logo-input"
|
id="logo-input"
|
||||||
allowedFileExtensions={["png", "jpeg", "jpg", "webp"]}
|
allowedFileExtensions={["png", "jpeg", "jpg", "webp", "heic"]}
|
||||||
environmentId={environmentId}
|
environmentId={environmentId}
|
||||||
onFileUpload={(files: string[]) => {
|
onFileUpload={(files: string[]) => {
|
||||||
setLogoUrl(files[0]);
|
setLogoUrl(files[0]);
|
||||||
@@ -151,7 +151,7 @@ export const EditLogo = ({ project, environmentId, isReadOnly }: EditLogoProps)
|
|||||||
<Input
|
<Input
|
||||||
ref={fileInputRef}
|
ref={fileInputRef}
|
||||||
type="file"
|
type="file"
|
||||||
accept="image/jpeg, image/png, image/webp"
|
accept="image/jpeg, image/png, image/webp, image/heic"
|
||||||
className="hidden"
|
className="hidden"
|
||||||
disabled={isReadOnly}
|
disabled={isReadOnly}
|
||||||
onChange={handleFileChange}
|
onChange={handleFileChange}
|
||||||
|
|||||||
@@ -308,7 +308,7 @@ export const QuestionFormInput = ({
|
|||||||
{showImageUploader && id === "headline" && (
|
{showImageUploader && id === "headline" && (
|
||||||
<FileInput
|
<FileInput
|
||||||
id="question-image"
|
id="question-image"
|
||||||
allowedFileExtensions={["png", "jpeg", "jpg", "webp"]}
|
allowedFileExtensions={["png", "jpeg", "jpg", "webp", "heic"]}
|
||||||
environmentId={localSurvey.environmentId}
|
environmentId={localSurvey.environmentId}
|
||||||
onFileUpload={(url: string[] | undefined, fileType: "image" | "video") => {
|
onFileUpload={(url: string[] | undefined, fileType: "image" | "video") => {
|
||||||
if (url) {
|
if (url) {
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ export const EditWelcomeCard = ({
|
|||||||
<div className="mt-3 flex w-full items-center justify-center">
|
<div className="mt-3 flex w-full items-center justify-center">
|
||||||
<FileInput
|
<FileInput
|
||||||
id="welcome-card-image"
|
id="welcome-card-image"
|
||||||
allowedFileExtensions={["png", "jpeg", "jpg", "webp"]}
|
allowedFileExtensions={["png", "jpeg", "jpg", "webp", "heic"]}
|
||||||
environmentId={environmentId}
|
environmentId={environmentId}
|
||||||
onFileUpload={(url: string[]) => {
|
onFileUpload={(url: string[]) => {
|
||||||
updateSurvey({ fileUrl: url[0] });
|
updateSurvey({ fileUrl: url[0] });
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export const UploadImageSurveyBg = ({
|
|||||||
<div className="flex w-full items-center justify-center">
|
<div className="flex w-full items-center justify-center">
|
||||||
<FileInput
|
<FileInput
|
||||||
id="survey-bg-file-input"
|
id="survey-bg-file-input"
|
||||||
allowedFileExtensions={["png", "jpeg", "jpg", "webp"]}
|
allowedFileExtensions={["png", "jpeg", "jpg", "webp", "heic"]}
|
||||||
environmentId={environmentId}
|
environmentId={environmentId}
|
||||||
onFileUpload={(url: string[]) => {
|
onFileUpload={(url: string[]) => {
|
||||||
if (url.length > 0) {
|
if (url.length > 0) {
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ export const PictureSelectionForm = ({
|
|||||||
<div className="mt-3 flex w-full items-center justify-center">
|
<div className="mt-3 flex w-full items-center justify-center">
|
||||||
<FileInput
|
<FileInput
|
||||||
id="choices-file-input"
|
id="choices-file-input"
|
||||||
allowedFileExtensions={["png", "jpeg", "jpg", "webp"]}
|
allowedFileExtensions={["png", "jpeg", "jpg", "webp", "heic"]}
|
||||||
environmentId={environmentId}
|
environmentId={environmentId}
|
||||||
onFileUpload={handleFileInputChanges}
|
onFileUpload={handleFileInputChanges}
|
||||||
fileUrl={question?.choices?.map((choice) => choice.imageUrl)}
|
fileUrl={question?.choices?.map((choice) => choice.imageUrl)}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ export const FileInput = ({
|
|||||||
toast.error(t("common.only_one_file_allowed"));
|
toast.error(t("common.only_one_file_allowed"));
|
||||||
}
|
}
|
||||||
|
|
||||||
const allowedFiles = getAllowedFiles(files, allowedFileExtensions, maxSizeInMB);
|
const allowedFiles = await getAllowedFiles(files, allowedFileExtensions, maxSizeInMB);
|
||||||
|
|
||||||
if (allowedFiles.length === 0) {
|
if (allowedFiles.length === 0) {
|
||||||
return;
|
return;
|
||||||
@@ -137,7 +137,7 @@ export const FileInput = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleUploadMore = async (files: File[]) => {
|
const handleUploadMore = async (files: File[]) => {
|
||||||
const allowedFiles = getAllowedFiles(files, allowedFileExtensions, maxSizeInMB);
|
const allowedFiles = await getAllowedFiles(files, allowedFileExtensions, maxSizeInMB);
|
||||||
if (allowedFiles.length === 0) {
|
if (allowedFiles.length === 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
29
apps/web/modules/ui/components/file-input/lib/actions.ts
Normal file
29
apps/web/modules/ui/components/file-input/lib/actions.ts
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
"use server";
|
||||||
|
|
||||||
|
import { authenticatedActionClient } from "@/lib/utils/action-client";
|
||||||
|
import { z } from "zod";
|
||||||
|
|
||||||
|
const ZConvertHeicToJpegInput = z.object({
|
||||||
|
file: z.instanceof(File),
|
||||||
|
});
|
||||||
|
|
||||||
|
export const convertHeicToJpegAction = authenticatedActionClient
|
||||||
|
.schema(ZConvertHeicToJpegInput)
|
||||||
|
.action(async ({ parsedInput }) => {
|
||||||
|
if (!parsedInput.file || !parsedInput.file.name.endsWith(".heic")) return parsedInput.file;
|
||||||
|
|
||||||
|
const convert = (await import("heic-convert")).default;
|
||||||
|
|
||||||
|
const arrayBuffer = await parsedInput.file.arrayBuffer();
|
||||||
|
const nodeBuffer = Buffer.from(arrayBuffer) as unknown as ArrayBufferLike;
|
||||||
|
|
||||||
|
const convertedBuffer = await convert({
|
||||||
|
buffer: nodeBuffer,
|
||||||
|
format: "JPEG",
|
||||||
|
quality: 0.9,
|
||||||
|
});
|
||||||
|
|
||||||
|
return new File([convertedBuffer], parsedInput.file.name.replace(/\.heic$/, ".jpg"), {
|
||||||
|
type: "image/jpeg",
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import { toast } from "react-hot-toast";
|
import { toast } from "react-hot-toast";
|
||||||
import { TAllowedFileExtension } from "@formbricks/types/common";
|
import { TAllowedFileExtension } from "@formbricks/types/common";
|
||||||
|
import { convertHeicToJpegAction } from "./actions";
|
||||||
|
|
||||||
export const uploadFile = async (
|
export const uploadFile = async (
|
||||||
file: File | Blob,
|
file: File | Blob,
|
||||||
@@ -15,8 +16,6 @@ export const uploadFile = async (
|
|||||||
|
|
||||||
const fileBuffer = await file.arrayBuffer();
|
const fileBuffer = await file.arrayBuffer();
|
||||||
|
|
||||||
// check the file size
|
|
||||||
|
|
||||||
const bufferBytes = fileBuffer.byteLength;
|
const bufferBytes = fileBuffer.byteLength;
|
||||||
const bufferKB = bufferBytes / 1024;
|
const bufferKB = bufferBytes / 1024;
|
||||||
|
|
||||||
@@ -74,7 +73,6 @@ export const uploadFile = async (
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the actual file to be uploaded
|
|
||||||
formData.append("file", file);
|
formData.append("file", file);
|
||||||
|
|
||||||
const uploadResponse = await fetch(signedUrl, {
|
const uploadResponse = await fetch(signedUrl, {
|
||||||
@@ -96,34 +94,63 @@ export const uploadFile = async (
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getAllowedFiles = (
|
const isFileSizeExceed = (fileSizeInMB: number, maxSizeInMB?: number) => {
|
||||||
|
if (maxSizeInMB && fileSizeInMB > maxSizeInMB) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getAllowedFiles = async (
|
||||||
files: File[],
|
files: File[],
|
||||||
allowedFileExtensions: string[],
|
allowedFileExtensions: string[],
|
||||||
maxSizeInMB?: number
|
maxSizeInMB?: number
|
||||||
): File[] => {
|
): Promise<File[]> => {
|
||||||
const sizeExceedFiles: string[] = [];
|
const sizeExceedFiles: string[] = [];
|
||||||
const unsupportedExtensionFiles: string[] = [];
|
const unsupportedExtensionFiles: string[] = [];
|
||||||
|
const convertedFiles: File[] = [];
|
||||||
|
|
||||||
const allowedFiles = files.filter((file) => {
|
for (const file of files) {
|
||||||
if (!file || !file.type) {
|
if (!file || !file.type) {
|
||||||
return false;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const extension = file.name.split(".").pop();
|
const extension = file.name.split(".").pop()?.toLowerCase();
|
||||||
const fileSizeInMB = file.size / 1000000; // Kb -> Mb
|
const fileSizeInMB = file.size / 1000000;
|
||||||
|
|
||||||
if (!allowedFileExtensions.includes(extension as TAllowedFileExtension)) {
|
if (!allowedFileExtensions.includes(extension as TAllowedFileExtension)) {
|
||||||
unsupportedExtensionFiles.push(file.name);
|
unsupportedExtensionFiles.push(file.name);
|
||||||
return false; // Exclude file if extension not allowed
|
continue;
|
||||||
} else if (maxSizeInMB && fileSizeInMB > maxSizeInMB) {
|
|
||||||
sizeExceedFiles.push(file.name);
|
|
||||||
return false; // Exclude files larger than the maximum size
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
if (isFileSizeExceed(fileSizeInMB, maxSizeInMB)) {
|
||||||
});
|
sizeExceedFiles.push(file.name);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (extension === "heic") {
|
||||||
|
const convertedFileResponse = await convertHeicToJpegAction({ file });
|
||||||
|
if (!convertedFileResponse?.data) {
|
||||||
|
unsupportedExtensionFiles.push(file.name);
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
const convertedFileSizeInMB = convertedFileResponse.data.size / 1000000;
|
||||||
|
if (isFileSizeExceed(convertedFileSizeInMB, maxSizeInMB)) {
|
||||||
|
sizeExceedFiles.push(file.name);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const convertedFile = new File([convertedFileResponse.data], file.name.replace(/\.heic$/, ".jpg"), {
|
||||||
|
type: "image/jpeg",
|
||||||
|
});
|
||||||
|
convertedFiles.push(convertedFile);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
convertedFiles.push(file);
|
||||||
|
}
|
||||||
|
|
||||||
// Constructing toast messages based on the issues found
|
|
||||||
let toastMessage = "";
|
let toastMessage = "";
|
||||||
if (sizeExceedFiles.length > 0) {
|
if (sizeExceedFiles.length > 0) {
|
||||||
toastMessage += `Files exceeding size limit (${maxSizeInMB} MB): ${sizeExceedFiles.join(", ")}. `;
|
toastMessage += `Files exceeding size limit (${maxSizeInMB} MB): ${sizeExceedFiles.join(", ")}. `;
|
||||||
@@ -134,7 +161,7 @@ export const getAllowedFiles = (
|
|||||||
if (toastMessage) {
|
if (toastMessage) {
|
||||||
toast.error(toastMessage);
|
toast.error(toastMessage);
|
||||||
}
|
}
|
||||||
return allowedFiles;
|
return convertedFiles;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const checkForYoutubePrivacyMode = (url: string): boolean => {
|
export const checkForYoutubePrivacyMode = (url: string): boolean => {
|
||||||
|
|||||||
@@ -83,6 +83,7 @@
|
|||||||
"file-loader": "6.2.0",
|
"file-loader": "6.2.0",
|
||||||
"framer-motion": "11.15.0",
|
"framer-motion": "11.15.0",
|
||||||
"googleapis": "144.0.0",
|
"googleapis": "144.0.0",
|
||||||
|
"heic-convert": "2.1.0",
|
||||||
"https-proxy-agent": "7.0.6",
|
"https-proxy-agent": "7.0.6",
|
||||||
"jiti": "2.4.1",
|
"jiti": "2.4.1",
|
||||||
"jsonwebtoken": "9.0.2",
|
"jsonwebtoken": "9.0.2",
|
||||||
@@ -129,6 +130,7 @@
|
|||||||
"@formbricks/eslint-config": "workspace:*",
|
"@formbricks/eslint-config": "workspace:*",
|
||||||
"@neshca/cache-handler": "1.9.0",
|
"@neshca/cache-handler": "1.9.0",
|
||||||
"@types/bcryptjs": "2.4.6",
|
"@types/bcryptjs": "2.4.6",
|
||||||
|
"@types/heic-convert": "2.1.0",
|
||||||
"@types/lodash": "4.17.13",
|
"@types/lodash": "4.17.13",
|
||||||
"@types/markdown-it": "14.1.2",
|
"@types/markdown-it": "14.1.2",
|
||||||
"@types/nodemailer": "6.4.17",
|
"@types/nodemailer": "6.4.17",
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ export const ZPlacement = z.enum(["bottomLeft", "bottomRight", "topLeft", "topRi
|
|||||||
export type TPlacement = z.infer<typeof ZPlacement>;
|
export type TPlacement = z.infer<typeof ZPlacement>;
|
||||||
|
|
||||||
export const ZAllowedFileExtension = z.enum([
|
export const ZAllowedFileExtension = z.enum([
|
||||||
|
"heic",
|
||||||
"png",
|
"png",
|
||||||
"jpeg",
|
"jpeg",
|
||||||
"jpg",
|
"jpg",
|
||||||
|
|||||||
86
pnpm-lock.yaml
generated
86
pnpm-lock.yaml
generated
@@ -387,6 +387,9 @@ importers:
|
|||||||
googleapis:
|
googleapis:
|
||||||
specifier: 144.0.0
|
specifier: 144.0.0
|
||||||
version: 144.0.0(encoding@0.1.13)
|
version: 144.0.0(encoding@0.1.13)
|
||||||
|
heic-convert:
|
||||||
|
specifier: 2.1.0
|
||||||
|
version: 2.1.0
|
||||||
https-proxy-agent:
|
https-proxy-agent:
|
||||||
specifier: 7.0.6
|
specifier: 7.0.6
|
||||||
version: 7.0.6
|
version: 7.0.6
|
||||||
@@ -520,6 +523,9 @@ importers:
|
|||||||
'@types/bcryptjs':
|
'@types/bcryptjs':
|
||||||
specifier: 2.4.6
|
specifier: 2.4.6
|
||||||
version: 2.4.6
|
version: 2.4.6
|
||||||
|
'@types/heic-convert':
|
||||||
|
specifier: 2.1.0
|
||||||
|
version: 2.1.0
|
||||||
'@types/lodash':
|
'@types/lodash':
|
||||||
specifier: 4.17.13
|
specifier: 4.17.13
|
||||||
version: 4.17.13
|
version: 4.17.13
|
||||||
@@ -591,7 +597,7 @@ importers:
|
|||||||
version: 8.18.0(eslint@8.57.0)(typescript@5.7.2)
|
version: 8.18.0(eslint@8.57.0)(typescript@5.7.2)
|
||||||
'@vercel/style-guide':
|
'@vercel/style-guide':
|
||||||
specifier: 6.0.0
|
specifier: 6.0.0
|
||||||
version: 6.0.0(@next/eslint-plugin-next@15.1.0)(eslint@8.57.0)(prettier@3.4.2)(typescript@5.7.2)(vitest@3.0.5(tsx@4.19.2))
|
version: 6.0.0(@next/eslint-plugin-next@15.1.0)(eslint@8.57.0)(prettier@3.4.2)(typescript@5.7.2)(vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.10.2)(jiti@2.4.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))
|
||||||
eslint-config-next:
|
eslint-config-next:
|
||||||
specifier: 15.1.0
|
specifier: 15.1.0
|
||||||
version: 15.1.0(eslint@8.57.0)(typescript@5.7.2)
|
version: 15.1.0(eslint@8.57.0)(typescript@5.7.2)
|
||||||
@@ -5467,6 +5473,9 @@ packages:
|
|||||||
'@types/hast@3.0.4':
|
'@types/hast@3.0.4':
|
||||||
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
|
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
|
||||||
|
|
||||||
|
'@types/heic-convert@2.1.0':
|
||||||
|
resolution: {integrity: sha512-Cf5Sdc2Gm2pfZ0uN1zjj35wcf3mF1lJCMIzws5OdJynrdMJRTIRUGa5LegbVg0hatzOPkH2uAf2JRjPYgl9apg==}
|
||||||
|
|
||||||
'@types/istanbul-lib-coverage@2.0.6':
|
'@types/istanbul-lib-coverage@2.0.6':
|
||||||
resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
|
resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
|
||||||
|
|
||||||
@@ -8359,8 +8368,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
|
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
hast-util-to-jsx-runtime@2.3.2:
|
hast-util-to-jsx-runtime@2.3.3:
|
||||||
resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==}
|
resolution: {integrity: sha512-pdpkP8YD4v+qMKn2lnKSiJvZvb3FunDmFYQvVOsoO08+eTNWdaWKPMrC5wwNICtU3dQWHhElj5Sf5jPEnv4qJg==}
|
||||||
|
|
||||||
hast-util-whitespace@3.0.0:
|
hast-util-whitespace@3.0.0:
|
||||||
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
|
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
|
||||||
@@ -8369,6 +8378,14 @@ packages:
|
|||||||
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
|
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
heic-convert@2.1.0:
|
||||||
|
resolution: {integrity: sha512-1qDuRvEHifTVAj3pFIgkqGgJIr0M3X7cxEPjEp0oG4mo8GFjq99DpCo8Eg3kg17Cy0MTjxpFdoBHOatj7ZVKtg==}
|
||||||
|
engines: {node: '>=12.0.0'}
|
||||||
|
|
||||||
|
heic-decode@2.0.0:
|
||||||
|
resolution: {integrity: sha512-NU+zsiDvdL+EebyTjrEqjkO2XYI7FgLhQzsbmO8dnnYce3S0PBSDm/ZyI4KpcGPXYEdb5W72vp/AQFuc4F8ASg==}
|
||||||
|
engines: {node: '>=8.0.0'}
|
||||||
|
|
||||||
help-me@3.0.0:
|
help-me@3.0.0:
|
||||||
resolution: {integrity: sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==}
|
resolution: {integrity: sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==}
|
||||||
|
|
||||||
@@ -8944,6 +8961,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
|
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
|
jpeg-js@0.4.4:
|
||||||
|
resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==}
|
||||||
|
|
||||||
js-cookie@2.2.1:
|
js-cookie@2.2.1:
|
||||||
resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==}
|
resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==}
|
||||||
|
|
||||||
@@ -9133,6 +9153,10 @@ packages:
|
|||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
libheif-js@1.18.2:
|
||||||
|
resolution: {integrity: sha512-4Nk0dKhhRfVS4mECcX2jSDpNU6gcHQLneJjkGQq61N8COGtjSpSA3CI+1Q3kUYv5Vf+SwIqUtaDSdU6JO37c6w==}
|
||||||
|
engines: {node: '>=8.0.0'}
|
||||||
|
|
||||||
lighthouse-logger@1.4.2:
|
lighthouse-logger@1.4.2:
|
||||||
resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==}
|
resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==}
|
||||||
|
|
||||||
@@ -10478,6 +10502,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
|
resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
|
||||||
engines: {node: '>=10.13.0'}
|
engines: {node: '>=10.13.0'}
|
||||||
|
|
||||||
|
pngjs@6.0.0:
|
||||||
|
resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==}
|
||||||
|
engines: {node: '>=12.13.0'}
|
||||||
|
|
||||||
polished@4.3.1:
|
polished@4.3.1:
|
||||||
resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==}
|
resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@@ -10747,8 +10775,8 @@ packages:
|
|||||||
prop-types@15.8.1:
|
prop-types@15.8.1:
|
||||||
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
|
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
|
||||||
|
|
||||||
property-information@6.5.0:
|
property-information@7.0.0:
|
||||||
resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
|
resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==}
|
||||||
|
|
||||||
proxy-from-env@1.1.0:
|
proxy-from-env@1.1.0:
|
||||||
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
|
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
|
||||||
@@ -18841,6 +18869,8 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
|
|
||||||
|
'@types/heic-convert@2.1.0': {}
|
||||||
|
|
||||||
'@types/istanbul-lib-coverage@2.0.6': {}
|
'@types/istanbul-lib-coverage@2.0.6': {}
|
||||||
|
|
||||||
'@types/istanbul-lib-report@3.0.3':
|
'@types/istanbul-lib-report@3.0.3':
|
||||||
@@ -19259,7 +19289,7 @@ snapshots:
|
|||||||
next: 15.1.2(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
next: 15.1.2(@opentelemetry/api@1.9.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
|
||||||
react: 19.0.0
|
react: 19.0.0
|
||||||
|
|
||||||
'@vercel/style-guide@6.0.0(@next/eslint-plugin-next@15.1.0)(eslint@8.57.0)(prettier@3.4.2)(typescript@5.7.2)(vitest@3.0.5(tsx@4.19.2))':
|
'@vercel/style-guide@6.0.0(@next/eslint-plugin-next@15.1.0)(eslint@8.57.0)(prettier@3.4.2)(typescript@5.7.2)(vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.10.2)(jiti@2.4.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.26.0
|
'@babel/core': 7.26.0
|
||||||
'@babel/eslint-parser': 7.26.5(@babel/core@7.26.0)(eslint@8.57.0)
|
'@babel/eslint-parser': 7.26.5(@babel/core@7.26.0)(eslint@8.57.0)
|
||||||
@@ -19267,7 +19297,7 @@ snapshots:
|
|||||||
'@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2)
|
'@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2)
|
||||||
'@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.7.2)
|
'@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.7.2)
|
||||||
eslint-config-prettier: 9.1.0(eslint@8.57.0)
|
eslint-config-prettier: 9.1.0(eslint@8.57.0)
|
||||||
eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0))
|
eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.31.0)
|
||||||
eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.0)
|
eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.0)
|
||||||
eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0)
|
eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0)
|
||||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0)
|
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0)
|
||||||
@@ -19279,7 +19309,7 @@ snapshots:
|
|||||||
eslint-plugin-testing-library: 6.5.0(eslint@8.57.0)(typescript@5.7.2)
|
eslint-plugin-testing-library: 6.5.0(eslint@8.57.0)(typescript@5.7.2)
|
||||||
eslint-plugin-tsdoc: 0.2.17
|
eslint-plugin-tsdoc: 0.2.17
|
||||||
eslint-plugin-unicorn: 51.0.1(eslint@8.57.0)
|
eslint-plugin-unicorn: 51.0.1(eslint@8.57.0)
|
||||||
eslint-plugin-vitest: 0.3.26(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2)(vitest@3.0.5(tsx@4.19.2))
|
eslint-plugin-vitest: 0.3.26(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2)(vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.10.2)(jiti@2.4.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))
|
||||||
prettier-plugin-packagejson: 2.5.8(prettier@3.4.2)
|
prettier-plugin-packagejson: 2.5.8(prettier@3.4.2)
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@next/eslint-plugin-next': 15.1.0
|
'@next/eslint-plugin-next': 15.1.0
|
||||||
@@ -19369,7 +19399,7 @@ snapshots:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
vite: 5.4.14(@types/node@22.10.2)(lightningcss@1.27.0)(terser@5.37.0)
|
vite: 5.4.14(@types/node@22.10.2)(lightningcss@1.27.0)(terser@5.37.0)
|
||||||
|
|
||||||
'@vitest/mocker@3.0.5(vite@6.0.9(tsx@4.19.2))':
|
'@vitest/mocker@3.0.5(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vitest/spy': 3.0.5
|
'@vitest/spy': 3.0.5
|
||||||
estree-walker: 3.0.3
|
estree-walker: 3.0.3
|
||||||
@@ -21378,9 +21408,9 @@ snapshots:
|
|||||||
eslint: 8.57.0
|
eslint: 8.57.0
|
||||||
eslint-plugin-turbo: 2.3.3(eslint@8.57.0)
|
eslint-plugin-turbo: 2.3.3(eslint@8.57.0)
|
||||||
|
|
||||||
eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0)):
|
eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0)
|
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0)
|
||||||
|
|
||||||
eslint-import-resolver-node@0.3.9:
|
eslint-import-resolver-node@0.3.9:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -21402,11 +21432,11 @@ snapshots:
|
|||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
stable-hash: 0.0.4
|
stable-hash: 0.0.4
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0)
|
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0):
|
eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@@ -21461,7 +21491,7 @@ snapshots:
|
|||||||
doctrine: 2.1.0
|
doctrine: 2.1.0
|
||||||
eslint: 8.57.0
|
eslint: 8.57.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
|
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.0)
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
is-core-module: 2.16.1
|
is-core-module: 2.16.1
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
@@ -21628,7 +21658,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-vitest@0.3.26(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2)(vitest@3.0.5(tsx@4.19.2)):
|
eslint-plugin-vitest@0.3.26(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2))(eslint@8.57.0)(typescript@5.7.2)(vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.10.2)(jiti@2.4.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.7.2)
|
'@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.7.2)
|
||||||
eslint: 8.57.0
|
eslint: 8.57.0
|
||||||
@@ -22399,7 +22429,7 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
function-bind: 1.1.2
|
function-bind: 1.1.2
|
||||||
|
|
||||||
hast-util-to-jsx-runtime@2.3.2:
|
hast-util-to-jsx-runtime@2.3.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree': 1.0.6
|
'@types/estree': 1.0.6
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
@@ -22411,7 +22441,7 @@ snapshots:
|
|||||||
mdast-util-mdx-expression: 2.0.1
|
mdast-util-mdx-expression: 2.0.1
|
||||||
mdast-util-mdx-jsx: 3.2.0
|
mdast-util-mdx-jsx: 3.2.0
|
||||||
mdast-util-mdxjs-esm: 2.0.1
|
mdast-util-mdxjs-esm: 2.0.1
|
||||||
property-information: 6.5.0
|
property-information: 7.0.0
|
||||||
space-separated-tokens: 2.0.2
|
space-separated-tokens: 2.0.2
|
||||||
style-to-object: 1.0.8
|
style-to-object: 1.0.8
|
||||||
unist-util-position: 5.0.0
|
unist-util-position: 5.0.0
|
||||||
@@ -22425,6 +22455,16 @@ snapshots:
|
|||||||
|
|
||||||
he@1.2.0: {}
|
he@1.2.0: {}
|
||||||
|
|
||||||
|
heic-convert@2.1.0:
|
||||||
|
dependencies:
|
||||||
|
heic-decode: 2.0.0
|
||||||
|
jpeg-js: 0.4.4
|
||||||
|
pngjs: 6.0.0
|
||||||
|
|
||||||
|
heic-decode@2.0.0:
|
||||||
|
dependencies:
|
||||||
|
libheif-js: 1.18.2
|
||||||
|
|
||||||
help-me@3.0.0:
|
help-me@3.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
glob: 7.2.3
|
glob: 7.2.3
|
||||||
@@ -23028,6 +23068,8 @@ snapshots:
|
|||||||
|
|
||||||
joycon@3.1.1: {}
|
joycon@3.1.1: {}
|
||||||
|
|
||||||
|
jpeg-js@0.4.4: {}
|
||||||
|
|
||||||
js-cookie@2.2.1: {}
|
js-cookie@2.2.1: {}
|
||||||
|
|
||||||
js-sdsl@4.3.0: {}
|
js-sdsl@4.3.0: {}
|
||||||
@@ -23245,6 +23287,8 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
isomorphic.js: 0.2.5
|
isomorphic.js: 0.2.5
|
||||||
|
|
||||||
|
libheif-js@1.18.2: {}
|
||||||
|
|
||||||
lighthouse-logger@1.4.2:
|
lighthouse-logger@1.4.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
debug: 2.6.9
|
debug: 2.6.9
|
||||||
@@ -24933,6 +24977,8 @@ snapshots:
|
|||||||
|
|
||||||
pngjs@5.0.0: {}
|
pngjs@5.0.0: {}
|
||||||
|
|
||||||
|
pngjs@6.0.0: {}
|
||||||
|
|
||||||
polished@4.3.1:
|
polished@4.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.26.7
|
'@babel/runtime': 7.26.7
|
||||||
@@ -25137,7 +25183,7 @@ snapshots:
|
|||||||
object-assign: 4.1.1
|
object-assign: 4.1.1
|
||||||
react-is: 16.13.1
|
react-is: 16.13.1
|
||||||
|
|
||||||
property-information@6.5.0: {}
|
property-information@7.0.0: {}
|
||||||
|
|
||||||
proxy-from-env@1.1.0: {}
|
proxy-from-env@1.1.0: {}
|
||||||
|
|
||||||
@@ -25325,7 +25371,7 @@ snapshots:
|
|||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
'@types/react': 19.0.1
|
'@types/react': 19.0.1
|
||||||
devlop: 1.1.0
|
devlop: 1.1.0
|
||||||
hast-util-to-jsx-runtime: 2.3.2
|
hast-util-to-jsx-runtime: 2.3.3
|
||||||
html-url-attributes: 3.0.1
|
html-url-attributes: 3.0.1
|
||||||
mdast-util-to-hast: 13.2.0
|
mdast-util-to-hast: 13.2.0
|
||||||
react: 19.0.0
|
react: 19.0.0
|
||||||
@@ -27274,7 +27320,7 @@ snapshots:
|
|||||||
vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.10.2)(jiti@2.4.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0):
|
vitest@3.0.5(@types/debug@4.1.12)(@types/node@22.10.2)(jiti@2.4.1)(jsdom@25.0.1)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vitest/expect': 3.0.5
|
'@vitest/expect': 3.0.5
|
||||||
'@vitest/mocker': 3.0.5(vite@6.0.9(tsx@4.19.2))
|
'@vitest/mocker': 3.0.5(vite@6.0.9(@types/node@22.10.2)(jiti@2.4.1)(lightningcss@1.27.0)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))
|
||||||
'@vitest/pretty-format': 3.0.5
|
'@vitest/pretty-format': 3.0.5
|
||||||
'@vitest/runner': 3.0.5
|
'@vitest/runner': 3.0.5
|
||||||
'@vitest/snapshot': 3.0.5
|
'@vitest/snapshot': 3.0.5
|
||||||
|
|||||||
Reference in New Issue
Block a user