diff --git a/.circleci/config.yml b/.circleci/config.yml index b97d187e304..a77d1871691 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -44,12 +44,42 @@ aliases: working_directory: ~/repo jobs: + build-test-no-cache: + <<: *defaults + environment: + JEST_JUNIT_OUTPUT_DIR: test-results + NODE_OPTIONS: --max-old-space-size=4000 + steps: + - *restore_git_cache + - checkout + - run: npm ci + - run: + name: Lint + command: npm run test:lint -- --quiet --output-file test-results/eslint-results.xml --format junit + - run: + name: Unit + environment: + JEST_JUNIT_OUTPUT_NAME: unit-results.xml + command: npm run test:unit -- --reporters="default" --reporters="jest-junit" --coverage --coverageReporters=text --coverageReporters=lcov --maxWorkers="2" + - run: + name: Build + environment: + NODE_ENV: production + command: npm run build + - run: + name: Integration + environment: + JEST_JUNIT_OUTPUT_NAME: integration-results.xml + command: npm run test:integration -- --reporters="default" --reporters="jest-junit" + - store_artifacts: + path: coverage + - store_test_results: + path: test-results setup: <<: *defaults steps: - *restore_git_cache - checkout - - *restore_npm_cache - run: npm ci - *save_git_cache - *save_npm_cache @@ -187,9 +217,24 @@ workflows: requires: - setup + build-test-no-deploy: + jobs: + - build-test-no-cache: + filters: + branches: + ignore: + - master + - develop + - /^hotfix\/.*/ build-test-deploy: jobs: - - setup + - setup: + filters: + branches: + only: + - master + - develop + - /^hotfix\/.*/ - lint: requires: - setup @@ -205,9 +250,21 @@ workflows: - store_build: requires: - build + filters: + branches: + only: + - master + - develop + - /^hotfix\/.*/ - store_dist: requires: - build + filters: + branches: + only: + - master + - develop + - /^hotfix\/.*/ - deploy-npm: requires: - lint diff --git a/package-lock.json b/package-lock.json index 8288fcbcec1..224d175559c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3371,9 +3371,9 @@ "dev": true }, "@types/babel__core": { - "version": "7.1.16", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.16.tgz", - "integrity": "sha512-EAEHtisTMM+KaKwfWdC3oyllIqswlznXCIVCt7/oRNrh+DhgT4UEBNC/jlADNjvw7UnfbcdkGQcPVZ1xYiLcrQ==", + "version": "7.1.18", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", + "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==", "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -3383,9 +3383,9 @@ } }, "@types/babel__generator": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", - "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", "requires": { "@babel/types": "^7.0.0" } @@ -8640,23 +8640,23 @@ } }, "format-message-formats": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/format-message-formats/-/format-message-formats-6.2.0.tgz", - "integrity": "sha512-QP0dl1O9P3fDCG5klj101nfizgiWiv0T+DMNBqwi25FvB1LIenQQW4PpULk5zO5PiOSvmMu5pW4HS542kJRAww==" + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/format-message-formats/-/format-message-formats-6.2.4.tgz", + "integrity": "sha512-smT/fAqBLqusWfWCKRAx6QBDAAbmYznWsIyTyk66COmvwt2Byiqd7SJe2ma9a5oV0kwRaOJpN/F4lr4YK/n6qQ==" }, "format-message-interpret": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/format-message-interpret/-/format-message-interpret-6.2.3.tgz", - "integrity": "sha512-OoOdB5yHLzW89RwDQW4fj+8p2Eay9Dtmx4B7Tz8C/QQl/j+aVjy65A5xasQhQD+4JumYU/OxMBdjYzBSR8+ivA==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/format-message-interpret/-/format-message-interpret-6.2.4.tgz", + "integrity": "sha512-dRvz9mXhITApyOtfuFEb/XqvCe1u6RMkQW49UJHXS8w2S8cAHCqq5LNDFK+QK6XVzcofROycLb/k1uybTAKt2w==", "requires": { - "format-message-formats": "^6.2.0", + "format-message-formats": "^6.2.4", "lookup-closest-locale": "^6.2.0" } }, "format-message-parse": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/format-message-parse/-/format-message-parse-6.2.3.tgz", - "integrity": "sha512-ZSL3nZ0zaDktDAGwkoGJ439rS9ZfTcMOrWAVav9BOAoKs0qE2Ozal2H6vVJOuIdDhwaJuFqvJ7fdRSE+qR5oNg==" + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/format-message-parse/-/format-message-parse-6.2.4.tgz", + "integrity": "sha512-k7WqXkEzgXkW4wkHdS6Cv2Ou0rIFtiDelZjgoe1saW4p7FT7zS8OeAUpAekhormqzpeecR97e4vBft1zMsfFOQ==" }, "forwarded": { "version": "0.1.2", @@ -14940,20 +14940,20 @@ } }, "scratch-blocks": { - "version": "0.1.0-prerelease.20211022094652", - "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20211022094652.tgz", - "integrity": "sha512-0Ng0K3LCjq942QqQHM+G+kTxRmVdkbJldTrsiHJcvpy54OsrxgM2E3bpgFI4VWXqmiQgIzOE9Y5uw/gjKLK0Kw==", + "version": "0.1.0-prerelease.20220223064322", + "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20220223064322.tgz", + "integrity": "sha512-XBQRyUfGuM9JE9ZJDPij9vM96fMld7LUWx6gjR3sVH3RE0mbbZymsECUPRda1L56V07bozGc3fHmxvvHb2FUtw==", "requires": { "exports-loader": "0.6.3", "google-closure-library": "20190301.0.0", "imports-loader": "0.6.5", - "scratch-l10n": "3.14.20211022031531" + "scratch-l10n": "3.14.20220223031520" } }, "scratch-l10n": { - "version": "3.14.20211022031531", - "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20211022031531.tgz", - "integrity": "sha512-TAC8LJc1PU/cDzbo0b7tVlxHj0pSxerMUabZKoJ3PWASLLoWV2qrAhugqQQv2z1xAdYm6hndEJgUOED+CTt2NA==", + "version": "3.14.20220223031520", + "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.14.20220223031520.tgz", + "integrity": "sha512-dNaf+wAKT7ChtemwJ0MxlzNRWHB4leC+g8ArbVv2ucSlMRDN620k+tYWbrVIJMsaaOZ/dv1BSWofvxsCwp6H1A==", "requires": { "@babel/cli": "^7.1.2", "@babel/core": "^7.1.2", @@ -14962,9 +14962,9 @@ } }, "scratch-paint": { - "version": "0.2.0-prerelease.20211022045744", - "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-0.2.0-prerelease.20211022045744.tgz", - "integrity": "sha512-M7VmHTHxPBj2j0/3TzAfb0BfGwgousXKhmzGKvkViPOW1/RL9mjXycCN5S++km1FdK7hSo0dOWe7zL8h66DMLg==", + "version": "0.2.0-prerelease.20211027080909", + "resolved": "https://registry.npmjs.org/scratch-paint/-/scratch-paint-0.2.0-prerelease.20211027080909.tgz", + "integrity": "sha512-Kgzr9hEE0AYCnMPvs5rhKx3S+h78+HMe0IDoTuEQWG/EyilEeQkITwymkK59ndnsxf0gfQd4pkUi2UjdHQqpBQ==", "requires": { "@scratch/paper": "0.11.20200728195508", "classnames": "2.2.5", @@ -15064,9 +15064,9 @@ } }, "scratch-render": { - "version": "0.1.0-prerelease.20210819221425", - "resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20210819221425.tgz", - "integrity": "sha512-2kB/NKEEqiXmHUDynA2O5tQJFF3o2s3JmcNecjgOCsR+FuthH2oIsHFwKbyLn93hXJICDRRW+oc3ikqj7G5O+w==", + "version": "0.1.0-prerelease.20211028200436", + "resolved": "https://registry.npmjs.org/scratch-render/-/scratch-render-0.1.0-prerelease.20211028200436.tgz", + "integrity": "sha512-6IU0mEQpx5ipm2PsmdJXA/MIbrgq5wisn0rOpmCJZQFssyPyZMeanvh6T9j/VlTn13kiDO+67Do2nKRrZa46bA==", "requires": { "grapheme-breaker": "0.3.2", "hull.js": "0.2.10", @@ -15147,9 +15147,9 @@ "integrity": "sha512-r0lvpgQjPMjbhI2wROrgoXzBhCvWJdkbAqJMfl2CdNqrwBpUXqLvNNtI3VtNLPJAcp9VfxEylkU9lVZ0gvU46Q==" }, "scratch-vm": { - "version": "0.2.0-prerelease.20211022115153", - "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-0.2.0-prerelease.20211022115153.tgz", - "integrity": "sha512-oEoG65HtUkG21llTd6ei9nvP2QWyLmVcgq/j89XNLs1XWufP0gjHlqDEPJ4wkvThTLcGvxpAEjSdimkvXAgE6w==", + "version": "0.2.0-prerelease.20220223123949", + "resolved": "https://registry.npmjs.org/scratch-vm/-/scratch-vm-0.2.0-prerelease.20220223123949.tgz", + "integrity": "sha512-aGNADWsj4pMggxq5uvEK5eZbN6wANcUphJFq3fI0WhepWI7ihrkhKC/klhCjpQtt3jtMfYTj5UCWTOHYB0QkBA==", "requires": { "@vernier/godirect": "1.5.0", "arraybuffer-loader": "^1.0.6", diff --git a/package.json b/package.json index 36fd800ee02..8883ed31721 100644 --- a/package.json +++ b/package.json @@ -77,10 +77,10 @@ "redux": "3.7.2", "redux-throttle": "0.1.1", "scratch-audio": "0.1.0-prerelease.20200528195344", - "scratch-blocks": "0.1.0-prerelease.20211022094652", - "scratch-l10n": "3.14.20211022031531", - "scratch-paint": "0.2.0-prerelease.20211022045744", - "scratch-render": "0.1.0-prerelease.20210819221425", + "scratch-blocks": "0.1.0-prerelease.20220223064322", + "scratch-l10n": "3.14.20220223031520", + "scratch-paint": "0.2.0-prerelease.20211027080909", + "scratch-render": "0.1.0-prerelease.20211028200436", "scratch-render-fonts": "1.0.0-prerelease.20210401210003", "scratch-storage": "1.3.5", "scratch-svg-renderer": "0.2.0-prerelease.20210727023023", diff --git a/src/components/monitor/monitor.jsx b/src/components/monitor/monitor.jsx index 5d52655c0e3..ddb2f2e57b5 100644 --- a/src/components/monitor/monitor.jsx +++ b/src/components/monitor/monitor.jsx @@ -108,6 +108,14 @@ const MonitorComponent = props => ( id="gui.monitor.contextMenu.export" /> } + {props.onHide && + + + } ), document.body)} @@ -127,6 +135,7 @@ MonitorComponent.propTypes = { onDragEnd: PropTypes.func.isRequired, onExport: PropTypes.func, onImport: PropTypes.func, + onHide: PropTypes.func, onNextMode: PropTypes.func.isRequired, onSetModeToDefault: PropTypes.func, onSetModeToLarge: PropTypes.func, diff --git a/src/components/prompt/prompt.jsx b/src/components/prompt/prompt.jsx index d60af1f3446..05f2cbbc4c5 100644 --- a/src/components/prompt/prompt.jsx +++ b/src/components/prompt/prompt.jsx @@ -30,6 +30,12 @@ const messages = defineMessages({ description: 'A message that displays in a variable modal when the stage is selected indicating ' + 'that the variable being created will available to all sprites.', id: 'gui.gui.variablePromptAllSpritesMessage' + }, + listAvailableToAllSpritesMessage: { + defaultMessage: 'This list will be available to all sprites.', + description: 'A message that displays in a list modal when the stage is selected indicating ' + + 'that the list being created will available to all sprites.', + id: 'gui.gui.listPromptAllSpritesMessage' } }); @@ -58,9 +64,15 @@ const PromptComponent = props => (
{props.isStage ?
- + {props.showListMessage ? ( + + ) : ( + + )}
: