{ "name": "suite-web", "private": true, "scripts": { "dev": "yarn build:shared && node scripts/prepare-assets.mjs && next dev --webpack --port 3003", "build": "yarn build:shared && node scripts/prepare-assets.mjs && next build --webpack", "start": "next start --port 3003", "typecheck": "yarn build:shared && node scripts/prepare-assets.mjs && npx tsgo -p tsconfig.json --noEmit", "lint": "npx oxlint -c .oxlintrc.json src scripts next.config.ts && npx oxfmt --check .", "test": "node scripts/prepare-assets.mjs && npx jest --config jest.config.mjs --runInBand", "build:shared": "yarn workspaces foreach --all --include suite-core --include suite-ui --parallel --jobs 2 run build", "smoke": "node scripts/smoke.mjs", "smoke:auth": "node scripts/smoke-auth.mjs", "db:generate": "drizzle-kit generate", "db:migrate": "node --env-file-if-exists=.env.local --conditions=react-server --import tsx scripts/migrate.ts", "test:server": "node --conditions=react-server --import tsx --test src/server/*.spec.ts", "test:database": "node scripts/test-database.mjs", "check:boundaries": "node scripts/check-boundaries.mjs" }, "dependencies": { "@aws-sdk/client-s3": "^3.0.0", "@aws-sdk/s3-request-presigner": "^3.0.0", "@babel/runtime": "^7.29.7", "@linaria/core": "^7.0.0", "@linaria/react": "^7.0.1", "@lingui/core": "^5.9.5", "@lingui/react": "^5.9.5", "@neon/auth": "0.8.0", "@neon/realtime": "0.1.2", "@pdf-lib/fontkit": "1.1.1", "@tesseract.js-data/eng": "1.0.0", "@tesseract.js-data/fra": "1.0.0", "@tiptap/core": "3.32.1", "@tiptap/extension-blockquote": "3.32.1", "@tiptap/extension-bold": "3.32.1", "@tiptap/extension-code": "3.32.1", "@tiptap/extension-code-block": "3.32.1", "@tiptap/extension-collaboration": "3.32.1", "@tiptap/extension-collaboration-caret": "3.32.1", "@tiptap/extension-document": "3.32.1", "@tiptap/extension-hard-break": "3.32.1", "@tiptap/extension-heading": "3.32.1", "@tiptap/extension-horizontal-rule": "3.32.1", "@tiptap/extension-italic": "3.32.1", "@tiptap/extension-link": "3.32.1", "@tiptap/extension-list": "3.32.1", "@tiptap/extension-paragraph": "3.32.1", "@tiptap/extension-strike": "3.32.1", "@tiptap/extension-table": "3.32.1", "@tiptap/extension-text": "3.32.1", "@tiptap/extension-underline": "3.32.1", "@tiptap/extensions": "3.32.1", "@tiptap/pm": "3.32.1", "@tiptap/react": "3.32.1", "@tiptap/y-tiptap": "3.0.11", "@vercel/functions": "3.10.4", "drizzle-orm": "0.45.4", "lib0": "^0.2.114", "next": "16.4.3", "next-with-linaria": "^1.3.0", "pdf-lib": "1.17.1", "pdfjs-dist": "6.4.299", "pg": "8.23.1", "prosemirror-model": "1.25.12", "prosemirror-state": "1.4.4", "prosemirror-view": "1.42.8", "react": "^19.2.0", "react-dom": "^19.2.0", "server-only": "0.0.1", "suite-core": "workspace:*", "suite-public": "workspace:*", "suite-ui": "workspace:*", "temporal-polyfill": "0.3.0", "tesseract.js": "7.0.0", "y-protocols": "1.0.7", "yjs": "13.6.33", "zod": "^4.6.6" }, "devDependencies": { "@babel/core": "^7.28.5", "@babel/parser": "^7.28.5", "@babel/plugin-transform-export-namespace-from": "^7.24.6", "@babel/preset-react": "^7.24.6", "@babel/preset-typescript": "^7.24.6", "@lingui/babel-plugin-lingui-macro": "^5.9.5", "@lingui/cli": "^5.9.5", "@lingui/conf": "^5.9.5", "@swc/core": "^1.15.11", "@swc/jest": "^0.2.39", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", "@types/jest": "^30.0.0", "@types/node": "^20", "@types/pg": "^8.23.1", "@types/react": "^19.2.0", "@types/react-dom": "^19.2.0", "@typescript/native-preview": "^7.0.0-dev.20260116.1", "@wyw-in-js/babel-preset": "^0.8.1", "@wyw-in-js/transform": "^0.8.1", "babel-loader": "^10.1.1", "drizzle-kit": "0.31.11", "glob": "^11.1.0", "jest": "29.7.0", "jest-environment-jsdom": "30.0.0-beta.3", "tsx": "^4.23.15" }, "engines": { "node": "24.x" } }