{ "name": "appflowy_web_app", "private": true, "version": "0.0.0", "type": "module", "scripts": { "dev": "pnpm run sync:i18n && vite", "dev:tauri": "pnpm run sync:i18n && vite", "build": "pnpm run sync:i18n && vite build", "build:tauri": "vite build", "lint:tauri": "pnpm run sync:i18n && tsc --noEmit && eslint --ext .js,.ts,.tsx . --ignore-path .eslintignore", "lint": "pnpm run sync:i18n && tsc --noEmit --project tsconfig.web.json && eslint --ext .js,.ts,.tsx . --ignore-path .eslintignore.web", "start": "vite preview --port 3000", "tauri:dev": "tauri dev", "css:variables": "node scripts/generateTailwindColors.cjs", "sync:i18n": "node scripts/i18n.cjs", "link:client-api": "rm -rf node_modules/.vite && node scripts/create-symlink.cjs", "analyze": "cross-env ANALYZE_MODE=true vite build", "cypress:open": "cypress open", "test": "pnpm run test:unit && pnpm run test:components", "test:components": "cypress run --component --browser chrome --headless", "test:unit": "jest --coverage", "test:cy": "cypress run", "coverage": "pnpm run test:unit && pnpm run test:components" }, "dependencies": { "@atlaskit/primitives": "^5.5.3", "@emoji-mart/data": "^1.1.2", "@emoji-mart/react": "^1.1.1", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", "@jest/globals": "^29.7.0", "@mui/icons-material": "^5.11.11", "@mui/material": "6.0.0-alpha.2", "@mui/x-date-pickers-pro": "^6.18.2", "@reduxjs/toolkit": "2.0.0", "@slate-yjs/core": "^1.0.2", "@tauri-apps/api": "^1.5.3", "@types/react-swipeable-views": "^0.13.4", "async-retry": "^1.3.3", "axios": "^1.6.8", "colorthief": "^2.4.0", "dayjs": "^1.11.9", "decimal.js": "^10.4.3", "dexie": "^4.0.7", "dexie-react-hooks": "^1.1.7", "emoji-mart": "^5.5.2", "emoji-regex": "^10.2.1", "events": "^3.3.0", "google-protobuf": "^3.15.12", "highlight.js": "^11.10.0", "i18next": "^22.4.10", "i18next-browser-languagedetector": "^7.0.1", "i18next-resources-to-backend": "^1.1.4", "is-hotkey": "^0.2.0", "jest": "^29.5.0", "js-base64": "^3.7.5", "katex": "^0.16.7", "lodash-es": "^4.17.21", "nanoid": "^4.0.0", "notistack": "^3.0.1", "numeral": "^2.0.6", "prismjs": "^1.29.0", "protoc-gen-ts": "0.8.7", "quill": "^1.3.7", "quill-delta": "^5.1.0", "react": "^18.2.0", "react-beautiful-dnd": "^13.1.1", "react-big-calendar": "^1.8.5", "react-color": "^2.19.3", "react-custom-scrollbars": "^4.2.1", "react-custom-scrollbars-2": "^4.5.0", "react-datepicker": "^4.23.0", "react-dom": "^18.2.0", "react-error-boundary": "^4.0.13", "react-hook-form": "^7.52.2", "react-hot-toast": "^2.4.1", "react-i18next": "^14.1.0", "react-katex": "^3.0.1", "react-measure": "^2.5.2", "react-redux": "^8.0.5", "react-router-dom": "^6.22.3", "react-swipeable-views": "^0.14.0", "react-transition-group": "^4.4.5", "react-virtualized-auto-sizer": "^1.0.20", "react-vtree": "^2.0.4", "react-window": "^1.8.10", "react18-input-otp": "^1.1.2", "redux": "^4.2.1", "rxjs": "^7.8.0", "sass": "^1.70.0", "slate": "^0.101.4", "slate-history": "^0.100.0", "slate-react": "^0.101.3", "smooth-scroll-into-view-if-needed": "^2.0.2", "ts-results": "^3.3.0", "unsplash-js": "^7.0.19", "utf8": "^3.0.0", "validator": "^13.11.0", "vite-plugin-wasm": "^3.3.0", "y-indexeddb": "9.0.12", "yjs": "14.0.0-1" }, "devDependencies": { "@babel/preset-env": "^7.24.7", "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", "@cypress/code-coverage": "^3.12.39", "@istanbuljs/nyc-config-babel": "^3.0.0", "@istanbuljs/nyc-config-typescript": "^1.0.2", "@svgr/plugin-svgo": "^8.0.1", "@tauri-apps/cli": "^1.5.11", "@testing-library/react": "^16.0.0", "@types/google-protobuf": "^3.15.12", "@types/is-hotkey": "^0.1.7", "@types/jest": "^29.5.3", "@types/katex": "^0.16.0", "@types/lodash-es": "^4.17.11", "@types/node": "^20.11.30", "@types/numeral": "^2.0.5", "@types/prismjs": "^1.26.0", "@types/quill": "^2.0.10", "@types/react": "^18.2.66", "@types/react-beautiful-dnd": "^13.1.3", "@types/react-big-calendar": "^1.8.9", "@types/react-color": "^3.0.6", "@types/react-custom-scrollbars": "^4.0.13", "@types/react-datepicker": "^4.19.3", "@types/react-dom": "^18.2.22", "@types/react-katex": "^3.0.0", "@types/react-measure": "^2.0.12", "@types/react-transition-group": "^4.4.6", "@types/react-window": "^1.8.8", "@types/utf8": "^3.0.1", "@types/uuid": "^9.0.1", "@types/validator": "^13.11.9", "@typescript-eslint/eslint-plugin": "^7.2.0", "@typescript-eslint/parser": "^7.2.0", "@vitejs/plugin-react": "^4.2.1", "autoprefixer": "^10.4.13", "axios-mock-adapter": "^2.0.0", "babel-jest": "^29.6.2", "chalk": "^4.1.2", "cheerio": "1.0.0-rc.12", "cross-env": "^7.0.3", "cypress": "^13.7.2", "eslint": "^8.57.0", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.6", "istanbul-lib-coverage": "^3.2.2", "jest-environment-jsdom": "^29.6.2", "nyc": "^15.1.0", "pino": "^9.2.0", "pino-pretty": "^11.2.1", "postcss": "^8.4.21", "prettier": "2.8.4", "prettier-plugin-tailwindcss": "^0.2.2", "rollup-plugin-visualizer": "^5.12.0", "style-dictionary": "^3.9.2", "tailwindcss": "^3.2.7", "ts-jest": "^29.1.1", "ts-node-dev": "^2.0.0", "tsconfig-paths-jest": "^0.0.1", "typescript": "4.9.5", "uuid": "^9.0.0", "vite": "^5.2.0", "vite-plugin-compression2": "^1.0.0", "vite-plugin-importer": "^0.2.5", "vite-plugin-istanbul": "^6.0.2", "vite-plugin-svgr": "^3.2.0", "vite-plugin-terminal": "^1.2.0", "vite-plugin-total-bundle-size": "^1.0.7" } }