{ "peerDependencies": { "react": "^17.0.2 || ^18.2.0", "react-dom": "^17.0.2 || ^18.2.0" }, "resolutions": { "@types/react": "18.0.15", "@types/react-dom": "18.0.6" }, "dependencies": { "@braintree/sanitize-url": "6.0.2", "@excalidraw/laser-pointer": "1.2.0", "@excalidraw/mermaid-to-excalidraw": "0.2.0", "@excalidraw/random-username": "1.1.0", "@radix-ui/react-popover": "1.0.3", "@radix-ui/react-tabs": "1.0.2", "@testing-library/jest-dom": "5.16.2", "@testing-library/react": "12.1.5", "@tldraw/vec": "1.7.1", "browser-fs-access": "0.29.1", "canvas-roundrect-polyfill": "0.0.1", "clsx": "1.1.1", "cross-env": "7.0.3", "eslint-plugin-react": "7.32.2", "fake-indexeddb": "3.1.7", "image-blob-reduce": "3.0.1", "jotai": "1.13.1", "lodash.throttle": "4.1.1", "nanoid": "3.3.3", "open-color": "1.9.1", "pako": "1.0.11", "perfect-freehand": "1.2.0", "pica": "7.1.1", "png-chunk-text": "1.0.0", "png-chunks-encode": "1.0.0", "png-chunks-extract": "1.0.0", "points-on-curve": "1.0.1", "pwacompat": "2.0.17", "react": "18.2.0", "react-dom": "18.2.0", "roughjs": "4.6.4", "sass": "1.51.0", "tunnel-rat": "0.1.2" }, "devDependencies": { "@excalidraw/eslint-config": "1.0.3", "@excalidraw/prettier-config": "1.0.2", "@types/chai": "4.3.0", "@types/jest": "27.4.0", "@types/lodash.throttle": "4.1.7", "@types/pako": "1.0.3", "@types/pica": "5.1.3", "@types/react": "18.0.15", "@types/react-dom": "18.0.6", "@types/resize-observer-browser": "0.1.7", "@vitejs/plugin-react": "3.1.0", "@vitest/coverage-v8": "0.33.0", "@vitest/ui": "0.32.2", "chai": "4.3.6", "dotenv": "16.0.1", "eslint-config-prettier": "8.5.0", "eslint-config-react-app": "7.0.1", "eslint-plugin-prettier": "3.3.1", "http-server": "14.1.1", "husky": "7.0.4", "jsdom": "22.1.0", "lint-staged": "12.3.7", "pepjs": "0.5.3", "prettier": "2.6.2", "rewire": "6.0.0", "typescript": "4.9.4", "vite": "5.0.6", "vite-plugin-checker": "0.6.1", "vite-plugin-ejs": "1.7.0", "vite-plugin-pwa": "0.17.4", "vite-plugin-svgr": "2.4.0", "vitest": "1.0.1", "vitest-canvas-mock": "0.3.2" }, "engines": { "node": "18.0.0 - 20.x.x" }, "homepage": ".", "name": "excalidraw", "prettier": "@excalidraw/prettier-config", "private": true, "scripts": { "build-node": "node ./scripts/build-node.js", "build:app:docker": "cross-env VITE_APP_DISABLE_SENTRY=true VITE_APP_DISABLE_TRACKING=true vite build", "build:app": "cross-env VITE_APP_GIT_SHA=$VERCEL_GIT_COMMIT_SHA vite build", "build:version": "node ./scripts/build-version.js", "build": "yarn --cwd ./excalidraw-app build", "fix:code": "yarn test:code --fix", "fix:other": "yarn prettier --write", "fix": "yarn fix:other && yarn fix:code", "install:deps": "yarn install --frozen-lockfile && yarn --frozen-lockfile --cwd ./excalidraw-app", "locales-coverage": "node scripts/build-locales-coverage.js", "locales-coverage:description": "node scripts/locales-coverage-description.js", "prepare": "husky install", "prettier": "prettier \"**/*.{css,scss,json,md,html,yml}\" --ignore-path=.eslintignore", "start": "yarn --cwd ./excalidraw-app start", "start:app:production": "npm run build && npx http-server build -a localhost -p 5001 -o", "test:all": "yarn test:typecheck && yarn test:code && yarn test:other && yarn test:app --watch=false", "test:app": "vitest", "test:code": "eslint --max-warnings=0 --ext .js,.ts,.tsx .", "test:other": "yarn prettier --list-different", "test:typecheck": "tsc", "test:update": "yarn test:app --update --watch=false", "test": "yarn test:app", "test:coverage": "vitest --coverage", "test:coverage:watch": "vitest --coverage --watch", "test:ui": "yarn test --ui --coverage.enabled=true", "autorelease": "node scripts/autorelease.js", "prerelease:excalidraw": "node scripts/prerelease.js", "build:preview": "yarn build && vite preview --port 5000", "release:excalidraw": "node scripts/release.js" } }