{
    "name": "@pybricks/pybricks-code",
    "version": "2.2.0-rc.1",
    "license": "MIT",
    "author": "The Pybricks Authors",
    "repository": {
        "type": "git",
        "url": "https://github.com/pybricks/pybricks-code"
    },
    "dependencies": {
        "@babel/core": "^7.23.3",
        "@blueprintjs/core": "^5.6.0",
        "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
        "@pybricks/firmware": "7.9.0",
        "@pybricks/ide-docs": "2.11.0",
        "@pybricks/images": "^1.3.0",
        "@pybricks/jedi": "1.11.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.8.0",
        "@svgr/webpack": "^8.1.0",
        "@testing-library/dom": "^9.3.3",
        "@testing-library/jest-dom": "^6.1.4",
        "@testing-library/react": "^14.0.0",
        "@testing-library/user-event": "^14.5.1",
        "@types/file-saver": "^2.0.7",
        "@types/jest": "^29.5.8",
        "@types/node": "^18.18.10",
        "@types/react": "^18.2.37",
        "@types/react-dom": "^18.2.15",
        "@types/react-splitter-layout": "^3.0.5",
        "@types/react-transition-group": "^4.4.9",
        "@types/redux-logger": "^3.0.12",
        "@types/semver": "^7.5.5",
        "@types/w3c-web-usb": "^1.0.10",
        "@types/web-bluetooth": "^0.0.20",
        "@types/web-locks-api": "^0.0.5",
        "@types/wicg-file-system-access": "^2023.10.3",
        "@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.1",
        "camelcase": "^8.0.0",
        "canvas": "^2.11.2",
        "case-sensitive-paths-webpack-plugin": "^2.4.0",
        "copy-webpack-plugin": "^11.0.0",
        "css-loader": "^6.8.1",
        "css-minimizer-webpack-plugin": "^5.0.1",
        "dexie": "^3.2.4",
        "dexie-observable": "^4.0.0-beta.13",
        "dexie-react-hooks": "^1.1.7",
        "dfu": "^0.1.5",
        "dotenv": "^16.3.1",
        "dotenv-expand": "^10.0.0",
        "fake-indexeddb": "^5.0.1",
        "file-loader": "^6.2.0",
        "fs-extra": "^11.1.1",
        "html-webpack-plugin": "^5.5.3",
        "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.6",
        "monaco-editor": "^0.44.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.31",
        "postcss-flexbugs-fixes": "^5.0.2",
        "postcss-loader": "^7.3.3",
        "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.30.0",
        "react-complex-tree": "^2.2.3",
        "react-dev-utils": "^12.0.1",
        "react-dom": "^18.2.0",
        "react-dropzone": "^14.2.3",
        "react-joyride": "^2.7.0",
        "react-popper": "^2.3.0",
        "react-redux": "^8.1.3",
        "react-refresh": "^0.14.0",
        "react-splitter-layout": "^4.0.0",
        "redux": "^4.2.1",
        "redux-logger": "^3.0.6",
        "redux-saga": "^1.2.3",
        "resolve": "^1.22.8",
        "resolve-url-loader": "^5.0.0",
        "sass": "^1.69.5",
        "sass-loader": "^13.3.2",
        "semver": "^7.5.4",
        "source-map-explorer": "^2.5.3",
        "source-map-loader": "^4.0.1",
        "spdx-satisfies": "^5.0.0",
        "style-loader": "^3.3.3",
        "tailwindcss": "^3.3.5",
        "terser-webpack-plugin": "^5.3.9",
        "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.0",
        "webpack": "^5.89.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.11.0",
        "@typescript-eslint/parser": "^6.11.0",
        "eslint": "^8.54.0",
        "eslint-config-prettier": "^9.0.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.0",
        "eslint-plugin-prettier": "^5.0.1",
        "eslint-plugin-react": "^7.33.2",
        "eslint-plugin-total-functions": "^6.10.5",
        "eslint-webpack-plugin": "^4.0.1",
        "prettier": "^3.1.0"
    },
    "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": [
            "<rootDir>/src"
        ],
        "collectCoverageFrom": [
            "src/**/*.{js,jsx,ts,tsx}",
            "!src/**/*.d.ts"
        ],
        "setupFiles": [
            "react-app-polyfill/jsdom"
        ],
        "setupFilesAfterEnv": [
            "<rootDir>/src/setupTests.ts"
        ],
        "testMatch": [
            "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
            "<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"
        ],
        "testEnvironment": "./test/env",
        "transform": {
            "^.+\\.(js|jsx|mjs|cjs|ts|tsx)$": "<rootDir>/config/jest/babelTransform.js",
            "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
            "^(?!.*\\.(js|jsx|mjs|cjs|ts|tsx|css|json)$)": "<rootDir>/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"
        ]
    }
}
