Files
AppFlowy-Web/package.json
2025-11-23 13:39:11 +08:00

295 lines
13 KiB
JSON

{
"name": "appflowy_web_app",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"dev:coverage": "cross-env COVERAGE=true vite",
"build": "vite build",
"clean": "rm -rf dist storybook-static coverage .nyc_output node_modules/.vite node_modules/.cache",
"type-check": "tsc --noEmit --project tsconfig.web.json",
"type-check:watch": "tsc --build --watch",
"lint": "pnpm type-check && eslint --quiet --ext .js,.ts,.tsx . --ignore-path .eslintignore.web",
"start": "vite preview --port 3000",
"css:variables": "node scripts/generateTailwindColors.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:unit:coverage": "cross-env COVERAGE=true jest --coverage",
"test:http-api": "jest src/application/services/js-services/http/__tests__/*.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:coverage": "jest src/application/services/js-services/http/__tests__/*.integration.test.ts --coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:auth": "jest src/application/services/js-services/http/__tests__/auth.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:workspace": "jest src/application/services/js-services/http/__tests__/workspace.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:user-profile": "jest src/application/services/js-services/http/__tests__/user-profile.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:page": "jest src/application/services/js-services/http/__tests__/page.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:view": "jest src/application/services/js-services/http/__tests__/view.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:trash": "jest src/application/services/js-services/http/__tests__/trash.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:publish": "jest src/application/services/js-services/http/__tests__/publish.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:template": "jest src/application/services/js-services/http/__tests__/template.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:invitation": "jest src/application/services/js-services/http/__tests__/invitation.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:collab": "jest src/application/services/js-services/http/__tests__/collab.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:subscription": "jest src/application/services/js-services/http/__tests__/subscription.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:file-import": "jest src/application/services/js-services/http/__tests__/file-import.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:http-api:quick-note": "jest src/application/services/js-services/http/__tests__/quick-note.integration.test.ts --no-coverage --maxWorkers=1 --testPathIgnorePatterns=/node_modules/",
"test:components:coverage": "cross-env COVERAGE=true cypress run --component --browser chrome --headless",
"test:cy": "cypress run",
"test:cy:chrome": "cypress run --browser chrome --headed",
"test:cy:chrome:windowed": "ELECTRON_EXTRA_LAUNCH_ARGS='--window-size=1440,900 --window-position=100,100' cypress run --browser chrome --headed",
"test:integration": "cypress run --spec 'cypress/e2e/**/*.cy.ts'",
"coverage": "cross-env COVERAGE=true pnpm run test:unit && cross-env COVERAGE=true pnpm run test:components",
"generate-tokens": "node scripts/system-token/convert-tokens.cjs",
"generate-protobuf": "pbjs -t static-module -w es6 -o ./src/proto/messages.js ./src/proto/messages.proto & pbts -o ./src/proto/messages.d.ts ./src/proto/messages.js",
"storybook": "storybook dev -p 6006",
"build-storybook": "storybook build"
},
"dependencies": {
"@appflowyinc/editor": "^0.1.13",
"@atlaskit/pragmatic-drag-and-drop": "1.5.2",
"@atlaskit/pragmatic-drag-and-drop-auto-scroll": "2.1.0",
"@atlaskit/pragmatic-drag-and-drop-flourish": "2.0.2",
"@atlaskit/pragmatic-drag-and-drop-hitbox": "1.0.3",
"@atlaskit/pragmatic-drag-and-drop-live-region": "1.3.0",
"@atlaskit/pragmatic-drag-and-drop-react-accessibility": "2.0.3",
"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator": "3.1.0",
"@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",
"@floating-ui/react": "^0.26.27",
"@fullcalendar/core": "^6.1.19",
"@fullcalendar/daygrid": "^6.1.19",
"@fullcalendar/interaction": "^6.1.19",
"@fullcalendar/multimonth": "^6.1.19",
"@fullcalendar/react": "^6.1.19",
"@fullcalendar/timegrid": "^6.1.19",
"@jest/globals": "^29.7.0",
"@mui/icons-material": "^5.11.11",
"@mui/material": "^6.0.0",
"@mui/x-date-pickers-pro": "^6.18.2",
"@radix-ui/react-alert-dialog": "^1.1.15",
"@radix-ui/react-avatar": "^1.1.3",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "2.1.16",
"@radix-ui/react-label": "^2.1.2",
"@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.2",
"@radix-ui/react-slot": "^1.1.2",
"@radix-ui/react-switch": "^1.2.2",
"@radix-ui/react-tabs": "^1.1.9",
"@radix-ui/react-tooltip": "^1.1.8",
"@reduxjs/toolkit": "2.0.0",
"@slate-yjs/core": "^1.0.2",
"@tanstack/react-virtual": "^3.13.6",
"@types/big.js": "^6.2.2",
"@types/hast": "^3.0.4",
"@types/mdast": "^4.0.4",
"@types/react-swipeable-views": "^0.13.4",
"async-retry": "^1.3.3",
"axios": "^1.9.0",
"big.js": "^7.0.1",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"colorthief": "^2.4.0",
"cypress-file-upload": "^5.0.8",
"cypress-plugin-api": "^2.11.2",
"date-fns": "^4.1.0",
"date-fns-tz": "^3.2.0",
"dayjs": "^1.11.9",
"dexie": "^4.0.7",
"dexie-react-hooks": "^1.1.7",
"dompurify": "^3.1.7",
"downloadjs": "^1.4.7",
"emoji-mart": "^5.5.2",
"emoji-regex": "^10.2.1",
"escape-string-regexp": "^5.0.0",
"events": "^3.3.0",
"framer-motion": "^12.6.3",
"google-protobuf": "^3.15.12",
"hast-util-to-mdast": "^10.1.0",
"highlight.js": "^11.10.0",
"html-parse-stringify": "^3.0.1",
"i18next": "^22.4.10",
"i18next-browser-languagedetector": "^7.0.1",
"i18next-resources-to-backend": "^1.1.4",
"is-hotkey": "^0.2.0",
"isomorphic-dompurify": "^2.32.0",
"jest": "^29.5.0",
"js-base64": "^3.7.5",
"js-md5": "^0.8.3",
"katex": "^0.16.7",
"lib0": "^0.2.109",
"lightgallery": "^2.7.2",
"lodash-es": "^4.17.21",
"lucide-react": "^0.485.0",
"mdast-util-to-hast": "^13.2.0",
"mermaid": "^11.4.1",
"nanoid": "^4.0.0",
"next-themes": "^0.4.6",
"notistack": "^3.0.1",
"numeral": "^2.0.6",
"prismjs": "^1.29.0",
"protobufjs": "^7.5.3",
"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-colorful": "^5.6.1",
"react-custom-scrollbars": "^4.2.1",
"react-custom-scrollbars-2": "^4.5.0",
"react-datepicker": "^4.23.0",
"react-day-picker": "8.10.1",
"react-dom": "^18.2.0",
"react-error-boundary": "^4.0.13",
"react-grid-dnd": "^2.1.2",
"react-helmet": "^6.1.0",
"react-hook-form": "^7.52.2",
"react-hot-toast": "^2.4.1",
"react-i18next": "^14.1.0",
"react-infinite-scroll-component": "^6.1.0",
"react-katex": "^3.0.1",
"react-measure": "^2.5.2",
"react-player": "^2.16.0",
"react-redux": "^8.0.5",
"react-router-dom": "^6.22.3",
"react-swipeable-views": "^0.14.0",
"react-transition-group": "^4.4.5",
"react-use-websocket": "^4.13.0",
"react-virtualized-auto-sizer": "^1.0.20",
"react-vtree": "^2.0.4",
"react-window": "^1.8.10",
"react-zoom-pan-pinch": "^3.6.1",
"react18-input-otp": "^1.1.2",
"redux": "^4.2.1",
"rehype-parse": "^9.0.1",
"remark-gfm": "^4.0.1",
"remark-parse": "^11.0.0",
"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",
"sonner": "^2.0.3",
"tailwind-merge": "^3.0.2",
"ts-results": "^3.3.0",
"tw-animate-css": "^1.2.5",
"unified": "^11.0.5",
"unist": "^0.0.1",
"unist-util-visit": "^5.0.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",
"y-protocols": "^1.0.6",
"yjs": "14.0.0-1"
},
"devDependencies": {
"@babel/preset-env": "^7.24.7",
"@babel/preset-react": "^7.24.7",
"@babel/preset-typescript": "^7.24.7",
"@chromatic-com/storybook": "^4.1.2",
"@cypress/code-coverage": "^3.12.39",
"@istanbuljs/nyc-config-babel": "^3.0.0",
"@istanbuljs/nyc-config-typescript": "^1.0.2",
"@storybook/addon-a11y": "^10.0.7",
"@storybook/addon-docs": "^10.0.7",
"@storybook/addon-onboarding": "^10.0.7",
"@storybook/addon-vitest": "^10.0.7",
"@storybook/react": "^10.0.7",
"@storybook/react-vite": "^10.0.7",
"@svgr/plugin-svgo": "^8.0.1",
"@testing-library/react": "^16.0.0",
"@types/cypress-image-snapshot": "^3.1.9",
"@types/dompurify": "^3.0.5",
"@types/downloadjs": "^1.4.6",
"@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-helmet": "^6.1.11",
"@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",
"cypress-image-snapshot": "^4.0.1",
"cypress-real-events": "^1.13.0",
"dotenv": "^17.2.1",
"eslint": "^8.57.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-react": "^7.32.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.6",
"eslint-plugin-unused-imports": "^4.1.4",
"istanbul-lib-coverage": "^3.2.2",
"jest-environment-jsdom": "^29.6.2",
"jest-node-exports-resolver": "^1.1.6",
"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",
"protobufjs-cli": "^1.1.3",
"rollup-plugin-visualizer": "^5.12.0",
"storybook": "^10.0.7",
"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-externals": "^0.6.2",
"vite-plugin-html": "^3.2.2",
"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"
},
"engines": {
"node": ">=20.0.0",
"npm": ">=8.0.0",
"pnpm": "^10.9.0"
},
"packageManager": "pnpm@10.9.0+sha512.0486e394640d3c1fb3c9d43d49cf92879ff74f8516959c235308f5a8f62e2e19528a65cdc2a3058f587cde71eba3d5b56327c8c33a97e4c4051ca48a10ca2d5f"
}