{ "name": "scratch-gui", "version": "3.2.37", "description": "Graphical User Interface for creating and running Scratch 3.0 projects", "author": "Massachusetts Institute of Technology", "license": "GPL-3.0", "homepage": "https://github.com/LLK/scratch-gui#readme", "repository": { "type": "git", "url": "https://github.com/LLK/scratch-gui.git" }, "main": "./dist/scratch-gui.js", "scripts": { "build": "npm run clean && cross-env NODE_ENV=production webpack --colors --bail", "build:cdn-pure": "npm run clean && cross-env NODE_ENV=production UNITY_CDN_PURE=1 webpack --colors --bail", "build:test": "npm run clean && cross-env NODE_ENV=production node scripts\\patch-config.js && webpack --colors --bail", "build:prod": "npm run clean && cross-env NODE_ENV=production node scripts\\patch-config.js && webpack --colors --bail", "clean": "rimraf ./build && mkdirp build && rimraf ./dist && mkdirp dist", "deploy": "touch build/.nojekyll && gh-pages -t -d build -m \"[skip ci] Build for $(git log --pretty=format:%H -n1)\"", "prepublish": "node scripts/prepublish.mjs", "prune": "./prune-gh-pages.sh", "i18n:push": "tx-push-src scratch-editor interface translations/en.json", "i18n:src": "rimraf ./translations/messages/src && babel src > tmp.js && rimraf tmp.js && build-i18n-src ./translations/messages/src ./translations/", "start": "node scripts/patch-config.js && webpack-dev-server", "dev": "node scripts/patch-config.js && webpack-dev-server", "test": "npm run test:lint && npm run test:unit && npm run build && npm run test:integration", "test:integration": "jest --maxWorkers=4 test[\\\\/]integration", "test:lint": "eslint . --ext .js,.jsx", "test:unit": "jest test[\\\\/]unit[\\\\/]addons", "test:smoke": "jest --runInBand test[\\\\/]smoke", "watch": "webpack --colors --watch" }, "config": { "commitizen": { "path": "cz-conventional-changelog" } }, "dependencies": { "@codemirror/autocomplete": "^6.18.6", "@codemirror/lang-cpp": "^6.0.3", "@codemirror/lang-javascript": "^6.2.2", "@codemirror/state": "^6.4.1", "@codemirror/view": "^6.35.1", "@lezer/cpp": "^1.1.3", "@lezer/lr": "^1.4.2", "@microbit/microbit-universal-hex": "0.2.2", "@rollup/plugin-node-resolve": "^15.3.0", "@turbowarp/nanolog": "^0.2.0", "@turbowarp/scratch-l10n": "^3.1001.0-202401241456-994097a5", "@turbowarp/scratch-storage": "^0.0.202403251715", "@turbowarp/scratch-svg-renderer": "^1.0.0-202312242305-12c360b", "@turbowarp/startaudiocontext": "^1.0.0", "@uiw/codemirror-extensions-basic-setup": "^4.23.6", "@uiw/codemirror-extensions-classname": "^4.23.6", "@uiw/codemirror-extensions-langs": "^4.23.6", "@uiw/codemirror-themes-all": "^4.23.6", "@uiw/react-codemirror": "^4.23.6", "arraybuffer-loader": "^1.0.6", "autoprefixer": "^9.0.1", "balance-text": "3.3.1", "base64-loader": "1.0.0", "bowser": "1.9.4", "brotli-dec-wasm": "^2.3.0", "brotli-wasm": "^3.0.1", "classnames": "2.2.6", "computed-style-to-inline-style": "3.0.0", "cookie": "0.5.0", "copy-webpack-plugin": "6.4.1", "core-js": "2.5.7", "cpp.js": "^1.0.4", "css-loader": "^1.0.0", "dapjs": "2.3.0", "disable-devtool": "^0.3.8", "dotenv": "^17.2.3", "es6-object-assign": "1.1.0", "get-float-time-domain-data": "0.1.0", "get-user-media-promise": "1.1.4", "http-proxy-middleware": "^3.0.3", "immutable": "3.8.2", "intl": "1.2.5", "intl-messageformat": "^2.2.0", "js-base64": "2.4.9", "keymirror": "0.1.1", "lodash.bindall": "4.4.0", "lodash.debounce": "4.0.8", "lodash.defaultsdeep": "4.6.1", "lodash.omit": "4.5.0", "lodash.throttle": "4.0.1", "omggif": "1.0.9", "papaparse": "5.3.0", "postcss-import": "^12.0.0", "postcss-loader": "^3.0.0", "postcss-simple-vars": "^5.0.1", "prop-types": "^15.5.10", "pyodide": "^0.26.4", "query-string": "^5.1.1", "raw-loader": "^0.5.1", "react": "^16.0.0", "react-contextmenu": "2.9.4", "react-dom": "^16.0.0", "react-draggable": "3.0.5", "react-ga": "2.5.3", "react-intl": "2.9.0", "react-modal": "3.9.1", "react-popover": "0.5.10", "react-redux": "5.0.7", "react-responsive": "5.0.0", "react-router-dom": "^6.27.0", "react-string-replace": "^0.4.4", "react-style-proptype": "3.2.2", "react-tabs": "2.3.0", "react-tooltip": "3.8.0", "react-unity-webgl": "^9.5.2", "react-virtualized": "9.20.1", "redux": "3.7.2", "redux-throttle": "0.1.1", "rollup": "^4.28.0", "scratch-audio": "github:TurboWarp/scratch-audio#develop", "scratch-blocks": "github:TurboWarp/scratch-blocks#develop-builds", "scratch-paint": "github:TurboWarp/scratch-paint#develop", "scratch-render": "github:TurboWarp/scratch-render#develop", "scratch-vm": "github:TurboWarp/scratch-vm#develop", "style-loader": "^0.23.0", "text-encoding": "0.7.0", "to-style": "1.3.3", "tree-sitter": "^0.21.1", "tree-sitter-cpp": "^0.23.4", "uiw": "^4.22.3", "wav-encoder": "1.3.0", "web-tree-sitter": "^0.25.6", "xhr": "2.5.0" }, "peerDependencies": { "react": "^16.0.0", "react-dom": "^16.0.0" }, "devDependencies": { "@babel/cli": "7.14.8", "@babel/core": "7.14.8", "@babel/plugin-proposal-object-rest-spread": "7.14.7", "@babel/plugin-syntax-dynamic-import": "7.2.0", "@babel/plugin-transform-async-to-generator": "7.14.5", "@babel/preset-env": "7.14.8", "@babel/preset-react": "7.14.5", "babel-core": "7.0.0-bridge.0", "babel-eslint": "10.1.0", "babel-loader": "8.3.0", "chromedriver": "117.0.3", "compression-webpack-plugin": "^6.1.2", "cross-env": "^7.0.3", "enzyme": "3.10.0", "enzyme-adapter-react-16": "1.15.7", "eslint": "8.55.0", "eslint-config-scratch": "9.0.3", "eslint-import-resolver-webpack": "0.11.1", "eslint-plugin-import": "2.29.1", "eslint-plugin-jest": "22.17.0", "eslint-plugin-react": "7.33.2", "file-loader": "6.2.0", "gh-pages": "3.2.3", "html-webpack-plugin": "^4.2.0", "husky": "^9.1.6", "jest": "21.2.1", "jest-junit": "7.0.0", "mkdirp": "1.0.3", "raf": "3.4.1", "react-test-renderer": "16.14.0", "redux-mock-store": "1.5.3", "rimraf": "2.7.1", "selenium-webdriver": "3.6.0", "uglifyjs-webpack-plugin": "1.3.0", "url-loader": "4.1.1", "web-audio-test-api": "0.5.2", "webpack": "4.47.0", "webpack-bundle-analyzer": "^5.2.0", "webpack-cli": "3.3.12", "webpack-dev-server": "3.11.2", "yauzl": "2.10.0" }, "jest": { "setupFiles": [ "raf/polyfill", "/test/helpers/enzyme-setup.js" ], "testPathIgnorePatterns": [ "src/test.js" ], "moduleNameMapper": { "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "/test/__mocks__/fileMock.js", "\\.(css|less)$": "/test/__mocks__/styleMock.js", "editor-msgs(\\.js)?$": "/test/__mocks__/editor-msgs-mock.js" } }, "overrides": { "webpack@4.47.0": { "terser-webpack-plugin": "^4.2.3" } } }