{ "browserslist": { "production": [ ">0.2%", "not dead", "not ie <= 11", "not op_mini all", "not safari < 12", "not kaios <= 2.5", "not edge < 79", "not chrome < 70", "not and_uc < 13", "not samsung < 10" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "dependencies": { "@sentry/browser": "6.2.5", "@sentry/integrations": "6.2.5", "@testing-library/jest-dom": "5.16.2", "@testing-library/react": "12.1.2", "@tldraw/vec": "1.4.3", "@types/jest": "27.4.0", "@types/pica": "5.1.3", "@types/react": "17.0.39", "@types/react-dom": "17.0.11", "@types/socket.io-client": "1.4.36", "browser-fs-access": "0.29.1", "clsx": "1.1.1", "fake-indexeddb": "3.1.7", "firebase": "8.3.3", "i18next-browser-languagedetector": "6.1.2", "idb-keyval": "6.0.3", "image-blob-reduce": "3.0.1", "jotai": "1.6.4", "lodash.throttle": "4.1.1", "nanoid": "3.3.3", "open-color": "1.9.1", "pako": "1.0.11", "perfect-freehand": "1.0.16", "png-chunk-text": "1.0.0", "png-chunks-encode": "1.0.0", "png-chunks-extract": "1.0.0", "points-on-curve": "0.2.0", "pwacompat": "2.0.17", "react": "17.0.2", "react-dom": "17.0.2", "react-scripts": "4.0.3", "roughjs": "4.5.2", "sass": "1.49.7", "socket.io-client": "2.3.1", "typescript": "4.5.5" }, "devDependencies": { "@excalidraw/eslint-config": "1.0.0", "@excalidraw/prettier-config": "1.0.2", "@types/chai": "4.3.0", "@types/lodash.throttle": "4.1.6", "@types/pako": "1.0.3", "@types/resize-observer-browser": "0.1.6", "chai": "4.3.6", "dotenv": "10.0.0", "eslint-config-prettier": "8.3.0", "eslint-plugin-prettier": "3.3.1", "husky": "7.0.4", "jest-canvas-mock": "2.3.1", "lint-staged": "12.3.7", "pepjs": "0.5.3", "prettier": "2.5.1", "rewire": "5.0.0" }, "resolutions": { "@typescript-eslint/typescript-estree": "5.10.2" }, "engines": { "node": ">=14.0.0" }, "homepage": ".", "jest": { "transformIgnorePatterns": [ "node_modules/(?!(roughjs|points-on-curve|path-data-parser|points-on-path|browser-fs-access)/)" ], "resetMocks": false }, "name": "excalidraw", "prettier": "@excalidraw/prettier-config", "private": true, "scripts": { "build-node": "node ./scripts/build-node.js", "build:app:docker": "REACT_APP_DISABLE_SENTRY=true react-scripts build", "build:app": "REACT_APP_GIT_SHA=$VERCEL_GIT_COMMIT_SHA react-scripts build", "build:version": "node ./scripts/build-version.js", "build": "yarn build:app && yarn build:version", "eject": "react-scripts eject", "fix:code": "yarn test:code --fix", "fix:other": "yarn prettier --write", "fix": "yarn fix:other && yarn fix:code", "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": "react-scripts start", "test:all": "yarn test:typecheck && yarn test:code && yarn test:other && yarn test:app --watchAll=false", "test:app": "react-scripts test --passWithNoTests", "test:code": "eslint --max-warnings=0 --ext .js,.ts,.tsx .", "test:debug": "react-scripts --inspect-brk test --runInBand --no-cache", "test:other": "yarn prettier --list-different", "test:typecheck": "tsc", "test:update": "yarn test:app --updateSnapshot --watchAll=false", "test": "yarn test:app", "autorelease": "node scripts/autorelease.js" } }