mirror of
https://github.com/formbricks/formbricks.git
synced 2026-03-04 10:19:31 -06:00
chore: update dependencies and fix build/lint/test regressions (#7403)
This commit is contained in:
@@ -14,21 +14,21 @@
|
||||
"@formbricks/survey-ui": "workspace:*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@chromatic-com/storybook": "^5.0.0",
|
||||
"@storybook/addon-a11y": "10.1.11",
|
||||
"@storybook/addon-links": "10.1.11",
|
||||
"@storybook/addon-onboarding": "10.1.11",
|
||||
"@storybook/react-vite": "10.1.11",
|
||||
"@typescript-eslint/eslint-plugin": "8.53.0",
|
||||
"@tailwindcss/vite": "4.1.18",
|
||||
"@typescript-eslint/parser": "8.53.0",
|
||||
"@vitejs/plugin-react": "5.1.2",
|
||||
"esbuild": "0.25.12",
|
||||
"@chromatic-com/storybook": "^5.0.1",
|
||||
"@storybook/addon-a11y": "10.2.14",
|
||||
"@storybook/addon-links": "10.2.14",
|
||||
"@storybook/addon-onboarding": "10.2.14",
|
||||
"@storybook/react-vite": "10.2.14",
|
||||
"@typescript-eslint/eslint-plugin": "8.56.1",
|
||||
"@tailwindcss/vite": "4.2.1",
|
||||
"@typescript-eslint/parser": "8.56.1",
|
||||
"@vitejs/plugin-react": "5.1.4",
|
||||
"esbuild": "0.27.3",
|
||||
"eslint-plugin-react-refresh": "0.4.26",
|
||||
"eslint-plugin-storybook": "10.1.11",
|
||||
"eslint-plugin-storybook": "10.2.14",
|
||||
"prop-types": "15.8.1",
|
||||
"storybook": "10.1.11",
|
||||
"storybook": "10.2.14",
|
||||
"vite": "7.3.1",
|
||||
"@storybook/addon-docs": "10.1.11"
|
||||
"@storybook/addon-docs": "10.2.14"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,44 +1,66 @@
|
||||
import { beforeEach, describe, expect, test, vi } from "vitest";
|
||||
|
||||
// Mock constants module
|
||||
const envMock = {
|
||||
env: {
|
||||
WEBAPP_URL: "http://localhost:3000",
|
||||
PUBLIC_URL: undefined as string | undefined,
|
||||
},
|
||||
WEBAPP_URL: undefined as string | undefined,
|
||||
VERCEL_URL: undefined as string | undefined,
|
||||
PUBLIC_URL: undefined as string | undefined,
|
||||
};
|
||||
|
||||
vi.mock("@/lib/env", () => envMock);
|
||||
vi.mock("./env", () => ({
|
||||
env: envMock,
|
||||
}));
|
||||
|
||||
const loadGetPublicDomain = async () => {
|
||||
vi.resetModules();
|
||||
const { getPublicDomain } = await import("./getPublicUrl");
|
||||
return getPublicDomain;
|
||||
};
|
||||
|
||||
describe("getPublicDomain", () => {
|
||||
beforeEach(() => {
|
||||
vi.resetModules();
|
||||
envMock.WEBAPP_URL = undefined;
|
||||
envMock.VERCEL_URL = undefined;
|
||||
envMock.PUBLIC_URL = undefined;
|
||||
});
|
||||
|
||||
test("should return WEBAPP_URL when PUBLIC_URL is not set", async () => {
|
||||
const { getPublicDomain } = await import("./getPublicUrl");
|
||||
const domain = getPublicDomain();
|
||||
expect(domain).toBe("http://localhost:3000");
|
||||
test("returns trimmed WEBAPP_URL when configured", async () => {
|
||||
envMock.WEBAPP_URL = " https://app.formbricks.com ";
|
||||
|
||||
const getPublicDomain = await loadGetPublicDomain();
|
||||
|
||||
expect(getPublicDomain()).toBe("https://app.formbricks.com");
|
||||
});
|
||||
|
||||
test("should return PUBLIC_URL when it is set", async () => {
|
||||
envMock.env.PUBLIC_URL = "https://surveys.example.com";
|
||||
const { getPublicDomain } = await import("./getPublicUrl");
|
||||
const domain = getPublicDomain();
|
||||
expect(domain).toBe("https://surveys.example.com");
|
||||
test("falls back to VERCEL_URL when WEBAPP_URL is empty", async () => {
|
||||
envMock.WEBAPP_URL = " ";
|
||||
envMock.VERCEL_URL = "preview.formbricks.com";
|
||||
|
||||
const getPublicDomain = await loadGetPublicDomain();
|
||||
|
||||
expect(getPublicDomain()).toBe("https://preview.formbricks.com");
|
||||
});
|
||||
|
||||
test("should handle empty string PUBLIC_URL by returning WEBAPP_URL", async () => {
|
||||
envMock.env.PUBLIC_URL = "";
|
||||
const { getPublicDomain } = await import("./getPublicUrl");
|
||||
const domain = getPublicDomain();
|
||||
expect(domain).toBe("http://localhost:3000");
|
||||
test("falls back to localhost when WEBAPP_URL and VERCEL_URL are not set", async () => {
|
||||
const getPublicDomain = await loadGetPublicDomain();
|
||||
|
||||
expect(getPublicDomain()).toBe("http://localhost:3000");
|
||||
});
|
||||
|
||||
test("should handle undefined PUBLIC_URL by returning WEBAPP_URL", async () => {
|
||||
envMock.env.PUBLIC_URL = undefined;
|
||||
const { getPublicDomain } = await import("./getPublicUrl");
|
||||
const domain = getPublicDomain();
|
||||
expect(domain).toBe("http://localhost:3000");
|
||||
test("returns PUBLIC_URL when set", async () => {
|
||||
envMock.WEBAPP_URL = "https://app.formbricks.com";
|
||||
envMock.PUBLIC_URL = "https://surveys.formbricks.com";
|
||||
|
||||
const getPublicDomain = await loadGetPublicDomain();
|
||||
|
||||
expect(getPublicDomain()).toBe("https://surveys.formbricks.com");
|
||||
});
|
||||
|
||||
test("falls back to WEBAPP_URL when PUBLIC_URL is empty", async () => {
|
||||
envMock.WEBAPP_URL = "https://app.formbricks.com";
|
||||
envMock.PUBLIC_URL = " ";
|
||||
|
||||
const getPublicDomain = await loadGetPublicDomain();
|
||||
|
||||
expect(getPublicDomain()).toBe("https://app.formbricks.com");
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,8 +1,18 @@
|
||||
import "server-only";
|
||||
import { env } from "./env";
|
||||
|
||||
const WEBAPP_URL =
|
||||
env.WEBAPP_URL ?? (env.VERCEL_URL ? `https://${env.VERCEL_URL}` : "") ?? "http://localhost:3000";
|
||||
const configuredWebappUrl = env.WEBAPP_URL?.trim() ?? "";
|
||||
const WEBAPP_URL = (() => {
|
||||
if (configuredWebappUrl !== "") {
|
||||
return configuredWebappUrl;
|
||||
}
|
||||
|
||||
if (env.VERCEL_URL) {
|
||||
return `https://${env.VERCEL_URL}`;
|
||||
}
|
||||
|
||||
return "http://localhost:3000";
|
||||
})();
|
||||
|
||||
/**
|
||||
* Returns the public domain URL
|
||||
|
||||
@@ -195,6 +195,7 @@ describe("authOptions", () => {
|
||||
vi.mocked(applyIPRateLimit).mockRejectedValue(
|
||||
new Error("Maximum number of requests reached. Please try again later.")
|
||||
);
|
||||
const findUniqueSpy = vi.spyOn(prisma.user, "findUnique");
|
||||
|
||||
const credentials = { email: mockUser.email, password: mockPassword };
|
||||
|
||||
@@ -202,7 +203,7 @@ describe("authOptions", () => {
|
||||
"Maximum number of requests reached. Please try again later."
|
||||
);
|
||||
|
||||
expect(prisma.user.findUnique).not.toHaveBeenCalled();
|
||||
expect(findUniqueSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("should use correct rate limit configuration", async () => {
|
||||
@@ -281,6 +282,7 @@ describe("authOptions", () => {
|
||||
vi.mocked(applyIPRateLimit).mockRejectedValue(
|
||||
new Error("Maximum number of requests reached. Please try again later.")
|
||||
);
|
||||
const findUniqueSpy = vi.spyOn(prisma.user, "findUnique");
|
||||
|
||||
const credentials = { token: "sometoken" };
|
||||
|
||||
@@ -288,7 +290,7 @@ describe("authOptions", () => {
|
||||
"Maximum number of requests reached. Please try again later."
|
||||
);
|
||||
|
||||
expect(prisma.user.findUnique).not.toHaveBeenCalled();
|
||||
expect(findUniqueSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -203,7 +203,7 @@ export const ThemeStyling = ({
|
||||
</FormDescription>
|
||||
<FormControl>
|
||||
<ColorPicker
|
||||
color={field.value ?? STYLE_DEFAULTS.brandColor?.light}
|
||||
color={field.value ?? STYLE_DEFAULTS.brandColor?.light ?? COLOR_DEFAULTS.brandColor}
|
||||
onChange={(color) => field.onChange(color)}
|
||||
containerClass="w-full"
|
||||
/>
|
||||
|
||||
@@ -9,7 +9,12 @@ import toast from "react-hot-toast";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { TProjectStyling } from "@formbricks/types/project";
|
||||
import { TSurvey, TSurveyStyling } from "@formbricks/types/surveys/types";
|
||||
import { STYLE_DEFAULTS, deriveNewFieldsFromLegacy, getSuggestedColors } from "@/lib/styling/constants";
|
||||
import {
|
||||
COLOR_DEFAULTS,
|
||||
STYLE_DEFAULTS,
|
||||
deriveNewFieldsFromLegacy,
|
||||
getSuggestedColors,
|
||||
} from "@/lib/styling/constants";
|
||||
import { FormStylingSettings } from "@/modules/survey/editor/components/form-styling-settings";
|
||||
import { LogoSettingsCard } from "@/modules/survey/editor/components/logo-settings-card";
|
||||
import { AlertDialog } from "@/modules/ui/components/alert-dialog";
|
||||
@@ -92,7 +97,8 @@ export const StylingView = ({
|
||||
const [confirmSuggestColorsOpen, setConfirmSuggestColorsOpen] = useState(false);
|
||||
|
||||
const handleSuggestColors = () => {
|
||||
const currentBrandColor = form.getValues().brandColor?.light ?? STYLE_DEFAULTS.brandColor?.light;
|
||||
const currentBrandColor =
|
||||
form.getValues().brandColor?.light ?? STYLE_DEFAULTS.brandColor?.light ?? COLOR_DEFAULTS.brandColor;
|
||||
const suggested = getSuggestedColors(currentBrandColor);
|
||||
|
||||
for (const [key, value] of Object.entries(suggested)) {
|
||||
@@ -235,7 +241,7 @@ export const StylingView = ({
|
||||
</FormDescription>
|
||||
<FormControl>
|
||||
<ColorPicker
|
||||
color={field.value ?? STYLE_DEFAULTS.brandColor?.light}
|
||||
color={field.value ?? STYLE_DEFAULTS.brandColor?.light ?? COLOR_DEFAULTS.brandColor}
|
||||
onChange={(color) => field.onChange(color)}
|
||||
containerClass="w-full"
|
||||
/>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@formbricks/web",
|
||||
"version": "0.0.0",
|
||||
"packageManager": "pnpm@10.28.2",
|
||||
"packageManager": "pnpm@10.30.3",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"clean": "rimraf .turbo node_modules .next coverage",
|
||||
@@ -19,9 +19,9 @@
|
||||
"i18n:generate": "npx lingo.dev@latest run && npx lingo.dev@latest lockfile --force"
|
||||
},
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-s3": "3.971.0",
|
||||
"@aws-sdk/s3-presigned-post": "3.971.0",
|
||||
"@aws-sdk/s3-request-presigner": "3.971.0",
|
||||
"@aws-sdk/client-s3": "3.1000.0",
|
||||
"@aws-sdk/s3-presigned-post": "3.1000.0",
|
||||
"@aws-sdk/s3-request-presigner": "3.1000.0",
|
||||
"@boxyhq/saml-jackson": "1.52.2",
|
||||
"@dnd-kit/core": "6.3.1",
|
||||
"@dnd-kit/modifiers": "9.0.0",
|
||||
@@ -36,106 +36,106 @@
|
||||
"@formbricks/storage": "workspace:*",
|
||||
"@formbricks/surveys": "workspace:*",
|
||||
"@formbricks/types": "workspace:*",
|
||||
"@hookform/resolvers": "5.0.1",
|
||||
"@hookform/resolvers": "5.2.2",
|
||||
"@json2csv/node": "7.0.6",
|
||||
"@lexical/code": "0.36.2",
|
||||
"@lexical/link": "0.36.2",
|
||||
"@lexical/list": "0.36.2",
|
||||
"@lexical/markdown": "0.36.2",
|
||||
"@lexical/react": "0.36.2",
|
||||
"@lexical/rich-text": "0.36.2",
|
||||
"@lexical/table": "0.36.2",
|
||||
"@opentelemetry/auto-instrumentations-node": "0.69.0",
|
||||
"@opentelemetry/exporter-metrics-otlp-http": "0.211.0",
|
||||
"@opentelemetry/exporter-prometheus": "0.211.0",
|
||||
"@opentelemetry/exporter-trace-otlp-http": "0.211.0",
|
||||
"@opentelemetry/resources": "2.5.0",
|
||||
"@opentelemetry/sdk-metrics": "2.5.0",
|
||||
"@opentelemetry/sdk-node": "0.211.0",
|
||||
"@opentelemetry/sdk-trace-base": "2.5.0",
|
||||
"@opentelemetry/semantic-conventions": "1.38.0",
|
||||
"@paralleldrive/cuid2": "2.2.2",
|
||||
"@prisma/client": "6.14.0",
|
||||
"@prisma/instrumentation": "6.14.0",
|
||||
"@radix-ui/react-accordion": "1.2.10",
|
||||
"@radix-ui/react-checkbox": "1.3.1",
|
||||
"@radix-ui/react-collapsible": "1.1.10",
|
||||
"@radix-ui/react-dialog": "1.1.13",
|
||||
"@radix-ui/react-dropdown-menu": "2.1.14",
|
||||
"@radix-ui/react-label": "2.1.6",
|
||||
"@radix-ui/react-popover": "1.1.13",
|
||||
"@radix-ui/react-radio-group": "1.3.6",
|
||||
"@radix-ui/react-select": "2.2.4",
|
||||
"@radix-ui/react-separator": "1.1.6",
|
||||
"@radix-ui/react-slider": "1.3.4",
|
||||
"@radix-ui/react-slot": "1.2.2",
|
||||
"@radix-ui/react-switch": "1.2.4",
|
||||
"@radix-ui/react-tabs": "1.1.11",
|
||||
"@radix-ui/react-toggle": "1.1.8",
|
||||
"@radix-ui/react-toggle-group": "1.1.9",
|
||||
"@radix-ui/react-tooltip": "1.2.6",
|
||||
"@sentry/nextjs": "10.5.0",
|
||||
"@t3-oss/env-nextjs": "0.13.4",
|
||||
"@tailwindcss/forms": "0.5.10",
|
||||
"@tailwindcss/typography": "0.5.16",
|
||||
"@lexical/code": "0.41.0",
|
||||
"@lexical/link": "0.41.0",
|
||||
"@lexical/list": "0.41.0",
|
||||
"@lexical/markdown": "0.41.0",
|
||||
"@lexical/react": "0.41.0",
|
||||
"@lexical/rich-text": "0.41.0",
|
||||
"@lexical/table": "0.41.0",
|
||||
"@opentelemetry/auto-instrumentations-node": "0.70.1",
|
||||
"@opentelemetry/exporter-metrics-otlp-http": "0.212.0",
|
||||
"@opentelemetry/exporter-prometheus": "0.212.0",
|
||||
"@opentelemetry/exporter-trace-otlp-http": "0.212.0",
|
||||
"@opentelemetry/resources": "2.5.1",
|
||||
"@opentelemetry/sdk-metrics": "2.5.1",
|
||||
"@opentelemetry/sdk-node": "0.212.0",
|
||||
"@opentelemetry/sdk-trace-base": "2.5.1",
|
||||
"@opentelemetry/semantic-conventions": "1.40.0",
|
||||
"@paralleldrive/cuid2": "2.3.1",
|
||||
"@prisma/client": "6.19.2",
|
||||
"@prisma/instrumentation": "6.19.2",
|
||||
"@radix-ui/react-accordion": "1.2.12",
|
||||
"@radix-ui/react-checkbox": "1.3.3",
|
||||
"@radix-ui/react-collapsible": "1.1.12",
|
||||
"@radix-ui/react-dialog": "1.1.15",
|
||||
"@radix-ui/react-dropdown-menu": "2.1.16",
|
||||
"@radix-ui/react-label": "2.1.8",
|
||||
"@radix-ui/react-popover": "1.1.15",
|
||||
"@radix-ui/react-radio-group": "1.3.8",
|
||||
"@radix-ui/react-select": "2.2.6",
|
||||
"@radix-ui/react-separator": "1.1.8",
|
||||
"@radix-ui/react-slider": "1.3.6",
|
||||
"@radix-ui/react-slot": "1.2.4",
|
||||
"@radix-ui/react-switch": "1.2.6",
|
||||
"@radix-ui/react-tabs": "1.1.13",
|
||||
"@radix-ui/react-toggle": "1.1.10",
|
||||
"@radix-ui/react-toggle-group": "1.1.11",
|
||||
"@radix-ui/react-tooltip": "1.2.8",
|
||||
"@sentry/nextjs": "10.41.0",
|
||||
"@t3-oss/env-nextjs": "0.13.10",
|
||||
"@tailwindcss/forms": "0.5.11",
|
||||
"@tailwindcss/typography": "0.5.19",
|
||||
"@tanstack/react-table": "8.21.3",
|
||||
"@ungap/structured-clone": "1.3.0",
|
||||
"@vercel/functions": "2.2.8",
|
||||
"@vercel/og": "0.8.5",
|
||||
"bcryptjs": "3.0.2",
|
||||
"boring-avatars": "2.0.1",
|
||||
"@vercel/functions": "2.2.13",
|
||||
"@vercel/og": "0.10.0",
|
||||
"bcryptjs": "3.0.3",
|
||||
"boring-avatars": "2.0.4",
|
||||
"class-variance-authority": "0.7.1",
|
||||
"clsx": "2.1.1",
|
||||
"cmdk": "1.1.1",
|
||||
"csv-parse": "5.6.0",
|
||||
"date-fns": "4.1.0",
|
||||
"file-loader": "6.2.0",
|
||||
"framer-motion": "12.10.0",
|
||||
"framer-motion": "12.34.4",
|
||||
"googleapis": "148.0.0",
|
||||
"heic-convert": "2.1.0",
|
||||
"https-proxy-agent": "7.0.6",
|
||||
"i18next": "25.5.2",
|
||||
"i18next-icu": "2.4.0",
|
||||
"i18next": "25.8.13",
|
||||
"i18next-icu": "2.4.3",
|
||||
"i18next-resources-to-backend": "1.2.1",
|
||||
"jiti": "2.4.2",
|
||||
"jsonwebtoken": "9.0.2",
|
||||
"lexical": "0.36.2",
|
||||
"jiti": "2.6.1",
|
||||
"jsonwebtoken": "9.0.3",
|
||||
"lexical": "0.41.0",
|
||||
"lodash": "4.17.23",
|
||||
"lucide-react": "0.507.0",
|
||||
"markdown-it": "14.1.0",
|
||||
"mime-types": "3.0.1",
|
||||
"lucide-react": "0.576.0",
|
||||
"markdown-it": "14.1.1",
|
||||
"mime-types": "3.0.2",
|
||||
"next": "16.1.6",
|
||||
"next-auth": "4.24.12",
|
||||
"next-auth": "4.24.13",
|
||||
"next-safe-action": "7.10.8",
|
||||
"node-fetch": "3.3.2",
|
||||
"nodemailer": "7.0.11",
|
||||
"nodemailer": "7.0.13",
|
||||
"otplib": "12.0.1",
|
||||
"papaparse": "5.5.2",
|
||||
"papaparse": "5.5.3",
|
||||
"prismjs": "1.30.0",
|
||||
"qr-code-styling": "1.9.2",
|
||||
"qrcode": "1.5.4",
|
||||
"react": "19.2.3",
|
||||
"react": "19.2.4",
|
||||
"react-calendar": "5.1.0",
|
||||
"react-colorful": "5.6.1",
|
||||
"react-confetti": "6.4.0",
|
||||
"react-day-picker": "9.6.7",
|
||||
"react-dom": "19.2.3",
|
||||
"react-hook-form": "7.56.2",
|
||||
"react-hot-toast": "2.5.2",
|
||||
"react-i18next": "15.7.3",
|
||||
"react-turnstile": "1.1.4",
|
||||
"react-day-picker": "9.14.0",
|
||||
"react-dom": "19.2.4",
|
||||
"react-hook-form": "7.71.2",
|
||||
"react-hot-toast": "2.6.0",
|
||||
"react-i18next": "15.7.4",
|
||||
"react-turnstile": "1.1.5",
|
||||
"react-use": "17.6.0",
|
||||
"redis": "4.7.0",
|
||||
"sanitize-html": "2.17.0",
|
||||
"redis": "4.7.1",
|
||||
"sanitize-html": "2.17.1",
|
||||
"server-only": "0.0.1",
|
||||
"sharp": "0.34.1",
|
||||
"sharp": "0.34.5",
|
||||
"stripe": "16.12.0",
|
||||
"superjson": "2.2.2",
|
||||
"tailwind-merge": "3.2.0",
|
||||
"tailwindcss": "3.4.17",
|
||||
"ua-parser-js": "2.0.3",
|
||||
"superjson": "2.2.6",
|
||||
"tailwind-merge": "3.5.0",
|
||||
"tailwindcss": "3.4.19",
|
||||
"ua-parser-js": "2.0.9",
|
||||
"uuid": "11.1.0",
|
||||
"webpack": "5.99.8",
|
||||
"webpack": "5.105.3",
|
||||
"xlsx": "file:vendor/xlsx-0.20.3.tgz",
|
||||
"zod": "3.25.76",
|
||||
"zod-openapi": "4.2.4"
|
||||
@@ -143,31 +143,31 @@
|
||||
"devDependencies": {
|
||||
"@formbricks/config-typescript": "workspace:*",
|
||||
"@formbricks/eslint-config": "workspace:*",
|
||||
"@testing-library/jest-dom": "6.6.3",
|
||||
"@testing-library/react": "16.3.0",
|
||||
"@testing-library/jest-dom": "6.9.1",
|
||||
"@testing-library/react": "16.3.2",
|
||||
"@types/bcryptjs": "2.4.6",
|
||||
"@types/heic-convert": "2.1.0",
|
||||
"@types/jsonwebtoken": "9.0.9",
|
||||
"@types/lodash": "4.17.16",
|
||||
"@types/jsonwebtoken": "9.0.10",
|
||||
"@types/lodash": "4.17.24",
|
||||
"@types/markdown-it": "14.1.2",
|
||||
"@types/mime-types": "2.1.4",
|
||||
"@types/nodemailer": "7.0.2",
|
||||
"@types/papaparse": "5.3.15",
|
||||
"@types/qrcode": "1.5.5",
|
||||
"@types/nodemailer": "7.0.11",
|
||||
"@types/papaparse": "5.5.2",
|
||||
"@types/qrcode": "1.5.6",
|
||||
"@types/sanitize-html": "2.16.0",
|
||||
"@types/testing-library__react": "10.2.0",
|
||||
"@types/ungap__structured-clone": "1.2.0",
|
||||
"@vitest/coverage-v8": "3.1.3",
|
||||
"autoprefixer": "10.4.21",
|
||||
"cross-env": "10.0.0",
|
||||
"dotenv": "16.5.0",
|
||||
"esbuild": "0.25.12",
|
||||
"postcss": "8.5.3",
|
||||
"@vitest/coverage-v8": "3.2.4",
|
||||
"autoprefixer": "10.4.27",
|
||||
"cross-env": "10.1.0",
|
||||
"dotenv": "16.6.1",
|
||||
"esbuild": "0.27.3",
|
||||
"postcss": "8.5.8",
|
||||
"resize-observer-polyfill": "1.5.1",
|
||||
"ts-node": "10.9.2",
|
||||
"vite": "6.4.1",
|
||||
"vite-tsconfig-paths": "5.1.4",
|
||||
"vitest": "3.1.3",
|
||||
"vitest": "3.2.4",
|
||||
"vitest-mock-extended": "3.1.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,16 +191,16 @@ test.describe("Survey Create & Submit Response without logic", async () => {
|
||||
page.getByRole("rowheader", { name: surveys.createAndSubmit.matrix.rows[2] })
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole("cell", { name: surveys.createWithLogicAndSubmit.matrix.columns[0], exact: true })
|
||||
page.getByRole("columnheader", { name: surveys.createAndSubmit.matrix.columns[0], exact: true })
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole("cell", { name: surveys.createWithLogicAndSubmit.matrix.columns[1], exact: true })
|
||||
page.getByRole("columnheader", { name: surveys.createAndSubmit.matrix.columns[1], exact: true })
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole("cell", { name: surveys.createWithLogicAndSubmit.matrix.columns[2], exact: true })
|
||||
page.getByRole("columnheader", { name: surveys.createAndSubmit.matrix.columns[2], exact: true })
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole("cell", { name: surveys.createWithLogicAndSubmit.matrix.columns[3], exact: true })
|
||||
page.getByRole("columnheader", { name: surveys.createAndSubmit.matrix.columns[3], exact: true })
|
||||
).toBeVisible();
|
||||
await expect(page.locator("#questionCard-9").getByRole("button", { name: "Next" })).toBeVisible();
|
||||
await expect(page.locator("#questionCard-9").getByRole("button", { name: "Back" })).toBeVisible();
|
||||
@@ -895,16 +895,16 @@ test.describe("Testing Survey with advanced logic", async () => {
|
||||
page.getByRole("rowheader", { name: surveys.createWithLogicAndSubmit.matrix.rows[2] })
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole("cell", { name: surveys.createWithLogicAndSubmit.matrix.columns[0], exact: true })
|
||||
page.getByRole("columnheader", { name: surveys.createWithLogicAndSubmit.matrix.columns[0], exact: true })
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole("cell", { name: surveys.createWithLogicAndSubmit.matrix.columns[1], exact: true })
|
||||
page.getByRole("columnheader", { name: surveys.createWithLogicAndSubmit.matrix.columns[1], exact: true })
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole("cell", { name: surveys.createWithLogicAndSubmit.matrix.columns[2], exact: true })
|
||||
page.getByRole("columnheader", { name: surveys.createWithLogicAndSubmit.matrix.columns[2], exact: true })
|
||||
).toBeVisible();
|
||||
await expect(
|
||||
page.getByRole("cell", { name: surveys.createWithLogicAndSubmit.matrix.columns[3], exact: true })
|
||||
page.getByRole("columnheader", { name: surveys.createWithLogicAndSubmit.matrix.columns[3], exact: true })
|
||||
).toBeVisible();
|
||||
await expect(page.locator("#questionCard-7").getByRole("button", { name: "Next" })).toBeVisible();
|
||||
await expect(page.locator("#questionCard-7").getByRole("button", { name: "Back" })).toBeVisible();
|
||||
@@ -995,15 +995,15 @@ test.describe("Testing Survey with advanced logic", async () => {
|
||||
const updatedUrl = currentUrl.replace("summary?share=true", "responses");
|
||||
|
||||
await page.goto(updatedUrl);
|
||||
await page.waitForSelector("table#response-table");
|
||||
|
||||
await expect(page.getByRole("cell", { name: "score" })).toBeVisible();
|
||||
const responseTable = page.locator("table#response-table");
|
||||
await expect(responseTable).toBeVisible();
|
||||
await expect(responseTable.getByRole("columnheader", { name: /^score$/i })).toBeVisible({
|
||||
timeout: 15000,
|
||||
});
|
||||
|
||||
await page.waitForLoadState("networkidle");
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
await page.pause();
|
||||
|
||||
// Look for any cell containing "32" or a score-related value
|
||||
const scoreCell = page.getByRole("cell").filter({ hasText: /^32/ });
|
||||
await expect(scoreCell).toBeVisible({
|
||||
|
||||
22
package.json
22
package.json
@@ -45,22 +45,22 @@
|
||||
"i18n:validate": "pnpm scan-translations"
|
||||
},
|
||||
"dependencies": {
|
||||
"react": "19.2.3",
|
||||
"react-dom": "19.2.3",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
"next": "16.1.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@azure/identity": "4.13.0",
|
||||
"@azure/playwright": "1.0.0",
|
||||
"@azure/playwright": "1.1.2",
|
||||
"@formbricks/eslint-config": "workspace:*",
|
||||
"@playwright/test": "1.56.1",
|
||||
"eslint": "8.57.0",
|
||||
"@playwright/test": "1.58.2",
|
||||
"eslint": "8.57.1",
|
||||
"glob": "^11.1.0",
|
||||
"husky": "9.1.7",
|
||||
"lint-staged": "16.0.0",
|
||||
"rimraf": "6.0.1",
|
||||
"tsx": "4.19.4",
|
||||
"turbo": "2.5.3"
|
||||
"lint-staged": "16.3.1",
|
||||
"rimraf": "6.1.3",
|
||||
"tsx": "4.21.0",
|
||||
"turbo": "2.8.12"
|
||||
},
|
||||
"lint-staged": {
|
||||
"(apps|packages)/**/*.{js,ts,jsx,tsx}": [
|
||||
@@ -76,7 +76,7 @@
|
||||
"engines": {
|
||||
"node": ">=20.0.0"
|
||||
},
|
||||
"packageManager": "pnpm@10.28.2",
|
||||
"packageManager": "pnpm@10.30.3",
|
||||
"nextBundleAnalysis": {
|
||||
"budget": 358400,
|
||||
"budgetPercentIncreaseRed": 20,
|
||||
@@ -101,7 +101,7 @@
|
||||
"overrides": "Security fixes for transitive dependencies. Remove when upstream packages update: axios (CVE-2025-58754) - awaiting @boxyhq/saml-jackson update | node-forge (Dependabot #230) - awaiting @boxyhq/saml-jackson update | tar-fs (Dependabot #205) - awaiting upstream dependency updates | tar (Dependabot #249/#264) - awaiting @boxyhq/saml-jackson/sqlite3 dependency updates | typeorm (Dependabot #223) - awaiting @boxyhq/saml-jackson update | systeminformation (Dependabot #241) - awaiting @opentelemetry/host-metrics update | qs (Dependabot #245) - awaiting googleapis-common and stripe updates | preact (Dependabot #247) - awaiting next-auth update | fast-xml-parser (Dependabot #270) - awaiting @boxyhq/saml-jackson update | diff (Dependabot #269) - awaiting @microsoft/api-extractor update"
|
||||
},
|
||||
"patchedDependencies": {
|
||||
"next-auth@4.24.12": "patches/next-auth@4.24.12.patch"
|
||||
"next-auth@4.24.13": "patches/next-auth@4.24.13.patch"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
6
packages/cache/package.json
vendored
6
packages/cache/package.json
vendored
@@ -38,14 +38,14 @@
|
||||
"author": "Formbricks <hola@formbricks.com>",
|
||||
"dependencies": {
|
||||
"@formbricks/logger": "workspace:*",
|
||||
"redis": "5.8.1",
|
||||
"redis": "5.11.0",
|
||||
"zod": "3.25.76"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@formbricks/config-typescript": "workspace:*",
|
||||
"@formbricks/eslint-config": "workspace:*",
|
||||
"vite": "6.4.1",
|
||||
"vitest": "3.1.3",
|
||||
"@vitest/coverage-v8": "3.1.3"
|
||||
"vitest": "3.2.4",
|
||||
"@vitest/coverage-v8": "3.2.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"devDependencies": {
|
||||
"@next/eslint-plugin-next": "15.3.2",
|
||||
"@typescript-eslint/eslint-plugin": "8.32.1",
|
||||
"@typescript-eslint/parser": "8.32.1",
|
||||
"@next/eslint-plugin-next": "15.5.12",
|
||||
"@typescript-eslint/eslint-plugin": "8.56.1",
|
||||
"@typescript-eslint/parser": "8.56.1",
|
||||
"@vercel/style-guide": "6.0.0",
|
||||
"eslint-config-next": "15.3.2",
|
||||
"eslint-config-prettier": "10.1.5",
|
||||
"eslint-config-turbo": "2.5.3",
|
||||
"eslint-config-next": "15.5.12",
|
||||
"eslint-config-prettier": "10.1.8",
|
||||
"eslint-config-turbo": "2.8.12",
|
||||
"eslint-plugin-react": "7.37.5",
|
||||
"eslint-plugin-react-hooks": "5.2.0",
|
||||
"eslint-plugin-react-refresh": "0.4.20",
|
||||
"@vitest/eslint-plugin": "1.1.44"
|
||||
"@vitest/eslint-plugin": "1.6.9"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@trivago/prettier-plugin-sort-imports": "5.2.2",
|
||||
"prettier": "3.5.3",
|
||||
"prettier-plugin-tailwindcss": "0.6.11",
|
||||
"prettier-plugin-sort-json": "4.1.1"
|
||||
"prettier": "3.8.1",
|
||||
"prettier-plugin-tailwindcss": "0.7.2",
|
||||
"prettier-plugin-sort-json": "4.2.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
"clean": "rimraf node_modules dist turbo"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "22.15.18",
|
||||
"@types/react": "19.1.4",
|
||||
"@types/react-dom": "19.1.5",
|
||||
"typescript": "5.8.3"
|
||||
"@types/node": "22.19.13",
|
||||
"@types/react": "19.2.14",
|
||||
"@types/react-dom": "19.2.3",
|
||||
"typescript": "5.9.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,8 +48,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@formbricks/logger": "workspace:*",
|
||||
"@paralleldrive/cuid2": "2.2.2",
|
||||
"@prisma/client": "6.14.0",
|
||||
"@paralleldrive/cuid2": "2.3.1",
|
||||
"@prisma/client": "6.19.2",
|
||||
"bcryptjs": "2.4.3",
|
||||
"uuid": "11.1.0",
|
||||
"zod": "3.25.76",
|
||||
@@ -61,11 +61,11 @@
|
||||
"@types/bcryptjs": "2.4.6",
|
||||
"dotenv-cli": "8.0.0",
|
||||
"glob": "11.1.0",
|
||||
"prisma": "6.14.0",
|
||||
"prisma-json-types-generator": "3.5.4",
|
||||
"prisma": "6.19.2",
|
||||
"prisma-json-types-generator": "3.6.2",
|
||||
"ts-node": "10.9.2",
|
||||
"tsx": "4.19.2",
|
||||
"tsx": "4.21.0",
|
||||
"vite": "6.4.1",
|
||||
"vite-plugin-dts": "4.5.3"
|
||||
"vite-plugin-dts": "4.5.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { createId } from "@paralleldrive/cuid2";
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import readline from "node:readline";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { createId } from "@paralleldrive/cuid2";
|
||||
import { logger } from "@formbricks/logger";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { type Prisma, PrismaClient } from "@prisma/client";
|
||||
import { exec } from "node:child_process";
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { promisify } from "node:util";
|
||||
import { type Prisma, PrismaClient } from "@prisma/client";
|
||||
import { logger } from "@formbricks/logger";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
|
||||
@@ -13,18 +13,18 @@
|
||||
"clean": "rimraf .turbo node_modules dist"
|
||||
},
|
||||
"dependencies": {
|
||||
"@react-email/components": "1.0.6",
|
||||
"react-email": "5.2.5"
|
||||
"@react-email/components": "1.0.8",
|
||||
"react-email": "5.2.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@formbricks/config-typescript": "workspace:*",
|
||||
"@formbricks/eslint-config": "workspace:*",
|
||||
"@formbricks/types": "workspace:*",
|
||||
"@react-email/preview-server": "5.2.8",
|
||||
"autoprefixer": "10.4.21",
|
||||
"@react-email/preview-server": "5.2.9",
|
||||
"autoprefixer": "10.4.27",
|
||||
"clsx": "2.1.1",
|
||||
"postcss": "8.5.3",
|
||||
"tailwind-merge": "3.2.0",
|
||||
"tailwindcss": "3.4.17"
|
||||
"postcss": "8.5.8",
|
||||
"tailwind-merge": "3.5.0",
|
||||
"tailwindcss": "3.4.19"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,10 +40,10 @@
|
||||
"devDependencies": {
|
||||
"vite": "6.4.1",
|
||||
"@formbricks/config-typescript": "workspace:*",
|
||||
"vitest": "3.1.3",
|
||||
"vitest": "3.2.4",
|
||||
"@formbricks/eslint-config": "workspace:*",
|
||||
"vite-plugin-dts": "4.5.3",
|
||||
"@types/node": "^22.10.5",
|
||||
"tsx": "^4.19.4"
|
||||
"vite-plugin-dts": "4.5.4",
|
||||
"@types/node": "^22.19.13",
|
||||
"tsx": "^4.21.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,10 +46,10 @@
|
||||
"@formbricks/config-typescript": "workspace:*",
|
||||
"@trivago/prettier-plugin-sort-imports": "5.2.2",
|
||||
"@formbricks/eslint-config": "workspace:*",
|
||||
"@vitest/coverage-v8": "3.1.3",
|
||||
"terser": "5.39.1",
|
||||
"@vitest/coverage-v8": "3.2.4",
|
||||
"terser": "5.46.0",
|
||||
"vite": "6.4.1",
|
||||
"vite-plugin-dts": "4.5.3",
|
||||
"vitest": "3.1.3"
|
||||
"vite-plugin-dts": "4.5.4",
|
||||
"vitest": "3.2.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
/// <reference types="vitest" />
|
||||
import { resolve } from "path";
|
||||
import { defineConfig } from "vite";
|
||||
import dts from "vite-plugin-dts";
|
||||
import { defineConfig } from "vitest/config";
|
||||
import type { ViteUserConfig } from "vitest/config";
|
||||
import webPackageJson from "../../apps/web/package.json";
|
||||
import { copyCompiledAssetsPlugin } from "../vite-plugins/copy-compiled-assets";
|
||||
|
||||
type VitestPluginOption = NonNullable<ViteUserConfig["plugins"]>[number];
|
||||
|
||||
export default defineConfig({
|
||||
resolve: {
|
||||
alias: {
|
||||
@@ -29,12 +33,12 @@ export default defineConfig({
|
||||
plugins: [
|
||||
dts({
|
||||
rollupTypes: true,
|
||||
}),
|
||||
}) as VitestPluginOption,
|
||||
copyCompiledAssetsPlugin({
|
||||
filename: "formbricks",
|
||||
distDir: resolve(__dirname, "dist"),
|
||||
skipDirectoryCheck: true, // Skip checking for subdirectories that might not exist
|
||||
}),
|
||||
}) as VitestPluginOption,
|
||||
],
|
||||
test: {
|
||||
environment: "node",
|
||||
|
||||
@@ -36,15 +36,15 @@
|
||||
"author": "Formbricks <hola@formbricks.com>",
|
||||
"dependencies": {
|
||||
"zod": "3.25.76",
|
||||
"pino": "10.0.0",
|
||||
"pino": "10.3.1",
|
||||
"pino-opentelemetry-transport": "2.0.0",
|
||||
"pino-pretty": "13.1.1"
|
||||
"pino-pretty": "13.1.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"vite": "6.4.1",
|
||||
"@formbricks/config-typescript": "workspace:*",
|
||||
"vitest": "3.1.3",
|
||||
"vitest": "3.2.4",
|
||||
"@formbricks/eslint-config": "workspace:*",
|
||||
"vite-plugin-dts": "4.5.3"
|
||||
"vite-plugin-dts": "4.5.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,16 +37,16 @@
|
||||
"author": "Formbricks <hola@formbricks.com>",
|
||||
"dependencies": {
|
||||
"@formbricks/logger": "workspace:*",
|
||||
"@aws-sdk/client-s3": "3.971.0",
|
||||
"@aws-sdk/s3-presigned-post": "3.971.0",
|
||||
"@aws-sdk/s3-request-presigner": "3.971.0"
|
||||
"@aws-sdk/client-s3": "3.1000.0",
|
||||
"@aws-sdk/s3-presigned-post": "3.1000.0",
|
||||
"@aws-sdk/s3-request-presigner": "3.1000.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@formbricks/config-typescript": "workspace:*",
|
||||
"@formbricks/eslint-config": "workspace:*",
|
||||
"vite": "6.4.1",
|
||||
"vite-plugin-dts": "4.5.3",
|
||||
"vitest": "3.1.3",
|
||||
"@vitest/coverage-v8": "3.1.3"
|
||||
"vite-plugin-dts": "4.5.4",
|
||||
"vitest": "3.2.4",
|
||||
"@vitest/coverage-v8": "3.2.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,39 +67,39 @@
|
||||
"react-dom": "^19.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@formkit/auto-animate": "0.8.2",
|
||||
"@radix-ui/react-checkbox": "1.3.1",
|
||||
"@radix-ui/react-dropdown-menu": "2.1.14",
|
||||
"@radix-ui/react-popover": "1.1.13",
|
||||
"@formkit/auto-animate": "0.9.0",
|
||||
"@radix-ui/react-checkbox": "1.3.3",
|
||||
"@radix-ui/react-dropdown-menu": "2.1.16",
|
||||
"@radix-ui/react-popover": "1.1.15",
|
||||
"@radix-ui/react-progress": "1.1.8",
|
||||
"@radix-ui/react-radio-group": "1.3.6",
|
||||
"@radix-ui/react-slot": "1.2.2",
|
||||
"@radix-ui/react-radio-group": "1.3.8",
|
||||
"@radix-ui/react-slot": "1.2.4",
|
||||
"class-variance-authority": "0.7.1",
|
||||
"clsx": "2.1.1",
|
||||
"date-fns": "4.1.0",
|
||||
"isomorphic-dompurify": "2.33.0",
|
||||
"lucide-react": "0.507.0",
|
||||
"react-day-picker": "9.6.7",
|
||||
"tailwind-merge": "3.2.0"
|
||||
"isomorphic-dompurify": "2.36.0",
|
||||
"lucide-react": "0.576.0",
|
||||
"react-day-picker": "9.14.0",
|
||||
"tailwind-merge": "3.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@formbricks/config-typescript": "workspace:*",
|
||||
"@formbricks/eslint-config": "workspace:*",
|
||||
"@storybook/react": "8.5.4",
|
||||
"@storybook/react-vite": "8.5.4",
|
||||
"@tailwindcss/postcss": "4.0.0",
|
||||
"@tailwindcss/vite": "4.1.17",
|
||||
"@types/react": "19.2.1",
|
||||
"@types/react-dom": "19.2.1",
|
||||
"@vitejs/plugin-react": "4.3.4",
|
||||
"react": "19.2.1",
|
||||
"react-dom": "19.2.1",
|
||||
"rimraf": "6.0.1",
|
||||
"tailwindcss": "4.1.1",
|
||||
"@storybook/react": "8.6.17",
|
||||
"@storybook/react-vite": "8.6.17",
|
||||
"@tailwindcss/postcss": "4.2.1",
|
||||
"@tailwindcss/vite": "4.2.1",
|
||||
"@types/react": "19.2.14",
|
||||
"@types/react-dom": "19.2.3",
|
||||
"@vitejs/plugin-react": "4.7.0",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
"rimraf": "6.1.3",
|
||||
"tailwindcss": "4.2.1",
|
||||
"vite": "6.4.1",
|
||||
"vite-plugin-dts": "4.5.3",
|
||||
"vite-plugin-dts": "4.5.4",
|
||||
"vite-tsconfig-paths": "5.1.4",
|
||||
"@vitest/coverage-v8": "3.1.3",
|
||||
"vitest": "3.1.3"
|
||||
"@vitest/coverage-v8": "3.2.4",
|
||||
"vitest": "3.2.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "concurrently -n \"ESM,UMD\" \"vite build --watch --mode dev\" \"BUILD_UMD=true vite build --watch --mode dev\"",
|
||||
"build": "tsc && vite build && BUILD_UMD=true vite build",
|
||||
"build:analyze": "tsc && ANALYZE=true vite build",
|
||||
"build:dev": "tsc && vite build --mode dev",
|
||||
"build": "cross-env NODE_OPTIONS=--max-old-space-size=8192 tsc && cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build && cross-env NODE_OPTIONS=--max-old-space-size=8192 BUILD_UMD=true vite build",
|
||||
"build:analyze": "cross-env NODE_OPTIONS=--max-old-space-size=8192 tsc && cross-env NODE_OPTIONS=--max-old-space-size=8192 ANALYZE=true vite build",
|
||||
"build:dev": "cross-env NODE_OPTIONS=--max-old-space-size=8192 tsc && cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode dev",
|
||||
"go": "concurrently -n \"ESM,UMD\" \"vite build --watch --mode dev\" \"BUILD_UMD=true vite build --watch --mode dev\"",
|
||||
"lint": "eslint src --fix --ext .ts,.js,.tsx,.jsx",
|
||||
"preview": "vite preview",
|
||||
@@ -45,29 +45,29 @@
|
||||
"dependencies": {
|
||||
"@calcom/embed-snippet": "1.3.3",
|
||||
"@formbricks/survey-ui": "workspace:*",
|
||||
"i18next": "25.5.2",
|
||||
"i18next-icu": "2.4.0",
|
||||
"isomorphic-dompurify": "2.33.0",
|
||||
"preact": "10.28.2",
|
||||
"react-i18next": "15.7.3"
|
||||
"i18next": "25.8.13",
|
||||
"i18next-icu": "2.4.3",
|
||||
"isomorphic-dompurify": "2.36.0",
|
||||
"preact": "10.28.4",
|
||||
"react-i18next": "15.7.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@formbricks/config-typescript": "workspace:*",
|
||||
"@formbricks/eslint-config": "workspace:*",
|
||||
"@formbricks/i18n-utils": "workspace:*",
|
||||
"@formbricks/types": "workspace:*",
|
||||
"@preact/preset-vite": "2.10.1",
|
||||
"@tailwindcss/postcss": "4.1.17",
|
||||
"@preact/preset-vite": "2.10.3",
|
||||
"@tailwindcss/postcss": "4.2.1",
|
||||
"@testing-library/preact": "3.2.4",
|
||||
"@types/react": "19.1.4",
|
||||
"autoprefixer": "10.4.21",
|
||||
"concurrently": "9.1.2",
|
||||
"postcss": "8.5.3",
|
||||
"rollup-plugin-visualizer": "6.0.5",
|
||||
"tailwindcss": "4.1.17",
|
||||
"terser": "5.39.1",
|
||||
"@types/react": "19.2.14",
|
||||
"autoprefixer": "10.4.27",
|
||||
"concurrently": "9.2.1",
|
||||
"postcss": "8.5.8",
|
||||
"rollup-plugin-visualizer": "6.0.8",
|
||||
"tailwindcss": "4.2.1",
|
||||
"terser": "5.46.0",
|
||||
"vite": "6.4.1",
|
||||
"vite-plugin-dts": "4.5.3",
|
||||
"vite-plugin-dts": "4.5.4",
|
||||
"vite-tsconfig-paths": "5.1.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
"clean": "rimraf node_modules .turbo"
|
||||
},
|
||||
"dependencies": {
|
||||
"@prisma/client": "6.14.0",
|
||||
"@prisma/client": "6.19.2",
|
||||
"zod": "3.25.76",
|
||||
"zod-openapi": "4.2.4",
|
||||
"node-html-parser": "7.0.1"
|
||||
"node-html-parser": "7.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@formbricks/config-typescript": "workspace:*",
|
||||
|
||||
11346
pnpm-lock.yaml
generated
11346
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user