{ "name": "@pybricks/pybricks-code", "version": "2.3.0-beta.1", "license": "MIT", "author": "The Pybricks Authors", "repository": { "type": "git", "url": "https://github.com/pybricks/pybricks-code" }, "dependencies": { "@babel/core": "^7.23.9", "@blueprintjs/core": "^5.8.2", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", "@pybricks/firmware": "7.31.0", "@pybricks/ide-docs": "2.20.0", "@pybricks/images": "^1.4.0", "@pybricks/jedi": "1.17.0", "@pybricks/mpy-cross-v5": "^2.0.0", "@pybricks/mpy-cross-v6": "^2.0.0", "@pybricks/python-program-analysis": "^2.0.0", "@pyodide/webpack-plugin": "^1.3.2", "@reduxjs/toolkit": "^1.9.7", "@shopify/react-i18n": "^7.13.1", "@svgr/webpack": "^8.1.0", "@testing-library/dom": "^9.3.4", "@testing-library/jest-dom": "^6.4.0", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.5.2", "@types/file-saver": "^2.0.7", "@types/jest": "^29.5.11", "@types/node": "^18.19.14", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@types/react-transition-group": "^4.4.10", "@types/redux-logger": "^3.0.12", "@types/semver": "^7.5.6", "@types/w3c-web-hid": "^1.0.6", "@types/w3c-web-usb": "^1.0.11", "@types/web-bluetooth": "^0.0.20", "@types/web-locks-api": "^0.0.5", "@types/wicg-file-system-access": "^2023.10.4", "@types/zen-push": "^0.1.4", "babel-jest": "^29.7.0", "babel-loader": "^9.1.3", "babel-plugin-macros": "^3.0.1", "babel-plugin-named-asset-import": "^0.3.8", "babel-plugin-transform-import-meta": "^2.2.1", "babel-preset-react-app": "^10.0.1", "bfj": "^8.0.0", "browser-fs-access": "^0.35.0", "browserslist": "^4.22.2", "camelcase": "^8.0.0", "canvas": "^2.11.2", "case-sensitive-paths-webpack-plugin": "^2.4.0", "copy-webpack-plugin": "^12.0.2", "css-loader": "^6.9.1", "css-minimizer-webpack-plugin": "^6.0.0", "dexie": "^3.2.4", "dexie-observable": "^4.0.0-beta.13", "dexie-react-hooks": "^1.1.7", "dfu": "^0.1.5", "dotenv": "^16.4.0", "dotenv-expand": "^10.0.0", "fake-indexeddb": "^5.0.2", "file-loader": "^6.2.0", "fs-extra": "^11.2.0", "html-webpack-plugin": "^5.6.0", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-mock-extended": "^3.0.5", "jest-resolve": "^29.7.0", "jest-watch-typeahead": "^2.2.2", "jszip": "^3.10.1", "license-webpack-plugin": "^3.0.0", "mini-css-extract-plugin": "^2.7.7", "monaco-editor": "^0.45.0", "monaco-editor-webpack-plugin": "^7.1.0", "monaco-themes": "^0.4.4", "mq-polyfill": "1.1.8", "navigator.locks": "^0.8.6", "postcss": "^8.4.33", "postcss-flexbugs-fixes": "^5.0.2", "postcss-loader": "^8.0.0", "postcss-normalize": "^10.0.1", "postcss-preset-env": "^9.3.0", "prompts": "^2.4.2", "prop-types": "^15.8.1", "pyodide": "0.24.1", "react": "^18.2.0", "react-app-polyfill": "^3.0.0", "react-aria": "^3.31.0", "react-complex-tree": "^2.3.4", "react-dev-utils": "^12.0.1", "react-dom": "^18.2.0", "react-dropzone": "^14.2.3", "react-joyride": "^2.7.2", "react-popper": "^2.3.0", "react-redux": "^8.1.3", "react-refresh": "^0.14.0", "react-resizable-panels": "^4.8.0", "redux": "^4.2.1", "redux-logger": "^3.0.6", "redux-saga": "^1.3.0", "resolve": "^1.22.8", "resolve-url-loader": "^5.0.0", "sass": "^1.69.7", "sass-loader": "^14.1.0", "semver": "^7.5.4", "source-map-explorer": "^2.5.3", "source-map-loader": "^5.0.0", "spdx-satisfies": "^5.0.0", "style-loader": "^3.3.4", "tailwindcss": "^3.4.1", "terser-webpack-plugin": "^5.3.10", "two.js": "^0.8.12", "typed-redux-saga": "^1.5.0", "typescript": "~4.9.5", "usehooks-ts": "^2.9.1", "user-agent-data-types": "^0.4.2", "web-vitals": "^3.5.2", "webpack": "^5.90.0", "webpack-dev-server": "^4.15.1", "webpack-manifest-plugin": "^5.0.0", "workbox-webpack-plugin": "^7.0.0", "xterm": "^5.4.0-beta.37", "xterm-addon-fit": "^0.8.0", "zen-push": "^0.3.1" }, "scripts": { "analyze": "source-map-explorer 'build/static/js/*.js'", "start": "node scripts/start.js", "build": "node scripts/build.js", "test": "node scripts/test.js", "coverage": "yarn test --coverage --watchAll=false", "coverage:html": "yarn coverage --coverageReporters html", "lint": "tsc --noEmit && eslint \"*/**/*.{js,ts,tsx}\" --quiet --fix" }, "eslintConfig": { "extends": "react-app" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^6.18.1", "@typescript-eslint/parser": "^6.20.0", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-config-react-app": "^7.0.1", "eslint-config-typed-fp": "^4.4.0", "eslint-plugin-functional": "^5.0.8", "eslint-plugin-import": "^2.29.1", "eslint-plugin-prettier": "^5.1.2", "eslint-plugin-react": "^7.33.2", "eslint-plugin-total-functions": "^6.10.5", "eslint-webpack-plugin": "^4.0.1", "prettier": "^3.1.1" }, "packageManager": "yarn@3.3.0", "resolutions": { "mq-polyfill@1.1.8": "patch:mq-polyfill@npm:1.1.8#.yarn/patches/mq-polyfill-npm-1.1.8-62fe162439.patch", "react-error-overlay": "6.0.9", "react-dev-utils@^12.0.1": "patch:react-dev-utils@npm:12.0.1#.yarn/patches/react-dev-utils-npm-12.0.1-83ba06e3ee.patch", "jsdom@^20.0.0": "patch:jsdom@npm%3A20.0.0#./.yarn/patches/jsdom-npm-20.0.0-9c1ad43ab8.patch", "pyodide@0.23.0": "patch:pyodide@npm%3A0.23.0#./.yarn/patches/pyodide-npm-0.23.0-64dc9bd6f1.patch" }, "jest": { "roots": [ "/src" ], "collectCoverageFrom": [ "src/**/*.{js,jsx,ts,tsx}", "!src/**/*.d.ts" ], "setupFiles": [ "react-app-polyfill/jsdom" ], "setupFilesAfterEnv": [ "/src/setupTests.ts" ], "testMatch": [ "/src/**/__tests__/**/*.{js,jsx,ts,tsx}", "/src/**/*.{spec,test}.{js,jsx,ts,tsx}" ], "testEnvironment": "./test/env", "transform": { "^.+\\.(js|jsx|mjs|cjs|ts|tsx)$": "/config/jest/babelTransform.js", "^.+\\.css$": "/config/jest/cssTransform.js", "^(?!.*\\.(js|jsx|mjs|cjs|ts|tsx|css|json)$)": "/config/jest/fileTransform.mjs" }, "transformIgnorePatterns": [ "[/\\\\]node_modules[/\\\\](?!(monaco-editor|nanoevents)[/\\\\]).+\\.(js|jsx|mjs|cjs|ts|tsx)$", "^.+\\.module\\.(css|sass|scss)$" ], "modulePaths": [], "moduleNameMapper": { "^monaco-editor$": "monaco-editor/esm/vs/editor/editor.api", "^react-native$": "react-native-web", "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy" }, "moduleFileExtensions": [ "web.js", "js", "web.ts", "ts", "web.tsx", "tsx", "json", "web.jsx", "jsx", "node" ], "watchPlugins": [ "jest-watch-typeahead/filename", "jest-watch-typeahead/testname" ], "resetMocks": true }, "babel": { "presets": [ "react-app" ] } }